@isaacriehm/cairn-core 0.3.4 → 0.3.5
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/init/index.d.ts +2 -2
- package/dist/init/index.js +1 -1
- package/dist/init/index.js.map +1 -1
- package/dist/init/overlay.d.ts +3 -1
- package/dist/init/overlay.js.map +1 -1
- package/dist/init/phases/3-mapper.d.ts +10 -4
- package/dist/init/phases/3-mapper.js +16 -5
- package/dist/init/phases/3-mapper.js.map +1 -1
- package/dist/init/phases/3b-seed.js +5 -1
- package/dist/init/phases/3b-seed.js.map +1 -1
- package/dist/init/phases/4-pilot.js.map +1 -1
- package/dist/init/phases/5-brand.js.map +1 -1
- package/dist/init/phases/8-baseline.js.map +1 -1
- package/dist/init/phases/index.d.ts +1 -0
- package/dist/init/phases/index.js +1 -0
- package/dist/init/phases/index.js.map +1 -1
- package/dist/init/phases/mapper-output-io.d.ts +48 -0
- package/dist/init/phases/mapper-output-io.js +66 -0
- package/dist/init/phases/mapper-output-io.js.map +1 -0
- package/dist/mcp/tools/init-phases.d.ts +22 -8
- package/dist/mcp/tools/init-phases.js +79 -37
- package/dist/mcp/tools/init-phases.js.map +1 -1
- package/package.json +1 -1
- package/dist/hooks/user-prompt-submit.d.ts +0 -7
- package/dist/hooks/user-prompt-submit.js +0 -12
- package/dist/hooks/user-prompt-submit.js.map +0 -1
package/dist/init/index.d.ts
CHANGED
|
@@ -32,5 +32,5 @@ export { buildRepoSummary } from "./walker.js";
|
|
|
32
32
|
export type { BuildRepoSummaryOptions, ManifestPreview, RepoSummary, } from "./walker.js";
|
|
33
33
|
export { updateWorkflowSlugBlock } from "./workflow-block.js";
|
|
34
34
|
export type { UpdateResult as WorkflowSlugUpdateResult, WorkflowSlugBlockUpdate, } from "./workflow-block.js";
|
|
35
|
-
export { PHASE_IDS, INIT_STATE_PATH, phaseStateAbsPath, readPhaseState, writePhaseState, clearPhaseState, freshPhaseState, resumePhases, nextPhaseAfter, advancePhase, runPhase1Detect, runPhase2Walker, runPhase3Mapper, runPhase3bSeed, runPhase4Pilot, runPhase5Brand, runPhase6DocsIngest, runPhase7bSourceComments, runPhase7cRulesMerge, runPhase8Baseline, runPhase10Strip, runPhase12Multidev, } from "./phases/index.js";
|
|
36
|
-
export type { PhaseId, PhaseState, PhaseOutputs, PhaseResult, PhaseQuestion, PhaseOption, PhaseError, ResumeReport, } from "./phases/index.js";
|
|
35
|
+
export { PHASE_IDS, INIT_STATE_PATH, phaseStateAbsPath, readPhaseState, writePhaseState, clearPhaseState, freshPhaseState, resumePhases, nextPhaseAfter, advancePhase, MAPPER_OUTPUT_PATH, mapperOutputAbsPath, readMapperOutputFile, writeMapperOutputFile, toMapperResultPersisted, runPhase1Detect, runPhase2Walker, runPhase3Mapper, runPhase3bSeed, runPhase4Pilot, runPhase5Brand, runPhase6DocsIngest, runPhase7bSourceComments, runPhase7cRulesMerge, runPhase8Baseline, runPhase10Strip, runPhase12Multidev, } from "./phases/index.js";
|
|
36
|
+
export type { PhaseId, PhaseState, PhaseOutputs, PhaseResult, PhaseQuestion, PhaseOption, PhaseError, ResumeReport, MapperResultPersisted, } from "./phases/index.js";
|
package/dist/init/index.js
CHANGED
|
@@ -16,5 +16,5 @@ export { seedCairnLayout, templatesRoot } from "./seed.js";
|
|
|
16
16
|
export { editYaml, freeTextWithDefault, squareIntoSquareHole, yesNo, } from "./prompts.js";
|
|
17
17
|
export { buildRepoSummary } from "./walker.js";
|
|
18
18
|
export { updateWorkflowSlugBlock } from "./workflow-block.js";
|
|
19
|
-
export { PHASE_IDS, INIT_STATE_PATH, phaseStateAbsPath, readPhaseState, writePhaseState, clearPhaseState, freshPhaseState, resumePhases, nextPhaseAfter, advancePhase, runPhase1Detect, runPhase2Walker, runPhase3Mapper, runPhase3bSeed, runPhase4Pilot, runPhase5Brand, runPhase6DocsIngest, runPhase7bSourceComments, runPhase7cRulesMerge, runPhase8Baseline, runPhase10Strip, runPhase12Multidev, } from "./phases/index.js";
|
|
19
|
+
export { PHASE_IDS, INIT_STATE_PATH, phaseStateAbsPath, readPhaseState, writePhaseState, clearPhaseState, freshPhaseState, resumePhases, nextPhaseAfter, advancePhase, MAPPER_OUTPUT_PATH, mapperOutputAbsPath, readMapperOutputFile, writeMapperOutputFile, toMapperResultPersisted, runPhase1Detect, runPhase2Walker, runPhase3Mapper, runPhase3bSeed, runPhase4Pilot, runPhase5Brand, runPhase6DocsIngest, runPhase7bSourceComments, runPhase7cRulesMerge, runPhase8Baseline, runPhase10Strip, runPhase12Multidev, } from "./phases/index.js";
|
|
20
20
|
//# sourceMappingURL=index.js.map
|
package/dist/init/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/init/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKpE,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EACL,YAAY,EACZ,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,IAAI,wBAAwB,EACrC,iBAAiB,EACjB,cAAc,EACd,UAAU,IAAI,uBAAuB,EACrC,mBAAmB,EACnB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,eAAe,EACf,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AA6C9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAUrB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE3D,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,GAKN,MAAM,cAAc,CAAC;AAStB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAM/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAK9D,OAAO,EACL,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,GACnB,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/init/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,YAAY,EACZ,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKpE,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EACL,YAAY,EACZ,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,SAAS,IAAI,wBAAwB,EACrC,iBAAiB,EACjB,cAAc,EACd,UAAU,IAAI,uBAAuB,EACrC,mBAAmB,EACnB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,eAAe,EACf,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AA6C9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAUrB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE3D,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,GAKN,MAAM,cAAc,CAAC;AAStB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAM/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAK9D,OAAO,EACL,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,GACnB,MAAM,mBAAmB,CAAC"}
|
package/dist/init/overlay.d.ts
CHANGED
|
@@ -8,7 +8,9 @@ import type { DetectionResult } from "./types.js";
|
|
|
8
8
|
interface BuildProjectOverlayArgs {
|
|
9
9
|
detection: DetectionResult;
|
|
10
10
|
decidedSlug: string;
|
|
11
|
-
mapperOutput?: MapperOutput
|
|
11
|
+
mapperOutput?: Omit<MapperOutput, "scope_index"> & {
|
|
12
|
+
scope_index?: MapperOutput["scope_index"];
|
|
13
|
+
};
|
|
12
14
|
}
|
|
13
15
|
export declare function buildProjectOverlay(args: BuildProjectOverlayArgs): Record<string, unknown>;
|
|
14
16
|
export {};
|
package/dist/init/overlay.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../src/init/overlay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAItC,MAAM,kBAAkB,GAAG;IACzB,MAAM;IACN,QAAQ;IACR,eAAe;IACf,OAAO;IACP,QAAQ;IACR,SAAS;IACT,cAAc;IACd,SAAS;IACT,QAAQ;IACR,UAAU;IACV,SAAS;IACT,WAAW;CACZ,CAAC;
|
|
1
|
+
{"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../src/init/overlay.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAItC,MAAM,kBAAkB,GAAG;IACzB,MAAM;IACN,QAAQ;IACR,eAAe;IACf,OAAO;IACP,QAAQ;IACR,SAAS;IACT,cAAc;IACd,SAAS;IACT,QAAQ;IACR,UAAU;IACV,SAAS;IACT,WAAW;CACZ,CAAC;AAcF,MAAM,UAAU,mBAAmB,CACjC,IAA6B;IAE7B,MAAM,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3E,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,MAAM,EAAE,CAAC,CAAC,MAAM;KACjB,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;IAC5B,MAAM,SAAS,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAA4B;QACvC,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,OAAO;QACtB,IAAI,EAAE,IAAI,CAAC,WAAW;QACtB,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU;QACrC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACpE,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe;QAC/C,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa;QAC3C,wBAAwB;QACxB,UAAU,EAAE,SAAS;QACrB,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,IAAI,EAAE;QAC7C,aAAa,EAAE;YACb,mBAAmB,EAAE,CAAC,EAAE,mBAAmB,IAAI,EAAE;YACjD,SAAS,EAAE,CAAC,EAAE,SAAS,IAAI,EAAE;YAC7B,sBAAsB,EAAE,CAAC,EAAE,sBAAsB,IAAI,EAAE;YACvD,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,IAAI,EAAE;SAC9C;KACF,CAAC;IACF,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;QACzC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;QAC7C,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;QACvC,OAAO,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC;QACxD,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IACnE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -2,10 +2,16 @@
|
|
|
2
2
|
* Phase 3-mapper — Sonnet-driven domain map.
|
|
3
3
|
*
|
|
4
4
|
* Reads detection (from phase 1) + repo summary (from phase 2),
|
|
5
|
-
* dispatches the chunked mapper pipeline, and stamps
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* dispatches the chunked mapper pipeline, and stamps a
|
|
6
|
+
* `MapperResultPersisted` (light projection without scope_index.files
|
|
7
|
+
* and module_proposals) under outputs["3-mapper"]. The full
|
|
8
|
+
* `MapperResult` is written to `.cairn/init/mapper-output.json` —
|
|
9
|
+
* phase 3b-seed loads it from disk to seed scope-index.yaml.
|
|
10
|
+
*
|
|
11
|
+
* The split keeps `.cairn/init-state.json` under 30KB even on a
|
|
12
|
+
* 400-file monorepo, which is what the cairn-adopt skill can carry
|
|
13
|
+
* through MCP responses without triggering the spillover-to-file
|
|
14
|
+
* tool-result path.
|
|
9
15
|
*
|
|
10
16
|
* No operator input — the mapper runs unattended (Sonnet via the
|
|
11
17
|
* cairn runner).
|
|
@@ -2,15 +2,22 @@
|
|
|
2
2
|
* Phase 3-mapper — Sonnet-driven domain map.
|
|
3
3
|
*
|
|
4
4
|
* Reads detection (from phase 1) + repo summary (from phase 2),
|
|
5
|
-
* dispatches the chunked mapper pipeline, and stamps
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* dispatches the chunked mapper pipeline, and stamps a
|
|
6
|
+
* `MapperResultPersisted` (light projection without scope_index.files
|
|
7
|
+
* and module_proposals) under outputs["3-mapper"]. The full
|
|
8
|
+
* `MapperResult` is written to `.cairn/init/mapper-output.json` —
|
|
9
|
+
* phase 3b-seed loads it from disk to seed scope-index.yaml.
|
|
10
|
+
*
|
|
11
|
+
* The split keeps `.cairn/init-state.json` under 30KB even on a
|
|
12
|
+
* 400-file monorepo, which is what the cairn-adopt skill can carry
|
|
13
|
+
* through MCP responses without triggering the spillover-to-file
|
|
14
|
+
* tool-result path.
|
|
9
15
|
*
|
|
10
16
|
* No operator input — the mapper runs unattended (Sonnet via the
|
|
11
17
|
* cairn runner).
|
|
12
18
|
*/
|
|
13
19
|
import { runMapper } from "../mapper.js";
|
|
20
|
+
import { toMapperResultPersisted, writeMapperOutputFile, } from "./mapper-output-io.js";
|
|
14
21
|
import { advancePhase } from "./orchestrator.js";
|
|
15
22
|
export async function runPhase3Mapper(state) {
|
|
16
23
|
const detection = state.outputs["1-detect"];
|
|
@@ -31,9 +38,13 @@ export async function runPhase3Mapper(state) {
|
|
|
31
38
|
summary,
|
|
32
39
|
repoRoot: state.repoRoot,
|
|
33
40
|
});
|
|
41
|
+
// Write the full result (with scope_index.files + module_proposals)
|
|
42
|
+
// to disk; downstream phases that need those reload it on demand.
|
|
43
|
+
writeMapperOutputFile(state.repoRoot, result);
|
|
44
|
+
const persisted = toMapperResultPersisted(result);
|
|
34
45
|
const next = {
|
|
35
46
|
...state,
|
|
36
|
-
outputs: { ...state.outputs, "3-mapper":
|
|
47
|
+
outputs: { ...state.outputs, "3-mapper": persisted },
|
|
37
48
|
};
|
|
38
49
|
return {
|
|
39
50
|
status: "complete",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"3-mapper.js","sourceRoot":"","sources":["../../../src/init/phases/3-mapper.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"3-mapper.js","sourceRoot":"","sources":["../../../src/init/phases/3-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,SAAS,EAAqB,MAAM,cAAc,CAAC;AAG5D,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAiB;IACrD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAgC,CAAC;IAC3E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAA4B,CAAC;IACrE,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,kDAAkD;aAC5D;YACD,KAAK;SACN,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAiB,MAAM,SAAS,CAAC;YAC3C,SAAS;YACT,OAAO;YACP,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;QACH,oEAAoE;QACpE,kEAAkE;QAClE,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,IAAI,GAAe;YACvB,GAAG,KAAK;YACR,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;SACrD,CAAC;QACF,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;SAC1B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,wBAAwB;gBACjC,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACtE;YACD,KAAK;SACN,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -22,6 +22,7 @@ import { seedAttestedCommits } from "../../hooks/seed-attested.js";
|
|
|
22
22
|
import { buildProjectOverlay } from "../overlay.js";
|
|
23
23
|
import { seedCairnLayout } from "../seed.js";
|
|
24
24
|
import { updateWorkflowSlugBlock } from "../workflow-block.js";
|
|
25
|
+
import { readMapperOutputFile, } from "./mapper-output-io.js";
|
|
25
26
|
import { advancePhase } from "./orchestrator.js";
|
|
26
27
|
export async function runPhase3bSeed(state) {
|
|
27
28
|
const detection = state.outputs["1-detect"];
|
|
@@ -38,6 +39,9 @@ export async function runPhase3bSeed(state) {
|
|
|
38
39
|
}
|
|
39
40
|
const projectSlug = detection.project_slug;
|
|
40
41
|
const mapperOutput = mapperResult?.output;
|
|
42
|
+
// scope_index lives in the side file (it's the heaviest field in the
|
|
43
|
+
// mapper payload); reload it lazily for the seed step.
|
|
44
|
+
const mapperFull = readMapperOutputFile(state.repoRoot);
|
|
41
45
|
try {
|
|
42
46
|
// Step 1 — seed templates into .cairn/.
|
|
43
47
|
const seed = seedCairnLayout({ repoRoot: state.repoRoot, projectSlug });
|
|
@@ -86,7 +90,7 @@ export async function runPhase3bSeed(state) {
|
|
|
86
90
|
const scopeFile = scopeIndexPath(state.repoRoot);
|
|
87
91
|
if (!existsSync(scopeFile)) {
|
|
88
92
|
const seedFiles = {};
|
|
89
|
-
const mapperFiles =
|
|
93
|
+
const mapperFiles = mapperFull?.output.scope_index?.files ?? {};
|
|
90
94
|
for (const [path, e] of Object.entries(mapperFiles)) {
|
|
91
95
|
const entry = {
|
|
92
96
|
decisions: e.decisions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"3b-seed.js","sourceRoot":"","sources":["../../../src/init/phases/3b-seed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EACL,cAAc,EACd,eAAe,GAGhB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"3b-seed.js","sourceRoot":"","sources":["../../../src/init/phases/3b-seed.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"4-pilot.js","sourceRoot":"","sources":["../../../src/init/phases/4-pilot.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AASjD,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAiB;IACpD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"4-pilot.js","sourceRoot":"","sources":["../../../src/init/phases/4-pilot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"5-brand.js","sourceRoot":"","sources":["../../../src/init/phases/5-brand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,iBAAiB,EAAqB,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAQjD,MAAM,aAAa,GACjB,8LAA8L,CAAC;AAEjM,MAAM,aAAa,GACjB,4LAA4L,CAAC;AAE/L,SAAS,kBAAkB,CAAC,KAAiB;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAA0C,CAAC;IAClF,MAAM,IAAI,GAAG,MAAM,EAAE,YAAY,IAAI,cAAc,CAAC;IACpD,OAAO,uCAAuC,IAAI,4DAA4D,CAAC;AACjH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAiB;IACpD,qDAAqD;IACrD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,GAAqD,IAAI,CAAC;QACpE,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"5-brand.js","sourceRoot":"","sources":["../../../src/init/phases/5-brand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"8-baseline.js","sourceRoot":"","sources":["../../../src/init/phases/8-baseline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,wBAAwB,EACxB,gBAAgB,GAEjB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAiB;IACvD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAgC,CAAC;IAC3E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"8-baseline.js","sourceRoot":"","sources":["../../../src/init/phases/8-baseline.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,wBAAwB,EACxB,gBAAgB,GAEjB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAiB;IACvD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAgC,CAAC;IAC3E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAE1B,CAAC;IACd,MAAM,KAAK,GAAiB,MAAM;QAChC,CAAC,CAAC;YACE,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,mBAAmB;YACtD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS;YAClC,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,sBAAsB;YAC5D,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB;YAClD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,gBAAgB;SAC3C;QACH,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,SAAS,GAAG,wBAAwB,CACxC,CAAC,SAAS,EAAE,gBAAgB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAc,CAAC,CACjE,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,GAAwB,MAAM,gBAAgB,CAAC;YACzD,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,YAAY,EAAE,KAAK;YACnB,SAAS;SACV,CAAC,CAAC;QACH,MAAM,IAAI,GAAe;YACvB,GAAG,KAAK;YACR,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE;SACpD,CAAC;QACF,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,UAAU;YACrB,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC;SAC1B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,8BAA8B;gBACvC,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACtE;YACD,KAAK;SACN,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { PHASE_IDS, type PhaseId, type PhaseState, type PhaseOutputs, type PhaseResult, type PhaseQuestion, type PhaseOption, type PhaseError, type ResumeReport, } from "./types.js";
|
|
2
2
|
export { INIT_STATE_PATH, phaseStateAbsPath, readPhaseState, writePhaseState, clearPhaseState, } from "./state-io.js";
|
|
3
|
+
export { MAPPER_OUTPUT_PATH, mapperOutputAbsPath, readMapperOutputFile, writeMapperOutputFile, toMapperResultPersisted, type MapperResultPersisted, } from "./mapper-output-io.js";
|
|
3
4
|
export { freshPhaseState, resumePhases, nextPhaseAfter, advancePhase, } from "./orchestrator.js";
|
|
4
5
|
export { runPhase1Detect } from "./1-detect.js";
|
|
5
6
|
export { runPhase2Walker } from "./2-walker.js";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { PHASE_IDS, } from "./types.js";
|
|
2
2
|
export { INIT_STATE_PATH, phaseStateAbsPath, readPhaseState, writePhaseState, clearPhaseState, } from "./state-io.js";
|
|
3
|
+
export { MAPPER_OUTPUT_PATH, mapperOutputAbsPath, readMapperOutputFile, writeMapperOutputFile, toMapperResultPersisted, } from "./mapper-output-io.js";
|
|
3
4
|
export { freshPhaseState, resumePhases, nextPhaseAfter, advancePhase, } from "./orchestrator.js";
|
|
4
5
|
export { runPhase1Detect } from "./1-detect.js";
|
|
5
6
|
export { runPhase2Walker } from "./2-walker.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/init/phases/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GASV,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/init/phases/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GASV,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,GAExB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Side-file persistence for the heavy mapper output.
|
|
3
|
+
*
|
|
4
|
+
* Phase 3-mapper produces a `MapperResult` whose `output.scope_index.files`
|
|
5
|
+
* map and `module_proposals` array dominate the payload size — on a real
|
|
6
|
+
* monorepo the combined JSON crosses 90KB, far above what the MCP transport
|
|
7
|
+
* can echo back in a tool result without spilling. To keep
|
|
8
|
+
* `.cairn/init-state.json` skinny enough that the cairn-adopt skill can
|
|
9
|
+
* thread it through the LLM without spilling, the heavy fields live in
|
|
10
|
+
* `.cairn/init/mapper-output.json` instead. State carries only the
|
|
11
|
+
* persisted-light projection (small globs, pilot pick, key modules,
|
|
12
|
+
* domain summary, mechanical sensor list, run metadata).
|
|
13
|
+
*
|
|
14
|
+
* Phase 3b-seed reloads the full mapper output via `readMapperOutputFile`
|
|
15
|
+
* to write `.cairn/ground/scope-index.yaml`. Other downstream phases
|
|
16
|
+
* (4-pilot / 5-brand / 8-baseline) only need the light fields, so they
|
|
17
|
+
* read from `state.outputs["3-mapper"]` directly.
|
|
18
|
+
*/
|
|
19
|
+
import type { MapperResult, MapperOutput } from "../mapper.js";
|
|
20
|
+
/** Filename relative to repoRoot. */
|
|
21
|
+
export declare const MAPPER_OUTPUT_PATH: string;
|
|
22
|
+
export declare function mapperOutputAbsPath(repoRoot: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Atomically write the full mapper result. Creates `.cairn/init/` if needed.
|
|
25
|
+
*/
|
|
26
|
+
export declare function writeMapperOutputFile(repoRoot: string, full: MapperResult): string;
|
|
27
|
+
/**
|
|
28
|
+
* Read the full mapper result from `.cairn/init/mapper-output.json`.
|
|
29
|
+
* Returns null if missing or unreadable. Phase 3b-seed calls this to
|
|
30
|
+
* obtain the scope_index used to seed `.cairn/ground/scope-index.yaml`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function readMapperOutputFile(repoRoot: string): MapperResult | null;
|
|
33
|
+
/**
|
|
34
|
+
* Persisted-light projection of MapperResult that lives inside
|
|
35
|
+
* `state.outputs["3-mapper"]`. The heavy fields (scope_index.files,
|
|
36
|
+
* module_proposals) are stripped — readers that need them call
|
|
37
|
+
* `readMapperOutputFile` against the repo root.
|
|
38
|
+
*/
|
|
39
|
+
export interface MapperResultPersisted {
|
|
40
|
+
output: Omit<MapperOutput, "scope_index">;
|
|
41
|
+
duration_ms: number;
|
|
42
|
+
tier: "sonnet";
|
|
43
|
+
model: string;
|
|
44
|
+
slices_detected: number;
|
|
45
|
+
truncated_at_slice_cap: boolean;
|
|
46
|
+
}
|
|
47
|
+
/** Strip the heavy fields from a fresh MapperResult for state persistence. */
|
|
48
|
+
export declare function toMapperResultPersisted(full: MapperResult): MapperResultPersisted;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Side-file persistence for the heavy mapper output.
|
|
3
|
+
*
|
|
4
|
+
* Phase 3-mapper produces a `MapperResult` whose `output.scope_index.files`
|
|
5
|
+
* map and `module_proposals` array dominate the payload size — on a real
|
|
6
|
+
* monorepo the combined JSON crosses 90KB, far above what the MCP transport
|
|
7
|
+
* can echo back in a tool result without spilling. To keep
|
|
8
|
+
* `.cairn/init-state.json` skinny enough that the cairn-adopt skill can
|
|
9
|
+
* thread it through the LLM without spilling, the heavy fields live in
|
|
10
|
+
* `.cairn/init/mapper-output.json` instead. State carries only the
|
|
11
|
+
* persisted-light projection (small globs, pilot pick, key modules,
|
|
12
|
+
* domain summary, mechanical sensor list, run metadata).
|
|
13
|
+
*
|
|
14
|
+
* Phase 3b-seed reloads the full mapper output via `readMapperOutputFile`
|
|
15
|
+
* to write `.cairn/ground/scope-index.yaml`. Other downstream phases
|
|
16
|
+
* (4-pilot / 5-brand / 8-baseline) only need the light fields, so they
|
|
17
|
+
* read from `state.outputs["3-mapper"]` directly.
|
|
18
|
+
*/
|
|
19
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync, } from "node:fs";
|
|
20
|
+
import { dirname, join } from "node:path";
|
|
21
|
+
/** Filename relative to repoRoot. */
|
|
22
|
+
export const MAPPER_OUTPUT_PATH = join(".cairn", "init", "mapper-output.json");
|
|
23
|
+
export function mapperOutputAbsPath(repoRoot) {
|
|
24
|
+
return join(repoRoot, MAPPER_OUTPUT_PATH);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Atomically write the full mapper result. Creates `.cairn/init/` if needed.
|
|
28
|
+
*/
|
|
29
|
+
export function writeMapperOutputFile(repoRoot, full) {
|
|
30
|
+
const abs = mapperOutputAbsPath(repoRoot);
|
|
31
|
+
mkdirSync(dirname(abs), { recursive: true });
|
|
32
|
+
const tmp = `${abs}.tmp`;
|
|
33
|
+
writeFileSync(tmp, JSON.stringify(full, null, 2), "utf8");
|
|
34
|
+
renameSync(tmp, abs);
|
|
35
|
+
return abs;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Read the full mapper result from `.cairn/init/mapper-output.json`.
|
|
39
|
+
* Returns null if missing or unreadable. Phase 3b-seed calls this to
|
|
40
|
+
* obtain the scope_index used to seed `.cairn/ground/scope-index.yaml`.
|
|
41
|
+
*/
|
|
42
|
+
export function readMapperOutputFile(repoRoot) {
|
|
43
|
+
const abs = mapperOutputAbsPath(repoRoot);
|
|
44
|
+
if (!existsSync(abs))
|
|
45
|
+
return null;
|
|
46
|
+
try {
|
|
47
|
+
const parsed = JSON.parse(readFileSync(abs, "utf8"));
|
|
48
|
+
return parsed;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** Strip the heavy fields from a fresh MapperResult for state persistence. */
|
|
55
|
+
export function toMapperResultPersisted(full) {
|
|
56
|
+
const { scope_index: _omitScope, ...outputLight } = full.output;
|
|
57
|
+
return {
|
|
58
|
+
output: outputLight,
|
|
59
|
+
duration_ms: full.duration_ms,
|
|
60
|
+
tier: full.tier,
|
|
61
|
+
model: full.model,
|
|
62
|
+
slices_detected: full.slices_detected,
|
|
63
|
+
truncated_at_slice_cap: full.truncated_at_slice_cap,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=mapper-output-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapper-output-io.js","sourceRoot":"","sources":["../../../src/init/phases/mapper-output-io.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG1C,qCAAqC;AACrC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;AAE/E,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,OAAO,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,IAAkB;IAElB,MAAM,GAAG,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC1C,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC;IACzB,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1D,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,GAAG,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAiB,CAAC;QACrE,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAiBD,8EAA8E;AAC9E,MAAM,UAAU,uBAAuB,CACrC,IAAkB;IAElB,MAAM,EACJ,WAAW,EAAE,UAAU,EACvB,GAAG,WAAW,EACf,GAAG,IAAI,CAAC,MAAM,CAAC;IAChB,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;KACpD,CAAC;AACJ,CAAC"}
|
|
@@ -1,21 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MCP tools for the v0.
|
|
2
|
+
* MCP tools for the v0.3.5 init pipeline.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Twelve `cairn_init_phase_<id>` tools — one per PHASE_IDS entry —
|
|
5
5
|
* plus `cairn_init_resume`. The cairn-adopt skill drives the
|
|
6
6
|
* pipeline by:
|
|
7
|
-
* 1. cairn_init_resume → { nextPhase,
|
|
8
|
-
* 2. cairn_init_phase_<next>
|
|
9
|
-
* 3. AskUserQuestion if needs_input → re-call same tool with
|
|
7
|
+
* 1. cairn_init_resume → { status, nextPhase, repoRoot }
|
|
8
|
+
* 2. cairn_init_phase_<next>() → { status, nextPhase | question | error }
|
|
9
|
+
* 3. AskUserQuestion if needs_input → re-call same tool with { answer }
|
|
10
10
|
* 4. loop on complete + advance until nextPhase === null
|
|
11
11
|
*
|
|
12
|
-
* State persists to .cairn/init-state.json after every
|
|
13
|
-
*
|
|
12
|
+
* State persists to .cairn/init-state.json after every successful
|
|
13
|
+
* phase result so the operator can crash-recover. The skill no longer
|
|
14
|
+
* threads state through arguments — phase tools read state from disk
|
|
15
|
+
* and only need an optional `answer` field for needs_input phases.
|
|
16
|
+
*
|
|
17
|
+
* Why no state echo: returning the full state in tool responses
|
|
18
|
+
* triggered MCP-level spillover-to-file once mapper output landed,
|
|
19
|
+
* which broke the skill's state machine (see v0.3.5 incident report).
|
|
20
|
+
* Skinny responses keep the conversation cache warm and let the LLM
|
|
21
|
+
* progress through phases without re-reading 90KB JSON each round.
|
|
22
|
+
*
|
|
23
|
+
* Why no clobber on error: prior versions persisted `result.state`
|
|
24
|
+
* unconditionally. An error path that echoed the input state with
|
|
25
|
+
* `outputs: {}` would overwrite the on-disk state and lose all prior
|
|
26
|
+
* phase outputs — a single bad call could nuke a 90KB mapper run.
|
|
14
27
|
*/
|
|
15
28
|
import { type PhaseState } from "../../init/index.js";
|
|
16
29
|
import type { ToolDef } from "./types.js";
|
|
17
30
|
interface PhaseToolInput {
|
|
18
|
-
state
|
|
31
|
+
state?: PhaseState;
|
|
32
|
+
answer?: string;
|
|
19
33
|
}
|
|
20
34
|
interface ResumeToolInput {
|
|
21
35
|
}
|
|
@@ -1,19 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MCP tools for the v0.
|
|
2
|
+
* MCP tools for the v0.3.5 init pipeline.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Twelve `cairn_init_phase_<id>` tools — one per PHASE_IDS entry —
|
|
5
5
|
* plus `cairn_init_resume`. The cairn-adopt skill drives the
|
|
6
6
|
* pipeline by:
|
|
7
|
-
* 1. cairn_init_resume → { nextPhase,
|
|
8
|
-
* 2. cairn_init_phase_<next>
|
|
9
|
-
* 3. AskUserQuestion if needs_input → re-call same tool with
|
|
7
|
+
* 1. cairn_init_resume → { status, nextPhase, repoRoot }
|
|
8
|
+
* 2. cairn_init_phase_<next>() → { status, nextPhase | question | error }
|
|
9
|
+
* 3. AskUserQuestion if needs_input → re-call same tool with { answer }
|
|
10
10
|
* 4. loop on complete + advance until nextPhase === null
|
|
11
11
|
*
|
|
12
|
-
* State persists to .cairn/init-state.json after every
|
|
13
|
-
*
|
|
12
|
+
* State persists to .cairn/init-state.json after every successful
|
|
13
|
+
* phase result so the operator can crash-recover. The skill no longer
|
|
14
|
+
* threads state through arguments — phase tools read state from disk
|
|
15
|
+
* and only need an optional `answer` field for needs_input phases.
|
|
16
|
+
*
|
|
17
|
+
* Why no state echo: returning the full state in tool responses
|
|
18
|
+
* triggered MCP-level spillover-to-file once mapper output landed,
|
|
19
|
+
* which broke the skill's state machine (see v0.3.5 incident report).
|
|
20
|
+
* Skinny responses keep the conversation cache warm and let the LLM
|
|
21
|
+
* progress through phases without re-reading 90KB JSON each round.
|
|
22
|
+
*
|
|
23
|
+
* Why no clobber on error: prior versions persisted `result.state`
|
|
24
|
+
* unconditionally. An error path that echoed the input state with
|
|
25
|
+
* `outputs: {}` would overwrite the on-disk state and lose all prior
|
|
26
|
+
* phase outputs — a single bad call could nuke a 90KB mapper run.
|
|
14
27
|
*/
|
|
15
28
|
import { z } from "zod";
|
|
16
|
-
import { PHASE_IDS, freshPhaseState, resumePhases, runPhase10Strip, runPhase12Multidev, runPhase1Detect, runPhase2Walker, runPhase3Mapper, runPhase3bSeed, runPhase4Pilot, runPhase5Brand, runPhase6DocsIngest, runPhase7bSourceComments, runPhase7cRulesMerge, runPhase8Baseline, writePhaseState,
|
|
29
|
+
import { PHASE_IDS, freshPhaseState, readPhaseState, resumePhases, runPhase10Strip, runPhase12Multidev, runPhase1Detect, runPhase2Walker, runPhase3Mapper, runPhase3bSeed, runPhase4Pilot, runPhase5Brand, runPhase6DocsIngest, runPhase7bSourceComments, runPhase7cRulesMerge, runPhase8Baseline, writePhaseState, } from "../../init/index.js";
|
|
17
30
|
import { mcpError } from "../errors.js";
|
|
18
31
|
const phaseIdEnum = z.enum(PHASE_IDS);
|
|
19
32
|
const phaseStateSchema = z.object({
|
|
@@ -25,7 +38,13 @@ const phaseStateSchema = z.object({
|
|
|
25
38
|
schemaVersion: z.literal(1),
|
|
26
39
|
});
|
|
27
40
|
const initPhaseInput = {
|
|
28
|
-
state
|
|
41
|
+
// State is optional — phase tools read .cairn/init-state.json by
|
|
42
|
+
// default. Callers can still pass an explicit state object (e.g.
|
|
43
|
+
// smoke tests) but the cairn-adopt skill should pass nothing here.
|
|
44
|
+
state: phaseStateSchema.optional(),
|
|
45
|
+
// Operator answer for needs_input phases. The wrapper splices this
|
|
46
|
+
// into state.answer before invoking the phase runner.
|
|
47
|
+
answer: z.string().optional(),
|
|
29
48
|
};
|
|
30
49
|
const initResumeInput = {};
|
|
31
50
|
const RUNNERS = {
|
|
@@ -42,62 +61,85 @@ const RUNNERS = {
|
|
|
42
61
|
"10-strip": runPhase10Strip,
|
|
43
62
|
"12-multidev": runPhase12Multidev,
|
|
44
63
|
};
|
|
64
|
+
function toSlim(result) {
|
|
65
|
+
if (result.status === "complete") {
|
|
66
|
+
return { status: "complete", nextPhase: result.nextPhase };
|
|
67
|
+
}
|
|
68
|
+
if (result.status === "needs_input") {
|
|
69
|
+
return { status: "needs_input", question: result.question };
|
|
70
|
+
}
|
|
71
|
+
return { status: "error", error: result.error };
|
|
72
|
+
}
|
|
45
73
|
function makePhaseTool(id) {
|
|
46
74
|
return {
|
|
47
75
|
name: `cairn_init_phase_${normalizeId(id)}`,
|
|
48
76
|
description: phaseDescription(id),
|
|
49
77
|
inputSchema: initPhaseInput,
|
|
50
78
|
handler: async (ctx, input) => {
|
|
79
|
+
// Resolve state: prefer the explicit arg (smoke tests, debug
|
|
80
|
+
// tooling), fall back to disk (cairn-adopt skill default).
|
|
81
|
+
let state = input.state ?? null;
|
|
82
|
+
if (state === null) {
|
|
83
|
+
state = readPhaseState(ctx.repoRoot);
|
|
84
|
+
}
|
|
85
|
+
if (state === null) {
|
|
86
|
+
return mcpError("VALIDATION_FAILED", `cairn_init_phase_${normalizeId(id)} found no init state at .cairn/init-state.json. Call cairn_init_resume to start a fresh pipeline.`);
|
|
87
|
+
}
|
|
51
88
|
// Sanity: the tool's id must match the phase id baked into state.
|
|
52
|
-
if (
|
|
53
|
-
return mcpError("VALIDATION_FAILED", `cairn_init_phase_${normalizeId(id)} requires state.currentPhase=${id}, got ${
|
|
89
|
+
if (state.currentPhase !== id) {
|
|
90
|
+
return mcpError("VALIDATION_FAILED", `cairn_init_phase_${normalizeId(id)} requires state.currentPhase=${id}, got ${state.currentPhase}`);
|
|
54
91
|
}
|
|
55
92
|
// The state's repoRoot drives the phase, but we sanity-check it
|
|
56
93
|
// against the MCP context's repoRoot so a misaddressed call
|
|
57
94
|
// (e.g. an old state file from a different repo) gets caught.
|
|
58
|
-
if (
|
|
59
|
-
return mcpError("VALIDATION_FAILED", `state.repoRoot ${
|
|
95
|
+
if (state.repoRoot !== ctx.repoRoot) {
|
|
96
|
+
return mcpError("VALIDATION_FAILED", `state.repoRoot ${state.repoRoot} does not match MCP context ${ctx.repoRoot}`);
|
|
60
97
|
}
|
|
98
|
+
// Splice the operator's answer into state for needs_input phases.
|
|
99
|
+
// The runner clears `state.answer` once it has consumed it (via
|
|
100
|
+
// `advancePhase`), so passing an answer to a phase that doesn't
|
|
101
|
+
// expect one is a no-op rather than a hazard.
|
|
102
|
+
const stateForRun = input.answer !== undefined && input.answer.length > 0
|
|
103
|
+
? { ...state, answer: input.answer }
|
|
104
|
+
: state;
|
|
61
105
|
const runner = RUNNERS[id];
|
|
62
|
-
const result = await runner(
|
|
63
|
-
// Persist state
|
|
64
|
-
//
|
|
65
|
-
|
|
66
|
-
|
|
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) {
|
|
106
|
+
const result = await runner(stateForRun);
|
|
107
|
+
// Persist state ONLY on non-error results. An error path returns
|
|
108
|
+
// the input state echo unchanged; persisting it would clobber
|
|
109
|
+
// the on-disk state file with whatever shape the caller sent in
|
|
110
|
+
// (in v0.3.4 a malformed state nuked a 90KB mapper run this way).
|
|
111
|
+
if (result.status !== "error") {
|
|
74
112
|
try {
|
|
75
|
-
|
|
113
|
+
writePhaseState(result.state);
|
|
76
114
|
}
|
|
77
|
-
catch {
|
|
78
|
-
|
|
115
|
+
catch (err) {
|
|
116
|
+
return mcpError("INTERNAL_ERROR", `failed to persist init state: ${err instanceof Error ? err.message : String(err)}`);
|
|
79
117
|
}
|
|
80
118
|
}
|
|
81
|
-
|
|
119
|
+
// The state file lingers after terminal phase 12-multidev so the
|
|
120
|
+
// cairn-adopt skill can read outputs for its final summary
|
|
121
|
+
// banner. Cleanup is a manual concern (cairn doctor / re-init).
|
|
122
|
+
return toSlim(result);
|
|
82
123
|
},
|
|
83
124
|
};
|
|
84
125
|
}
|
|
85
126
|
function makeResumeTool() {
|
|
86
127
|
return {
|
|
87
128
|
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,
|
|
129
|
+
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, repoRoot }.",
|
|
89
130
|
inputSchema: initResumeInput,
|
|
90
131
|
handler: async (ctx) => {
|
|
91
132
|
const report = resumePhases(ctx.repoRoot);
|
|
92
133
|
// For a fresh start, ensure state.repoRoot matches ctx.repoRoot
|
|
93
134
|
// (resumePhases uses freshPhaseState(ctx.repoRoot) for this case).
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
135
|
+
const repoRoot = report.state.repoRoot !== ctx.repoRoot
|
|
136
|
+
? freshPhaseState(ctx.repoRoot).repoRoot
|
|
137
|
+
: report.state.repoRoot;
|
|
138
|
+
return {
|
|
139
|
+
status: report.status,
|
|
140
|
+
nextPhase: report.nextPhase,
|
|
141
|
+
repoRoot,
|
|
142
|
+
};
|
|
101
143
|
},
|
|
102
144
|
};
|
|
103
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-phases.js","sourceRoot":"","sources":["../../../src/mcp/tools/init-phases.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"init-phases.js","sourceRoot":"","sources":["../../../src/mcp/tools/init-phases.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@isaacriehm/cairn-core",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.5",
|
|
4
4
|
"description": "Cairn core — state + context layer. Curated `.cairn/ground/` (decisions, §INV invariants, canonical-map, brand, quality-grades), MCP server, init wizard, hook runners, sensors, GC drift sweep.",
|
|
5
5
|
"author": "Isaac Riehm",
|
|
6
6
|
"license": "MIT",
|