# cairnloop v0.1.0 - API Reference

## Modules

- Governance
  - [Cairnloop.Governance](Cairnloop.Governance.md): Public facade for the governed-tool proposal system (D-30).
  - [Cairnloop.Governance.Policy](Cairnloop.Governance.Policy.md): Approval-mode resolver for governed tool proposals.
  - [Cairnloop.Governance.Preview](Cairnloop.Governance.Preview.md): Total `render/1` function for governed tool proposals — hides the live-vs-fallback
branching behind a single public API.
  - [Cairnloop.Governance.Telemetry](Cairnloop.Governance.Telemetry.md): Bounded telemetry for governed tool proposal events.
  - [Cairnloop.Governance.Telemetry.Traces](Cairnloop.Governance.Telemetry.Traces.md): Optional OpenInference-conformant trace event module for the Cairnloop governed-action
evidence lane (Phase 17, D17-01, D17-03).
  - [Cairnloop.Governance.ToolActionEvent](Cairnloop.Governance.ToolActionEvent.md): Append-only audit event record for governed tool proposals.
  - [Cairnloop.Governance.ToolApproval](Cairnloop.Governance.ToolApproval.md): Durable approval record for a governed tool proposal.
  - [Cairnloop.Governance.ToolProposal](Cairnloop.Governance.ToolProposal.md): Durable proposal record capturing a governed tool invocation intent, propose-time
snapshots, and idempotency key. Mirrors the `ReviewTask` idiom exactly (D-20).
  - [Cairnloop.Tool](Cairnloop.Tool.md): Governed-tool behaviour and compile-time validating `__using__` macro.
  - [Cairnloop.Tool.Spec](Cairnloop.Tool.Spec.md): Pure data struct carrying compile-time governed-tool metadata.
  - [Cairnloop.ToolRegistry](Cairnloop.ToolRegistry.md): Manages registration and advisory filtering of host-injected governed tools.
  - [Cairnloop.Tools.InternalNote](Cairnloop.Tools.InternalNote.md): Example governed-write tool: appends an operator-only internal note to the
host-owned `cairnloop_messages` store.

- Knowledge Base
  - [Cairnloop.KnowledgeAutomation](Cairnloop.KnowledgeAutomation.md)
  - [Cairnloop.KnowledgeAutomation.ArticleSuggestion](Cairnloop.KnowledgeAutomation.ArticleSuggestion.md)
  - [Cairnloop.KnowledgeAutomation.ArticleSuggestionEvidence](Cairnloop.KnowledgeAutomation.ArticleSuggestionEvidence.md)
  - [Cairnloop.KnowledgeAutomation.CandidateBuilder](Cairnloop.KnowledgeAutomation.CandidateBuilder.md)
  - [Cairnloop.KnowledgeAutomation.GapCandidate](Cairnloop.KnowledgeAutomation.GapCandidate.md)
  - [Cairnloop.KnowledgeAutomation.GapCandidateMembership](Cairnloop.KnowledgeAutomation.GapCandidateMembership.md)
  - [Cairnloop.KnowledgeAutomation.ManualHandlingSignal](Cairnloop.KnowledgeAutomation.ManualHandlingSignal.md)
  - [Cairnloop.KnowledgeAutomation.ReviewTask](Cairnloop.KnowledgeAutomation.ReviewTask.md)
  - [Cairnloop.KnowledgeAutomation.ReviewTaskEvent](Cairnloop.KnowledgeAutomation.ReviewTaskEvent.md)
  - [Cairnloop.KnowledgeAutomation.StaleArticleSignal](Cairnloop.KnowledgeAutomation.StaleArticleSignal.md)
  - [Cairnloop.KnowledgeAutomation.Telemetry](Cairnloop.KnowledgeAutomation.Telemetry.md): Stable telemetry helpers for knowledge-maintenance workflow events.
  - [Cairnloop.KnowledgeAutomation.Workers.BackfillGapCandidates](Cairnloop.KnowledgeAutomation.Workers.BackfillGapCandidates.md)
  - [Cairnloop.KnowledgeAutomation.Workers.GenerateArticleSuggestion](Cairnloop.KnowledgeAutomation.Workers.GenerateArticleSuggestion.md)
  - [Cairnloop.KnowledgeAutomation.Workers.RefreshGapCandidates](Cairnloop.KnowledgeAutomation.Workers.RefreshGapCandidates.md)
  - [Cairnloop.KnowledgeBase](Cairnloop.KnowledgeBase.md)
  - [Cairnloop.KnowledgeBase.Article](Cairnloop.KnowledgeBase.Article.md)
  - [Cairnloop.KnowledgeBase.Chunk](Cairnloop.KnowledgeBase.Chunk.md)
  - [Cairnloop.KnowledgeBase.MarkdownParser](Cairnloop.KnowledgeBase.MarkdownParser.md): Parses markdown into chunks for vector embeddings.

  - [Cairnloop.KnowledgeBase.Revision](Cairnloop.KnowledgeBase.Revision.md)
  - [Cairnloop.KnowledgeBase.Workers.ChunkRevision](Cairnloop.KnowledgeBase.Workers.ChunkRevision.md)

- Retrieval
  - [Cairnloop.Retrieval](Cairnloop.Retrieval.md)
  - [Cairnloop.Retrieval.GapEvent](Cairnloop.Retrieval.GapEvent.md)
  - [Cairnloop.Retrieval.GapEventSnapshot](Cairnloop.Retrieval.GapEventSnapshot.md)
  - [Cairnloop.Retrieval.GapRecorder](Cairnloop.Retrieval.GapRecorder.md)
  - [Cairnloop.Retrieval.Providers.KnowledgeBase](Cairnloop.Retrieval.Providers.KnowledgeBase.md)
  - [Cairnloop.Retrieval.Providers.ResolvedCases](Cairnloop.Retrieval.Providers.ResolvedCases.md)
  - [Cairnloop.Retrieval.Ranker](Cairnloop.Retrieval.Ranker.md)
  - [Cairnloop.Retrieval.ResolvedCaseChunk](Cairnloop.Retrieval.ResolvedCaseChunk.md)
  - [Cairnloop.Retrieval.ResolvedCaseEvidence](Cairnloop.Retrieval.ResolvedCaseEvidence.md)
  - [Cairnloop.Retrieval.Result](Cairnloop.Retrieval.Result.md): Normalized retrieval evidence shared across search, grounding, and telemetry summaries.

  - [Cairnloop.Retrieval.Telemetry](Cairnloop.Retrieval.Telemetry.md): Stable Cairnloop-native telemetry helpers for retrieval search and draft grounding.
  - [Cairnloop.Retrieval.Workers.IndexResolvedConversation](Cairnloop.Retrieval.Workers.IndexResolvedConversation.md)
  - [Cairnloop.Retrieval.Workers.PruneGapEvents](Cairnloop.Retrieval.Workers.PruneGapEvents.md)

- MCP
  - [Cairnloop.Web.MCP.Router](Cairnloop.Web.MCP.Router.md): Optional read-only MCP seam for Cairnloop-governed tools.
  - [Cairnloop.Web.MCP.ToolProjector](Cairnloop.Web.MCP.ToolProjector.md): Pure total function transform: `%Cairnloop.Tool.Spec{}` + tool module → MCP tool definition map.

- Web
  - [Cairnloop.Web.ArticleSuggestionPresenter](Cairnloop.Web.ArticleSuggestionPresenter.md)
  - [Cairnloop.Web.ConversationLive](Cairnloop.Web.ConversationLive.md)
  - [Cairnloop.Web.GapCandidatePresenter](Cairnloop.Web.GapCandidatePresenter.md)
  - [Cairnloop.Web.InboxLive](Cairnloop.Web.InboxLive.md)
  - [Cairnloop.Web.KnowledgeBaseLive.Editor](Cairnloop.Web.KnowledgeBaseLive.Editor.md)
  - [Cairnloop.Web.KnowledgeBaseLive.Gaps](Cairnloop.Web.KnowledgeBaseLive.Gaps.md)
  - [Cairnloop.Web.KnowledgeBaseLive.Index](Cairnloop.Web.KnowledgeBaseLive.Index.md)
  - [Cairnloop.Web.KnowledgeBaseLive.SuggestionReview](Cairnloop.Web.KnowledgeBaseLive.SuggestionReview.md)
  - [Cairnloop.Web.ReviewTaskPresenter](Cairnloop.Web.ReviewTaskPresenter.md)
  - [Cairnloop.Web.SearchModalComponent](Cairnloop.Web.SearchModalComponent.md)
  - [Cairnloop.Web.SearchResultPresenter](Cairnloop.Web.SearchResultPresenter.md)
  - [Cairnloop.Web.SettingsLive](Cairnloop.Web.SettingsLive.md)
  - [Cairnloop.Web.ToolProposalPresenter](Cairnloop.Web.ToolProposalPresenter.md): Pure, total presenter for `Cairnloop.Governance.ToolProposal` structs.

- Core
  - [Cairnloop](Cairnloop.md): Documentation for `Cairnloop`.

  - [Cairnloop.Auditor](Cairnloop.Auditor.md): Behaviour for providing host application auditing to Cairnloop.
  - [Cairnloop.Auditor.NoOp](Cairnloop.Auditor.NoOp.md): A default, no-op implementation of the `Cairnloop.Auditor` behaviour.

  - [Cairnloop.Automation](Cairnloop.Automation.md)
  - [Cairnloop.Automation.Draft](Cairnloop.Automation.Draft.md)
  - [Cairnloop.Automation.ScoriaEngine](Cairnloop.Automation.ScoriaEngine.md): Mock execution engine for Scoria integration.
Generates structured grounded proposals for operator review.

  - [Cairnloop.Automation.Workers.DraftWorker](Cairnloop.Automation.Workers.DraftWorker.md)
  - [Cairnloop.AutomationPolicy](Cairnloop.AutomationPolicy.md): Behaviour for providing host application AI policy boundaries.
Allows host applications to dictate how AI drafts are handled.

  - [Cairnloop.Channels.WidgetChannel](Cairnloop.Channels.WidgetChannel.md)
  - [Cairnloop.Channels.WidgetSocket](Cairnloop.Channels.WidgetSocket.md)
  - [Cairnloop.Chat](Cairnloop.Chat.md)
  - [Cairnloop.Chimeway.SLABreachNotifier](Cairnloop.Chimeway.SLABreachNotifier.md)
  - [Cairnloop.ContextProvider](Cairnloop.ContextProvider.md): Behaviour for providing host application context to Cairnloop.
  - [Cairnloop.Conversation](Cairnloop.Conversation.md)
  - [Cairnloop.Conversations.SLA](Cairnloop.Conversations.SLA.md)
  - [Cairnloop.DefaultAutomationPolicy](Cairnloop.DefaultAutomationPolicy.md): Default implementation of Cairnloop.AutomationPolicy.
Always returns :draft_only to ensure AI generated outputs are treated safely by default.

  - [Cairnloop.DefaultContextProvider](Cairnloop.DefaultContextProvider.md): Default implementation of Cairnloop.ContextProvider.
Returns an empty context `{:ok, %{}}` for any input to ensure a safe default.

  - [Cairnloop.DefaultSLAPolicyProvider](Cairnloop.DefaultSLAPolicyProvider.md): Default, static implementation of `Cairnloop.SLAPolicyProvider`.
  - [Cairnloop.Embedder](Cairnloop.Embedder.md): Behaviour for generating vector embeddings from text chunks.

  - [Cairnloop.Embedder.ExternalApi](Cairnloop.Embedder.ExternalApi.md): Implementation of Embedder behaviour using an external API.
Uses OpenAI's text-embedding-ada-002 as default.

  - [Cairnloop.Ingress.EmailParser](Cairnloop.Ingress.EmailParser.md)
  - [Cairnloop.Ingress.EmailWebhookPlug](Cairnloop.Ingress.EmailWebhookPlug.md)
  - [Cairnloop.Message](Cairnloop.Message.md)
  - [Cairnloop.Notifier](Cairnloop.Notifier.md): Behaviour for notifying the host application of important Cairnloop events.

  - [Cairnloop.Notifier.Chimeway](Cairnloop.Notifier.Chimeway.md)
  - [Cairnloop.Router](Cairnloop.Router.md)
  - [Cairnloop.SLAPolicyProvider](Cairnloop.SLAPolicyProvider.md): Behaviour for providing SLA policies.
  - [Cairnloop.Telemetry](Cairnloop.Telemetry.md): Centralizes telemetry event execution and documentation for Cairnloop.
  - [Cairnloop.Workers.ApprovalExpiryWorker](Cairnloop.Workers.ApprovalExpiryWorker.md): Oban worker that performs the scheduled `:pending → :expired` flip for governed tool approvals.
  - [Cairnloop.Workers.ApprovalResumeWorker](Cairnloop.Workers.ApprovalResumeWorker.md): Oban worker that re-validates a governed tool approval before it can proceed to execution.
  - [Cairnloop.Workers.CheckSLA](Cairnloop.Workers.CheckSLA.md)
  - [Cairnloop.Workers.IngestScrypath](Cairnloop.Workers.IngestScrypath.md)
  - [Cairnloop.Workers.NotifyResolvedWorker](Cairnloop.Workers.NotifyResolvedWorker.md)
  - [Cairnloop.Workers.ProcessMessage](Cairnloop.Workers.ProcessMessage.md)
  - [Cairnloop.Workers.SlaCountdownWorker](Cairnloop.Workers.SlaCountdownWorker.md)
  - [Cairnloop.Workers.ToolExecutionWorker](Cairnloop.Workers.ToolExecutionWorker.md): The ONLY place `run/3` is ever called in Cairnloop.

## Mix Tasks

- [mix cairnloop.add_csat_columns](Mix.Tasks.Cairnloop.AddCsatColumns.md)
- [mix cairnloop.add_draft_table](Mix.Tasks.Cairnloop.AddDraftTable.md)
- [mix cairnloop.add_resolved_at_column](Mix.Tasks.Cairnloop.AddResolvedAtColumn.md)
- [mix cairnloop.add_sla_table](Mix.Tasks.Cairnloop.AddSlaTable.md)
- [mix cairnloop.gen.notifier](Mix.Tasks.Cairnloop.Gen.Notifier.md): Scaffolds a Cairnloop.Notifier implementation in your host application
and injects the configuration into `config/config.exs`.
- [mix cairnloop.install](Mix.Tasks.Cairnloop.Install.md)
- [mix cairnloop.install.parapet](Mix.Tasks.Cairnloop.Install.Parapet.md)
- [mix cairnloop.install.sla_policies](Mix.Tasks.Cairnloop.Install.SlaPolicies.md)
- [mix cairnloop.install.slos](Mix.Tasks.Cairnloop.Install.Slos.md)
- [mix cairnloop.retrieval.rebuild](Mix.Tasks.Cairnloop.Retrieval.Rebuild.md): Rebuild retrieval corpus state through `Cairnloop.Retrieval`.
- [mix cairnloop.retrieval.replay_failed](Mix.Tasks.Cairnloop.Retrieval.ReplayFailed.md): Replay failed retrieval jobs through `Cairnloop.Retrieval`.

