@isaacriehm/cairn-core 0.7.0 → 0.7.1
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/align-undo/undo.js +2 -2
- package/dist/align-undo/undo.js.map +1 -1
- package/dist/attention/bulk-accept.js +48 -40
- package/dist/attention/bulk-accept.js.map +1 -1
- package/dist/attention/dedup.js +23 -10
- package/dist/attention/dedup.js.map +1 -1
- package/dist/attention/restore.js +2 -2
- package/dist/attention/restore.js.map +1 -1
- package/dist/attention/scoring.js +1 -1
- package/dist/attention/scoring.js.map +1 -1
- package/dist/attention/serve/api.d.ts +1 -0
- package/dist/attention/serve/api.js +127 -80
- package/dist/attention/serve/api.js.map +1 -1
- package/dist/attention/serve/index.d.ts +1 -0
- package/dist/attention/serve/index.js +21 -7
- package/dist/attention/serve/index.js.map +1 -1
- package/dist/attention/source-strip.js +41 -46
- package/dist/attention/source-strip.js.map +1 -1
- package/dist/claude/cache.d.ts +10 -19
- package/dist/claude/cache.js +0 -0
- package/dist/claude/cache.js.map +1 -1
- package/dist/claude/runner.d.ts +4 -6
- package/dist/claude/runner.js +242 -203
- package/dist/claude/runner.js.map +1 -1
- package/dist/claude/types.d.ts +5 -5
- package/dist/context/handoff-builder.d.ts +28 -4
- package/dist/context/handoff-builder.js +75 -157
- package/dist/context/handoff-builder.js.map +1 -1
- package/dist/context/spec-delta.js +61 -9
- package/dist/context/spec-delta.js.map +1 -1
- package/dist/context/task-summary.js +5 -1
- package/dist/context/task-summary.js.map +1 -1
- package/dist/decision-capture/id.js +1 -1
- package/dist/decision-capture/id.js.map +1 -1
- package/dist/doctor/index.d.ts +9 -11
- package/dist/doctor/index.js +118 -175
- package/dist/doctor/index.js.map +1 -1
- package/dist/drain/drain.d.ts +1 -1
- package/dist/drain/drain.js +16 -16
- package/dist/drain/drain.js.map +1 -1
- package/dist/drain/index.d.ts +1 -1
- package/dist/drain/index.js +1 -1
- package/dist/events/reader.d.ts +9 -10
- package/dist/events/reader.js +46 -57
- package/dist/events/reader.js.map +1 -1
- package/dist/events/writer.js +1 -1
- package/dist/events/writer.js.map +1 -1
- package/dist/fix-align/index.d.ts +1 -1
- package/dist/fix-align/index.js +1 -1
- package/dist/fix-align/run.d.ts +1 -1
- package/dist/fix-align/run.js +4 -3
- package/dist/fix-align/run.js.map +1 -1
- package/dist/fix-align/sentinel.d.ts +1 -2
- package/dist/fix-align/sentinel.js +3 -4
- package/dist/fix-align/sentinel.js.map +1 -1
- package/dist/gc/apply.js +1 -1
- package/dist/gc/apply.js.map +1 -1
- package/dist/gc/attested-commits.d.ts +19 -0
- package/dist/gc/attested-commits.js +48 -0
- package/dist/gc/attested-commits.js.map +1 -0
- package/dist/gc/canary.d.ts +11 -21
- package/dist/gc/canary.js +18 -24
- package/dist/gc/canary.js.map +1 -1
- package/dist/gc/citation-integrity.d.ts +11 -14
- package/dist/gc/citation-integrity.js +124 -125
- package/dist/gc/citation-integrity.js.map +1 -1
- package/dist/gc/classify.d.ts +1 -1
- package/dist/gc/classify.js +2 -2
- package/dist/gc/classify.js.map +1 -1
- package/dist/gc/completion-integrity.d.ts +6 -7
- package/dist/gc/completion-integrity.js +45 -53
- package/dist/gc/completion-integrity.js.map +1 -1
- package/dist/gc/doc-gardening.js +1 -9
- package/dist/gc/doc-gardening.js.map +1 -1
- package/dist/gc/frontmatter.js +2 -2
- package/dist/gc/frontmatter.js.map +1 -1
- package/dist/gc/index.d.ts +7 -6
- package/dist/gc/index.js +3 -2
- package/dist/gc/index.js.map +1 -1
- package/dist/gc/quality-update.d.ts +6 -10
- package/dist/gc/quality-update.js +12 -15
- package/dist/gc/quality-update.js.map +1 -1
- package/dist/gc/scope-coverage.js +1 -1
- package/dist/gc/scope-coverage.js.map +1 -1
- package/dist/gc/stub-hits.d.ts +7 -25
- package/dist/gc/stub-hits.js +14 -40
- package/dist/gc/stub-hits.js.map +1 -1
- package/dist/gc/sweep.js +15 -6
- package/dist/gc/sweep.js.map +1 -1
- package/dist/gc/types.d.ts +5 -5
- package/dist/gc/types.js +2 -2
- package/dist/gc/walk-source.js +8 -28
- package/dist/gc/walk-source.js.map +1 -1
- package/dist/hooks/defer.d.ts +9 -20
- package/dist/hooks/defer.js +10 -27
- package/dist/hooks/defer.js.map +1 -1
- package/dist/hooks/post-tool-use/allowlist-reader.d.ts +2 -1
- package/dist/hooks/post-tool-use/allowlist-reader.js +49 -34
- package/dist/hooks/post-tool-use/allowlist-reader.js.map +1 -1
- package/dist/hooks/post-tool-use/index.d.ts +3 -4
- package/dist/hooks/post-tool-use/index.js +3 -3
- package/dist/hooks/post-tool-use/index.js.map +1 -1
- package/dist/hooks/post-tool-use/legend-builder.d.ts +2 -2
- package/dist/hooks/post-tool-use/legend-builder.js +2 -2
- package/dist/hooks/post-tool-use/legend-builder.js.map +1 -1
- package/dist/hooks/post-tool-use/post-write.d.ts +8 -0
- package/dist/hooks/post-tool-use/post-write.js +112 -0
- package/dist/hooks/post-tool-use/post-write.js.map +1 -0
- package/dist/hooks/post-tool-use/read-enricher.d.ts +10 -5
- package/dist/hooks/post-tool-use/read-enricher.js +114 -155
- package/dist/hooks/post-tool-use/read-enricher.js.map +1 -1
- package/dist/hooks/post-tool-use/sot-align.d.ts +12 -0
- package/dist/hooks/post-tool-use/sot-align.js +73 -49
- package/dist/hooks/post-tool-use/sot-align.js.map +1 -1
- package/dist/hooks/post-tool-use/write-guardian.d.ts +40 -8
- package/dist/hooks/post-tool-use/write-guardian.js +202 -254
- package/dist/hooks/post-tool-use/write-guardian.js.map +1 -1
- package/dist/hooks/pre-commit/sot-align-precommit.js +2 -2
- package/dist/hooks/pre-commit/sot-align-precommit.js.map +1 -1
- package/dist/hooks/runners/index.d.ts +2 -2
- package/dist/hooks/runners/index.js +1 -1
- package/dist/hooks/runners/index.js.map +1 -1
- package/dist/hooks/runners/payload.d.ts +34 -19
- package/dist/hooks/runners/payload.js +47 -44
- package/dist/hooks/runners/payload.js.map +1 -1
- package/dist/hooks/runners/session-end.js +12 -11
- package/dist/hooks/runners/session-end.js.map +1 -1
- package/dist/hooks/runners/session-start.d.ts +4 -2
- package/dist/hooks/runners/session-start.js +88 -261
- package/dist/hooks/runners/session-start.js.map +1 -1
- package/dist/hooks/runners/stop.js +27 -8
- package/dist/hooks/runners/stop.js.map +1 -1
- package/dist/hooks/runners/user-prompt-submit.js +7 -1
- package/dist/hooks/runners/user-prompt-submit.js.map +1 -1
- package/dist/hooks/sot-align-common.d.ts +1 -2
- package/dist/hooks/sot-align-common.js +2 -2
- package/dist/hooks/sot-align-common.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +12 -3
- package/dist/index.js.map +1 -1
- package/dist/init/baseline-audit.d.ts +14 -58
- package/dist/init/baseline-audit.js +92 -320
- package/dist/init/baseline-audit.js.map +1 -1
- package/dist/init/brand-derive.d.ts +11 -15
- package/dist/init/brand-derive.js +21 -46
- package/dist/init/brand-derive.js.map +1 -1
- package/dist/init/brand-setup.d.ts +1 -1
- package/dist/init/brand-setup.js +1 -1
- package/dist/init/detect.d.ts +25 -6
- package/dist/init/detect.js +107 -136
- package/dist/init/detect.js.map +1 -1
- package/dist/init/index.d.ts +2 -2
- package/dist/init/index.js +1 -1
- package/dist/init/index.js.map +1 -1
- package/dist/init/ingest-docs.d.ts +2 -2
- package/dist/init/ingest-docs.js +31 -43
- package/dist/init/ingest-docs.js.map +1 -1
- package/dist/init/init.d.ts +21 -21
- package/dist/init/init.js +41 -61
- package/dist/init/init.js.map +1 -1
- package/dist/init/mapper-merge.js +1 -1
- package/dist/init/mapper-merge.js.map +1 -1
- package/dist/init/mapper-parallel.d.ts +1 -1
- package/dist/init/mapper-parallel.js +2 -1
- package/dist/init/mapper-parallel.js.map +1 -1
- package/dist/init/mapper.js +1 -1
- package/dist/init/mapper.js.map +1 -1
- package/dist/init/multi-dev/install.d.ts +5 -5
- package/dist/init/multi-dev/install.js +4 -4
- package/dist/init/overlay.js +1 -0
- package/dist/init/overlay.js.map +1 -1
- package/dist/init/phases/1-detect.js +1 -1
- package/dist/init/phases/1-detect.js.map +1 -1
- package/dist/init/phases/{7c-rules-merge.d.ts → 10-rules-merge.d.ts} +2 -2
- package/dist/init/phases/{7c-rules-merge.js → 10-rules-merge.js} +6 -12
- package/dist/init/phases/10-rules-merge.js.map +1 -0
- package/dist/init/phases/11-baseline.d.ts +7 -0
- package/dist/init/phases/{8-baseline.js → 11-baseline.js} +5 -9
- package/dist/init/phases/11-baseline.js.map +1 -0
- package/dist/init/phases/12-strip.d.ts +10 -0
- package/dist/init/phases/{10-strip.js → 12-strip.js} +10 -14
- package/dist/init/phases/12-strip.js.map +1 -0
- package/dist/init/phases/{12-multidev.d.ts → 13-multidev.d.ts} +2 -2
- package/dist/init/phases/{12-multidev.js → 13-multidev.js} +4 -4
- package/dist/init/phases/{12-multidev.js.map → 13-multidev.js.map} +1 -1
- package/dist/init/phases/3-mapper.d.ts +1 -1
- package/dist/init/phases/3-mapper.js +2 -2
- package/dist/init/phases/3-mapper.js.map +1 -1
- package/dist/init/phases/{3b-seed.d.ts → 4-seed.d.ts} +2 -2
- package/dist/init/phases/{3b-seed.js → 4-seed.js} +7 -7
- package/dist/init/phases/4-seed.js.map +1 -0
- package/dist/init/phases/{4-pilot.d.ts → 5-pilot.d.ts} +2 -2
- package/dist/init/phases/{4-pilot.js → 5-pilot.js} +9 -9
- package/dist/init/phases/{4-pilot.js.map → 5-pilot.js.map} +1 -1
- package/dist/init/phases/{5-brand.d.ts → 6-brand.d.ts} +2 -7
- package/dist/init/phases/{5-brand.js → 6-brand.js} +6 -14
- package/dist/init/phases/6-brand.js.map +1 -0
- package/dist/init/phases/{5b-topic-index.d.ts → 7-topic-index.d.ts} +2 -11
- package/dist/init/phases/{5b-topic-index.js → 7-topic-index.js} +9 -18
- package/dist/init/phases/7-topic-index.js.map +1 -0
- package/dist/init/phases/8-docs-ingest.d.ts +10 -0
- package/dist/init/phases/{6-docs-ingest.js → 8-docs-ingest.js} +6 -11
- package/dist/init/phases/8-docs-ingest.js.map +1 -0
- package/dist/init/phases/9-source-comments.d.ts +6 -0
- package/dist/init/phases/{7b-source-comments.js → 9-source-comments.js} +7 -26
- package/dist/init/phases/9-source-comments.js.map +1 -0
- package/dist/init/phases/index.d.ts +12 -12
- package/dist/init/phases/index.js +11 -11
- package/dist/init/phases/index.js.map +1 -1
- package/dist/init/phases/{parallel-678.d.ts → parallel-8910.d.ts} +7 -8
- package/dist/init/phases/{parallel-678.js → parallel-8910.js} +26 -44
- package/dist/init/phases/parallel-8910.js.map +1 -0
- package/dist/init/phases/source-comments-output-io.d.ts +3 -3
- package/dist/init/phases/source-comments-output-io.js +3 -3
- package/dist/init/phases/types.d.ts +1 -1
- package/dist/init/phases/types.js +10 -10
- package/dist/init/phases/types.js.map +1 -1
- package/dist/init/rules-merge/discover.d.ts +2 -2
- package/dist/init/rules-merge/discover.js +28 -43
- package/dist/init/rules-merge/discover.js.map +1 -1
- package/dist/init/rules-merge/ingest.d.ts +6 -6
- package/dist/init/rules-merge/ingest.js +9 -10
- package/dist/init/rules-merge/ingest.js.map +1 -1
- package/dist/init/rules-merge/keep-markers.d.ts +1 -1
- package/dist/init/rules-merge/keep-markers.js +1 -1
- package/dist/init/rules-merge/regenerate.d.ts +3 -3
- package/dist/init/rules-merge/regenerate.js +3 -3
- package/dist/init/seed.js +17 -24
- package/dist/init/seed.js.map +1 -1
- package/dist/init/sot-emit.d.ts +27 -9
- package/dist/init/sot-emit.js +39 -7
- package/dist/init/sot-emit.js.map +1 -1
- package/dist/init/source-comments/classify.d.ts +2 -2
- package/dist/init/source-comments/classify.js +9 -1
- package/dist/init/source-comments/classify.js.map +1 -1
- package/dist/init/source-comments/index.d.ts +1 -1
- package/dist/init/source-comments/index.js.map +1 -1
- package/dist/init/source-comments/ingest.d.ts +2 -2
- package/dist/init/source-comments/ingest.js +6 -8
- package/dist/init/source-comments/ingest.js.map +1 -1
- package/dist/init/source-comments/strip-replace.js +3 -2
- package/dist/init/source-comments/strip-replace.js.map +1 -1
- package/dist/init/source-comments/walker.d.ts +3 -26
- package/dist/init/source-comments/walker.js +18 -30
- package/dist/init/source-comments/walker.js.map +1 -1
- package/dist/init/topic-index/index.d.ts +1 -1
- package/dist/init/topic-index/index.js +3 -3
- package/dist/init/topic-index/index.js.map +1 -1
- package/dist/init/topic-index/judge.d.ts +5 -9
- package/dist/init/topic-index/judge.js +17 -22
- package/dist/init/topic-index/judge.js.map +1 -1
- package/dist/init/topic-index/resolve.d.ts +5 -4
- package/dist/init/topic-index/resolve.js +6 -6
- package/dist/init/topic-index/resolve.js.map +1 -1
- package/dist/init/topic-index/walk.d.ts +6 -6
- package/dist/init/topic-index/walk.js +9 -9
- package/dist/init/topic-index/walk.js.map +1 -1
- package/dist/lock.js +4 -1
- package/dist/lock.js.map +1 -1
- package/dist/logger.js +3 -0
- package/dist/logger.js.map +1 -1
- package/dist/mcp/history/summarizer.js +1 -1
- package/dist/mcp/history/summarizer.js.map +1 -1
- package/dist/mcp/history/walker.js +1 -1
- package/dist/mcp/history/walker.js.map +1 -1
- package/dist/mcp/path-allowlist.js +1 -1
- package/dist/mcp/path-allowlist.js.map +1 -1
- package/dist/mcp/schemas.d.ts +16 -38
- package/dist/mcp/schemas.js +8 -22
- package/dist/mcp/schemas.js.map +1 -1
- package/dist/mcp/server.js +10 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/archive.js +1 -1
- package/dist/mcp/tools/archive.js.map +1 -1
- package/dist/mcp/tools/attention-wait.js +12 -2
- package/dist/mcp/tools/attention-wait.js.map +1 -1
- package/dist/mcp/tools/bulk-accept-attention.js +29 -30
- package/dist/mcp/tools/bulk-accept-attention.js.map +1 -1
- package/dist/mcp/tools/canonical-for-topic.js +37 -15
- package/dist/mcp/tools/canonical-for-topic.js.map +1 -1
- package/dist/mcp/tools/decision-get.js +2 -2
- package/dist/mcp/tools/decision-get.js.map +1 -1
- package/dist/mcp/tools/decisions-for-symbol.js +2 -2
- package/dist/mcp/tools/decisions-for-symbol.js.map +1 -1
- package/dist/mcp/tools/get-full.js +1 -1
- package/dist/mcp/tools/get-full.js.map +1 -1
- package/dist/mcp/tools/ground-get.js +1 -1
- package/dist/mcp/tools/ground-get.js.map +1 -1
- package/dist/mcp/tools/in-scope.d.ts +8 -0
- package/dist/mcp/tools/in-scope.js +125 -0
- package/dist/mcp/tools/in-scope.js.map +1 -0
- package/dist/mcp/tools/index.js +7 -10
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/init-phases.d.ts +3 -2
- package/dist/mcp/tools/init-phases.js +125 -124
- package/dist/mcp/tools/init-phases.js.map +1 -1
- package/dist/mcp/tools/invariant-get.js +2 -2
- package/dist/mcp/tools/invariant-get.js.map +1 -1
- package/dist/mcp/tools/record-decision.d.ts +4 -3
- package/dist/mcp/tools/record-decision.js +111 -36
- package/dist/mcp/tools/record-decision.js.map +1 -1
- package/dist/mcp/tools/reject-candidate.d.ts +1 -1
- package/dist/mcp/tools/reject-candidate.js +3 -3
- package/dist/mcp/tools/reject-candidate.js.map +1 -1
- package/dist/mcp/tools/resolve-attention.d.ts +5 -18
- package/dist/mcp/tools/resolve-attention.js +58 -158
- package/dist/mcp/tools/resolve-attention.js.map +1 -1
- package/dist/mcp/tools/search-candidates.d.ts +1 -1
- package/dist/mcp/tools/search-candidates.js +4 -4
- package/dist/mcp/tools/search-candidates.js.map +1 -1
- package/dist/mcp/tools/search.js +5 -4
- package/dist/mcp/tools/search.js.map +1 -1
- package/dist/mcp/tools/supersedes-chain.js +2 -2
- package/dist/mcp/tools/supersedes-chain.js.map +1 -1
- package/dist/mcp/tools/task-create.d.ts +1 -0
- package/dist/mcp/tools/task-create.js +2 -0
- package/dist/mcp/tools/task-create.js.map +1 -1
- package/dist/mcp/tools/timeline.js +1 -1
- package/dist/mcp/tools/timeline.js.map +1 -1
- package/dist/mcp/tools/types.d.ts +1 -0
- package/dist/mcp/tools/types.js +9 -1
- package/dist/mcp/tools/types.js.map +1 -1
- package/dist/sensors/attestation.d.ts +1 -1
- package/dist/sensors/attestation.js +2 -2
- package/dist/sensors/attestation.js.map +1 -1
- package/dist/sensors/catalog.d.ts +26 -28
- package/dist/sensors/catalog.js +79 -81
- package/dist/sensors/catalog.js.map +1 -1
- package/dist/sensors/decisions.d.ts +1 -1
- package/dist/sensors/decisions.js +15 -14
- package/dist/sensors/decisions.js.map +1 -1
- package/dist/sensors/diff.js +46 -22
- package/dist/sensors/diff.js.map +1 -1
- package/dist/sensors/runner.d.ts +2 -2
- package/dist/sensors/runner.js +3 -3
- package/dist/sensors/shell.d.ts +4 -0
- package/dist/sensors/shell.js +16 -0
- package/dist/sensors/shell.js.map +1 -0
- package/dist/sensors/structural.d.ts +3 -2
- package/dist/sensors/structural.js +3 -11
- package/dist/sensors/structural.js.map +1 -1
- package/dist/sensors/stub-catalog.d.ts +2 -1
- package/dist/sensors/stub-catalog.js +2 -9
- package/dist/sensors/stub-catalog.js.map +1 -1
- package/dist/sensors/types.d.ts +3 -4
- package/dist/sensors/types.js +1 -2
- package/dist/sensors/types.js.map +1 -1
- package/dist/session-start/build.js +1 -1
- package/dist/session-start/build.js.map +1 -1
- package/dist/status-line/event-queue.js +1 -1
- package/dist/status-line/index.d.ts +1 -1
- package/package.json +3 -2
- package/templates/.cairn/config/sensors.yaml +8 -8
- package/templates/attention-ui/app.js +61 -36
- package/dist/fs.d.ts +0 -5
- package/dist/fs.js +0 -11
- package/dist/fs.js.map +0 -1
- package/dist/ground/alignment-pending.d.ts +0 -28
- package/dist/ground/alignment-pending.js +0 -83
- package/dist/ground/alignment-pending.js.map +0 -1
- package/dist/ground/anchor-map.d.ts +0 -14
- package/dist/ground/anchor-map.js +0 -56
- package/dist/ground/anchor-map.js.map +0 -1
- package/dist/ground/drift.d.ts +0 -8
- package/dist/ground/drift.js +0 -23
- package/dist/ground/drift.js.map +0 -1
- package/dist/ground/file-candidates-map.d.ts +0 -23
- package/dist/ground/file-candidates-map.js +0 -76
- package/dist/ground/file-candidates-map.js.map +0 -1
- package/dist/ground/frontmatter.d.ts +0 -32
- package/dist/ground/frontmatter.js +0 -77
- package/dist/ground/frontmatter.js.map +0 -1
- package/dist/ground/glob.d.ts +0 -10
- package/dist/ground/glob.js +0 -46
- package/dist/ground/glob.js.map +0 -1
- package/dist/ground/index.d.ts +0 -25
- package/dist/ground/index.js +0 -19
- package/dist/ground/index.js.map +0 -1
- package/dist/ground/ledgers.d.ts +0 -14
- package/dist/ground/ledgers.js +0 -105
- package/dist/ground/ledgers.js.map +0 -1
- package/dist/ground/manifest.d.ts +0 -10
- package/dist/ground/manifest.js +0 -84
- package/dist/ground/manifest.js.map +0 -1
- package/dist/ground/paths.d.ts +0 -43
- package/dist/ground/paths.js +0 -109
- package/dist/ground/paths.js.map +0 -1
- package/dist/ground/quality-grades.d.ts +0 -11
- package/dist/ground/quality-grades.js +0 -100
- package/dist/ground/quality-grades.js.map +0 -1
- package/dist/ground/rejected.d.ts +0 -42
- package/dist/ground/rejected.js +0 -100
- package/dist/ground/rejected.js.map +0 -1
- package/dist/ground/schemas.d.ts +0 -582
- package/dist/ground/schemas.js +0 -372
- package/dist/ground/schemas.js.map +0 -1
- package/dist/ground/scope-index.d.ts +0 -96
- package/dist/ground/scope-index.js +0 -290
- package/dist/ground/scope-index.js.map +0 -1
- package/dist/ground/slug.d.ts +0 -60
- package/dist/ground/slug.js +0 -103
- package/dist/ground/slug.js.map +0 -1
- package/dist/ground/sot-bindings.d.ts +0 -14
- package/dist/ground/sot-bindings.js +0 -79
- package/dist/ground/sot-bindings.js.map +0 -1
- package/dist/ground/sot-cache.d.ts +0 -18
- package/dist/ground/sot-cache.js +0 -62
- package/dist/ground/sot-cache.js.map +0 -1
- package/dist/ground/topic-index.d.ts +0 -27
- package/dist/ground/topic-index.js +0 -82
- package/dist/ground/topic-index.js.map +0 -1
- package/dist/ground/walk.d.ts +0 -7
- package/dist/ground/walk.js +0 -53
- package/dist/ground/walk.js.map +0 -1
- package/dist/hooks/post-tool-use/ledger-cache.d.ts +0 -53
- package/dist/hooks/post-tool-use/ledger-cache.js +0 -338
- package/dist/hooks/post-tool-use/ledger-cache.js.map +0 -1
- package/dist/init/phases/10-strip.d.ts +0 -11
- package/dist/init/phases/10-strip.js.map +0 -1
- package/dist/init/phases/3b-seed.js.map +0 -1
- package/dist/init/phases/5-brand.js.map +0 -1
- package/dist/init/phases/5b-topic-index.js.map +0 -1
- package/dist/init/phases/6-docs-ingest.d.ts +0 -15
- package/dist/init/phases/6-docs-ingest.js.map +0 -1
- package/dist/init/phases/7b-source-comments.d.ts +0 -15
- package/dist/init/phases/7b-source-comments.js.map +0 -1
- package/dist/init/phases/7c-rules-merge.js.map +0 -1
- package/dist/init/phases/8-baseline.d.ts +0 -10
- package/dist/init/phases/8-baseline.js.map +0 -1
- package/dist/init/phases/parallel-678.js.map +0 -1
- package/dist/mcp/tools/decisions-in-scope.d.ts +0 -7
- package/dist/mcp/tools/decisions-in-scope.js +0 -66
- package/dist/mcp/tools/decisions-in-scope.js.map +0 -1
- package/dist/mcp/tools/invariants-in-scope.d.ts +0 -7
- package/dist/mcp/tools/invariants-in-scope.js +0 -81
- package/dist/mcp/tools/invariants-in-scope.js.map +0 -1
- package/dist/mcp/tools/propose-decision.d.ts +0 -34
- package/dist/mcp/tools/propose-decision.js +0 -200
- package/dist/mcp/tools/propose-decision.js.map +0 -1
package/dist/gc/sweep.js
CHANGED
|
@@ -16,16 +16,17 @@ import { simpleGit } from "simple-git";
|
|
|
16
16
|
import { logger } from "../logger.js";
|
|
17
17
|
import { selectProfile } from "../profiles/index.js";
|
|
18
18
|
import { applyCommit } from "./apply.js";
|
|
19
|
-
import {
|
|
19
|
+
import { runGcCanary } from "./canary.js";
|
|
20
20
|
import { runCitationIntegrity } from "./citation-integrity.js";
|
|
21
21
|
import { classifyAutoMerge } from "./classify.js";
|
|
22
22
|
import { runCompletionIntegrity } from "./completion-integrity.js";
|
|
23
23
|
import { runDocGardening } from "./doc-gardening.js";
|
|
24
24
|
import { runFrontmatterFreshness } from "./frontmatter.js";
|
|
25
25
|
import { runGeneratorDrift } from "./generator-drift.js";
|
|
26
|
-
import {
|
|
26
|
+
import { runQualityUpdate } from "./quality-update.js";
|
|
27
27
|
import { runScopeCoverage } from "./scope-coverage.js";
|
|
28
28
|
import { runStubCatalogHits } from "./stub-hits.js";
|
|
29
|
+
import { runAttestedCommitsGc } from "./attested-commits.js";
|
|
29
30
|
const log = logger("gc.sweep");
|
|
30
31
|
export async function runGcSweep(opts) {
|
|
31
32
|
const startedAt = Date.now();
|
|
@@ -41,6 +42,7 @@ export async function runGcSweep(opts) {
|
|
|
41
42
|
"scope-coverage": 0,
|
|
42
43
|
"completion-integrity": 0,
|
|
43
44
|
"citation-integrity": 0,
|
|
45
|
+
"attested-commits-pruning": 0,
|
|
44
46
|
};
|
|
45
47
|
// 1. Frontmatter freshness.
|
|
46
48
|
{
|
|
@@ -67,7 +69,7 @@ export async function runGcSweep(opts) {
|
|
|
67
69
|
// 3. Stub catalog hits.
|
|
68
70
|
{
|
|
69
71
|
const t0 = Date.now();
|
|
70
|
-
const r = runStubCatalogHits({
|
|
72
|
+
const r = await runStubCatalogHits({
|
|
71
73
|
repoRoot: opts.repoRoot,
|
|
72
74
|
...(opts.languages !== undefined ? { languages: opts.languages } : {}),
|
|
73
75
|
});
|
|
@@ -87,7 +89,7 @@ export async function runGcSweep(opts) {
|
|
|
87
89
|
// 5. Quality grades.
|
|
88
90
|
{
|
|
89
91
|
const t0 = Date.now();
|
|
90
|
-
const r =
|
|
92
|
+
const r = await runQualityUpdate({
|
|
91
93
|
repoRoot: opts.repoRoot,
|
|
92
94
|
...(opts.qualityRecentRunCount !== undefined ? { recentRunCount: opts.qualityRecentRunCount } : {}),
|
|
93
95
|
});
|
|
@@ -112,10 +114,17 @@ export async function runGcSweep(opts) {
|
|
|
112
114
|
// 8. Citation integrity.
|
|
113
115
|
{
|
|
114
116
|
const t0 = Date.now();
|
|
115
|
-
const r = runCitationIntegrity({ repoRoot: opts.repoRoot });
|
|
117
|
+
const r = await runCitationIntegrity({ repoRoot: opts.repoRoot });
|
|
116
118
|
findings.push(...r.findings);
|
|
117
119
|
passDurations["citation-integrity"] = Date.now() - t0;
|
|
118
120
|
}
|
|
121
|
+
// 9. Attested commits pruning.
|
|
122
|
+
{
|
|
123
|
+
const t0 = Date.now();
|
|
124
|
+
const r = runAttestedCommitsGc({ repoRoot: opts.repoRoot });
|
|
125
|
+
findings.push(...r.findings);
|
|
126
|
+
passDurations["attested-commits-pruning"] = Date.now() - t0;
|
|
127
|
+
}
|
|
119
128
|
// Re-classify proposals against project globs (passes set defaults; this
|
|
120
129
|
// ensures high-stakes hits dominate when a stale-frontmatter doc happens to
|
|
121
130
|
// live under a high-stakes glob).
|
|
@@ -175,7 +184,7 @@ export async function runGcBatch(opts) {
|
|
|
175
184
|
let canaryResult;
|
|
176
185
|
let rolledBack = false;
|
|
177
186
|
if (canaryEnabled && applied.length >= 2) {
|
|
178
|
-
canaryResult =
|
|
187
|
+
canaryResult = await runGcCanary({ repoRoot: opts.repoRoot });
|
|
179
188
|
if (!canaryResult.ok) {
|
|
180
189
|
// Roll back to pre-batch SHA — undoes every commit applied in this
|
|
181
190
|
// batch atomically.
|
package/dist/gc/sweep.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sweep.js","sourceRoot":"","sources":["../../src/gc/sweep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sweep.js","sourceRoot":"","sources":["../../src/gc/sweep.ts"],"names":[],"mappings":"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"}
|
package/dist/gc/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Phase 12 — garbage collection cadence.
|
|
3
3
|
*
|
|
4
|
-
* GC runs five passes
|
|
4
|
+
* GC runs five passes against the canonical zone of an
|
|
5
5
|
* adopted project's mirror checkout:
|
|
6
6
|
*
|
|
7
7
|
* 1. frontmatter-freshness — verified-at >30d warn, >60d block
|
|
@@ -15,15 +15,15 @@
|
|
|
15
15
|
* rebuild). The sweep composer produces a `GcSweepResult` that the CLI / cron
|
|
16
16
|
* decides how to apply.
|
|
17
17
|
*
|
|
18
|
-
* Auto-merge classes
|
|
18
|
+
* Auto-merge classes:
|
|
19
19
|
* safe — formatting, doc regen, frontmatter refresh, generated content,
|
|
20
20
|
* archive moves, stub-catalog additions. Push, no UAT.
|
|
21
21
|
* code — touches *.ts outside generator-managed files. Sensors +
|
|
22
22
|
* reviewer + UAT 🟢 → push.
|
|
23
23
|
* high-stakes — touches projectGlobs.high_stakes_globs. Above + E2E + Layer E.
|
|
24
24
|
*/
|
|
25
|
-
export type GcPassId = "frontmatter-freshness" | "generator-drift" | "stub-catalog-hits" | "doc-gardening" | "quality-grades" | "scope-coverage" | "completion-integrity" | "citation-integrity";
|
|
26
|
-
export type GcFindingKind = "frontmatter_stale" | "generator_drift" | "stub_hit" | "broken_link" | "orphan_path" | "quality_update" | "scope_uncovered" | "scope_drift_orphan" | "scope_index_missing" | "task_integrity_error" | "orphaned_citation" | "superseded_citation";
|
|
25
|
+
export type GcPassId = "frontmatter-freshness" | "generator-drift" | "stub-catalog-hits" | "doc-gardening" | "quality-grades" | "scope-coverage" | "completion-integrity" | "citation-integrity" | "attested-commits-pruning";
|
|
26
|
+
export type GcFindingKind = "frontmatter_stale" | "generator_drift" | "stub_hit" | "broken_link" | "orphan_path" | "quality_update" | "scope_uncovered" | "scope_drift_orphan" | "scope_index_missing" | "task_integrity_error" | "orphaned_citation" | "stale_citation" | "quality_grades_rebuilt" | "superseded_citation";
|
|
27
27
|
export type GcAutoMergeClass = "safe" | "code" | "high-stakes";
|
|
28
28
|
export interface GcFinding {
|
|
29
29
|
pass: GcPassId;
|
|
@@ -33,7 +33,7 @@ export interface GcFinding {
|
|
|
33
33
|
/** Human-readable, one-line summary. */
|
|
34
34
|
detail: string;
|
|
35
35
|
/** warn = surface; block = sensor-equivalent failure. info = neutral. */
|
|
36
|
-
severity: "warn" | "block" | "info";
|
|
36
|
+
severity: "warn" | "block" | "info" | "soft";
|
|
37
37
|
/** Days since verified-at (frontmatter pass only). */
|
|
38
38
|
age_days?: number;
|
|
39
39
|
/** Stub-pattern id when kind = "stub_hit". */
|
package/dist/gc/types.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Phase 12 — garbage collection cadence.
|
|
3
3
|
*
|
|
4
|
-
* GC runs five passes
|
|
4
|
+
* GC runs five passes against the canonical zone of an
|
|
5
5
|
* adopted project's mirror checkout:
|
|
6
6
|
*
|
|
7
7
|
* 1. frontmatter-freshness — verified-at >30d warn, >60d block
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* rebuild). The sweep composer produces a `GcSweepResult` that the CLI / cron
|
|
16
16
|
* decides how to apply.
|
|
17
17
|
*
|
|
18
|
-
* Auto-merge classes
|
|
18
|
+
* Auto-merge classes:
|
|
19
19
|
* safe — formatting, doc regen, frontmatter refresh, generated content,
|
|
20
20
|
* archive moves, stub-catalog additions. Push, no UAT.
|
|
21
21
|
* code — touches *.ts outside generator-managed files. Sensors +
|
package/dist/gc/walk-source.js
CHANGED
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
* filter — used by passes that scan the entire source tree (stub-catalog hits,
|
|
6
6
|
* scope-coverage, etc.).
|
|
7
7
|
*/
|
|
8
|
-
import {
|
|
9
|
-
import { relative, resolve } from "node:path";
|
|
8
|
+
import { walkFs } from "@isaacriehm/cairn-state";
|
|
10
9
|
/** Directories the scan never descends into. */
|
|
11
10
|
export const SOURCE_TREE_SKIP_DIRS = new Set([
|
|
12
11
|
".git",
|
|
@@ -27,32 +26,13 @@ export const SOURCE_TREE_SKIP_DIRS = new Set([
|
|
|
27
26
|
*/
|
|
28
27
|
export function walkSourceTree(repoRoot) {
|
|
29
28
|
const out = [];
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
let entries;
|
|
38
|
-
try {
|
|
39
|
-
entries = readdirSync(dir, { withFileTypes: true, encoding: "utf8" });
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
|
-
for (const entry of entries) {
|
|
45
|
-
const abs = resolve(dir, entry.name);
|
|
46
|
-
if (entry.isDirectory()) {
|
|
47
|
-
if (SOURCE_TREE_SKIP_DIRS.has(entry.name))
|
|
48
|
-
continue;
|
|
49
|
-
stack.push(abs);
|
|
50
|
-
}
|
|
51
|
-
else if (entry.isFile()) {
|
|
52
|
-
out.push(relative(repoRoot, abs).replace(/\\/g, "/"));
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
29
|
+
walkFs({
|
|
30
|
+
dir: repoRoot,
|
|
31
|
+
skipDirs: SOURCE_TREE_SKIP_DIRS,
|
|
32
|
+
onFile: (rel) => {
|
|
33
|
+
out.push(rel);
|
|
34
|
+
},
|
|
35
|
+
});
|
|
56
36
|
out.sort();
|
|
57
37
|
return out;
|
|
58
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walk-source.js","sourceRoot":"","sources":["../../src/gc/walk-source.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"walk-source.js","sourceRoot":"","sources":["../../src/gc/walk-source.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,gDAAgD;AAChD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IAC3C,MAAM;IACN,QAAQ;IACR,cAAc;IACd,aAAa;IACb,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,UAAU;CACX,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,CAAC;QACL,GAAG,EAAE,QAAQ;QACb,QAAQ,EAAE,qBAAqB;QAC/B,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;KACF,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,EAAE,CAAC;IACX,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/hooks/defer.d.ts
CHANGED
|
@@ -12,17 +12,15 @@
|
|
|
12
12
|
*
|
|
13
13
|
* Pure read/write/check helpers — no side effects beyond filesystem.
|
|
14
14
|
*/
|
|
15
|
+
import { z } from "zod";
|
|
15
16
|
export type DeferKind = "bypass" | "review";
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
/** Reviewer-pending task ids at the time of defer. */
|
|
24
|
-
flagged_task_ids: string[];
|
|
25
|
-
}
|
|
17
|
+
declare const DeferStateSchema: z.ZodObject<{
|
|
18
|
+
deferred_at: z.ZodString;
|
|
19
|
+
deferred_for_hours: z.ZodNumber;
|
|
20
|
+
flagged_shas: z.ZodArray<z.ZodString>;
|
|
21
|
+
flagged_task_ids: z.ZodArray<z.ZodString>;
|
|
22
|
+
}, z.core.$strip>;
|
|
23
|
+
export type DeferState = z.infer<typeof DeferStateSchema>;
|
|
26
24
|
export declare function deferStatePath(repoRoot: string, kind: DeferKind): string;
|
|
27
25
|
export declare function readDeferState(repoRoot: string, kind: DeferKind): DeferState | null;
|
|
28
26
|
export declare function writeDeferState(repoRoot: string, kind: DeferKind, snapshot: {
|
|
@@ -34,17 +32,8 @@ export declare function writeDeferState(repoRoot: string, kind: DeferKind, snaps
|
|
|
34
32
|
nowIso?: string;
|
|
35
33
|
}): DeferState;
|
|
36
34
|
export declare function clearDeferState(repoRoot: string, kind: DeferKind): void;
|
|
37
|
-
/**
|
|
38
|
-
* Returns true when `state` is still suppressing — within the time
|
|
39
|
-
* window AND every currently-flagged item is in the deferred snapshot
|
|
40
|
-
* (no new bypasses / new pending reviews have appeared).
|
|
41
|
-
*
|
|
42
|
-
* If anything new appears, the suppression breaks and the Stop hook
|
|
43
|
-
* surfaces the warning again — which is the right behavior, because
|
|
44
|
-
* "defer for 24h" was a promise about the items the operator saw,
|
|
45
|
-
* not a blanket mute.
|
|
46
|
-
*/
|
|
47
35
|
export declare function isDeferActive(state: DeferState, now: Date, currentItems: {
|
|
48
36
|
kind: "shas" | "task_ids";
|
|
49
37
|
values: string[];
|
|
50
38
|
}): boolean;
|
|
39
|
+
export {};
|
package/dist/hooks/defer.js
CHANGED
|
@@ -14,6 +14,13 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
16
16
|
import { dirname, join } from "node:path";
|
|
17
|
+
import { z } from "zod";
|
|
18
|
+
const DeferStateSchema = z.object({
|
|
19
|
+
deferred_at: z.string(),
|
|
20
|
+
deferred_for_hours: z.number(),
|
|
21
|
+
flagged_shas: z.array(z.string()),
|
|
22
|
+
flagged_task_ids: z.array(z.string()),
|
|
23
|
+
});
|
|
17
24
|
const DEFAULT_DEFER_HOURS = 24;
|
|
18
25
|
export function deferStatePath(repoRoot, kind) {
|
|
19
26
|
return join(repoRoot, ".cairn", `.${kind}-deferred-until`);
|
|
@@ -22,16 +29,14 @@ export function readDeferState(repoRoot, kind) {
|
|
|
22
29
|
const path = deferStatePath(repoRoot, kind);
|
|
23
30
|
if (!existsSync(path))
|
|
24
31
|
return null;
|
|
25
|
-
let parsed;
|
|
26
32
|
try {
|
|
27
|
-
parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
33
|
+
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
34
|
+
const result = DeferStateSchema.safeParse(parsed);
|
|
35
|
+
return result.success ? result.data : null;
|
|
28
36
|
}
|
|
29
37
|
catch {
|
|
30
38
|
return null;
|
|
31
39
|
}
|
|
32
|
-
if (!isDeferState(parsed))
|
|
33
|
-
return null;
|
|
34
|
-
return parsed;
|
|
35
40
|
}
|
|
36
41
|
export function writeDeferState(repoRoot, kind, snapshot) {
|
|
37
42
|
const state = {
|
|
@@ -48,16 +53,6 @@ export function writeDeferState(repoRoot, kind, snapshot) {
|
|
|
48
53
|
export function clearDeferState(repoRoot, kind) {
|
|
49
54
|
rmSync(deferStatePath(repoRoot, kind), { force: true });
|
|
50
55
|
}
|
|
51
|
-
/**
|
|
52
|
-
* Returns true when `state` is still suppressing — within the time
|
|
53
|
-
* window AND every currently-flagged item is in the deferred snapshot
|
|
54
|
-
* (no new bypasses / new pending reviews have appeared).
|
|
55
|
-
*
|
|
56
|
-
* If anything new appears, the suppression breaks and the Stop hook
|
|
57
|
-
* surfaces the warning again — which is the right behavior, because
|
|
58
|
-
* "defer for 24h" was a promise about the items the operator saw,
|
|
59
|
-
* not a blanket mute.
|
|
60
|
-
*/
|
|
61
56
|
export function isDeferActive(state, now, currentItems) {
|
|
62
57
|
const deferredAt = Date.parse(state.deferred_at);
|
|
63
58
|
if (Number.isNaN(deferredAt))
|
|
@@ -72,16 +67,4 @@ export function isDeferActive(state, now, currentItems) {
|
|
|
72
67
|
}
|
|
73
68
|
return true;
|
|
74
69
|
}
|
|
75
|
-
function isStringArray(v) {
|
|
76
|
-
return Array.isArray(v) && v.every((x) => typeof x === "string");
|
|
77
|
-
}
|
|
78
|
-
function isDeferState(x) {
|
|
79
|
-
if (x === null || typeof x !== "object")
|
|
80
|
-
return false;
|
|
81
|
-
const o = x;
|
|
82
|
-
return (typeof o["deferred_at"] === "string" &&
|
|
83
|
-
typeof o["deferred_for_hours"] === "number" &&
|
|
84
|
-
isStringArray(o["flagged_shas"]) &&
|
|
85
|
-
isStringArray(o["flagged_task_ids"]));
|
|
86
|
-
}
|
|
87
70
|
//# sourceMappingURL=defer.js.map
|
package/dist/hooks/defer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defer.js","sourceRoot":"","sources":["../../src/hooks/defer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"defer.js","sourceRoot":"","sources":["../../src/hooks/defer.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* guardian and (later) by the Layer D copy-safety sensor.
|
|
5
5
|
*
|
|
6
6
|
* Falls back to hardcoded defaults if the file is missing or
|
|
7
|
-
* unparseable — the guardian must never block
|
|
7
|
+
* unparseable — the guardian must never block due to a missing
|
|
8
|
+
* optional config file.
|
|
8
9
|
*/
|
|
9
10
|
export interface CopySafetyConfig {
|
|
10
11
|
enabled: boolean;
|
|
@@ -4,41 +4,56 @@
|
|
|
4
4
|
* guardian and (later) by the Layer D copy-safety sensor.
|
|
5
5
|
*
|
|
6
6
|
* Falls back to hardcoded defaults if the file is missing or
|
|
7
|
-
* unparseable — the guardian must never block
|
|
7
|
+
* unparseable — the guardian must never block due to a missing
|
|
8
|
+
* optional config file.
|
|
8
9
|
*/
|
|
9
10
|
import { existsSync, readFileSync } from "node:fs";
|
|
10
11
|
import { join } from "node:path";
|
|
11
12
|
import { parse as parseYaml } from "yaml";
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
const CopySafetySchema = z.object({
|
|
15
|
+
enabled: z.boolean().optional(),
|
|
16
|
+
globs: z.array(z.string()).optional(),
|
|
17
|
+
allowlist: z.array(z.string()).optional(),
|
|
18
|
+
}).passthrough();
|
|
19
|
+
const SensorsConfigSchema = z.object({
|
|
20
|
+
copy_safety: CopySafetySchema.optional(),
|
|
21
|
+
}).passthrough();
|
|
12
22
|
const DEFAULT = {
|
|
13
23
|
enabled: true,
|
|
14
24
|
globs: [
|
|
15
25
|
"src/**/*.tsx",
|
|
16
26
|
"src/**/*.jsx",
|
|
27
|
+
"src/**/*.ts",
|
|
28
|
+
"src/**/*.js",
|
|
29
|
+
"src/**/*.mjs",
|
|
30
|
+
"src/**/*.cjs",
|
|
31
|
+
"src/**/*.py",
|
|
32
|
+
"src/**/*.rb",
|
|
33
|
+
"src/**/*.go",
|
|
34
|
+
"src/**/*.rs",
|
|
35
|
+
"src/**/*.java",
|
|
36
|
+
"src/**/*.c",
|
|
37
|
+
"src/**/*.cc",
|
|
38
|
+
"src/**/*.cpp",
|
|
39
|
+
"src/**/*.h",
|
|
40
|
+
"src/**/*.hpp",
|
|
41
|
+
"src/**/*.swift",
|
|
42
|
+
"src/**/*.kt",
|
|
43
|
+
"src/**/*.sh",
|
|
44
|
+
"src/**/*.bash",
|
|
45
|
+
"src/**/*.zsh",
|
|
46
|
+
"src/**/*.sql",
|
|
47
|
+
"src/**/*.html",
|
|
17
48
|
"src/**/*.vue",
|
|
18
49
|
"src/**/*.svelte",
|
|
19
|
-
"
|
|
20
|
-
"src
|
|
21
|
-
"src
|
|
50
|
+
"src/**/*.css",
|
|
51
|
+
"src/**/*.scss",
|
|
52
|
+
"src/**/*.sass",
|
|
53
|
+
"src/**/*.less",
|
|
22
54
|
],
|
|
23
55
|
allowlist: [],
|
|
24
56
|
};
|
|
25
|
-
function defaultsCopy() {
|
|
26
|
-
return {
|
|
27
|
-
enabled: DEFAULT.enabled,
|
|
28
|
-
globs: [...DEFAULT.globs],
|
|
29
|
-
allowlist: [...DEFAULT.allowlist],
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
function asStringArray(value) {
|
|
33
|
-
if (!Array.isArray(value))
|
|
34
|
-
return null;
|
|
35
|
-
const out = [];
|
|
36
|
-
for (const v of value) {
|
|
37
|
-
if (typeof v === "string")
|
|
38
|
-
out.push(v);
|
|
39
|
-
}
|
|
40
|
-
return out;
|
|
41
|
-
}
|
|
42
57
|
export function readCopySafetyConfig(repoRoot) {
|
|
43
58
|
const path = join(repoRoot, ".cairn", "config", "sensors.yaml");
|
|
44
59
|
if (!existsSync(path))
|
|
@@ -50,20 +65,20 @@ export function readCopySafetyConfig(repoRoot) {
|
|
|
50
65
|
catch {
|
|
51
66
|
return defaultsCopy();
|
|
52
67
|
}
|
|
53
|
-
|
|
68
|
+
const result = SensorsConfigSchema.safeParse(parsed);
|
|
69
|
+
if (!result.success || result.data.copy_safety === undefined)
|
|
54
70
|
return defaultsCopy();
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const
|
|
59
|
-
const enabledRaw = block["enabled"];
|
|
60
|
-
const enabled = typeof enabledRaw === "boolean" ? enabledRaw : DEFAULT.enabled;
|
|
61
|
-
const globsParsed = asStringArray(block["globs"]);
|
|
62
|
-
const globs = globsParsed !== null && globsParsed.length > 0
|
|
63
|
-
? globsParsed
|
|
64
|
-
: [...DEFAULT.globs];
|
|
65
|
-
const allowlistParsed = asStringArray(block["allowlist"]);
|
|
66
|
-
const allowlist = allowlistParsed !== null ? allowlistParsed : [];
|
|
71
|
+
const block = result.data.copy_safety;
|
|
72
|
+
const enabled = block.enabled ?? DEFAULT.enabled;
|
|
73
|
+
const globs = (block.globs !== undefined && block.globs.length > 0) ? block.globs : [...DEFAULT.globs];
|
|
74
|
+
const allowlist = block.allowlist ?? [];
|
|
67
75
|
return { enabled, globs, allowlist };
|
|
68
76
|
}
|
|
77
|
+
function defaultsCopy() {
|
|
78
|
+
return {
|
|
79
|
+
enabled: DEFAULT.enabled,
|
|
80
|
+
globs: [...DEFAULT.globs],
|
|
81
|
+
allowlist: [...DEFAULT.allowlist],
|
|
82
|
+
};
|
|
83
|
+
}
|
|
69
84
|
//# sourceMappingURL=allowlist-reader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"allowlist-reader.js","sourceRoot":"","sources":["../../../src/hooks/post-tool-use/allowlist-reader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"allowlist-reader.js","sourceRoot":"","sources":["../../../src/hooks/post-tool-use/allowlist-reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,14 +8,13 @@
|
|
|
8
8
|
export { runReadEnricher } from "./read-enricher.js";
|
|
9
9
|
export { scanCitations } from "./citation-scanner.js";
|
|
10
10
|
export type { ScannedCitations, CitationMatch } from "./citation-scanner.js";
|
|
11
|
-
export { getDecisionsLedger, getFileCandidateCount, getInvariantsLedger, getScopeIndexEntry, lookupTask, } from "./ledger-cache.js";
|
|
12
|
-
export type { LedgerSnapshot, ScopeIndexEntry, TaskLookupResult, } from "./ledger-cache.js";
|
|
13
11
|
export { buildLegend } from "./legend-builder.js";
|
|
14
12
|
export type { ScopeIndexHint } from "./legend-builder.js";
|
|
15
|
-
export { runWriteGuardian } from "./write-guardian.js";
|
|
13
|
+
export { runWriteGuardian, executeWriteGuardian } from "./write-guardian.js";
|
|
16
14
|
export { scanForCopyLeakage } from "./copy-scanner.js";
|
|
17
15
|
export type { CopyIssue } from "./copy-scanner.js";
|
|
18
16
|
export { readCopySafetyConfig } from "./allowlist-reader.js";
|
|
19
17
|
export type { CopySafetyConfig } from "./allowlist-reader.js";
|
|
20
|
-
export { alignFile, runSotAlign } from "./sot-align.js";
|
|
18
|
+
export { alignFile, runSotAlign, executeSotAlign } from "./sot-align.js";
|
|
21
19
|
export type { AlignFileArgs, AlignFileResult, CreationVerdict, DedupVerdict, } from "./sot-align.js";
|
|
20
|
+
export { runPostWriteHook } from "./post-write.js";
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export { runReadEnricher } from "./read-enricher.js";
|
|
9
9
|
export { scanCitations } from "./citation-scanner.js";
|
|
10
|
-
export { getDecisionsLedger, getFileCandidateCount, getInvariantsLedger, getScopeIndexEntry, lookupTask, } from "./ledger-cache.js";
|
|
11
10
|
export { buildLegend } from "./legend-builder.js";
|
|
12
|
-
export { runWriteGuardian } from "./write-guardian.js";
|
|
11
|
+
export { runWriteGuardian, executeWriteGuardian } from "./write-guardian.js";
|
|
13
12
|
export { scanForCopyLeakage } from "./copy-scanner.js";
|
|
14
13
|
export { readCopySafetyConfig } from "./allowlist-reader.js";
|
|
15
|
-
export { alignFile, runSotAlign } from "./sot-align.js";
|
|
14
|
+
export { alignFile, runSotAlign, executeSotAlign } from "./sot-align.js";
|
|
15
|
+
export { runPostWriteHook } from "./post-write.js";
|
|
16
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/post-tool-use/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/post-tool-use/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAOzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* (decisions/invariants in scope) when one was found for the file.
|
|
6
6
|
*/
|
|
7
7
|
import type { ScannedCitations } from "./citation-scanner.js";
|
|
8
|
-
import type { DecisionsLedgerSnapshot, LedgerSnapshot, TaskLookupResult } from "
|
|
8
|
+
import type { DecisionsLedgerSnapshot, LedgerSnapshot, TaskLookupResult } from "@isaacriehm/cairn-state";
|
|
9
9
|
export interface ScopeIndexHint {
|
|
10
10
|
/** DEC-IDs in scope for the file. */
|
|
11
11
|
decisions: string[];
|
|
@@ -16,7 +16,7 @@ export interface ScopeIndexHint {
|
|
|
16
16
|
* `unpromotedCandidates` — count of topic-index entries whose
|
|
17
17
|
* `sot_source` is the file the agent just Read and whose `dec_id` is
|
|
18
18
|
* still null. Sourced via O(1) lookup against
|
|
19
|
-
* `.cairn/ground/file-candidates-map.yaml`
|
|
19
|
+
* `.cairn/ground/file-candidates-map.yaml`
|
|
20
20
|
* When > 0 the legend prepends a curator hint so the agent knows it
|
|
21
21
|
* can call `cairn_propose_decision({ slug })` to surface a passage
|
|
22
22
|
* the operator has clearly committed to as a rule.
|
|
@@ -14,7 +14,7 @@ function row(content) {
|
|
|
14
14
|
* `unpromotedCandidates` — count of topic-index entries whose
|
|
15
15
|
* `sot_source` is the file the agent just Read and whose `dec_id` is
|
|
16
16
|
* still null. Sourced via O(1) lookup against
|
|
17
|
-
* `.cairn/ground/file-candidates-map.yaml`
|
|
17
|
+
* `.cairn/ground/file-candidates-map.yaml`
|
|
18
18
|
* When > 0 the legend prepends a curator hint so the agent knows it
|
|
19
19
|
* can call `cairn_propose_decision({ slug })` to surface a passage
|
|
20
20
|
* the operator has clearly committed to as a rule.
|
|
@@ -36,7 +36,7 @@ export function buildLegend(matches, invariantsLedger, decisionsLedger, scopeHin
|
|
|
36
36
|
const noun = unpromotedCandidates === 1 ? "candidate" : "candidates";
|
|
37
37
|
lines.push(`⚠ This file has ${unpromotedCandidates} unpromoted topic-index ${noun}.`);
|
|
38
38
|
lines.push(" If a passage states an active rule the operator has committed to,");
|
|
39
|
-
lines.push(" call
|
|
39
|
+
lines.push(" call cairn_record_decision({ slug }) to surface it for operator review.");
|
|
40
40
|
lines.push(" Do NOT propose for narrative, plans, or status content.");
|
|
41
41
|
if (hasScopeHint || hasCitations)
|
|
42
42
|
lines.push("");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legend-builder.js","sourceRoot":"","sources":["../../../src/hooks/post-tool-use/legend-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,MAAM,UAAU,GAAG,kDAAkD,CAAC;AACtE,MAAM,aAAa,GAAG,+CAA+C,CAAC;AACtE,MAAM,IAAI,GAAG,GAAG,CAAC;AAEjB,SAAS,GAAG,CAAC,OAAe;IAC1B,OAAO,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CACzB,OAAyB,EACzB,gBAAuC,EACvC,eAA+C,EAC/C,SAAgC,EAChC,WAAiD,EACjD,oBAAoB,GAAG,CAAC;IAExB,MAAM,YAAY,GAChB,SAAS,KAAK,IAAI;QAClB,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtE,MAAM,YAAY,GAChB,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QACxB,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B,MAAM,aAAa,GAAG,oBAAoB,IAAI,CAAC,CAAC;IAEhD,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAElE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,aAAa,EAAE,CAAC;QAClB,iEAAiE;QACjE,gEAAgE;QAChE,sCAAsC;QACtC,MAAM,IAAI,GAAG,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;QACrE,KAAK,CAAC,IAAI,CACR,mBAAmB,oBAAoB,2BAA2B,IAAI,GAAG,CAC1E,CAAC;QACF,KAAK,CAAC,IAAI,CACR,qEAAqE,CACtE,CAAC;QACF,KAAK,CAAC,IAAI,CACR,
|
|
1
|
+
{"version":3,"file":"legend-builder.js","sourceRoot":"","sources":["../../../src/hooks/post-tool-use/legend-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combined PostToolUse hook for Write/Edit tools.
|
|
3
|
+
*
|
|
4
|
+
* Merges the Write Guardian (safety/scope hints) and Layer A alignment
|
|
5
|
+
* into a single runner. This saves ~300ms of Node/CLI boot overhead
|
|
6
|
+
* by running both logically sequential tasks in a single process.
|
|
7
|
+
*/
|
|
8
|
+
export declare function runPostWriteHook(): Promise<void>;
|