@isaacriehm/cairn-core 0.18.0 → 0.18.2
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/components/emit.d.ts +36 -0
- package/dist/components/emit.js +160 -0
- package/dist/components/emit.js.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/hooks/runners/context-threshold.d.ts +1 -1
- package/dist/hooks/runners/context-threshold.js +2 -2
- package/dist/hooks/runners/context-threshold.js.map +1 -1
- package/dist/hooks/runners/session-start.js +2 -2
- package/dist/hooks/runners/session-start.js.map +1 -1
- package/dist/init/detect-components.d.ts +32 -0
- package/dist/init/detect-components.js +41 -1
- package/dist/init/detect-components.js.map +1 -1
- package/dist/init/index.d.ts +2 -1
- package/dist/init/index.js +1 -1
- package/dist/init/index.js.map +1 -1
- package/dist/init/phases/9f-comp-emit.js +10 -126
- package/dist/init/phases/9f-comp-emit.js.map +1 -1
- package/dist/mcp/tools/resume.d.ts +1 -1
- package/dist/mcp/tools/resume.js +2 -2
- package/dist/mcp/tools/resume.js.map +1 -1
- package/dist/mcp/tools/task-journal-append.d.ts +1 -1
- package/dist/mcp/tools/task-journal-append.js +2 -2
- package/dist/mcp/tools/task-journal-append.js.map +1 -1
- package/package.json +5 -5
|
@@ -20,15 +20,9 @@
|
|
|
20
20
|
* blocks. The audit + missing headers are surfaced for triage; the
|
|
21
21
|
* daily-flow check is the gate.
|
|
22
22
|
*/
|
|
23
|
-
import {
|
|
24
|
-
import { join } from "node:path";
|
|
25
|
-
import { stringify as stringifyYaml } from "yaml";
|
|
26
|
-
import { bodyContentHash, collectComponents, deriveInvId, hasComponentConfig, invariantsDir, loadComponentsConfig, writeInvariantsLedger, } from "@isaacriehm/cairn-state";
|
|
27
|
-
import { buildComponentIndex } from "../../components/index-build.js";
|
|
28
|
-
import { runComponentAudit } from "../../components/audit.js";
|
|
23
|
+
import { emitComponentStore } from "../../components/emit.js";
|
|
29
24
|
import { advancePhase, isSelfAdoptState } from "./orchestrator.js";
|
|
30
25
|
const NEXT_PHASE = "10-rules-merge";
|
|
31
|
-
const CAPTURE_SOURCE = "cairn-init-components";
|
|
32
26
|
function complete(state, out) {
|
|
33
27
|
const next = {
|
|
34
28
|
...state,
|
|
@@ -40,48 +34,19 @@ export async function runPhase9fCompEmit(state) {
|
|
|
40
34
|
if (isSelfAdoptState(state)) {
|
|
41
35
|
return complete(state, { skipped: "self-adopt" });
|
|
42
36
|
}
|
|
43
|
-
const config = loadComponentsConfig(state.repoRoot);
|
|
44
|
-
if (!hasComponentConfig(config)) {
|
|
45
|
-
return complete(state, { skipped: "no-components" });
|
|
46
|
-
}
|
|
47
37
|
try {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
// the workspace's component dirs). Written directly rather than via
|
|
52
|
-
// sot-emit's emitInv, whose renderer stamps status "accepted" — the
|
|
53
|
-
// invariants ledger only carries "active" entries, so an "accepted"
|
|
54
|
-
// invariant would never surface in the ledger / Lens / scope.
|
|
55
|
-
const collected = collectComponents(state.repoRoot, config);
|
|
56
|
-
const wsDirs = new Map(config.workspaces.map((w) => [w.name, w.componentDirs]));
|
|
57
|
-
let singletons = 0;
|
|
58
|
-
for (const c of collected.components) {
|
|
59
|
-
if (!c.tags.singleton)
|
|
60
|
-
continue;
|
|
61
|
-
const name = c.tags.cairn;
|
|
62
|
-
if (name === undefined || name.length === 0)
|
|
63
|
-
continue;
|
|
64
|
-
writeSingletonInvariant(state.repoRoot, {
|
|
65
|
-
name,
|
|
66
|
-
workspace: c.workspace,
|
|
67
|
-
sourceFile: c.file,
|
|
68
|
-
scopeGlobs: (wsDirs.get(c.workspace) ?? []).map((d) => `${d}/**`),
|
|
69
|
-
});
|
|
70
|
-
singletons += 1;
|
|
38
|
+
const r = emitComponentStore(state.repoRoot);
|
|
39
|
+
if (r.skipped) {
|
|
40
|
+
return complete(state, { skipped: "no-components" });
|
|
71
41
|
}
|
|
72
|
-
if (singletons > 0)
|
|
73
|
-
writeInvariantsLedger({ repoRoot: state.repoRoot });
|
|
74
|
-
// 3. Advisory audit + still-missing-header debt → attention baseline.
|
|
75
|
-
const audit = runComponentAudit(state.repoRoot);
|
|
76
|
-
const baselineRel = writeComponentBaseline(state.repoRoot, audit, collected.missing);
|
|
77
42
|
const out = {
|
|
78
|
-
indexed:
|
|
79
|
-
missing:
|
|
80
|
-
singletons_drafted:
|
|
81
|
-
audit_findings:
|
|
43
|
+
indexed: r.indexed,
|
|
44
|
+
missing: r.missing,
|
|
45
|
+
singletons_drafted: r.singletonsDrafted,
|
|
46
|
+
audit_findings: r.auditFindings,
|
|
82
47
|
};
|
|
83
|
-
if (
|
|
84
|
-
out.baseline_path =
|
|
48
|
+
if (r.baselinePath !== null)
|
|
49
|
+
out.baseline_path = r.baselinePath;
|
|
85
50
|
return complete(state, out);
|
|
86
51
|
}
|
|
87
52
|
catch (err) {
|
|
@@ -96,85 +61,4 @@ export async function runPhase9fCompEmit(state) {
|
|
|
96
61
|
};
|
|
97
62
|
}
|
|
98
63
|
}
|
|
99
|
-
/**
|
|
100
|
-
* Write a singleton component's §INV ledger entity. Mirrors the curator
|
|
101
|
-
* emit shape (`status: active`, `sot_kind: ledger`, content-addressed id)
|
|
102
|
-
* so the invariants ledger, Lens, and scope-index pick it up. Enforcement
|
|
103
|
-
* of "exists exactly once" is the component check's duplicate-name gate —
|
|
104
|
-
* no generic decision-assertion is attached.
|
|
105
|
-
*/
|
|
106
|
-
function writeSingletonInvariant(repoRoot, args) {
|
|
107
|
-
const where = args.workspace.length > 0 ? `workspace ${args.workspace}` : "the application";
|
|
108
|
-
const title = `${args.name} exists exactly once in ${where}`;
|
|
109
|
-
const body = [
|
|
110
|
-
`${args.name} is a singleton component — it exists exactly once in ${where}.`,
|
|
111
|
-
"Extend it in place; never fork, copy, or rebuild it. Enforced by the",
|
|
112
|
-
"component check's duplicate-name gate.",
|
|
113
|
-
"",
|
|
114
|
-
`Source: ${args.sourceFile}`,
|
|
115
|
-
].join("\n");
|
|
116
|
-
const id = deriveInvId({
|
|
117
|
-
sot_path: "ledger",
|
|
118
|
-
title,
|
|
119
|
-
capture_source: CAPTURE_SOURCE,
|
|
120
|
-
});
|
|
121
|
-
const now = new Date().toISOString();
|
|
122
|
-
const fm = {
|
|
123
|
-
id,
|
|
124
|
-
title,
|
|
125
|
-
type: "invariant",
|
|
126
|
-
status: "active",
|
|
127
|
-
audience: "dual",
|
|
128
|
-
generated: now,
|
|
129
|
-
"verified-at": now,
|
|
130
|
-
capture_source: CAPTURE_SOURCE,
|
|
131
|
-
sot_kind: "ledger",
|
|
132
|
-
sot_path: "ledger",
|
|
133
|
-
sot_content_hash: bodyContentHash(body),
|
|
134
|
-
scope_globs: args.scopeGlobs,
|
|
135
|
-
source_file: args.sourceFile,
|
|
136
|
-
};
|
|
137
|
-
const md = ["---", stringifyYaml(fm).trimEnd(), "---", "", body, ""].join("\n");
|
|
138
|
-
const dir = invariantsDir(repoRoot);
|
|
139
|
-
mkdirSync(dir, { recursive: true });
|
|
140
|
-
writeFileSync(join(dir, `${id}.md`), md, "utf8");
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Write advisory audit findings + missing-header debt to
|
|
144
|
-
* `.cairn/baseline/components-<ISO>.yaml` in the same payload shape the
|
|
145
|
-
* baseline sensor sweep uses, so the cairn-attention skill parses it
|
|
146
|
-
* with the existing `baseline_finding` path. Returns the repo-relative
|
|
147
|
-
* path, or `null` when there is nothing to triage (no empty files).
|
|
148
|
-
*/
|
|
149
|
-
function writeComponentBaseline(repoRoot, audit, missing) {
|
|
150
|
-
const auditFindings = audit.findings.map((f) => ({
|
|
151
|
-
path: f.file,
|
|
152
|
-
line: f.line ?? 0,
|
|
153
|
-
severity: "soft",
|
|
154
|
-
message: `${f.message} — ${f.recommendation}`,
|
|
155
|
-
}));
|
|
156
|
-
const missingFindings = missing.map((p) => ({
|
|
157
|
-
path: p,
|
|
158
|
-
line: 0,
|
|
159
|
-
severity: "hard",
|
|
160
|
-
message: "missing @cairn header — annotate this component so it joins the registry (the daily-flow check blocks on this)",
|
|
161
|
-
}));
|
|
162
|
-
const total = auditFindings.length + missingFindings.length;
|
|
163
|
-
if (total === 0)
|
|
164
|
-
return null;
|
|
165
|
-
const dir = join(repoRoot, ".cairn", "baseline");
|
|
166
|
-
mkdirSync(dir, { recursive: true });
|
|
167
|
-
const nowIso = new Date().toISOString();
|
|
168
|
-
const filename = `components-${nowIso.replace(/[:.]/g, "-")}.yaml`;
|
|
169
|
-
const payload = {
|
|
170
|
-
run_at: nowIso,
|
|
171
|
-
total_findings: total,
|
|
172
|
-
sensors: [
|
|
173
|
-
{ sensor_id: "component-audit", findings: auditFindings },
|
|
174
|
-
{ sensor_id: "component-missing-header", findings: missingFindings },
|
|
175
|
-
],
|
|
176
|
-
};
|
|
177
|
-
writeFileSync(join(dir, filename), stringifyYaml(payload), "utf8");
|
|
178
|
-
return join(".cairn", "baseline", filename);
|
|
179
|
-
}
|
|
180
64
|
//# sourceMappingURL=9f-comp-emit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"9f-comp-emit.js","sourceRoot":"","sources":["../../../src/init/phases/9f-comp-emit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"9f-comp-emit.js","sourceRoot":"","sources":["../../../src/init/phases/9f-comp-emit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAOnE,MAAM,UAAU,GAAG,gBAAyB,CAAC;AAE7C,SAAS,QAAQ,CAAC,KAAiB,EAAE,GAA0B;IAC7D,MAAM,IAAI,GAAe;QACvB,GAAG,KAAK;QACR,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE;KACnD,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAiB;IAEjB,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,GAAG,GAA0B;YACjC,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,kBAAkB,EAAE,CAAC,CAAC,iBAAiB;YACvC,cAAc,EAAE,CAAC,CAAC,aAAa;SAChC,CAAC;QACF,IAAI,CAAC,CAAC,YAAY,KAAK,IAAI;YAAE,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC;QAChE,OAAO,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,qBAAqB;gBAC3B,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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* `cairn_resume` — read the active task's journal + spec and emit a
|
|
3
3
|
* resume payload that primes a fresh-context session cold.
|
|
4
4
|
*
|
|
5
|
-
* Called by the `/cairn-resume <task_id>` slash command after the
|
|
5
|
+
* Called by the `/cairn:cairn-resume <task_id>` slash command after the
|
|
6
6
|
* operator `/clear`s mid-task. SessionStart hook also calls this
|
|
7
7
|
* automatically when it detects an active task whose journal has
|
|
8
8
|
* entries from a prior session_id.
|
package/dist/mcp/tools/resume.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* `cairn_resume` — read the active task's journal + spec and emit a
|
|
3
3
|
* resume payload that primes a fresh-context session cold.
|
|
4
4
|
*
|
|
5
|
-
* Called by the `/cairn-resume <task_id>` slash command after the
|
|
5
|
+
* Called by the `/cairn:cairn-resume <task_id>` slash command after the
|
|
6
6
|
* operator `/clear`s mid-task. SessionStart hook also calls this
|
|
7
7
|
* automatically when it detects an active task whose journal has
|
|
8
8
|
* entries from a prior session_id.
|
|
@@ -33,7 +33,7 @@ async function handler(ctx, input) {
|
|
|
33
33
|
}
|
|
34
34
|
else if (existsSync(doneTaskDir)) {
|
|
35
35
|
// Race: task graduated between the Stop-hook resume prompt and the
|
|
36
|
-
// operator pasting `/cairn-resume`. Surface the final journal frame
|
|
36
|
+
// operator pasting `/cairn:cairn-resume`. Surface the final journal frame
|
|
37
37
|
// + completion timestamp instead of the cryptic "not found" error
|
|
38
38
|
// so the operator sees what shipped.
|
|
39
39
|
scope = "done";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/mcp/tools/resume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EACL,qBAAqB,EACrB,eAAe,GAEhB,MAAM,sBAAsB,CAAC;AA4C9B,KAAK,UAAU,OAAO,CAAC,GAAe,EAAE,KAAY;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,IAAI,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,QAAQ,CACb,gBAAgB,EAChB,0BAA0B,CAC3B,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1E,IAAI,KAAwB,CAAC;IAC7B,IAAI,OAAe,CAAC;IACpB,IAAI,WAAW,GAAkB,IAAI,CAAC;IAEtC,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,KAAK,GAAG,QAAQ,CAAC;QACjB,OAAO,GAAG,aAAa,CAAC;IAC1B,CAAC;SAAM,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACnC,mEAAmE;QACnE,
|
|
1
|
+
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/mcp/tools/resume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EACL,qBAAqB,EACrB,eAAe,GAEhB,MAAM,sBAAsB,CAAC;AA4C9B,KAAK,UAAU,OAAO,CAAC,GAAe,EAAE,KAAY;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,IAAI,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,QAAQ,CACb,gBAAgB,EAChB,0BAA0B,CAC3B,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1E,IAAI,KAAwB,CAAC;IAC7B,IAAI,OAAe,CAAC;IACpB,IAAI,WAAW,GAAkB,IAAI,CAAC;IAEtC,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,KAAK,GAAG,QAAQ,CAAC;QACjB,OAAO,GAAG,aAAa,CAAC;IAC1B,CAAC;SAAM,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACnC,mEAAmE;QACnE,0EAA0E;QAC1E,kEAAkE;QAClE,qCAAqC;QACrC,KAAK,GAAG,MAAM,CAAC;QACf,OAAO,GAAG,WAAW,CAAC;QACtB,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,OAAO,QAAQ,CACb,gBAAgB,EAChB,gDAAgD,MAAM,EAAE,CACzD,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IACpD,IAAI,KAAK,GAAG,MAAM,CAAC;IACnB,IAAI,IAAI,GAAG,kBAAkB,CAAC;IAC9B,IAAI,gBAAgB,GAAa,EAAE,CAAC;IACpC,IAAI,iBAAiB,GAAa,EAAE,CAAC;IACrC,IAAI,eAAe,GAAa,EAAE,CAAC;IAEnC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACrE,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAoB,CAAC;gBAC1D,IAAI,OAAO,EAAE,CAAC,KAAK,KAAK,QAAQ;oBAAE,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;gBACnD,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;oBACzC,gBAAgB,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAC1C,CAAC;gBACJ,CAAC;gBACD,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBAC1C,iBAAiB,GAAG,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAC/C,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAC1C,CAAC;gBACJ,CAAC;gBACD,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBACxC,eAAe,GAAG,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAC3C,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAC1C,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qDAAqD;YACvD,CAAC;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC7E,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC5C,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,MAAM,QAAQ,GAAG,SAAS,EAAE,SAAS,IAAI,IAAI,CAAC;IAE9C,uEAAuE;IACvE,oEAAoE;IACpE,iEAAiE;IACjE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,KAAK,EAAE,aAAa,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAAE,SAAS;QACjC,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACnB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YACtD,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS;YAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACZ,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAkB;QAC7B,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,MAAM;QACf,KAAK;QACL,YAAY,EAAE,WAAW;QACzB,KAAK;QACL,IAAI;QACJ,kBAAkB,EAAE,gBAAgB;QACpC,mBAAmB,EAAE,iBAAiB;QACtC,iBAAiB,EAAE,eAAe;QAClC,cAAc,EAAE,MAAM;QACtB,SAAS,EAAE,QAAQ;QACnB,aAAa,EAAE,OAAO,CAAC,MAAM;QAC7B,aAAa,EAAE,YAAY;KAC5B,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,UAAkB;IACzC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAsC,CAAC;QACnE,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAClD,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;YAC9B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAmB;IACxC,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,+cAA+c;IACjd,WAAW,EAAE,WAAW;IACxB,OAAO;CACR,CAAC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Cairn-as-resume-layer: main Claude calls this at the end of every
|
|
7
7
|
* assistant turn while a task is active. Stop hook surfaces a context-
|
|
8
8
|
* threshold prompt when usage crosses the configured limit; the
|
|
9
|
-
* `/cairn-resume <task_id>` slash command in the next session reads
|
|
9
|
+
* `/cairn:cairn-resume <task_id>` slash command in the next session reads
|
|
10
10
|
* the journal back via `cairn_resume`.
|
|
11
11
|
*/
|
|
12
12
|
import type { ToolDef } from "./types.js";
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Cairn-as-resume-layer: main Claude calls this at the end of every
|
|
7
7
|
* assistant turn while a task is active. Stop hook surfaces a context-
|
|
8
8
|
* threshold prompt when usage crosses the configured limit; the
|
|
9
|
-
* `/cairn-resume <task_id>` slash command in the next session reads
|
|
9
|
+
* `/cairn:cairn-resume <task_id>` slash command in the next session reads
|
|
10
10
|
* the journal back via `cairn_resume`.
|
|
11
11
|
*/
|
|
12
12
|
import { requireBootstrap } from "../bootstrap-guard.js";
|
|
@@ -87,7 +87,7 @@ async function handler(ctx, input) {
|
|
|
87
87
|
}
|
|
88
88
|
export const taskJournalAppendTool = {
|
|
89
89
|
name: "cairn_task_journal_append",
|
|
90
|
-
description: "Append one journal entry to the active task's journal.jsonl. Call at the end of every assistant turn while a task is active so that `/cairn-resume <task_id>` after a `/clear` rebuilds the operator's mental state cold. " +
|
|
90
|
+
description: "Append one journal entry to the active task's journal.jsonl. Call at the end of every assistant turn while a task is active so that `/cairn:cairn-resume <task_id>` after a `/clear` rebuilds the operator's mental state cold. " +
|
|
91
91
|
"`summary` is a terse one-liner (~320 chars; soft-truncated above that with a trailing marker — no validation reject). " +
|
|
92
92
|
"`next_step` is what comes next, same length budget. " +
|
|
93
93
|
"`files_touched` advisory cap = 20 paths; longer arrays keep the first 20 and the dropped tail comes back in `dropped.files_touched`. " +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-journal-append.js","sourceRoot":"","sources":["../../../src/mcp/tools/task-journal-append.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"task-journal-append.js","sourceRoot":"","sources":["../../../src/mcp/tools/task-journal-append.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.18.
|
|
3
|
+
"version": "0.18.2",
|
|
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",
|
|
@@ -30,20 +30,20 @@
|
|
|
30
30
|
"README.md"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@inquirer/prompts": "^8.
|
|
33
|
+
"@inquirer/prompts": "^8.5.2",
|
|
34
34
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
35
35
|
"chalk": "^5.6.2",
|
|
36
36
|
"cli-progress": "^3.12.0",
|
|
37
37
|
"ora": "^9.4.0",
|
|
38
38
|
"pino": "^10.3.1",
|
|
39
39
|
"simple-git": "^3.36.0",
|
|
40
|
-
"yaml": "^2.
|
|
40
|
+
"yaml": "^2.9.0",
|
|
41
41
|
"zod": "^4.4.3",
|
|
42
|
-
"@isaacriehm/cairn-state": "0.18.
|
|
42
|
+
"@isaacriehm/cairn-state": "0.18.2"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/cli-progress": "^3.11.6",
|
|
46
|
-
"@types/node": "^25.
|
|
46
|
+
"@types/node": "^25.9.2",
|
|
47
47
|
"typescript": "^6.0.3"
|
|
48
48
|
},
|
|
49
49
|
"scripts": {
|