@isaacriehm/cairn-core 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/claude/runner.d.ts +1 -1
- package/dist/claude/runner.js +62 -1
- package/dist/claude/runner.js.map +1 -1
- package/dist/claude/types.d.ts +14 -7
- package/dist/claude/types.js +5 -7
- package/dist/claude/types.js.map +1 -1
- package/dist/context/index.d.ts +4 -4
- package/dist/context/index.js +3 -4
- package/dist/context/index.js.map +1 -1
- package/dist/context/spec-delta.js +2 -3
- package/dist/context/spec-delta.js.map +1 -1
- package/dist/context/task-summary.d.ts +18 -0
- package/dist/context/task-summary.js +89 -0
- package/dist/context/task-summary.js.map +1 -0
- package/dist/decision-capture/id.d.ts +21 -4
- package/dist/decision-capture/id.js +56 -5
- package/dist/decision-capture/id.js.map +1 -1
- package/dist/decision-capture/index.d.ts +7 -22
- package/dist/decision-capture/index.js +7 -17
- package/dist/decision-capture/index.js.map +1 -1
- package/dist/doctor/index.d.ts +1 -1
- package/dist/doctor/index.js +1 -1
- package/dist/events/index.d.ts +1 -1
- package/dist/events/index.js +1 -1
- package/dist/events/writer.d.ts +1 -1
- package/dist/events/writer.js +1 -1
- package/dist/gc/canary.d.ts +13 -23
- package/dist/gc/canary.js +36 -92
- package/dist/gc/canary.js.map +1 -1
- package/dist/gc/citation-integrity.d.ts +6 -6
- package/dist/gc/citation-integrity.js +64 -20
- package/dist/gc/citation-integrity.js.map +1 -1
- package/dist/gc/frontmatter.js +1 -1
- package/dist/gc/generator-drift.js +1 -1
- package/dist/gc/generator-drift.js.map +1 -1
- package/dist/gc/index.d.ts +2 -2
- package/dist/gc/index.js +1 -1
- package/dist/gc/index.js.map +1 -1
- package/dist/gc/quality-update.js +1 -1
- package/dist/gc/quality-update.js.map +1 -1
- package/dist/gc/types.d.ts +1 -30
- package/dist/ground/index.d.ts +2 -2
- package/dist/ground/index.js +1 -1
- package/dist/ground/index.js.map +1 -1
- package/dist/ground/ledgers.d.ts +0 -4
- package/dist/ground/ledgers.js +10 -8
- package/dist/ground/ledgers.js.map +1 -1
- package/dist/ground/manifest.js +0 -2
- package/dist/ground/manifest.js.map +1 -1
- package/dist/ground/quality-grades.js +3 -1
- package/dist/ground/quality-grades.js.map +1 -1
- package/dist/ground/schemas.d.ts +2 -7
- package/dist/ground/schemas.js +7 -2
- package/dist/ground/schemas.js.map +1 -1
- package/dist/ground/scope-index.d.ts +59 -12
- package/dist/ground/scope-index.js +212 -43
- package/dist/ground/scope-index.js.map +1 -1
- package/dist/hooks/bypass-detection.js +4 -2
- package/dist/hooks/bypass-detection.js.map +1 -1
- package/dist/hooks/post-tool-use/citation-scanner.d.ts +7 -5
- package/dist/hooks/post-tool-use/citation-scanner.js +15 -9
- package/dist/hooks/post-tool-use/citation-scanner.js.map +1 -1
- package/dist/hooks/post-tool-use/copy-scanner.js +1 -1
- package/dist/hooks/post-tool-use/copy-scanner.js.map +1 -1
- package/dist/hooks/post-tool-use/ledger-cache.d.ts +8 -0
- package/dist/hooks/post-tool-use/ledger-cache.js +53 -0
- package/dist/hooks/post-tool-use/ledger-cache.js.map +1 -1
- package/dist/hooks/post-tool-use/legend-builder.d.ts +3 -3
- package/dist/hooks/post-tool-use/legend-builder.js +30 -8
- package/dist/hooks/post-tool-use/legend-builder.js.map +1 -1
- package/dist/hooks/post-tool-use/read-enricher.d.ts +1 -1
- package/dist/hooks/post-tool-use/read-enricher.js +68 -21
- package/dist/hooks/post-tool-use/read-enricher.js.map +1 -1
- package/dist/hooks/post-tool-use/write-guardian.js +148 -18
- package/dist/hooks/post-tool-use/write-guardian.js.map +1 -1
- package/dist/hooks/runners/index.d.ts +1 -0
- package/dist/hooks/runners/index.js +1 -0
- package/dist/hooks/runners/index.js.map +1 -1
- package/dist/hooks/runners/payload.d.ts +1 -1
- package/dist/hooks/runners/payload.js +27 -12
- package/dist/hooks/runners/payload.js.map +1 -1
- package/dist/hooks/runners/session-start.js +212 -66
- package/dist/hooks/runners/session-start.js.map +1 -1
- package/dist/hooks/runners/stop.d.ts +9 -12
- package/dist/hooks/runners/stop.js +67 -36
- package/dist/hooks/runners/stop.js.map +1 -1
- package/dist/hooks/runners/user-prompt-submit.d.ts +15 -0
- package/dist/hooks/runners/user-prompt-submit.js +149 -0
- package/dist/hooks/runners/user-prompt-submit.js.map +1 -0
- package/dist/hooks/user-prompt-submit.d.ts +7 -0
- package/dist/hooks/user-prompt-submit.js +12 -0
- package/dist/hooks/user-prompt-submit.js.map +1 -0
- package/dist/index.d.ts +1 -6
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/init/baseline-audit.d.ts +5 -1
- package/dist/init/baseline-audit.js +25 -2
- package/dist/init/baseline-audit.js.map +1 -1
- package/dist/init/glob-inference.d.ts +16 -0
- package/dist/init/glob-inference.js +108 -0
- package/dist/init/glob-inference.js.map +1 -0
- package/dist/init/index.d.ts +2 -0
- package/dist/init/index.js +1 -0
- package/dist/init/index.js.map +1 -1
- package/dist/init/ingest-docs.d.ts +1 -1
- package/dist/init/ingest-docs.js +19 -6
- package/dist/init/ingest-docs.js.map +1 -1
- package/dist/init/init.js +12 -7
- package/dist/init/init.js.map +1 -1
- package/dist/init/mapper-merge.d.ts +8 -2
- package/dist/init/mapper-merge.js +50 -32
- package/dist/init/mapper-merge.js.map +1 -1
- package/dist/init/mapper-parallel.d.ts +2 -3
- package/dist/init/mapper-parallel.js +9 -38
- package/dist/init/mapper-parallel.js.map +1 -1
- package/dist/init/mapper-prompts.js +1 -1
- package/dist/init/mapper-prompts.js.map +1 -1
- package/dist/init/mapper.d.ts +6 -127
- package/dist/init/mapper.js +30 -7
- package/dist/init/mapper.js.map +1 -1
- package/dist/init/module-slicer.d.ts +1 -1
- package/dist/init/module-slicer.js +1 -1
- package/dist/init/multi-dev/install.d.ts +5 -11
- package/dist/init/multi-dev/install.js +4 -6
- package/dist/init/multi-dev/install.js.map +1 -1
- package/dist/init/overlay.d.ts +2 -2
- package/dist/init/overlay.js +1 -1
- package/dist/init/overlay.js.map +1 -1
- package/dist/init/phases/10-strip.js +1 -2
- package/dist/init/phases/10-strip.js.map +1 -1
- package/dist/init/phases/12-multidev.d.ts +1 -6
- package/dist/init/phases/12-multidev.js +1 -6
- package/dist/init/phases/12-multidev.js.map +1 -1
- package/dist/init/phases/3b-seed.d.ts +1 -10
- package/dist/init/phases/3b-seed.js +1 -10
- package/dist/init/phases/3b-seed.js.map +1 -1
- package/dist/init/phases/4-pilot.js +53 -15
- package/dist/init/phases/4-pilot.js.map +1 -1
- package/dist/init/phases/5-brand.js +10 -10
- package/dist/init/phases/5-brand.js.map +1 -1
- package/dist/init/prompts.d.ts +6 -8
- package/dist/init/prompts.js +3 -6
- package/dist/init/prompts.js.map +1 -1
- package/dist/init/rules-merge/ingest.js +1 -1
- package/dist/init/source-comments/classify.d.ts +1 -41
- package/dist/init/source-comments/classify.js +68 -37
- package/dist/init/source-comments/classify.js.map +1 -1
- package/dist/init/source-comments/index.d.ts +2 -2
- package/dist/init/source-comments/index.js +2 -2
- package/dist/init/source-comments/index.js.map +1 -1
- package/dist/init/source-comments/ingest.d.ts +38 -2
- package/dist/init/source-comments/ingest.js +237 -4
- package/dist/init/source-comments/ingest.js.map +1 -1
- package/dist/init/source-comments/strip-replace.d.ts +10 -19
- package/dist/init/source-comments/strip-replace.js +26 -2
- package/dist/init/source-comments/strip-replace.js.map +1 -1
- package/dist/init/source-comments/walker.d.ts +9 -2
- package/dist/init/source-comments/walker.js +38 -19
- package/dist/init/source-comments/walker.js.map +1 -1
- package/dist/init/submodules.d.ts +3 -2
- package/dist/init/types.d.ts +3 -5
- package/dist/init/types.js +3 -5
- package/dist/init/types.js.map +1 -1
- package/dist/init/visual.d.ts +4 -9
- package/dist/init/visual.js +1 -16
- package/dist/init/visual.js.map +1 -1
- package/dist/logger.d.ts +0 -1
- package/dist/logger.js +0 -1
- package/dist/logger.js.map +1 -1
- package/dist/mcp/context.d.ts +2 -3
- package/dist/mcp/context.js.map +1 -1
- package/dist/mcp/errors.d.ts +1 -1
- package/dist/mcp/errors.js.map +1 -1
- package/dist/mcp/history/prompt.d.ts +2 -1
- package/dist/mcp/history/walker.js +1 -1
- package/dist/mcp/history/walker.js.map +1 -1
- package/dist/mcp/path-allowlist.d.ts +0 -6
- package/dist/mcp/path-allowlist.js +0 -10
- package/dist/mcp/path-allowlist.js.map +1 -1
- package/dist/mcp/schemas.d.ts +15 -72
- package/dist/mcp/schemas.js +21 -70
- package/dist/mcp/schemas.js.map +1 -1
- package/dist/mcp/serve.d.ts +1 -1
- package/dist/mcp/serve.js +2 -5
- package/dist/mcp/serve.js.map +1 -1
- package/dist/mcp/server.js +10 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/telemetry.d.ts +8 -1
- package/dist/mcp/telemetry.js +16 -0
- package/dist/mcp/telemetry.js.map +1 -1
- package/dist/mcp/tools/decision-get.js +37 -29
- package/dist/mcp/tools/decision-get.js.map +1 -1
- package/dist/mcp/tools/decisions-in-scope.js +22 -3
- package/dist/mcp/tools/decisions-in-scope.js.map +1 -1
- package/dist/mcp/tools/index.js +2 -2
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/invariant-get.js +1 -1
- package/dist/mcp/tools/invariant-get.js.map +1 -1
- package/dist/mcp/tools/invariants-in-scope.js +26 -7
- package/dist/mcp/tools/invariants-in-scope.js.map +1 -1
- package/dist/mcp/tools/query-history.js +3 -3
- package/dist/mcp/tools/query-history.js.map +1 -1
- package/dist/mcp/tools/resolve-attention.d.ts +3 -3
- package/dist/mcp/tools/resolve-attention.js +40 -28
- package/dist/mcp/tools/resolve-attention.js.map +1 -1
- package/dist/mcp/tools/search.js +3 -4
- package/dist/mcp/tools/search.js.map +1 -1
- package/dist/mcp/tools/task-create.d.ts +15 -0
- package/dist/mcp/tools/task-create.js +96 -0
- package/dist/mcp/tools/task-create.js.map +1 -0
- package/dist/mcp/tools/timeline.js +3 -7
- package/dist/mcp/tools/timeline.js.map +1 -1
- package/dist/profiles/types.d.ts +1 -1
- package/dist/profiles/types.js +1 -1
- package/dist/session/id.d.ts +1 -3
- package/dist/session/id.js +1 -1
- package/dist/session/id.js.map +1 -1
- package/dist/session-start/build.d.ts +3 -11
- package/dist/session-start/build.js +55 -34
- package/dist/session-start/build.js.map +1 -1
- package/dist/session-start/index.d.ts +2 -2
- package/dist/session-start/index.js +2 -2
- package/dist/session-start/index.js.map +1 -1
- package/dist/session-start/templates.d.ts +20 -4
- package/dist/session-start/templates.js +45 -35
- package/dist/session-start/templates.js.map +1 -1
- package/dist/status-line/format.d.ts +19 -11
- package/dist/status-line/format.js +44 -36
- package/dist/status-line/format.js.map +1 -1
- package/dist/status-line/index.d.ts +3 -1
- package/dist/status-line/index.js +1 -1
- package/dist/status-line/index.js.map +1 -1
- package/dist/status-line/reader.d.ts +9 -6
- package/dist/status-line/reader.js +50 -15
- package/dist/status-line/reader.js.map +1 -1
- package/dist/status-line/writer.d.ts +5 -0
- package/dist/status-line/writer.js +9 -0
- package/dist/status-line/writer.js.map +1 -1
- package/dist/trace/index.d.ts +44 -0
- package/dist/trace/index.js +51 -0
- package/dist/trace/index.js.map +1 -0
- package/package.json +2 -3
- package/templates/.archive/README.md +3 -3
- package/templates/.cairn/config/sensors.yaml +16 -19
- package/templates/.cairn/config/stub-patterns.yaml +4 -4
- package/templates/.cairn/config/trust-policy.yaml +3 -35
- package/templates/.cairn/config/workflow.md +13 -194
- package/templates/.cairn/git-hooks/commit-msg +1 -1
- package/templates/.cairn/ground/canonical-map/topics.yaml +3 -26
- package/templates/.cairn/ground/capabilities/snippets.yaml +0 -1
- package/templates/.cairn/ground/manifest.yaml +5 -8
- package/templates/.cairn/ground/product/personas.yaml +0 -1
- package/dist/context/checkpoint.d.ts +0 -11
- package/dist/context/checkpoint.js +0 -30
- package/dist/context/checkpoint.js.map +0 -1
- package/dist/decision-capture/capture.d.ts +0 -57
- package/dist/decision-capture/capture.js +0 -186
- package/dist/decision-capture/capture.js.map +0 -1
- package/dist/decision-capture/extractor.d.ts +0 -20
- package/dist/decision-capture/extractor.js +0 -103
- package/dist/decision-capture/extractor.js.map +0 -1
- package/dist/decision-capture/prompt.d.ts +0 -15
- package/dist/decision-capture/prompt.js +0 -68
- package/dist/decision-capture/prompt.js.map +0 -1
- package/dist/decision-capture/refinement-prompt.d.ts +0 -25
- package/dist/decision-capture/refinement-prompt.js +0 -146
- package/dist/decision-capture/refinement-prompt.js.map +0 -1
- package/dist/decision-capture/refinement-schema.d.ts +0 -52
- package/dist/decision-capture/refinement-schema.js +0 -61
- package/dist/decision-capture/refinement-schema.js.map +0 -1
- package/dist/decision-capture/refinement.d.ts +0 -60
- package/dist/decision-capture/refinement.js +0 -439
- package/dist/decision-capture/refinement.js.map +0 -1
- package/dist/decision-capture/schema.d.ts +0 -70
- package/dist/decision-capture/schema.js +0 -71
- package/dist/decision-capture/schema.js.map +0 -1
- package/dist/decision-capture/types.d.ts +0 -201
- package/dist/decision-capture/types.js +0 -20
- package/dist/decision-capture/types.js.map +0 -1
- package/dist/decision-capture/writer.d.ts +0 -90
- package/dist/decision-capture/writer.js +0 -267
- package/dist/decision-capture/writer.js.map +0 -1
- package/dist/frontend-types.d.ts +0 -243
- package/dist/frontend-types.js +0 -15
- package/dist/frontend-types.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -14
- package/dist/hooks/index.js +0 -14
- package/dist/hooks/index.js.map +0 -1
- package/dist/inbox.d.ts +0 -17
- package/dist/inbox.js +0 -30
- package/dist/inbox.js.map +0 -1
- package/dist/mcp/tools/append-run-note.d.ts +0 -18
- package/dist/mcp/tools/append-run-note.js +0 -54
- package/dist/mcp/tools/append-run-note.js.map +0 -1
- package/dist/mcp/tools/append.d.ts +0 -8
- package/dist/mcp/tools/append.js +0 -37
- package/dist/mcp/tools/append.js.map +0 -1
- package/dist/mcp/tools/ask-operator.d.ts +0 -34
- package/dist/mcp/tools/ask-operator.js +0 -97
- package/dist/mcp/tools/ask-operator.js.map +0 -1
- package/dist/mcp/tools/drop-task.d.ts +0 -12
- package/dist/mcp/tools/drop-task.js +0 -68
- package/dist/mcp/tools/drop-task.js.map +0 -1
- package/dist/mcp/tools/record-run-event.d.ts +0 -10
- package/dist/mcp/tools/record-run-event.js +0 -32
- package/dist/mcp/tools/record-run-event.js.map +0 -1
- package/dist/prompt.d.ts +0 -19
- package/dist/prompt.js +0 -50
- package/dist/prompt.js.map +0 -1
- package/dist/tier0/classify.d.ts +0 -10
- package/dist/tier0/classify.js +0 -110
- package/dist/tier0/classify.js.map +0 -1
- package/dist/tier0/index.d.ts +0 -2
- package/dist/tier0/index.js +0 -2
- package/dist/tier0/index.js.map +0 -1
- package/dist/tier0/types.d.ts +0 -24
- package/dist/tier0/types.js +0 -9
- package/dist/tier0/types.js.map +0 -1
- package/dist/tightener/index.d.ts +0 -4
- package/dist/tightener/index.js +0 -4
- package/dist/tightener/index.js.map +0 -1
- package/dist/tightener/prompt.d.ts +0 -3
- package/dist/tightener/prompt.js +0 -67
- package/dist/tightener/prompt.js.map +0 -1
- package/dist/tightener/schema.d.ts +0 -68
- package/dist/tightener/schema.js +0 -44
- package/dist/tightener/schema.js.map +0 -1
- package/dist/tightener/tighten.d.ts +0 -2
- package/dist/tightener/tighten.js +0 -66
- package/dist/tightener/tighten.js.map +0 -1
- package/dist/tightener/types.d.ts +0 -74
- package/dist/tightener/types.js +0 -6
- package/dist/tightener/types.js.map +0 -1
- package/templates/.claude/settings.json +0 -57
- package/templates/.mcp.json +0 -8
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
# Trust policy.
|
|
2
2
|
#
|
|
3
|
-
# Per-command trust posture
|
|
3
|
+
# Per-command trust posture. Three classes:
|
|
4
4
|
#
|
|
5
5
|
# read_only no friction — runs without any operator confirmation
|
|
6
6
|
# write_creating light friction — single-tap reaction or button confirm
|
|
7
7
|
# configuration heavy friction — operator must edit a config file
|
|
8
8
|
#
|
|
9
|
-
# Auto-merge classes
|
|
10
|
-
#
|
|
11
|
-
# git-push friction.
|
|
9
|
+
# Auto-merge classes live in workflow.md trust_posture_defaults and the project
|
|
10
|
+
# block; this file governs operator INTERACTION friction, not git-push friction.
|
|
12
11
|
|
|
13
12
|
version: 1
|
|
14
13
|
|
|
@@ -18,12 +17,6 @@ commands:
|
|
|
18
17
|
- id: status
|
|
19
18
|
posture: read_only
|
|
20
19
|
surface: slash
|
|
21
|
-
- id: queue
|
|
22
|
-
posture: read_only
|
|
23
|
-
surface: slash
|
|
24
|
-
- id: eval
|
|
25
|
-
posture: read_only
|
|
26
|
-
surface: slash
|
|
27
20
|
- id: agent_list
|
|
28
21
|
posture: read_only
|
|
29
22
|
surface: slash
|
|
@@ -32,19 +25,6 @@ commands:
|
|
|
32
25
|
surface: slash
|
|
33
26
|
|
|
34
27
|
# ── Write-creating — single-tap confirm ────────────────────────────────
|
|
35
|
-
- id: task
|
|
36
|
-
posture: write_creating
|
|
37
|
-
surface: slash
|
|
38
|
-
confirmation: none # spec tightener handles ambiguity downstream
|
|
39
|
-
- id: run
|
|
40
|
-
posture: write_creating
|
|
41
|
-
surface: slash
|
|
42
|
-
confirmation: reaction_if_outside_pilot_scope
|
|
43
|
-
timeout_seconds: 30
|
|
44
|
-
- id: oops
|
|
45
|
-
posture: write_creating
|
|
46
|
-
surface: slash
|
|
47
|
-
confirmation: per_step_inline_reaction
|
|
48
28
|
- id: direction
|
|
49
29
|
posture: write_creating
|
|
50
30
|
surface: slash
|
|
@@ -60,10 +40,6 @@ commands:
|
|
|
60
40
|
- id: ship_anyway
|
|
61
41
|
posture: write_creating_logged_override
|
|
62
42
|
surface: slash
|
|
63
|
-
confirmation: none # logged for audit; no friction
|
|
64
|
-
- id: halt
|
|
65
|
-
posture: write_creating
|
|
66
|
-
surface: slash
|
|
67
43
|
confirmation: none
|
|
68
44
|
|
|
69
45
|
# ── Configuration — high-friction by design ─────────────────────────────
|
|
@@ -76,12 +52,6 @@ commands:
|
|
|
76
52
|
- id: change_pilot_module
|
|
77
53
|
posture: configuration
|
|
78
54
|
surface: workflow_yaml_edit
|
|
79
|
-
- id: change_collaboration_mode
|
|
80
|
-
posture: configuration
|
|
81
|
-
surface: workflow_yaml_edit
|
|
82
|
-
- id: register_frontend_adapter
|
|
83
|
-
posture: configuration
|
|
84
|
-
surface: workflow_yaml_edit
|
|
85
55
|
- id: change_off_limits
|
|
86
56
|
posture: configuration
|
|
87
57
|
surface: workflow_yaml_edit
|
|
@@ -91,5 +61,3 @@ notification_routing:
|
|
|
91
61
|
errors: all_registered_adapters
|
|
92
62
|
completions: all_registered_adapters
|
|
93
63
|
paged_events: all_registered_adapters
|
|
94
|
-
uat_approval_request: first_registered_adapter
|
|
95
|
-
voice_capable_only: discord
|
|
@@ -7,98 +7,15 @@ verified-at: 2026-05-02T13:19:00Z
|
|
|
7
7
|
source-commits:
|
|
8
8
|
- manual
|
|
9
9
|
|
|
10
|
-
# ──────────────────────────────────────────────────────────────────────────────
|
|
11
|
-
# Top-level (project-agnostic) configuration.
|
|
12
|
-
# This block is read by Cairn package code; values here are universal defaults.
|
|
13
|
-
# Project-specific overrides go in the `<project_name>:` extension block below.
|
|
14
|
-
# ──────────────────────────────────────────────────────────────────────────────
|
|
15
|
-
|
|
16
|
-
collaboration_mode: solo # solo | team — see FILESYSTEM_LAYOUT.md §12
|
|
17
|
-
concurrency: 1 # single-task FIFO; do not change without re-reviewing PRIMER §5.4
|
|
18
|
-
|
|
19
|
-
frontend_adapters:
|
|
20
|
-
- discord # discord | notion | cli | web
|
|
21
|
-
# operator may register additional adapters; first-registered owns approval-request routing
|
|
22
|
-
|
|
23
|
-
tier_assignment:
|
|
24
|
-
intent_classifier: 0 # 0 = Ollama; 1 = Haiku 4.5; 2 = Sonnet 4.6; 3 = Opus 4.7
|
|
25
|
-
spec_tightener_short: 1
|
|
26
|
-
spec_tightener_long: 2
|
|
27
|
-
decision_extractor: 1
|
|
28
|
-
attestation_check: 0 # mechanical regex; LLM only on ambiguity
|
|
29
|
-
implementer_default: 2
|
|
30
|
-
implementer_high_stakes: 3
|
|
31
|
-
reviewer: 2 # same model as implementer; context isolation does the work
|
|
32
|
-
uat_runner: 2
|
|
33
|
-
uat_question_agent: 1
|
|
34
|
-
backprop_author: 2
|
|
35
|
-
garbage_collector: 1
|
|
36
|
-
init_mapper: 2 # one-time at adoption; OK to spend tokens
|
|
37
|
-
|
|
38
|
-
# Tier-3 (Opus) auto-escalation policy — per Codex audit Finding #9.
|
|
39
|
-
escalation:
|
|
40
|
-
tier_3_requires_explicit_approval: true
|
|
41
|
-
max_attempts_per_task: 3 # halt + page operator after this many retries
|
|
42
|
-
pre_run_cost_projection: true # block dispatch on > 1% daily plan-headroom estimate
|
|
43
|
-
|
|
44
|
-
# Run lifecycle thresholds.
|
|
45
|
-
timeouts:
|
|
46
|
-
stall_event_silence_seconds: 300 # no event in 5 min → kill + retry
|
|
47
|
-
uat_decision_seconds: 86400 # 24h before auto-deny
|
|
48
|
-
approval_dialog_seconds: 30 # 🟢/🔴 confirm window
|
|
49
|
-
|
|
50
|
-
# Anthropic plan-quota self-throttle (per WORKFLOW_GUIDE §2.2).
|
|
51
|
-
plan_quota_floor_percent: 20 # below this remaining → Cairn self-throttles to Tier 1 only
|
|
52
|
-
|
|
53
|
-
# Spec-tightener gate.
|
|
54
|
-
spec_quality_floor: 7 # quality_score < floor → operator dialog OR /ship-anyway
|
|
55
|
-
|
|
56
|
-
# Dialog rules.
|
|
57
|
-
operator_dialog_max_questions_per_turn: 2 # Codex audit Finding #7 — collapse 3+ to single tightened proposal
|
|
58
|
-
|
|
59
|
-
# Trust posture defaults — overridden in project block as needed.
|
|
60
|
-
trust_posture_defaults:
|
|
61
|
-
safe_class_auto_merge: true
|
|
62
|
-
code_class_auto_merge: false
|
|
63
|
-
high_stakes_auto_merge: false
|
|
64
|
-
|
|
65
|
-
# Decision capture defaults.
|
|
66
|
-
decision_extractor:
|
|
67
|
-
auto_propose_threshold_confidence: 0.7
|
|
68
|
-
require_assertions_at_confirm: true
|
|
69
|
-
|
|
70
|
-
# Whisper / voice defaults.
|
|
71
|
-
voice:
|
|
72
|
-
enabled: true
|
|
73
|
-
model: large-v3-turbo
|
|
74
|
-
quantization: q5_0
|
|
75
|
-
language: en
|
|
76
|
-
confidence_floor: 0.85 # below → operator confirm-heard prompt
|
|
77
|
-
audio_persistence: forbidden # never write audio to disk
|
|
78
|
-
|
|
79
|
-
# Local mirror checkout (Cairn operates here, never user's working tree).
|
|
80
|
-
mirror:
|
|
81
|
-
base_path: "~/.local/cairn/repos" # one subdir per adopted project
|
|
82
|
-
state_path: "~/.local/cairn/state" # PIDs, sockets, runtime
|
|
83
|
-
models_path: "~/.local/cairn/models"
|
|
84
|
-
|
|
85
|
-
# Retention policy.
|
|
86
|
-
retention_days:
|
|
87
|
-
runs: 90
|
|
88
|
-
transcripts: 90
|
|
89
|
-
inbox: 30
|
|
90
|
-
|
|
91
10
|
# ──────────────────────────────────────────────────────────────────────────────
|
|
92
11
|
# Project-extension placeholder.
|
|
93
12
|
#
|
|
94
|
-
# At adoption
|
|
95
|
-
#
|
|
96
|
-
#
|
|
13
|
+
# At adoption, the init script REPLACES this block with a real key matching
|
|
14
|
+
# the adopting project's `package.json name` (or directory name, lowercased,
|
|
15
|
+
# with non-alphanumerics → underscores).
|
|
97
16
|
#
|
|
98
17
|
# Cairn package code reads this block by `Object.keys()` lookup — never by
|
|
99
|
-
# hardcoded project name
|
|
100
|
-
#
|
|
101
|
-
# Example below uses `<project_name>` as the placeholder key.
|
|
18
|
+
# hardcoded project name.
|
|
102
19
|
# ──────────────────────────────────────────────────────────────────────────────
|
|
103
20
|
|
|
104
21
|
<project_name>:
|
|
@@ -115,116 +32,18 @@ retention_days:
|
|
|
115
32
|
safe_class_auto_merge: true
|
|
116
33
|
code_class_auto_merge: false
|
|
117
34
|
high_stakes_auto_merge: false
|
|
118
|
-
budget_metric:
|
|
119
|
-
primary: claude_code_subscription_quota
|
|
120
|
-
secondary_dollar_record_only: true
|
|
121
|
-
pre_run_projection: true
|
|
122
|
-
tier_3_requires_explicit_approval: true
|
|
123
|
-
max_attempts_per_task: 3
|
|
124
35
|
|
|
125
36
|
---
|
|
126
37
|
|
|
127
|
-
#
|
|
128
|
-
|
|
129
|
-
Below is the rendered-prompt body the orchestrator injects into every agent run. The template engine substitutes `{{var}}` tokens with run-scoped values resolved at dispatch time.
|
|
130
|
-
|
|
131
|
-
## Identity
|
|
132
|
-
|
|
133
|
-
You are running inside Cairn as agent role `{{agent_role}}` for project `{{project_name}}`. Your run-id is `{{run_id}}`. The mirror checkout is at `{{mirror_path}}` pinned to `origin/main` SHA `{{sha_pin}}`. Do not modify files outside the mirror. Do not switch branches.
|
|
134
|
-
|
|
135
|
-
## Task
|
|
136
|
-
|
|
137
|
-
{{tightened_spec_body}}
|
|
138
|
-
|
|
139
|
-
## Acceptance criteria
|
|
140
|
-
|
|
141
|
-
{{#each acceptance_criteria}}
|
|
142
|
-
- {{this}}
|
|
143
|
-
{{/each}}
|
|
144
|
-
|
|
145
|
-
## Decisions in scope
|
|
146
|
-
|
|
147
|
-
The following accepted decisions bind your work. You MUST NOT contradict them. Their machine-readable assertions will be evaluated against your diff.
|
|
148
|
-
|
|
149
|
-
{{#each in_scope_decisions}}
|
|
150
|
-
- **{{id}}** — {{title}} ({{scope_summary}})
|
|
151
|
-
{{/each}}
|
|
152
|
-
|
|
153
|
-
If none, this is empty.
|
|
154
|
-
|
|
155
|
-
## Invariants in scope
|
|
156
|
-
|
|
157
|
-
The following §V invariants bind your work. They have sensors that will block your commit if violated.
|
|
158
|
-
|
|
159
|
-
{{#each in_scope_invariants}}
|
|
160
|
-
- **{{id}}** — {{title}}
|
|
161
|
-
{{/each}}
|
|
162
|
-
|
|
163
|
-
If none, this is empty.
|
|
164
|
-
|
|
165
|
-
## Off-limits paths
|
|
166
|
-
|
|
167
|
-
You MUST NOT modify any of these:
|
|
168
|
-
|
|
169
|
-
{{#each off_limits}}
|
|
170
|
-
- {{this}}
|
|
171
|
-
{{/each}}
|
|
172
|
-
|
|
173
|
-
## Sensors that will run
|
|
174
|
-
|
|
175
|
-
After your turn, these sensors will execute against your diff. Their failure messages are remediation prompts — read them and retry.
|
|
176
|
-
|
|
177
|
-
{{#each scoped_sensors}}
|
|
178
|
-
- `{{id}}` — {{description}}
|
|
179
|
-
{{/each}}
|
|
180
|
-
|
|
181
|
-
## Honesty contract (Layer B)
|
|
182
|
-
|
|
183
|
-
When you emit your final response, include a fenced YAML block titled `attestation` with these fields filled:
|
|
184
|
-
|
|
185
|
-
```yaml
|
|
186
|
-
attestation:
|
|
187
|
-
delivered:
|
|
188
|
-
- symbol: "<name>"
|
|
189
|
-
path: "<path>"
|
|
190
|
-
behavior: full | partial | scaffolded
|
|
191
|
-
sensors_passed: [<sensor_ids>]
|
|
192
|
-
deferred:
|
|
193
|
-
- symbol: "<name>"
|
|
194
|
-
reason: "<one line>"
|
|
195
|
-
known_limitations: []
|
|
196
|
-
todos_introduced: 0
|
|
197
|
-
stubs_introduced: 0
|
|
198
|
-
files_touched: ["<paths>"]
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
This will be cross-checked against your actual diff. Any mismatch fails the run.
|
|
202
|
-
|
|
203
|
-
## Tools available
|
|
204
|
-
|
|
205
|
-
You have the standard Read/Edit/Write/Bash/Glob/Grep tool surface. You also have the Cairn MCP tools — use these for grounding rather than re-reading large files:
|
|
206
|
-
|
|
207
|
-
- `cairn_decision_get(id)` — full ADR + assertions
|
|
208
|
-
- `cairn_decisions_in_scope(globs[])` — IDs whose scope overlaps your target
|
|
209
|
-
- `cairn_invariant_get(id)` — §V invariant + linked sensor
|
|
210
|
-
- `cairn_canonical_for_topic(topic)` — canonical doc path + verified-at
|
|
211
|
-
- `cairn_query_history(scope, question)` — the ONLY way to read `.archive/`
|
|
212
|
-
|
|
213
|
-
## Constraints
|
|
214
|
-
|
|
215
|
-
- Hard cutovers; no backwards-compat shims, no deprecation notices, no transition regex.
|
|
216
|
-
- No `[STALE]` banners — stale docs get archived, not labeled.
|
|
217
|
-
- No model-issued confidence scores in user-visible writes.
|
|
218
|
-
- No commit, no push — Cairn handles git after sensor + reviewer + UAT pass.
|
|
219
|
-
|
|
220
|
-
## Stop conditions
|
|
38
|
+
# Workflow policy
|
|
221
39
|
|
|
222
|
-
|
|
40
|
+
This file is the on-disk surface for the **project-extension block** that
|
|
41
|
+
`cairn-core/src/sensors/runner.ts` reads (via `Object.keys()` lookup) and
|
|
42
|
+
that the Phase-3 init mapper patches with discovered globs and sensors.
|
|
223
43
|
|
|
224
|
-
|
|
44
|
+
The plugin-era cairn does NOT use this file as a per-task prompt template
|
|
45
|
+
— each task's spec lives at `.cairn/tasks/active/<task_id>/spec.tightened.md`
|
|
46
|
+
and is written directly by the `cairn-direction` skill. The reviewer
|
|
47
|
+
subagent reads that spec; nothing renders this markdown body.
|
|
225
48
|
|
|
226
|
-
|
|
227
|
-
blocked_by:
|
|
228
|
-
reason: "<one line>"
|
|
229
|
-
needed_from_operator: "<one line>"
|
|
230
|
-
```
|
|
49
|
+
If you're looking for the daily flow, see `docs/SYSTEM_OVERVIEW.md` §4.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
#
|
|
4
4
|
# Spec: PLUGIN_ARCHITECTURE §17 Layer 1.
|
|
5
5
|
#
|
|
6
|
-
# Validates DEC/TSK/§
|
|
6
|
+
# Validates DEC/TSK/§INV citations in the commit message body when the
|
|
7
7
|
# project's commit policy requires them. The Cairn CLI owns the policy
|
|
8
8
|
# (sensors.yaml `commit_msg_policy`) so the hook stays a thin shim.
|
|
9
9
|
|
|
@@ -4,9 +4,7 @@
|
|
|
4
4
|
# the authoritative path for a topic — no fuzzy match, no hallucinated paths.
|
|
5
5
|
#
|
|
6
6
|
# Adopters extend this registry as their codebase grows. Unknown topics
|
|
7
|
-
# return TOPIC_NOT_REGISTERED — agents must NOT invent topics.
|
|
8
|
-
# /direction confirmation when an operator references a recurring topic
|
|
9
|
-
# the Cairn agents should know about.
|
|
7
|
+
# return TOPIC_NOT_REGISTERED — agents must NOT invent topics.
|
|
10
8
|
#
|
|
11
9
|
# Below is a baseline that ships with `cairn init` so every adoption
|
|
12
10
|
# has a non-empty registry on day one. Trim or extend per project.
|
|
@@ -22,33 +20,12 @@ topics:
|
|
|
22
20
|
- topic: cairn-architecture
|
|
23
21
|
canonical_path: docs/ARCHITECTURE.md
|
|
24
22
|
audience: dual
|
|
25
|
-
- topic: cairn-primer
|
|
26
|
-
canonical_path: docs/PRIMER.md
|
|
27
|
-
audience: dual
|
|
28
23
|
- topic: cairn-mcp-surface
|
|
29
24
|
canonical_path: docs/MCP_SURFACE.md
|
|
30
25
|
audience: dual
|
|
31
26
|
- topic: cairn-filesystem-layout
|
|
32
27
|
canonical_path: docs/FILESYSTEM_LAYOUT.md
|
|
33
28
|
audience: dual
|
|
34
|
-
- topic: cairn-
|
|
35
|
-
canonical_path: docs/
|
|
36
|
-
audience: dual
|
|
37
|
-
- topic: cairn-uat-pipeline
|
|
38
|
-
canonical_path: docs/UAT_PIPELINE.md
|
|
39
|
-
audience: dual
|
|
40
|
-
- topic: cairn-sessionstart-spec
|
|
41
|
-
canonical_path: docs/SESSIONSTART_SPEC.md
|
|
42
|
-
audience: dual
|
|
43
|
-
- topic: two-zone-separation
|
|
44
|
-
canonical_path: docs/PRIMER.md
|
|
45
|
-
audience: dual
|
|
46
|
-
- topic: backprop-protocol
|
|
47
|
-
canonical_path: docs/PRIMER.md
|
|
48
|
-
audience: dual
|
|
49
|
-
- topic: garbage-collection-cadence
|
|
50
|
-
canonical_path: docs/PRIMER.md
|
|
51
|
-
audience: dual
|
|
52
|
-
- topic: anti-patterns
|
|
53
|
-
canonical_path: docs/PRIMER.md
|
|
29
|
+
- topic: cairn-plugin-architecture
|
|
30
|
+
canonical_path: docs/PLUGIN_ARCHITECTURE.md
|
|
54
31
|
audience: dual
|
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
# Ground manifest — read-only for agents.
|
|
2
2
|
#
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
#
|
|
3
|
+
# Regenerated by the GC sweep and post-commit hook. Each entry is one
|
|
4
|
+
# canonical-zone file with its hash, classification, audience, verified-at,
|
|
5
|
+
# and (for generated artifacts) the source + generator.
|
|
6
6
|
#
|
|
7
|
-
# Agents query the MCP tool surface, NOT this file directly.
|
|
8
|
-
# only writer. Modifying this file by hand is meaningless — the daemon overwrites
|
|
9
|
-
# on next event.
|
|
7
|
+
# Agents query the MCP tool surface, NOT this file directly.
|
|
10
8
|
#
|
|
11
|
-
# Layout per FILESYSTEM_LAYOUT.md §8.
|
|
9
|
+
# Layout per docs/FILESYSTEM_LAYOUT.md §8.
|
|
12
10
|
|
|
13
11
|
version: 1
|
|
14
12
|
generated: 2026-05-02T13:19:00Z
|
|
15
|
-
generator: cairn-watch
|
|
16
13
|
files: []
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Checkpoint writer — emits a snapshot of the same handoff block content
|
|
3
|
-
* to `.cairn/tasks/active/<taskId>/checkpoint-<ISO>.md`. Invoked from the
|
|
4
|
-
* Stop hook and by the cairn-direction skill before subagent dispatch.
|
|
5
|
-
*
|
|
6
|
-
* Spec: docs/CONTEXT_CONTINUITY_SPEC.md §2.2.
|
|
7
|
-
*
|
|
8
|
-
* Throws if the task directory is missing — callers should fail loudly when
|
|
9
|
-
* pointed at a stale taskId. Successful writes return the absolute path.
|
|
10
|
-
*/
|
|
11
|
-
export declare function writeCheckpoint(repoRoot: string, taskId: string, _runId: string): Promise<string>;
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Checkpoint writer — emits a snapshot of the same handoff block content
|
|
3
|
-
* to `.cairn/tasks/active/<taskId>/checkpoint-<ISO>.md`. Invoked from the
|
|
4
|
-
* Stop hook and by the cairn-direction skill before subagent dispatch.
|
|
5
|
-
*
|
|
6
|
-
* Spec: docs/CONTEXT_CONTINUITY_SPEC.md §2.2.
|
|
7
|
-
*
|
|
8
|
-
* Throws if the task directory is missing — callers should fail loudly when
|
|
9
|
-
* pointed at a stale taskId. Successful writes return the absolute path.
|
|
10
|
-
*/
|
|
11
|
-
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
12
|
-
import { join } from "node:path";
|
|
13
|
-
import { buildHandoffBlock } from "./handoff-builder.js";
|
|
14
|
-
export async function writeCheckpoint(repoRoot, taskId, _runId) {
|
|
15
|
-
const taskDir = join(repoRoot, ".cairn", "tasks", "active", taskId);
|
|
16
|
-
if (!existsSync(taskDir)) {
|
|
17
|
-
throw new Error(`writeCheckpoint: task directory not found: ${taskDir}`);
|
|
18
|
-
}
|
|
19
|
-
const block = await buildHandoffBlock(repoRoot);
|
|
20
|
-
const content = block === null ? "(no active run handoff to capture)\n" : block;
|
|
21
|
-
// Ensure dir exists (defensive — `existsSync` above guarantees parent, but
|
|
22
|
-
// mkdir recursive is cheap and safe).
|
|
23
|
-
mkdirSync(taskDir, { recursive: true });
|
|
24
|
-
const stamp = new Date().toISOString().replace(/:/g, "-");
|
|
25
|
-
const filename = `checkpoint-${stamp}.md`;
|
|
26
|
-
const abs = join(taskDir, filename);
|
|
27
|
-
writeFileSync(abs, content, "utf8");
|
|
28
|
-
return abs;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=checkpoint.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/context/checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,MAAc,EACd,MAAc;IAEd,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEhF,2EAA2E;IAC3E,sCAAsC;IACtC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,cAAc,KAAK,KAAK,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpC,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* runDecisionCapture — orchestrates the full flow:
|
|
3
|
-
*
|
|
4
|
-
* raw_text → extract → write draft → adapter dialog 🟢/🟡/🔴
|
|
5
|
-
* ├── 🟢 commit → acceptDraft → ledger
|
|
6
|
-
* ├── 🟡 edit → leave draft + return correction text
|
|
7
|
-
* └── 🔴 reject → rejectDraft → no record
|
|
8
|
-
*
|
|
9
|
-
* The dialog is supplied by the caller (typically a FrontendAdapter's
|
|
10
|
-
* requestDialog) so this entry point works equally well in tests with the
|
|
11
|
-
* stub adapter, in CLI with a TTY prompt, and in Discord with the real
|
|
12
|
-
* adapter.
|
|
13
|
-
*/
|
|
14
|
-
import type { FrontendAdapter } from "../frontend-types.js";
|
|
15
|
-
import type { ClaudeTier } from "../claude/index.js";
|
|
16
|
-
import { runDecisionExtractor } from "./extractor.js";
|
|
17
|
-
import { proposeStrictAssertions } from "./refinement.js";
|
|
18
|
-
import type { DecisionCaptureResult } from "./types.js";
|
|
19
|
-
export interface RunDecisionCaptureArgs {
|
|
20
|
-
/** Repo root for the mirror checkout. */
|
|
21
|
-
repoRoot: string;
|
|
22
|
-
/** Raw operator text. */
|
|
23
|
-
rawText: string;
|
|
24
|
-
/** Operator id. */
|
|
25
|
-
authorId: string;
|
|
26
|
-
/** Source — `discord:slash:/direction` or `discord:free_text` etc. */
|
|
27
|
-
source: string;
|
|
28
|
-
/** ISO timestamp the message was received. Default = now. */
|
|
29
|
-
receivedAt?: string;
|
|
30
|
-
/** Tier for the extractor. Default = haiku. */
|
|
31
|
-
tier?: ClaudeTier;
|
|
32
|
-
/** Channel id to thread the confirm dialog through. */
|
|
33
|
-
channelId?: string;
|
|
34
|
-
/** Adapter that owns the confirm dialog. */
|
|
35
|
-
adapter: FrontendAdapter;
|
|
36
|
-
/** Confirm-dialog timeout. Default 60_000 ms. */
|
|
37
|
-
confirmTimeoutMs?: number;
|
|
38
|
-
/**
|
|
39
|
-
* Optional: override the extractor entry point. Smokes inject a stub so
|
|
40
|
-
* the smoke runs without burning claude quota when only the
|
|
41
|
-
* draft/confirm/ledger flow needs verifying.
|
|
42
|
-
*/
|
|
43
|
-
extractorOverride?: typeof runDecisionExtractor;
|
|
44
|
-
/**
|
|
45
|
-
* Skip the post-commit refinement step. Defaults to false. The
|
|
46
|
-
* orchestrator's `bypassRefinement` mirrors this for production runs;
|
|
47
|
-
* smokes that don't care about refinement can flip it on.
|
|
48
|
-
*/
|
|
49
|
-
bypassRefinement?: boolean;
|
|
50
|
-
/** Tier for the refinement proposer. Default = haiku. */
|
|
51
|
-
refinementTier?: ClaudeTier;
|
|
52
|
-
/** Refinement dialog timeout. Default 60_000 ms. */
|
|
53
|
-
refinementDialogTimeoutMs?: number;
|
|
54
|
-
/** Smokes inject a stub proposer to avoid burning claude quota. */
|
|
55
|
-
refinementProposerOverride?: typeof proposeStrictAssertions;
|
|
56
|
-
}
|
|
57
|
-
export declare function runDecisionCapture(args: RunDecisionCaptureArgs): Promise<DecisionCaptureResult>;
|