@isaacriehm/cairn-core 0.3.7 → 0.4.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/attention/bulk-accept.d.ts +18 -0
- package/dist/attention/bulk-accept.js +46 -0
- package/dist/attention/bulk-accept.js.map +1 -1
- package/dist/attention/dedup.d.ts +68 -0
- package/dist/attention/dedup.js +239 -0
- package/dist/attention/dedup.js.map +1 -0
- package/dist/attention/index.d.ts +3 -0
- package/dist/attention/index.js +3 -0
- package/dist/attention/index.js.map +1 -1
- package/dist/attention/restore.d.ts +43 -0
- package/dist/attention/restore.js +127 -0
- package/dist/attention/restore.js.map +1 -0
- package/dist/attention/source-strip.d.ts +49 -0
- package/dist/attention/source-strip.js +340 -0
- package/dist/attention/source-strip.js.map +1 -0
- package/dist/claude/cache.d.ts +31 -0
- package/dist/claude/cache.js +0 -0
- package/dist/claude/cache.js.map +1 -0
- package/dist/claude/error.d.ts +1 -1
- package/dist/claude/error.js +5 -0
- package/dist/claude/error.js.map +1 -1
- package/dist/claude/runner.js +60 -3
- package/dist/claude/runner.js.map +1 -1
- package/dist/claude/types.d.ts +25 -0
- package/dist/hooks/runners/session-start.js +24 -2
- package/dist/hooks/runners/session-start.js.map +1 -1
- package/dist/init/baseline-audit.d.ts +8 -0
- package/dist/init/baseline-audit.js +1 -1
- package/dist/init/baseline-audit.js.map +1 -1
- package/dist/init/brand-derive.js +53 -34
- package/dist/init/brand-derive.js.map +1 -1
- package/dist/init/index.d.ts +4 -2
- package/dist/init/index.js +3 -1
- package/dist/init/index.js.map +1 -1
- package/dist/init/ingest-docs.d.ts +7 -0
- package/dist/init/ingest-docs.js +4 -1
- package/dist/init/ingest-docs.js.map +1 -1
- package/dist/init/mapper-merge.js +1 -0
- package/dist/init/mapper-merge.js.map +1 -1
- package/dist/init/phases/3-mapper.js +18 -0
- package/dist/init/phases/3-mapper.js.map +1 -1
- package/dist/init/phases/5-brand.js +3 -0
- package/dist/init/phases/5-brand.js.map +1 -1
- package/dist/init/phases/6-docs-ingest.js +14 -0
- package/dist/init/phases/6-docs-ingest.js.map +1 -1
- package/dist/init/phases/7b-source-comments.d.ts +9 -0
- package/dist/init/phases/7b-source-comments.js +41 -1
- package/dist/init/phases/7b-source-comments.js.map +1 -1
- package/dist/init/phases/7c-rules-merge.js +10 -0
- package/dist/init/phases/7c-rules-merge.js.map +1 -1
- package/dist/init/phases/index.d.ts +2 -0
- package/dist/init/phases/index.js +2 -0
- package/dist/init/phases/index.js.map +1 -1
- package/dist/init/phases/parallel-678.d.ts +31 -0
- package/dist/init/phases/parallel-678.js +205 -0
- package/dist/init/phases/parallel-678.js.map +1 -0
- package/dist/init/phases/source-comments-output-io.d.ts +78 -0
- package/dist/init/phases/source-comments-output-io.js +84 -0
- package/dist/init/phases/source-comments-output-io.js.map +1 -0
- package/dist/init/progress.d.ts +35 -0
- package/dist/init/progress.js +71 -0
- package/dist/init/progress.js.map +1 -0
- package/dist/init/rules-merge/ingest.d.ts +14 -0
- package/dist/init/rules-merge/ingest.js +8 -2
- package/dist/init/rules-merge/ingest.js.map +1 -1
- package/dist/init/source-comments/classify.d.ts +6 -0
- package/dist/init/source-comments/classify.js +60 -3
- package/dist/init/source-comments/classify.js.map +1 -1
- package/dist/init/source-comments/ingest.d.ts +21 -0
- package/dist/init/source-comments/ingest.js +28 -3
- package/dist/init/source-comments/ingest.js.map +1 -1
- package/dist/mcp/tools/attention-dedup.d.ts +21 -0
- package/dist/mcp/tools/attention-dedup.js +34 -0
- package/dist/mcp/tools/attention-dedup.js.map +1 -0
- package/dist/mcp/tools/attention-restore.d.ts +14 -0
- package/dist/mcp/tools/attention-restore.js +22 -0
- package/dist/mcp/tools/attention-restore.js.map +1 -0
- package/dist/mcp/tools/index.js +6 -1
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/init-phases.d.ts +1 -0
- package/dist/mcp/tools/init-phases.js +88 -1
- package/dist/mcp/tools/init-phases.js.map +1 -1
- package/dist/mcp/tools/resolve-attention.js +44 -141
- package/dist/mcp/tools/resolve-attention.js.map +1 -1
- package/dist/status-line/format.d.ts +5 -2
- package/dist/status-line/format.js +31 -5
- package/dist/status-line/format.js.map +1 -1
- package/dist/status-line/reader.js +25 -1
- package/dist/status-line/reader.js.map +1 -1
- package/package.json +1 -1
- package/templates/.claude/rules/cairn.md +47 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Side-file persistence for the heavy Phase 7b output.
|
|
3
|
+
*
|
|
4
|
+
* `IngestSourceCommentsResult` carries the full walk (every comment block's
|
|
5
|
+
* raw text + prose) and the matching classifications. On a busy monorepo
|
|
6
|
+
* this crosses ~1.7 MB — far above what the MCP transport can echo back
|
|
7
|
+
* in a tool result. Mirrors the v0.3.5 mapper-output spillover: write the
|
|
8
|
+
* full payload to `.cairn/init/source-comments-walk.json` and persist a
|
|
9
|
+
* lightweight projection (counts, paths, ledger-relevant lists) into
|
|
10
|
+
* `init-state.json`.
|
|
11
|
+
*
|
|
12
|
+
* Downstream phases consume only the lightweight projection — the
|
|
13
|
+
* heavy walk + per-block classifications already live in
|
|
14
|
+
* `.cairn/baseline/source-comments-<ISO>.yaml` (the audit YAML), which
|
|
15
|
+
* the strip-replace stage and any later debug tools already read.
|
|
16
|
+
*/
|
|
17
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync, } from "node:fs";
|
|
18
|
+
import { dirname, join } from "node:path";
|
|
19
|
+
/** Filename relative to repoRoot. */
|
|
20
|
+
export const SOURCE_COMMENTS_WALK_PATH = join(".cairn", "init", "source-comments-walk.json");
|
|
21
|
+
export function sourceCommentsWalkAbsPath(repoRoot) {
|
|
22
|
+
return join(repoRoot, SOURCE_COMMENTS_WALK_PATH);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Atomically write the full Phase 7b result. Creates `.cairn/init/`
|
|
26
|
+
* if needed.
|
|
27
|
+
*/
|
|
28
|
+
export function writeSourceCommentsWalkFile(repoRoot, full) {
|
|
29
|
+
const abs = sourceCommentsWalkAbsPath(repoRoot);
|
|
30
|
+
mkdirSync(dirname(abs), { recursive: true });
|
|
31
|
+
const tmp = `${abs}.tmp`;
|
|
32
|
+
writeFileSync(tmp, JSON.stringify(full, null, 2), "utf8");
|
|
33
|
+
renameSync(tmp, abs);
|
|
34
|
+
return abs;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Read the full Phase 7b result from `.cairn/init/source-comments-walk.json`.
|
|
38
|
+
* Returns null if missing or unreadable. Available for debug tooling and
|
|
39
|
+
* post-hoc inspection — phase consumers prefer the lightweight projection
|
|
40
|
+
* stored on state.
|
|
41
|
+
*/
|
|
42
|
+
export function readSourceCommentsWalkFile(repoRoot) {
|
|
43
|
+
const abs = sourceCommentsWalkAbsPath(repoRoot);
|
|
44
|
+
if (!existsSync(abs))
|
|
45
|
+
return null;
|
|
46
|
+
try {
|
|
47
|
+
return JSON.parse(readFileSync(abs, "utf8"));
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Strip the heavy fields from a fresh ingest result for state persistence. */
|
|
54
|
+
export function to7bResultPersisted(full) {
|
|
55
|
+
return {
|
|
56
|
+
walkPath: SOURCE_COMMENTS_WALK_PATH,
|
|
57
|
+
walkSummary: {
|
|
58
|
+
files: full.walk.files.length,
|
|
59
|
+
blocks: full.walk.blocks.length,
|
|
60
|
+
bytesScanned: full.walk.bytesScanned,
|
|
61
|
+
fileCountByLang: full.walk.fileCountByLang,
|
|
62
|
+
filesAvailable: full.walk.filesAvailable,
|
|
63
|
+
truncatedAtFileCap: full.walk.truncatedAtFileCap,
|
|
64
|
+
},
|
|
65
|
+
decDraftsWritten: full.decDraftsWritten,
|
|
66
|
+
invariantsWritten: full.invariantsWritten,
|
|
67
|
+
invariantStripFilesModified: full.invariantStripFilesModified,
|
|
68
|
+
invariantStripItemsApplied: full.invariantStripItemsApplied,
|
|
69
|
+
invariantStripItemsSkipped: full.invariantStripItemsSkipped,
|
|
70
|
+
invariantStripError: full.invariantStripError,
|
|
71
|
+
invariantProposalsAdded: full.invariantProposalsAdded,
|
|
72
|
+
canonicalCitationsAdded: full.canonicalCitationsAdded,
|
|
73
|
+
auditPath: full.auditPath,
|
|
74
|
+
auditRelPath: full.auditRelPath,
|
|
75
|
+
invariantProposalsPath: full.invariantProposalsPath,
|
|
76
|
+
canonicalCitationsPath: full.canonicalCitationsPath,
|
|
77
|
+
inputTokens: full.inputTokens,
|
|
78
|
+
outputTokens: full.outputTokens,
|
|
79
|
+
batchesRun: full.batchesRun,
|
|
80
|
+
batchesFailed: full.batchesFailed,
|
|
81
|
+
kindCounts: full.kindCounts,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=source-comments-output-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-comments-output-io.js","sourceRoot":"","sources":["../../../src/init/phases/source-comments-output-io.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;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;AAI1C,qCAAqC;AACrC,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAC3C,QAAQ,EACR,MAAM,EACN,2BAA2B,CAC5B,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACxD,OAAO,IAAI,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAAgB,EAChB,IAAgC;IAEhC,MAAM,GAAG,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAChD,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;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,QAAgB;IAEhB,MAAM,GAAG,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAA+B,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAsCD,+EAA+E;AAC/E,MAAM,UAAU,mBAAmB,CACjC,IAAgC;IAEhC,OAAO;QACL,QAAQ,EAAE,yBAAyB;QACnC,WAAW,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;YAC7B,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YAC/B,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;YACpC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe;YAC1C,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;YACxC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB;SACjD;QACD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,2BAA2B,EAAE,IAAI,CAAC,2BAA2B;QAC7D,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;QAC3D,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;QAC3D,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;QACrD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;QACrD,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;QACnD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;QACnD,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live adoption-progress heartbeat.
|
|
3
|
+
*
|
|
4
|
+
* The long ingestion phases (3-mapper, 6-docs-ingest, 7b-source-comments,
|
|
5
|
+
* 7c-rules-merge) run for minutes on busy monorepos. The MCP tool turn
|
|
6
|
+
* stays frozen until the phase completes, so the only mid-turn render
|
|
7
|
+
* channel is the Claude Code statusline. This module owns the file the
|
|
8
|
+
* statusline reads:
|
|
9
|
+
*
|
|
10
|
+
* `.cairn/init/progress.json` — current-phase batch counter
|
|
11
|
+
*
|
|
12
|
+
* Phase wrappers `writeProgress` after each batch / module / doc / section
|
|
13
|
+
* completes; the statusline format module renders the snapshot as
|
|
14
|
+
* `⏳ adopt <phase> X/Y (P%) ~Nm left` until the phase wrapper
|
|
15
|
+
* `clearProgress` on completion.
|
|
16
|
+
*/
|
|
17
|
+
export declare const PROGRESS_PATH: string;
|
|
18
|
+
export interface ProgressSnapshot {
|
|
19
|
+
/** Phase id currently running (e.g. `7b-source-comments`). */
|
|
20
|
+
phase: string;
|
|
21
|
+
/** 1-based batch / module / doc / section index. */
|
|
22
|
+
batch: number;
|
|
23
|
+
/** Total batches the phase will run. */
|
|
24
|
+
total: number;
|
|
25
|
+
/** Optional running count of successful classifications. */
|
|
26
|
+
classified?: number;
|
|
27
|
+
/** Optional running count of failed classifications. */
|
|
28
|
+
failed?: number;
|
|
29
|
+
/** Date.now() at phase start; used to extrapolate ETA. */
|
|
30
|
+
startedAt: number;
|
|
31
|
+
}
|
|
32
|
+
export declare function progressAbsPath(repoRoot: string): string;
|
|
33
|
+
export declare function writeProgress(repoRoot: string, snap: ProgressSnapshot): void;
|
|
34
|
+
export declare function clearProgress(repoRoot: string): void;
|
|
35
|
+
export declare function readProgress(repoRoot: string): ProgressSnapshot | null;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live adoption-progress heartbeat.
|
|
3
|
+
*
|
|
4
|
+
* The long ingestion phases (3-mapper, 6-docs-ingest, 7b-source-comments,
|
|
5
|
+
* 7c-rules-merge) run for minutes on busy monorepos. The MCP tool turn
|
|
6
|
+
* stays frozen until the phase completes, so the only mid-turn render
|
|
7
|
+
* channel is the Claude Code statusline. This module owns the file the
|
|
8
|
+
* statusline reads:
|
|
9
|
+
*
|
|
10
|
+
* `.cairn/init/progress.json` — current-phase batch counter
|
|
11
|
+
*
|
|
12
|
+
* Phase wrappers `writeProgress` after each batch / module / doc / section
|
|
13
|
+
* completes; the statusline format module renders the snapshot as
|
|
14
|
+
* `⏳ adopt <phase> X/Y (P%) ~Nm left` until the phase wrapper
|
|
15
|
+
* `clearProgress` on completion.
|
|
16
|
+
*/
|
|
17
|
+
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
18
|
+
import { dirname, join } from "node:path";
|
|
19
|
+
export const PROGRESS_PATH = join(".cairn", "init", "progress.json");
|
|
20
|
+
export function progressAbsPath(repoRoot) {
|
|
21
|
+
return join(repoRoot, PROGRESS_PATH);
|
|
22
|
+
}
|
|
23
|
+
export function writeProgress(repoRoot, snap) {
|
|
24
|
+
const path = progressAbsPath(repoRoot);
|
|
25
|
+
if (!existsSync(dirname(path))) {
|
|
26
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
27
|
+
}
|
|
28
|
+
// Atomic-enough for the statusline reader: writeFileSync replaces in
|
|
29
|
+
// one syscall on common filesystems. Best-effort — if the disk is
|
|
30
|
+
// full or the dir is gone we silently swallow so a phase doesn't fail
|
|
31
|
+
// because the heartbeat couldn't write.
|
|
32
|
+
try {
|
|
33
|
+
writeFileSync(path, JSON.stringify(snap), "utf8");
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
/* best-effort */
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export function clearProgress(repoRoot) {
|
|
40
|
+
const path = progressAbsPath(repoRoot);
|
|
41
|
+
if (existsSync(path)) {
|
|
42
|
+
try {
|
|
43
|
+
unlinkSync(path);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
/* best-effort */
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export function readProgress(repoRoot) {
|
|
51
|
+
const path = progressAbsPath(repoRoot);
|
|
52
|
+
if (!existsSync(path))
|
|
53
|
+
return null;
|
|
54
|
+
try {
|
|
55
|
+
const raw = readFileSync(path, "utf8");
|
|
56
|
+
const parsed = JSON.parse(raw);
|
|
57
|
+
if (typeof parsed !== "object" ||
|
|
58
|
+
parsed === null ||
|
|
59
|
+
typeof parsed.phase !== "string" ||
|
|
60
|
+
typeof parsed.batch !== "number" ||
|
|
61
|
+
typeof parsed.total !== "number" ||
|
|
62
|
+
typeof parsed.startedAt !== "number") {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
return parsed;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/init/progress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;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;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;AAiBrE,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,IAAsB;IACpE,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC/B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,qEAAqE;IACrE,kEAAkE;IAClE,sEAAsE;IACtE,wCAAwC;IACxC,IAAI,CAAC;QACH,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;QACnD,IACE,OAAO,MAAM,KAAK,QAAQ;YAC1B,MAAM,KAAK,IAAI;YACf,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;YAChC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;YAChC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;YAChC,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EACpC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -37,6 +37,20 @@ export interface RunRulesMergeArgs {
|
|
|
37
37
|
mockClassify?: (section: RuleSection, source: RuleSourceFile) => RuleClassification;
|
|
38
38
|
dryRun?: boolean;
|
|
39
39
|
nowIso?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Caller-supplied DEC id Set. Same role as in `runDocsIngestion`: when
|
|
42
|
+
* the parallel orchestrator runs phases 6 / 7b / 7c concurrently, all
|
|
43
|
+
* three share one Set so DEC id allocations don't collide.
|
|
44
|
+
*/
|
|
45
|
+
existingDecIds?: Set<string>;
|
|
46
|
+
/**
|
|
47
|
+
* Optional progress callback fired after each section finishes
|
|
48
|
+
* classification. Enables the cairn-adopt statusline heartbeat.
|
|
49
|
+
*/
|
|
50
|
+
onSectionProgress?: (row: {
|
|
51
|
+
index: number;
|
|
52
|
+
total: number;
|
|
53
|
+
}) => void;
|
|
40
54
|
}
|
|
41
55
|
export interface RunRulesMergeResult {
|
|
42
56
|
sources: RuleSourceFile[];
|
|
@@ -103,12 +103,15 @@ export async function runRulesMerge(args) {
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
if (args.mockClassify !== undefined) {
|
|
106
|
-
for (const job of jobs) {
|
|
106
|
+
for (const [idx, job] of jobs.entries()) {
|
|
107
107
|
allClassifications.push(args.mockClassify(job.section, job.source));
|
|
108
|
+
args.onSectionProgress?.({ index: idx + 1, total: jobs.length });
|
|
108
109
|
}
|
|
109
110
|
}
|
|
110
111
|
else {
|
|
111
112
|
let cursor = 0;
|
|
113
|
+
let completed = 0;
|
|
114
|
+
const total = jobs.length;
|
|
112
115
|
const worker = async () => {
|
|
113
116
|
while (cursor < jobs.length) {
|
|
114
117
|
const idx = cursor++;
|
|
@@ -117,6 +120,8 @@ export async function runRulesMerge(args) {
|
|
|
117
120
|
continue;
|
|
118
121
|
const cls = await classifySection(job.source, job.section);
|
|
119
122
|
allClassifications.push(cls);
|
|
123
|
+
completed += 1;
|
|
124
|
+
args.onSectionProgress?.({ index: completed, total });
|
|
120
125
|
}
|
|
121
126
|
};
|
|
122
127
|
const workers = Array.from({ length: Math.min(CONCURRENCY, jobs.length) }, () => worker());
|
|
@@ -125,7 +130,7 @@ export async function runRulesMerge(args) {
|
|
|
125
130
|
// Persist DEC drafts + conflicts.
|
|
126
131
|
const decDraftsWritten = [];
|
|
127
132
|
const conflictRows = [];
|
|
128
|
-
const existingIds = scanExistingDecisionIds(repoRoot);
|
|
133
|
+
const existingIds = args.existingDecIds ?? scanExistingDecisionIds(repoRoot);
|
|
129
134
|
for (const cls of allClassifications) {
|
|
130
135
|
if (cls.kind === "rule-net-new" && cls.proposedDecTitle.length > 0) {
|
|
131
136
|
const id = allocateDecisionId(repoRoot, existingIds);
|
|
@@ -237,6 +242,7 @@ async function classifySection(source, section) {
|
|
|
237
242
|
prompt,
|
|
238
243
|
jsonSchema: CLASSIFY_SCHEMA,
|
|
239
244
|
timeoutMs: PER_SECTION_TIMEOUT_MS,
|
|
245
|
+
isolateAmbientContext: true,
|
|
240
246
|
});
|
|
241
247
|
const parsed = result.parsed;
|
|
242
248
|
if (typeof parsed !== "object" || parsed === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../src/init/rules-merge/ingest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../src/init/rules-merge/ingest.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,12 @@ export interface ClassifyArgs {
|
|
|
45
45
|
* no Haiku call is made.
|
|
46
46
|
*/
|
|
47
47
|
mockClassify?: (block: CommentBlock) => CommentClassification;
|
|
48
|
+
/**
|
|
49
|
+
* When set, every Haiku batch call is run with `cacheable: true` so
|
|
50
|
+
* re-running adoption against the same source corpus hits the
|
|
51
|
+
* `.cairn/cache/haiku/` cache instead of burning the operator's quota.
|
|
52
|
+
*/
|
|
53
|
+
repoRoot?: string;
|
|
48
54
|
}
|
|
49
55
|
export interface ClassifyResult {
|
|
50
56
|
classifications: CommentClassification[];
|
|
@@ -14,9 +14,10 @@
|
|
|
14
14
|
* missing fields default to safe values
|
|
15
15
|
*/
|
|
16
16
|
import { runClaude } from "../../claude/index.js";
|
|
17
|
+
import { ClaudeError } from "../../claude/error.js";
|
|
17
18
|
import { logger } from "../../logger.js";
|
|
18
19
|
const log = logger("init.source-comments.classify");
|
|
19
|
-
const BATCH_SIZE =
|
|
20
|
+
const BATCH_SIZE = 10;
|
|
20
21
|
const PER_BATCH_TIMEOUT_MS = 90_000;
|
|
21
22
|
const PROSE_CAP_PER_BLOCK = 1500;
|
|
22
23
|
/**
|
|
@@ -90,6 +91,7 @@ export async function classifyBlocks(args) {
|
|
|
90
91
|
const blocks = args.blocks;
|
|
91
92
|
const total = Math.ceil(blocks.length / BATCH_SIZE);
|
|
92
93
|
const out = new Array(blocks.length);
|
|
94
|
+
const repoRoot = args.repoRoot;
|
|
93
95
|
if (args.mockClassify !== undefined) {
|
|
94
96
|
for (let i = 0; i < blocks.length; i++) {
|
|
95
97
|
const b = blocks[i];
|
|
@@ -117,7 +119,7 @@ export async function classifyBlocks(args) {
|
|
|
117
119
|
const end = Math.min(start + BATCH_SIZE, blocks.length);
|
|
118
120
|
const batch = blocks.slice(start, end);
|
|
119
121
|
try {
|
|
120
|
-
const outcome = await
|
|
122
|
+
const outcome = await classifyOneBatchWithRetry(batch, repoRoot);
|
|
121
123
|
return { batchIdx, outcome };
|
|
122
124
|
}
|
|
123
125
|
catch (err) {
|
|
@@ -193,7 +195,59 @@ export async function classifyBlocks(args) {
|
|
|
193
195
|
batchesFailed,
|
|
194
196
|
};
|
|
195
197
|
}
|
|
196
|
-
|
|
198
|
+
/**
|
|
199
|
+
* Wraps `classifyOneBatch` with timeout-triggered half-split retry. When the
|
|
200
|
+
* first attempt aborts via SIGTERM (`error_kind: "timeout"`), splits the batch
|
|
201
|
+
* in half and re-issues both halves with the full per-batch timeout. Halves
|
|
202
|
+
* smaller than 2 are not split — they propagate the original error.
|
|
203
|
+
*
|
|
204
|
+
* Recovers most residual loss after the BATCH_SIZE 20→10 reduction; defends
|
|
205
|
+
* against tail-latency spikes from upstream Haiku capacity.
|
|
206
|
+
*/
|
|
207
|
+
async function classifyOneBatchWithRetry(batch, repoRoot) {
|
|
208
|
+
try {
|
|
209
|
+
return await classifyOneBatch(batch, repoRoot);
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
const isTimeout = err instanceof ClaudeError && err.kind === "timeout";
|
|
213
|
+
if (!isTimeout || batch.length < 2) {
|
|
214
|
+
throw err;
|
|
215
|
+
}
|
|
216
|
+
log.warn({ batchSize: batch.length }, "batch timed out, splitting in half + retrying");
|
|
217
|
+
const half = Math.floor(batch.length / 2);
|
|
218
|
+
const left = batch.slice(0, half);
|
|
219
|
+
const right = batch.slice(half);
|
|
220
|
+
const [aRes, bRes] = await Promise.allSettled([
|
|
221
|
+
classifyOneBatch(left, repoRoot),
|
|
222
|
+
classifyOneBatch(right, repoRoot),
|
|
223
|
+
]);
|
|
224
|
+
const merged = new Map();
|
|
225
|
+
let inputTokens = 0;
|
|
226
|
+
let outputTokens = 0;
|
|
227
|
+
let errorMessage;
|
|
228
|
+
for (const r of [aRes, bRes]) {
|
|
229
|
+
if (r.status === "fulfilled") {
|
|
230
|
+
for (const [k, v] of r.value.byId)
|
|
231
|
+
merged.set(k, v);
|
|
232
|
+
inputTokens += r.value.inputTokens;
|
|
233
|
+
outputTokens += r.value.outputTokens;
|
|
234
|
+
if (r.value.errorMessage !== undefined)
|
|
235
|
+
errorMessage = r.value.errorMessage;
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
const msg = r.reason instanceof Error ? r.reason.message : String(r.reason);
|
|
239
|
+
errorMessage = msg;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return {
|
|
243
|
+
byId: merged,
|
|
244
|
+
inputTokens,
|
|
245
|
+
outputTokens,
|
|
246
|
+
...(errorMessage !== undefined ? { errorMessage } : {}),
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
async function classifyOneBatch(batch, repoRoot) {
|
|
197
251
|
const prompt = buildBatchPrompt(batch);
|
|
198
252
|
const result = await runClaude({
|
|
199
253
|
tier: "haiku",
|
|
@@ -201,6 +255,8 @@ async function classifyOneBatch(batch) {
|
|
|
201
255
|
prompt,
|
|
202
256
|
jsonSchema: BATCH_SCHEMA,
|
|
203
257
|
timeoutMs: PER_BATCH_TIMEOUT_MS,
|
|
258
|
+
isolateAmbientContext: true,
|
|
259
|
+
...(repoRoot !== undefined ? { repoRoot, cacheable: true } : {}),
|
|
204
260
|
});
|
|
205
261
|
const usage = result.usage;
|
|
206
262
|
const inputTokens = typeof usage?.["input_tokens"] === "number" ? usage["input_tokens"] : 0;
|
|
@@ -268,6 +324,7 @@ function buildBatchPrompt(batch) {
|
|
|
268
324
|
}
|
|
269
325
|
const _internal = {
|
|
270
326
|
buildBatchPrompt,
|
|
327
|
+
classifyOneBatchWithRetry,
|
|
271
328
|
BATCH_SIZE,
|
|
272
329
|
BATCH_SCHEMA,
|
|
273
330
|
SYSTEM_PROMPT,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../../src/init/source-comments/classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,MAAM,GAAG,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAEpD,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../../src/init/source-comments/classify.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* `.cairn/baseline/source-comments-<ISO>.yaml` — consumed by the
|
|
17
17
|
* strip-replace stage so it doesn't have to re-walk.
|
|
18
18
|
*/
|
|
19
|
+
import type { ProjectGlobs } from "../../sensors/types.js";
|
|
19
20
|
import type { ClassifyArgs, CommentClassification, CommentClassKind } from "./classify.js";
|
|
20
21
|
import type { WalkOptions, WalkResult } from "./walker.js";
|
|
21
22
|
export interface IngestSourceCommentsArgs {
|
|
@@ -30,6 +31,26 @@ export interface IngestSourceCommentsArgs {
|
|
|
30
31
|
dryRun?: boolean;
|
|
31
32
|
/** When set, override `Date.now()` for deterministic test outputs. */
|
|
32
33
|
nowIso?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Project globs from `.cairn/config.yaml` (or the mapper output). When
|
|
36
|
+
* provided, every DEC draft + invariant gets `capture_confidence` scored
|
|
37
|
+
* and stamped at write time so `cairn attention bulk-accept` becomes an
|
|
38
|
+
* O(1) file move instead of re-scoring every draft on disk.
|
|
39
|
+
*/
|
|
40
|
+
globs?: ProjectGlobs;
|
|
41
|
+
/** Pilot module path (workflow.md `pilot_module`) for scoring bias. */
|
|
42
|
+
pilotModule?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Caller-supplied DEC id Set, threaded by the parallel orchestrator
|
|
45
|
+
* across phases 6 / 7b / 7c so concurrent allocations don't collide.
|
|
46
|
+
*/
|
|
47
|
+
existingDecIds?: Set<string>;
|
|
48
|
+
/**
|
|
49
|
+
* Caller-supplied INV id Set. Only 7b allocates invariant ids today,
|
|
50
|
+
* but the optional arg matches the DEC pattern for symmetry and lets
|
|
51
|
+
* future phases share the allocator.
|
|
52
|
+
*/
|
|
53
|
+
existingInvIds?: Set<string>;
|
|
33
54
|
}
|
|
34
55
|
export interface IngestSourceCommentsResult {
|
|
35
56
|
walk: WalkResult;
|
|
@@ -24,6 +24,7 @@ import { writeInvariantsLedger } from "../../ground/ledgers.js";
|
|
|
24
24
|
import { decisionsDir, invariantsDir } from "../../ground/paths.js";
|
|
25
25
|
import { coerceInvariantIds, readScopeIndex, writeScopeIndex, } from "../../ground/scope-index.js";
|
|
26
26
|
import { logger } from "../../logger.js";
|
|
27
|
+
import { scoreDecDraft, scoreInvariant, } from "../../attention/scoring.js";
|
|
27
28
|
import { applyStripReplace, formatBareCitation, } from "./strip-replace.js";
|
|
28
29
|
import { classifyBlocks } from "./classify.js";
|
|
29
30
|
import { walkSourceComments } from "./walker.js";
|
|
@@ -45,6 +46,7 @@ export async function runSourceCommentsIngestion(args) {
|
|
|
45
46
|
const walk = walkSourceComments(walkOpts);
|
|
46
47
|
const classifyResult = await classifyBlocks({
|
|
47
48
|
blocks: walk.blocks,
|
|
49
|
+
repoRoot,
|
|
48
50
|
...(args.mockClassify !== undefined ? { mockClassify: args.mockClassify } : {}),
|
|
49
51
|
...(args.onBatchProgress !== undefined
|
|
50
52
|
? { onBatchProgress: args.onBatchProgress }
|
|
@@ -71,8 +73,8 @@ export async function runSourceCommentsIngestion(args) {
|
|
|
71
73
|
// covers all files. Each item points at the original constraint
|
|
72
74
|
// comment block; replacement is `// §INV-NNNN`.
|
|
73
75
|
const invariantStripItems = [];
|
|
74
|
-
const existingIds = scanExistingDecisionIds(repoRoot);
|
|
75
|
-
const existingInvariantIds = scanExistingInvariantIds(repoRoot);
|
|
76
|
+
const existingIds = args.existingDecIds ?? scanExistingDecisionIds(repoRoot);
|
|
77
|
+
const existingInvariantIds = args.existingInvIds ?? scanExistingInvariantIds(repoRoot);
|
|
76
78
|
for (let i = 0; i < walk.blocks.length; i++) {
|
|
77
79
|
const block = walk.blocks[i];
|
|
78
80
|
const cls = classifyResult.classifications[i];
|
|
@@ -81,6 +83,16 @@ export async function runSourceCommentsIngestion(args) {
|
|
|
81
83
|
if (cls.kind === "rationale" && cls.suggestedDecDraft.length > 0) {
|
|
82
84
|
const id = allocateDecisionId(repoRoot, existingIds);
|
|
83
85
|
existingIds.add(id);
|
|
86
|
+
const confidence = args.globs !== undefined
|
|
87
|
+
? scoreDecDraft({
|
|
88
|
+
sourceFile: block.file,
|
|
89
|
+
prose: block.prose,
|
|
90
|
+
title: cls.suggestedDecDraft,
|
|
91
|
+
rawComment: block.raw,
|
|
92
|
+
globs: args.globs,
|
|
93
|
+
...(args.pilotModule !== undefined ? { pilotModule: args.pilotModule } : {}),
|
|
94
|
+
})
|
|
95
|
+
: undefined;
|
|
84
96
|
if (args.dryRun !== true) {
|
|
85
97
|
const written = writeDecDraft({
|
|
86
98
|
repoRoot,
|
|
@@ -88,6 +100,7 @@ export async function runSourceCommentsIngestion(args) {
|
|
|
88
100
|
block,
|
|
89
101
|
classification: cls,
|
|
90
102
|
generatedAt: nowIso,
|
|
103
|
+
...(confidence !== undefined ? { confidence } : {}),
|
|
91
104
|
});
|
|
92
105
|
decDraftsWritten.push({
|
|
93
106
|
id,
|
|
@@ -114,6 +127,16 @@ export async function runSourceCommentsIngestion(args) {
|
|
|
114
127
|
});
|
|
115
128
|
const invId = allocateInvariantId(repoRoot, existingInvariantIds);
|
|
116
129
|
existingInvariantIds.add(invId);
|
|
130
|
+
const invConfidence = args.globs !== undefined
|
|
131
|
+
? scoreInvariant({
|
|
132
|
+
sourceFile: block.file,
|
|
133
|
+
prose: cls.suggestedInvariant,
|
|
134
|
+
title: cls.suggestedInvariant.split("\n")[0] ?? "",
|
|
135
|
+
rawComment: block.raw,
|
|
136
|
+
globs: args.globs,
|
|
137
|
+
...(args.pilotModule !== undefined ? { pilotModule: args.pilotModule } : {}),
|
|
138
|
+
})
|
|
139
|
+
: undefined;
|
|
117
140
|
if (args.dryRun !== true) {
|
|
118
141
|
const written = writeInvariantFile({
|
|
119
142
|
repoRoot,
|
|
@@ -121,6 +144,7 @@ export async function runSourceCommentsIngestion(args) {
|
|
|
121
144
|
block,
|
|
122
145
|
classification: cls,
|
|
123
146
|
generatedAt: nowIso,
|
|
147
|
+
...(invConfidence !== undefined ? { confidence: invConfidence } : {}),
|
|
124
148
|
});
|
|
125
149
|
invariantsWritten.push({
|
|
126
150
|
id: invId,
|
|
@@ -396,7 +420,7 @@ function writeDecDraft(args) {
|
|
|
396
420
|
decided_at: args.generatedAt,
|
|
397
421
|
decided_by: "cairn-init",
|
|
398
422
|
capture_source: "init-source-comments",
|
|
399
|
-
capture_confidence: "medium",
|
|
423
|
+
capture_confidence: args.confidence ?? "medium",
|
|
400
424
|
sourceFile: args.block.file,
|
|
401
425
|
sourceRange: `${args.block.startLine}-${args.block.endLine}`,
|
|
402
426
|
blockId: args.block.id,
|
|
@@ -436,6 +460,7 @@ function writeInvariantFile(args) {
|
|
|
436
460
|
audience: "dual",
|
|
437
461
|
generated: args.generatedAt,
|
|
438
462
|
"verified-at": args.generatedAt,
|
|
463
|
+
capture_confidence: args.confidence ?? "medium",
|
|
439
464
|
source_decision: null,
|
|
440
465
|
sourceFile: args.block.file,
|
|
441
466
|
sourceRange: `${args.block.startLine}-${args.block.endLine}`,
|