@isaacriehm/cairn-core 0.1.9 → 0.2.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/context/checkpoint.d.ts +4 -3
- package/dist/context/checkpoint.js +4 -3
- package/dist/context/checkpoint.js.map +1 -1
- package/dist/context/index.d.ts +2 -2
- package/dist/context/index.js +2 -2
- package/dist/context/spec-delta.js +1 -1
- package/dist/context/spec-delta.js.map +1 -1
- package/dist/doctor/index.d.ts +1 -1
- package/dist/doctor/index.js +4 -59
- package/dist/doctor/index.js.map +1 -1
- package/dist/frontend-types.d.ts +3 -3
- package/dist/frontend-types.js +3 -3
- package/dist/gc/quality-update.d.ts +4 -4
- package/dist/gc/quality-update.js +4 -4
- package/dist/ground/manifest.js +0 -2
- package/dist/ground/manifest.js.map +1 -1
- package/dist/ground/paths.js +0 -1
- package/dist/ground/paths.js.map +1 -1
- package/dist/ground/scope-index.d.ts +3 -2
- package/dist/ground/scope-index.js +3 -2
- package/dist/ground/scope-index.js.map +1 -1
- package/dist/hooks/bypass-detection.js +13 -18
- package/dist/hooks/bypass-detection.js.map +1 -1
- package/dist/hooks/defer.d.ts +50 -0
- package/dist/hooks/defer.js +87 -0
- package/dist/hooks/defer.js.map +1 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/post-tool-use/ledger-cache.d.ts +2 -2
- package/dist/hooks/post-tool-use/ledger-cache.js +5 -4
- package/dist/hooks/post-tool-use/ledger-cache.js.map +1 -1
- package/dist/hooks/runners/index.d.ts +2 -0
- package/dist/hooks/runners/index.js +1 -0
- package/dist/hooks/runners/index.js.map +1 -1
- package/dist/hooks/runners/session-start.js +49 -15
- package/dist/hooks/runners/session-start.js.map +1 -1
- package/dist/hooks/runners/stop.js +81 -24
- package/dist/hooks/runners/stop.js.map +1 -1
- package/dist/hooks/seed-attested.d.ts +25 -0
- package/dist/hooks/seed-attested.js +84 -0
- package/dist/hooks/seed-attested.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +13 -7
- package/dist/index.js.map +1 -1
- 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/init.js +8 -90
- package/dist/init/init.js.map +1 -1
- package/dist/init/mapper.d.ts +1 -1
- package/dist/init/multi-dev/install.d.ts +15 -10
- package/dist/init/multi-dev/install.js +17 -14
- package/dist/init/multi-dev/install.js.map +1 -1
- package/dist/init/overlay.d.ts +14 -0
- package/dist/init/overlay.js +65 -0
- package/dist/init/overlay.js.map +1 -0
- package/dist/init/phases/1-detect.d.ts +10 -0
- package/dist/init/phases/1-detect.js +36 -0
- package/dist/init/phases/1-detect.js.map +1 -0
- package/dist/init/phases/10-strip.d.ts +11 -0
- package/dist/init/phases/10-strip.js +80 -0
- package/dist/init/phases/10-strip.js.map +1 -0
- package/dist/init/phases/12-multidev.d.ts +11 -0
- package/dist/init/phases/12-multidev.js +39 -0
- package/dist/init/phases/12-multidev.js.map +1 -0
- package/dist/init/phases/2-walker.d.ts +8 -0
- package/dist/init/phases/2-walker.js +34 -0
- package/dist/init/phases/2-walker.js.map +1 -0
- package/dist/init/phases/3-mapper.d.ts +14 -0
- package/dist/init/phases/3-mapper.js +56 -0
- package/dist/init/phases/3-mapper.js.map +1 -0
- package/dist/init/phases/3b-seed.d.ts +27 -0
- package/dist/init/phases/3b-seed.js +149 -0
- package/dist/init/phases/3b-seed.js.map +1 -0
- package/dist/init/phases/4-pilot.d.ts +10 -0
- package/dist/init/phases/4-pilot.js +70 -0
- package/dist/init/phases/4-pilot.js.map +1 -0
- package/dist/init/phases/5-brand.d.ts +10 -0
- package/dist/init/phases/5-brand.js +66 -0
- package/dist/init/phases/5-brand.js.map +1 -0
- package/dist/init/phases/6-docs-ingest.d.ts +11 -0
- package/dist/init/phases/6-docs-ingest.js +39 -0
- package/dist/init/phases/6-docs-ingest.js.map +1 -0
- package/dist/init/phases/7b-source-comments.d.ts +6 -0
- package/dist/init/phases/7b-source-comments.js +34 -0
- package/dist/init/phases/7b-source-comments.js.map +1 -0
- package/dist/init/phases/7c-rules-merge.d.ts +6 -0
- package/dist/init/phases/7c-rules-merge.js +34 -0
- package/dist/init/phases/7c-rules-merge.js.map +1 -0
- package/dist/init/phases/8-baseline.d.ts +10 -0
- package/dist/init/phases/8-baseline.js +52 -0
- package/dist/init/phases/8-baseline.js.map +1 -0
- package/dist/init/phases/index.d.ts +15 -0
- package/dist/init/phases/index.js +16 -0
- package/dist/init/phases/index.js.map +1 -0
- package/dist/init/phases/orchestrator.d.ts +49 -0
- package/dist/init/phases/orchestrator.js +85 -0
- package/dist/init/phases/orchestrator.js.map +1 -0
- package/dist/init/phases/state-io.d.ts +19 -0
- package/dist/init/phases/state-io.js +73 -0
- package/dist/init/phases/state-io.js.map +1 -0
- package/dist/init/phases/types.d.ts +93 -0
- package/dist/init/phases/types.js +30 -0
- package/dist/init/phases/types.js.map +1 -0
- package/dist/init/seed.js +11 -2
- package/dist/init/seed.js.map +1 -1
- package/dist/init/walker.d.ts +0 -6
- package/dist/init/walker.js +2 -3
- package/dist/init/walker.js.map +1 -1
- package/dist/join/index.js +49 -2
- package/dist/join/index.js.map +1 -1
- package/dist/logger.d.ts +1 -1
- package/dist/logger.js +5 -5
- package/dist/logger.js.map +1 -1
- package/dist/mcp/errors.d.ts +1 -1
- package/dist/mcp/schemas.d.ts +19 -0
- package/dist/mcp/schemas.js +19 -0
- package/dist/mcp/schemas.js.map +1 -1
- package/dist/mcp/tools/append-run-note.js +13 -6
- package/dist/mcp/tools/append-run-note.js.map +1 -1
- package/dist/mcp/tools/drop-task.js +1 -1
- package/dist/mcp/tools/drop-task.js.map +1 -1
- package/dist/mcp/tools/ground-get.js +2 -2
- package/dist/mcp/tools/ground-get.js.map +1 -1
- package/dist/mcp/tools/index.js +4 -0
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/init-phases.d.ts +24 -0
- package/dist/mcp/tools/init-phases.js +140 -0
- package/dist/mcp/tools/init-phases.js.map +1 -0
- package/dist/mcp/tools/query-history.js +1 -1
- package/dist/mcp/tools/query-history.js.map +1 -1
- package/dist/mcp/tools/resolve-attention.d.ts +3 -1
- package/dist/mcp/tools/resolve-attention.js +228 -11
- package/dist/mcp/tools/resolve-attention.js.map +1 -1
- package/dist/profiles/types.d.ts +1 -1
- package/dist/sensors/catalog.js +8 -3
- package/dist/sensors/catalog.js.map +1 -1
- package/dist/session-start/build.d.ts +4 -0
- package/dist/session-start/build.js +7 -0
- package/dist/session-start/build.js.map +1 -1
- package/dist/status-line/format.d.ts +10 -7
- package/dist/status-line/format.js +16 -14
- package/dist/status-line/format.js.map +1 -1
- package/dist/status-line/index.d.ts +0 -3
- package/dist/status-line/index.js.map +1 -1
- package/dist/status-line/reader.d.ts +1 -1
- package/dist/status-line/reader.js +2 -5
- package/dist/status-line/reader.js.map +1 -1
- package/dist/status-line/writer.d.ts +1 -9
- package/dist/status-line/writer.js +1 -12
- package/dist/status-line/writer.js.map +1 -1
- package/package.json +1 -1
- package/templates/.cairn/JOIN.md +3 -9
- package/templates/.cairn/git-hooks/commit-msg +14 -3
- package/templates/.cairn/git-hooks/pre-commit +22 -13
- package/templates/README.md +0 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drop-task.js","sourceRoot":"","sources":["../../../src/mcp/tools/drop-task.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"drop-task.js","sourceRoot":"","sources":["../../../src/mcp/tools/drop-task.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,14 +9,14 @@ async function handler(ctx, input) {
|
|
|
9
9
|
case "manifest": {
|
|
10
10
|
const path = manifestPath(ctx.repoRoot);
|
|
11
11
|
if (!existsSync(path)) {
|
|
12
|
-
return mcpError("FILE_NOT_FOUND", "manifest.yaml not present (
|
|
12
|
+
return mcpError("FILE_NOT_FOUND", "manifest.yaml not present (init not run yet?)");
|
|
13
13
|
}
|
|
14
14
|
return { path: ".cairn/ground/manifest.yaml", content: readFileSync(path, "utf8") };
|
|
15
15
|
}
|
|
16
16
|
case "quality_grades": {
|
|
17
17
|
const path = qualityGradesPath(ctx.repoRoot);
|
|
18
18
|
if (!existsSync(path)) {
|
|
19
|
-
return mcpError("FILE_NOT_FOUND", "quality-grades.yaml not present (
|
|
19
|
+
return mcpError("FILE_NOT_FOUND", "quality-grades.yaml not present (init not run yet?)");
|
|
20
20
|
}
|
|
21
21
|
return { path: ".cairn/ground/quality-grades.yaml", content: readFileSync(path, "utf8") };
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ground-get.js","sourceRoot":"","sources":["../../../src/mcp/tools/ground-get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EACL,SAAS,EACT,YAAY,EACZ,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAQ/C,KAAK,UAAU,OAAO,CAAC,GAAe,EAAE,KAAY;IAClD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,QAAQ,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvB,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,OAAO,QAAQ,CAAC,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"ground-get.js","sourceRoot":"","sources":["../../../src/mcp/tools/ground-get.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/tools/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { decisionsForSymbolTool } from "./decisions-for-symbol.js";
|
|
|
6
6
|
import { decisionsInScopeTool } from "./decisions-in-scope.js";
|
|
7
7
|
import { getFullTool } from "./get-full.js";
|
|
8
8
|
import { groundGetTool } from "./ground-get.js";
|
|
9
|
+
import { initPhaseTools, initResumeTool } from "./init-phases.js";
|
|
9
10
|
import { invariantGetTool } from "./invariant-get.js";
|
|
10
11
|
import { invariantsInScopeTool } from "./invariants-in-scope.js";
|
|
11
12
|
import { queryHistoryTool } from "./query-history.js";
|
|
@@ -36,5 +37,8 @@ export const allTools = [
|
|
|
36
37
|
archiveTool,
|
|
37
38
|
// Write — plugin-era
|
|
38
39
|
resolveAttentionTool,
|
|
40
|
+
// Write — init pipeline (v0.2.0 MCP-native init)
|
|
41
|
+
initResumeTool,
|
|
42
|
+
...initPhaseTools,
|
|
39
43
|
];
|
|
40
44
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAuB;IAC1C,yBAAyB;IACzB,eAAmC;IACnC,oBAAwC;IACxC,sBAA0C;IAC1C,qBAAyC;IACzC,aAAiC;IACjC,mBAAuC;IACvC,gBAAoC;IACpC,qBAAyC;IACzC,6BAA6B;IAC7B,UAA8B;IAC9B,YAAgC;IAChC,WAA+B;IAC/B,4BAA4B;IAC5B,gBAAoC;IACpC,QAAQ;IACR,kBAAsC;IACtC,iBAAqC;IACrC,WAA+B;IAC/B,qBAAqB;IACrB,oBAAwC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAuB;IAC1C,yBAAyB;IACzB,eAAmC;IACnC,oBAAwC;IACxC,sBAA0C;IAC1C,qBAAyC;IACzC,aAAiC;IACjC,mBAAuC;IACvC,gBAAoC;IACpC,qBAAyC;IACzC,6BAA6B;IAC7B,UAA8B;IAC9B,YAAgC;IAChC,WAA+B;IAC/B,4BAA4B;IAC5B,gBAAoC;IACpC,QAAQ;IACR,kBAAsC;IACtC,iBAAqC;IACrC,WAA+B;IAC/B,qBAAqB;IACrB,oBAAwC;IACxC,iDAAiD;IACjD,cAAkC;IAClC,GAAI,cAAqC;CAC1C,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tools for the v0.2.0 init pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Eleven `cairn_init_phase_<id>` tools — one per PHASE_IDS entry —
|
|
5
|
+
* plus `cairn_init_resume`. The cairn-adopt skill drives the
|
|
6
|
+
* pipeline by:
|
|
7
|
+
* 1. cairn_init_resume → { nextPhase, state }
|
|
8
|
+
* 2. cairn_init_phase_<next> → { complete | needs_input | error, state }
|
|
9
|
+
* 3. AskUserQuestion if needs_input → re-call same tool with state.answer
|
|
10
|
+
* 4. loop on complete + advance until nextPhase === null
|
|
11
|
+
*
|
|
12
|
+
* State persists to .cairn/init-state.json after every phase result
|
|
13
|
+
* (whether complete or needs_input) so the operator can crash-recover.
|
|
14
|
+
*/
|
|
15
|
+
import { type PhaseState } from "../../init/index.js";
|
|
16
|
+
import type { ToolDef } from "./types.js";
|
|
17
|
+
interface PhaseToolInput {
|
|
18
|
+
state: PhaseState;
|
|
19
|
+
}
|
|
20
|
+
interface ResumeToolInput {
|
|
21
|
+
}
|
|
22
|
+
export declare const initPhaseTools: ToolDef<PhaseToolInput>[];
|
|
23
|
+
export declare const initResumeTool: ToolDef<ResumeToolInput>;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tools for the v0.2.0 init pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Eleven `cairn_init_phase_<id>` tools — one per PHASE_IDS entry —
|
|
5
|
+
* plus `cairn_init_resume`. The cairn-adopt skill drives the
|
|
6
|
+
* pipeline by:
|
|
7
|
+
* 1. cairn_init_resume → { nextPhase, state }
|
|
8
|
+
* 2. cairn_init_phase_<next> → { complete | needs_input | error, state }
|
|
9
|
+
* 3. AskUserQuestion if needs_input → re-call same tool with state.answer
|
|
10
|
+
* 4. loop on complete + advance until nextPhase === null
|
|
11
|
+
*
|
|
12
|
+
* State persists to .cairn/init-state.json after every phase result
|
|
13
|
+
* (whether complete or needs_input) so the operator can crash-recover.
|
|
14
|
+
*/
|
|
15
|
+
import { z } from "zod";
|
|
16
|
+
import { PHASE_IDS, freshPhaseState, resumePhases, runPhase10Strip, runPhase12Multidev, runPhase1Detect, runPhase2Walker, runPhase3Mapper, runPhase3bSeed, runPhase4Pilot, runPhase5Brand, runPhase6DocsIngest, runPhase7bSourceComments, runPhase7cRulesMerge, runPhase8Baseline, writePhaseState, clearPhaseState, } from "../../init/index.js";
|
|
17
|
+
import { mcpError } from "../errors.js";
|
|
18
|
+
const phaseIdEnum = z.enum(PHASE_IDS);
|
|
19
|
+
const phaseStateSchema = z.object({
|
|
20
|
+
repoRoot: z.string().min(1),
|
|
21
|
+
currentPhase: phaseIdEnum,
|
|
22
|
+
outputs: z.record(z.string(), z.unknown()),
|
|
23
|
+
answer: z.string().optional(),
|
|
24
|
+
startedAt: z.string().min(1),
|
|
25
|
+
schemaVersion: z.literal(1),
|
|
26
|
+
});
|
|
27
|
+
const initPhaseInput = {
|
|
28
|
+
state: phaseStateSchema,
|
|
29
|
+
};
|
|
30
|
+
const initResumeInput = {};
|
|
31
|
+
const RUNNERS = {
|
|
32
|
+
"1-detect": runPhase1Detect,
|
|
33
|
+
"2-walker": runPhase2Walker,
|
|
34
|
+
"3-mapper": runPhase3Mapper,
|
|
35
|
+
"3b-seed": runPhase3bSeed,
|
|
36
|
+
"4-pilot": runPhase4Pilot,
|
|
37
|
+
"5-brand": runPhase5Brand,
|
|
38
|
+
"6-docs-ingest": runPhase6DocsIngest,
|
|
39
|
+
"7b-source-comments": runPhase7bSourceComments,
|
|
40
|
+
"7c-rules-merge": runPhase7cRulesMerge,
|
|
41
|
+
"8-baseline": runPhase8Baseline,
|
|
42
|
+
"10-strip": runPhase10Strip,
|
|
43
|
+
"12-multidev": runPhase12Multidev,
|
|
44
|
+
};
|
|
45
|
+
function makePhaseTool(id) {
|
|
46
|
+
return {
|
|
47
|
+
name: `cairn_init_phase_${normalizeId(id)}`,
|
|
48
|
+
description: phaseDescription(id),
|
|
49
|
+
inputSchema: initPhaseInput,
|
|
50
|
+
handler: async (ctx, input) => {
|
|
51
|
+
// Sanity: the tool's id must match the phase id baked into state.
|
|
52
|
+
if (input.state.currentPhase !== id) {
|
|
53
|
+
return mcpError("VALIDATION_FAILED", `cairn_init_phase_${normalizeId(id)} requires state.currentPhase=${id}, got ${input.state.currentPhase}`);
|
|
54
|
+
}
|
|
55
|
+
// The state's repoRoot drives the phase, but we sanity-check it
|
|
56
|
+
// against the MCP context's repoRoot so a misaddressed call
|
|
57
|
+
// (e.g. an old state file from a different repo) gets caught.
|
|
58
|
+
if (input.state.repoRoot !== ctx.repoRoot) {
|
|
59
|
+
return mcpError("VALIDATION_FAILED", `state.repoRoot ${input.state.repoRoot} does not match MCP context ${ctx.repoRoot}`);
|
|
60
|
+
}
|
|
61
|
+
const runner = RUNNERS[id];
|
|
62
|
+
const result = await runner(input.state);
|
|
63
|
+
// Persist state after every phase result so the operator can
|
|
64
|
+
// /exit Claude Code mid-init and resume on the next session.
|
|
65
|
+
try {
|
|
66
|
+
writePhaseState(result.state);
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
return mcpError("INTERNAL_ERROR", `failed to persist init state: ${err instanceof Error ? err.message : String(err)}`);
|
|
70
|
+
}
|
|
71
|
+
// Pipeline complete — clean up the state file so the next init
|
|
72
|
+
// starts fresh rather than resuming.
|
|
73
|
+
if (result.status === "complete" && result.nextPhase === null) {
|
|
74
|
+
try {
|
|
75
|
+
clearPhaseState(ctx.repoRoot);
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// best-effort cleanup
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return result;
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function makeResumeTool() {
|
|
86
|
+
return {
|
|
87
|
+
name: "cairn_init_resume",
|
|
88
|
+
description: "Read the on-disk init state for the current repo and return the next phase to invoke. The cairn-adopt skill calls this once at the start of the pipeline (and after any operator interruption) to find where to pick up. Returns { status: 'ready' | 'done', nextPhase: PhaseId | null, state: PhaseState }.",
|
|
89
|
+
inputSchema: initResumeInput,
|
|
90
|
+
handler: async (ctx) => {
|
|
91
|
+
const report = resumePhases(ctx.repoRoot);
|
|
92
|
+
// For a fresh start, ensure state.repoRoot matches ctx.repoRoot
|
|
93
|
+
// (resumePhases uses freshPhaseState(ctx.repoRoot) for this case).
|
|
94
|
+
if (report.state.repoRoot !== ctx.repoRoot) {
|
|
95
|
+
return {
|
|
96
|
+
...report,
|
|
97
|
+
state: { ...freshPhaseState(ctx.repoRoot), startedAt: report.state.startedAt },
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return report;
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
function normalizeId(id) {
|
|
105
|
+
// Tool names go through MCP's allowed-character set — the dash in
|
|
106
|
+
// "7b-source-comments" is fine but we underscore for consistency
|
|
107
|
+
// with cairn_init_resume / cairn_record_decision conventions.
|
|
108
|
+
return id.replace(/-/g, "_");
|
|
109
|
+
}
|
|
110
|
+
function phaseDescription(id) {
|
|
111
|
+
switch (id) {
|
|
112
|
+
case "1-detect":
|
|
113
|
+
return "Phase 1-detect — scan the project's environment + stack signatures. Always advances; no operator input.";
|
|
114
|
+
case "2-walker":
|
|
115
|
+
return "Phase 2-walker — build the repo summary (manifest previews, by-extension counts, framework signals). Always advances.";
|
|
116
|
+
case "3-mapper":
|
|
117
|
+
return "Phase 3-mapper — Sonnet-driven domain map (chunked across module slices). Long-running; no operator input.";
|
|
118
|
+
case "3b-seed":
|
|
119
|
+
return "Phase 3b-seed — write .cairn/ skeleton + config.yaml + scope-index from templates and mapper output. Always advances; no operator input.";
|
|
120
|
+
case "4-pilot":
|
|
121
|
+
return "Phase 4-pilot — operator picks the seed module from mapper's top candidates (1 question).";
|
|
122
|
+
case "5-brand":
|
|
123
|
+
return "Phase 5-brand — operator picks how to populate the brand DEC drafts: skip / auto-fill / manual (1 question).";
|
|
124
|
+
case "6-docs-ingest":
|
|
125
|
+
return "Phase 6-docs-ingest — Haiku batch over README + docs/ → DEC drafts + canonical-map topics. No operator input.";
|
|
126
|
+
case "7b-source-comments":
|
|
127
|
+
return "Phase 7b-source-comments — Haiku batch over docblock-class source comments → DEC drafts + invariant proposals.";
|
|
128
|
+
case "7c-rules-merge":
|
|
129
|
+
return "Phase 7c-rules-merge — Haiku batch over CLAUDE.md / AGENTS.md / .claude/rules/* → propose net-new rules + flag conflicts.";
|
|
130
|
+
case "8-baseline":
|
|
131
|
+
return "Phase 8-baseline — first sensor sweep against synthetic full-tree diff. No operator input.";
|
|
132
|
+
case "10-strip":
|
|
133
|
+
return "Phase 10-strip — per-module strip-replace consent for source-comment essays. Operator picks strip / keep / skip per flagged module.";
|
|
134
|
+
case "12-multidev":
|
|
135
|
+
return "Phase 12-multidev — detect per-host package manager(s) and emit JOIN.md hints for new contributors. No filesystem mutations. Idempotent.";
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
export const initPhaseTools = PHASE_IDS.map((id) => makePhaseTool(id));
|
|
139
|
+
export const initResumeTool = makeResumeTool();
|
|
140
|
+
//# sourceMappingURL=init-phases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-phases.js","sourceRoot":"","sources":["../../../src/mcp/tools/init-phases.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ async function handler(ctx, input) {
|
|
|
30
30
|
catch (err) {
|
|
31
31
|
if (err instanceof ClaudeError) {
|
|
32
32
|
if (isQuotaKind(err.kind)) {
|
|
33
|
-
return mcpError("
|
|
33
|
+
return mcpError("OPERATION_TIMEOUT", `history summarizer quota / rate-limit issue: ${err.message}`, { kind: err.kind, exit_code: err.exitCode ?? null });
|
|
34
34
|
}
|
|
35
35
|
return mcpError("OPERATION_TIMEOUT", `history summarizer call failed: ${err.message}`, { kind: err.kind, exit_code: err.exitCode ?? null });
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-history.js","sourceRoot":"","sources":["../../../src/mcp/tools/query-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EACL,WAAW,EACX,WAAW,EACX,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAUlD,KAAK,UAAU,OAAO,CAAC,GAAe,EAAE,KAAY;IAClD,IAAI,CAAC;QACH,MAAM,IAAI,GAA0C;YAClD,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;QACF,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;QACnE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACxD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACxD,OAAO,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC/B,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,OAAO,QAAQ,CACb,
|
|
1
|
+
{"version":3,"file":"query-history.js","sourceRoot":"","sources":["../../../src/mcp/tools/query-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EACL,WAAW,EACX,WAAW,EACX,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAUlD,KAAK,UAAU,OAAO,CAAC,GAAe,EAAE,KAAY;IAClD,IAAI,CAAC;QACH,MAAM,IAAI,GAA0C;YAClD,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC;QACF,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;QACnE,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACxD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACxD,OAAO,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC/B,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,OAAO,QAAQ,CACb,mBAAmB,EACnB,gDAAgD,GAAG,CAAC,OAAO,EAAE,EAC7D,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,CACpD,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CACb,mBAAmB,EACnB,mCAAmC,GAAG,CAAC,OAAO,EAAE,EAChD,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE,CACpD,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,mBAAmB,CAAC;YAC/B,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACzD,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;QACH,OAAO,QAAQ,CACb,mBAAmB,EACnB,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC/E,EAAE,IAAI,EAAE,CACT,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC9C,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACT,+SAA+S;IACjT,WAAW,EAAE,iBAAiB;IAC9B,OAAO;CACR,CAAC"}
|
|
@@ -24,7 +24,9 @@ import type { ToolDef } from "./types.js";
|
|
|
24
24
|
interface Input {
|
|
25
25
|
item_id: string;
|
|
26
26
|
choice: "a" | "b" | "c";
|
|
27
|
-
kind: "decision_draft" | "baseline_finding" | "invalidation_event" | "drift";
|
|
27
|
+
kind: "decision_draft" | "baseline_finding" | "invalidation_event" | "drift" | "bypass" | "review";
|
|
28
|
+
flagged_items?: string[];
|
|
29
|
+
defer_hours?: number;
|
|
28
30
|
rationale?: string;
|
|
29
31
|
}
|
|
30
32
|
export declare const resolveAttentionTool: ToolDef<Input>;
|
|
@@ -20,14 +20,19 @@
|
|
|
20
20
|
* | invalidation_event | c | abort — caller archives task (no-op here) |
|
|
21
21
|
* | drift | a/b/c | reserved (drift surface lands later) |
|
|
22
22
|
*/
|
|
23
|
-
import { appendFileSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync, } from "node:fs";
|
|
23
|
+
import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, writeFileSync, } from "node:fs";
|
|
24
24
|
import { dirname, join } from "node:path";
|
|
25
|
+
import { parse as parseYaml } from "yaml";
|
|
25
26
|
import { writeInvalidationEvent } from "../../events/index.js";
|
|
26
27
|
import { decisionsDir } from "../../ground/index.js";
|
|
28
|
+
import { clearDeferState, writeDeferState, } from "../../hooks/defer.js";
|
|
29
|
+
import { applyStripReplace, } from "../../init/source-comments/strip-replace.js";
|
|
27
30
|
import { withWriteLock } from "../../lock.js";
|
|
31
|
+
import { logger } from "../../logger.js";
|
|
28
32
|
import { requireBootstrap } from "../bootstrap-guard.js";
|
|
29
33
|
import { mcpError } from "../errors.js";
|
|
30
34
|
import { resolveAttentionInput } from "../schemas.js";
|
|
35
|
+
const log = logger("mcp.resolve-attention");
|
|
31
36
|
async function handler(ctx, input) {
|
|
32
37
|
const block = requireBootstrap(ctx.repoRoot);
|
|
33
38
|
if (block !== null)
|
|
@@ -45,8 +50,66 @@ async function handler(ctx, input) {
|
|
|
45
50
|
resolved_kind: "drift_acknowledged",
|
|
46
51
|
note: "drift resolution surface not yet implemented (step 7+); item left in queue",
|
|
47
52
|
};
|
|
53
|
+
case "bypass":
|
|
54
|
+
return resolveBypass(ctx, input);
|
|
55
|
+
case "review":
|
|
56
|
+
return resolveReview(ctx, input);
|
|
48
57
|
}
|
|
49
58
|
}
|
|
59
|
+
function resolveBypass(ctx, input) {
|
|
60
|
+
return resolveStopSignal(ctx, input, "bypass");
|
|
61
|
+
}
|
|
62
|
+
function resolveReview(ctx, input) {
|
|
63
|
+
return resolveStopSignal(ctx, input, "review");
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Shared resolution path for the two Stop-hook surfaces. choice=a/b
|
|
67
|
+
* are kind-specific intents (the calling skill executes them); the
|
|
68
|
+
* tool's job is to either clear an existing defer file (a/b cases)
|
|
69
|
+
* or write a fresh one with the current snapshot (c).
|
|
70
|
+
*/
|
|
71
|
+
function resolveStopSignal(ctx, input, kind) {
|
|
72
|
+
const flagged = input.flagged_items && input.flagged_items.length > 0
|
|
73
|
+
? input.flagged_items
|
|
74
|
+
: [input.item_id];
|
|
75
|
+
if (input.choice === "c") {
|
|
76
|
+
return withWriteLock(ctx.repoRoot, () => {
|
|
77
|
+
const state = writeDeferState(ctx.repoRoot, kind, {
|
|
78
|
+
flagged_shas: kind === "bypass" ? flagged : [],
|
|
79
|
+
flagged_task_ids: kind === "review" ? flagged : [],
|
|
80
|
+
...(input.defer_hours !== undefined ? { hours: input.defer_hours } : {}),
|
|
81
|
+
});
|
|
82
|
+
return {
|
|
83
|
+
ok: true,
|
|
84
|
+
resolved_kind: `${kind}_deferred`,
|
|
85
|
+
deferred_until: new Date(Date.parse(state.deferred_at) +
|
|
86
|
+
state.deferred_for_hours * 60 * 60 * 1000).toISOString(),
|
|
87
|
+
flagged_count: flagged.length,
|
|
88
|
+
...(input.rationale !== undefined ? { rationale: input.rationale } : {}),
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
// a/b: the operator engaged with the surface (either acted on it or
|
|
93
|
+
// dismissed it). Clear any prior defer so the next Stop sees the
|
|
94
|
+
// fresh state of the world.
|
|
95
|
+
return withWriteLock(ctx.repoRoot, () => {
|
|
96
|
+
clearDeferState(ctx.repoRoot, kind);
|
|
97
|
+
const intent = kind === "bypass"
|
|
98
|
+
? input.choice === "a"
|
|
99
|
+
? "bypass_record"
|
|
100
|
+
: "bypass_accept"
|
|
101
|
+
: input.choice === "a"
|
|
102
|
+
? "review_now"
|
|
103
|
+
: "review_skip";
|
|
104
|
+
return {
|
|
105
|
+
ok: true,
|
|
106
|
+
resolved_kind: intent,
|
|
107
|
+
item_id: input.item_id,
|
|
108
|
+
flagged_count: flagged.length,
|
|
109
|
+
...(input.rationale !== undefined ? { rationale: input.rationale } : {}),
|
|
110
|
+
};
|
|
111
|
+
});
|
|
112
|
+
}
|
|
50
113
|
function resolveDecisionDraft(ctx, input) {
|
|
51
114
|
if (!/^DEC-\d{4,}$/.test(input.item_id)) {
|
|
52
115
|
return Promise.resolve(mcpError("VALIDATION_FAILED", `decision_draft item_id must match DEC-NNNN, got ${input.item_id}`));
|
|
@@ -73,18 +136,17 @@ function resolveDecisionDraft(ctx, input) {
|
|
|
73
136
|
const acceptedPath = join(decDir, `${input.item_id}.md`);
|
|
74
137
|
mkdirSync(dirname(acceptedPath), { recursive: true });
|
|
75
138
|
const draft = readFileSync(inboxPath, "utf8");
|
|
139
|
+
const draftMeta = parseDraftFrontmatter(draft);
|
|
76
140
|
const promoted = promoteDraftStatus(draft);
|
|
77
141
|
writeFileSync(acceptedPath, promoted, "utf8");
|
|
78
142
|
// Remove the draft after promoting so the inbox stays clean.
|
|
79
|
-
|
|
80
|
-
//
|
|
81
|
-
// rename + cleanup as two steps so an interrupt mid-rename leaves
|
|
82
|
-
// a recoverable trail rather than a vanished draft.
|
|
143
|
+
// The canonical accepted file at <decDir>/<id>.md is the
|
|
144
|
+
// recoverable copy if the rmSync interrupts.
|
|
83
145
|
try {
|
|
84
|
-
|
|
146
|
+
rmSync(inboxPath, { force: true });
|
|
85
147
|
}
|
|
86
148
|
catch {
|
|
87
|
-
// ignore — file
|
|
149
|
+
// ignore — best effort, the accepted file is what matters
|
|
88
150
|
}
|
|
89
151
|
try {
|
|
90
152
|
emitEvent(ctx, "decision_accepted", input.item_id, `.cairn/ground/decisions/${input.item_id}.md`);
|
|
@@ -92,12 +154,17 @@ function resolveDecisionDraft(ctx, input) {
|
|
|
92
154
|
catch {
|
|
93
155
|
// event emission must never roll back the resolution
|
|
94
156
|
}
|
|
95
|
-
|
|
157
|
+
let stripOutcome = null;
|
|
158
|
+
if (draftMeta?.captureSource === "init-source-comments" && draftMeta.blockId !== null) {
|
|
159
|
+
stripOutcome = runSourceStrip(ctx.repoRoot, input.item_id, draftMeta);
|
|
160
|
+
}
|
|
161
|
+
const base = {
|
|
96
162
|
ok: true,
|
|
97
163
|
resolved_kind: "decision_accepted",
|
|
98
164
|
item_id: input.item_id,
|
|
99
165
|
accepted_path: `.cairn/ground/decisions/${input.item_id}.md`,
|
|
100
166
|
};
|
|
167
|
+
return stripOutcome === null ? base : { ...base, source_strip: stripOutcome };
|
|
101
168
|
}
|
|
102
169
|
// choice === "b" — reject + archive.
|
|
103
170
|
const today = new Date().toISOString().slice(0, 10);
|
|
@@ -140,7 +207,26 @@ function resolveBaselineFinding(ctx, input) {
|
|
|
140
207
|
return withWriteLock(ctx.repoRoot, () => {
|
|
141
208
|
const suppressionsPath = join(ctx.repoRoot, ".cairn", "baseline", "suppressions.yaml");
|
|
142
209
|
mkdirSync(dirname(suppressionsPath), { recursive: true });
|
|
143
|
-
|
|
210
|
+
// Empty / missing file → seed the YAML root key so the appended
|
|
211
|
+
// entries land under a valid `suppressions:` list. statSync may
|
|
212
|
+
// throw on race; treat any error as "needs header".
|
|
213
|
+
let needsHeader = !existsSync(suppressionsPath);
|
|
214
|
+
if (!needsHeader) {
|
|
215
|
+
try {
|
|
216
|
+
const sz = statSync(suppressionsPath).size;
|
|
217
|
+
if (sz === 0)
|
|
218
|
+
needsHeader = true;
|
|
219
|
+
else {
|
|
220
|
+
const head = readFileSync(suppressionsPath, "utf8");
|
|
221
|
+
if (!/^suppressions\s*:/m.test(head))
|
|
222
|
+
needsHeader = true;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
needsHeader = true;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
const initial = needsHeader ? "suppressions:\n" : "";
|
|
144
230
|
const entry = ` - id: ${JSON.stringify(input.item_id)}\n` +
|
|
145
231
|
` suppressed_at: ${JSON.stringify(new Date().toISOString())}\n` +
|
|
146
232
|
(input.rationale !== undefined
|
|
@@ -171,8 +257,139 @@ function resolveInvalidationEvent(_ctx, input) {
|
|
|
171
257
|
function promoteDraftStatus(body) {
|
|
172
258
|
// Frontmatter `status: draft` → `status: accepted`. Best-effort regex
|
|
173
259
|
// — if the frontmatter shape is unusual the file is still acceptable
|
|
174
|
-
// (status field is advisory).
|
|
175
|
-
|
|
260
|
+
// (status field is advisory). Also covers
|
|
261
|
+
// `status: draft-from-source-comment` (phase 7b's draft marker).
|
|
262
|
+
return body.replace(/^status:\s*draft(?:-from-source-comment)?\b/m, "status: accepted");
|
|
263
|
+
}
|
|
264
|
+
function parseDraftFrontmatter(body) {
|
|
265
|
+
const match = /^---\n([\s\S]*?)\n---/.exec(body);
|
|
266
|
+
if (match === null)
|
|
267
|
+
return null;
|
|
268
|
+
let parsed;
|
|
269
|
+
try {
|
|
270
|
+
parsed = parseYaml(match[1] ?? "");
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
if (parsed === null || typeof parsed !== "object")
|
|
276
|
+
return null;
|
|
277
|
+
const obj = parsed;
|
|
278
|
+
return {
|
|
279
|
+
blockId: typeof obj["blockId"] === "string" ? obj["blockId"] : null,
|
|
280
|
+
sourceFile: typeof obj["sourceFile"] === "string" ? obj["sourceFile"] : null,
|
|
281
|
+
captureSource: typeof obj["capture_source"] === "string" ? obj["capture_source"] : null,
|
|
282
|
+
title: typeof obj["title"] === "string" ? obj["title"] : null,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
function runSourceStrip(repoRoot, decId, meta) {
|
|
286
|
+
const blockId = meta.blockId;
|
|
287
|
+
if (blockId === null) {
|
|
288
|
+
return { attempted: false, files_modified: 0, items_applied: 0, audit_path: null, reason: "no-block-id" };
|
|
289
|
+
}
|
|
290
|
+
const auditPath = findLatestAudit(repoRoot);
|
|
291
|
+
if (auditPath === null) {
|
|
292
|
+
return { attempted: false, files_modified: 0, items_applied: 0, audit_path: null, reason: "no-audit-found" };
|
|
293
|
+
}
|
|
294
|
+
let auditBody;
|
|
295
|
+
try {
|
|
296
|
+
auditBody = parseYaml(readFileSync(auditPath, "utf8"));
|
|
297
|
+
}
|
|
298
|
+
catch (err) {
|
|
299
|
+
log.warn({ err: err instanceof Error ? err.message : String(err), auditPath }, "audit parse failed");
|
|
300
|
+
return { attempted: false, files_modified: 0, items_applied: 0, audit_path: auditPath, reason: "audit-parse-failed" };
|
|
301
|
+
}
|
|
302
|
+
const blocks = extractAuditBlocks(auditBody);
|
|
303
|
+
const block = blocks.find((b) => b.block_id === blockId);
|
|
304
|
+
if (block === undefined) {
|
|
305
|
+
return { attempted: false, files_modified: 0, items_applied: 0, audit_path: auditPath, reason: "block-not-found" };
|
|
306
|
+
}
|
|
307
|
+
const replacement = formatCitation(block.lang, decId, meta.title ?? "");
|
|
308
|
+
const item = {
|
|
309
|
+
blockId,
|
|
310
|
+
file: block.file,
|
|
311
|
+
startOffset: block.start_offset,
|
|
312
|
+
endOffset: block.end_offset,
|
|
313
|
+
replacement,
|
|
314
|
+
};
|
|
315
|
+
let result;
|
|
316
|
+
try {
|
|
317
|
+
result = applyStripReplace({ repoRoot, items: [item] });
|
|
318
|
+
}
|
|
319
|
+
catch (err) {
|
|
320
|
+
log.warn({ err: err instanceof Error ? err.message : String(err), decId, blockId }, "strip-replace failed");
|
|
321
|
+
return { attempted: true, files_modified: 0, items_applied: 0, audit_path: auditPath, reason: "strip-failed" };
|
|
322
|
+
}
|
|
323
|
+
return {
|
|
324
|
+
attempted: true,
|
|
325
|
+
files_modified: result.filesModified,
|
|
326
|
+
items_applied: result.itemsApplied,
|
|
327
|
+
audit_path: auditPath,
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
function findLatestAudit(repoRoot) {
|
|
331
|
+
const dir = join(repoRoot, ".cairn", "baseline");
|
|
332
|
+
if (!existsSync(dir))
|
|
333
|
+
return null;
|
|
334
|
+
let entries;
|
|
335
|
+
try {
|
|
336
|
+
entries = readdirSync(dir);
|
|
337
|
+
}
|
|
338
|
+
catch {
|
|
339
|
+
return null;
|
|
340
|
+
}
|
|
341
|
+
const candidates = entries
|
|
342
|
+
.filter((n) => n.startsWith("source-comments-") && n.endsWith(".yaml"))
|
|
343
|
+
.map((name) => {
|
|
344
|
+
const abs = join(dir, name);
|
|
345
|
+
let mtime = 0;
|
|
346
|
+
try {
|
|
347
|
+
mtime = statSync(abs).mtimeMs;
|
|
348
|
+
}
|
|
349
|
+
catch {
|
|
350
|
+
// ignore
|
|
351
|
+
}
|
|
352
|
+
return { abs, mtime };
|
|
353
|
+
})
|
|
354
|
+
.sort((a, b) => b.mtime - a.mtime);
|
|
355
|
+
return candidates[0]?.abs ?? null;
|
|
356
|
+
}
|
|
357
|
+
function extractAuditBlocks(body) {
|
|
358
|
+
if (body === null || typeof body !== "object")
|
|
359
|
+
return [];
|
|
360
|
+
const obj = body;
|
|
361
|
+
const raw = obj["blocks"];
|
|
362
|
+
if (!Array.isArray(raw))
|
|
363
|
+
return [];
|
|
364
|
+
const out = [];
|
|
365
|
+
for (const entry of raw) {
|
|
366
|
+
if (entry === null || typeof entry !== "object")
|
|
367
|
+
continue;
|
|
368
|
+
const e = entry;
|
|
369
|
+
const block_id = e["block_id"];
|
|
370
|
+
const file = e["file"];
|
|
371
|
+
const lang = e["lang"];
|
|
372
|
+
const start_offset = e["start_offset"];
|
|
373
|
+
const end_offset = e["end_offset"];
|
|
374
|
+
if (typeof block_id !== "string" ||
|
|
375
|
+
typeof file !== "string" ||
|
|
376
|
+
typeof lang !== "string" ||
|
|
377
|
+
typeof start_offset !== "number" ||
|
|
378
|
+
typeof end_offset !== "number") {
|
|
379
|
+
continue;
|
|
380
|
+
}
|
|
381
|
+
out.push({ block_id, file, lang, start_offset, end_offset });
|
|
382
|
+
}
|
|
383
|
+
return out;
|
|
384
|
+
}
|
|
385
|
+
const HASH_LANGS = new Set(["py", "rb", "sh", "lua"]);
|
|
386
|
+
function formatCitation(lang, decId, title) {
|
|
387
|
+
const trimmedTitle = title.trim();
|
|
388
|
+
const tail = trimmedTitle.length > 0 ? `: ${trimmedTitle}` : "";
|
|
389
|
+
if (HASH_LANGS.has(lang)) {
|
|
390
|
+
return `# See ${decId}${tail}`;
|
|
391
|
+
}
|
|
392
|
+
return `// See ${decId}${tail}`;
|
|
176
393
|
}
|
|
177
394
|
function emitEvent(ctx, kind, decId, path) {
|
|
178
395
|
writeInvalidationEvent(ctx.repoRoot, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-attention.js","sourceRoot":"","sources":["../../../src/mcp/tools/resolve-attention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EACL,cAAc,EACd,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAUtD,KAAK,UAAU,OAAO,CAAC,GAAe,EAAE,KAAY;IAClD,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACjC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,gBAAgB;YACnB,OAAO,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1C,KAAK,kBAAkB;YACrB,OAAO,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5C,KAAK,oBAAoB;YACvB,OAAO,wBAAwB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9C,KAAK,OAAO;YACV,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,aAAa,EAAE,oBAAoB;gBACnC,IAAI,EAAE,4EAA4E;aACnF,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAe,EAAE,KAAY;IACzD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,OAAO,CACpB,QAAQ,CACN,mBAAmB,EACnB,mDAAmD,KAAK,CAAC,OAAO,EAAE,CACnE,CACF,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;IAEtE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,OAAO,CACpB,QAAQ,CAAC,gBAAgB,EAAE,eAAe,SAAS,EAAE,CAAC,CACvD,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACzB,kEAAkE;QAClE,+CAA+C;QAC/C,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,IAAI;YACR,aAAa,EAAE,uBAAuB;YACtC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,UAAU,EAAE,kCAAkC,KAAK,CAAC,OAAO,WAAW;YACtE,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;YACzD,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC3C,aAAa,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9C,6DAA6D;YAC7D,UAAU,CAAC,SAAS,EAAE,GAAG,SAAS,WAAW,CAAC,CAAC;YAC/C,6DAA6D;YAC7D,kEAAkE;YAClE,oDAAoD;YACpD,IAAI,CAAC;gBACH,UAAU,CAAC,GAAG,SAAS,WAAW,EAAE,GAAG,SAAS,eAAe,CAAC,CAAC;YACnE,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;YAC/B,CAAC;YACD,IAAI,CAAC;gBACH,SAAS,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,CAAC,OAAO,EAAE,2BAA2B,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC;YACpG,CAAC;YAAC,MAAM,CAAC;gBACP,qDAAqD;YACvD,CAAC;YACD,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,aAAa,EAAE,mBAAmB;gBAClC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,aAAa,EAAE,2BAA2B,KAAK,CAAC,OAAO,KAAK;aAC7D,CAAC;QACJ,CAAC;QAED,qCAAqC;QACrC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,gCAAgC,EAAE,GAAG,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;QAC3G,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACpD,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACnC,IAAI,CAAC;YACH,SAAS,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,aAAa,EAAE,mBAAmB;YAClC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,WAAW;YACxB,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAe,EAAE,KAAY;IAC3D,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,IAAI;YACR,aAAa,EAAE,iBAAiB;YAChC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,8DAA8D;SACrE,CAAC,CAAC;IACL,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,EAAE,EAAE,IAAI;YACR,aAAa,EAAE,mBAAmB;YAClC,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;QACvF,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;QACtE,MAAM,KAAK,GACT,WAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;YAC5C,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI;YAClE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS;gBAC5B,CAAC,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI;gBACvD,CAAC,CAAC,EAAE,CAAC,CAAC;QACV,cAAc,CAAC,gBAAgB,EAAE,GAAG,OAAO,GAAG,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/D,OAAO;YACL,EAAE,EAAE,IAAI;YACR,aAAa,EAAE,qBAAqB;YACpC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,iBAAiB,EAAE,mCAAmC;SACvD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAgB,EAAE,KAAY;IAC9D,oEAAoE;IACpE,kEAAkE;IAClE,kEAAkE;IAClE,8BAA8B;IAC9B,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,OAAO,EAAW,CAAC;IAC3E,OAAO,OAAO,CAAC,OAAO,CAAC;QACrB,EAAE,EAAE,IAAI;QACR,aAAa,EAAE,gBAAgB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAClD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzE,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,sEAAsE;IACtE,qEAAqE;IACrE,8BAA8B;IAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,SAAS,CAChB,GAAe,EACf,IAAY,EACZ,KAAa,EACb,IAAY;IAEZ,sBAAsB,CAAC,GAAG,CAAC,QAAQ,EAAE;QACnC,IAAI;QACJ,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACvC,IAAI;QACJ,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI,EAAE,IAAI,EAAE,yBAAyB,EAAE;KAC/E,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAmB;IAClD,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EACT,mOAAmO;IACrO,WAAW,EAAE,qBAAqB;IAClC,OAAO;CACR,CAAC"}
|
|
1
|
+
{"version":3,"file":"resolve-attention.js","sourceRoot":"","sources":["../../../src/mcp/tools/resolve-attention.ts"],"names":[],"mappings":"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"}
|
package/dist/profiles/types.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export interface ProfileSensorRef {
|
|
|
18
18
|
severity?: "hard" | "soft";
|
|
19
19
|
}
|
|
20
20
|
export interface ProfileExtractorContext {
|
|
21
|
-
/** The repo root the
|
|
21
|
+
/** The repo root the GC / MCP server is operating against (mirror path). */
|
|
22
22
|
repoRoot: string;
|
|
23
23
|
}
|
|
24
24
|
export interface ProfileExtractor {
|