@isaacriehm/cairn-core 0.3.8 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/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/seed.js +48 -21
- package/dist/init/seed.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 +4 -1
- package/dist/status-line/format.js +26 -3
- 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
|
@@ -20,14 +20,13 @@
|
|
|
20
20
|
* | invalidation_event | c | abort — caller archives task (no-op here) |
|
|
21
21
|
* | drift | a/b/c | acknowledged (drift surface not yet active) |
|
|
22
22
|
*/
|
|
23
|
-
import { appendFileSync, existsSync, mkdirSync, readFileSync,
|
|
23
|
+
import { appendFileSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync, } from "node:fs";
|
|
24
24
|
import { dirname, join } from "node:path";
|
|
25
|
-
import {
|
|
25
|
+
import { parseDraftMeta, restoreDec, runDecSourceStrip, } from "../../attention/index.js";
|
|
26
26
|
import { writeInvalidationEvent } from "../../events/index.js";
|
|
27
27
|
import { decisionsDir } from "../../ground/index.js";
|
|
28
28
|
import { writeDecisionsLedger } from "../../ground/ledgers.js";
|
|
29
29
|
import { clearDeferState, writeDeferState, } from "../../hooks/defer.js";
|
|
30
|
-
import { applyStripReplace, formatBareCitation, } from "../../init/source-comments/strip-replace.js";
|
|
31
30
|
import { withWriteLock } from "../../lock.js";
|
|
32
31
|
import { logger } from "../../logger.js";
|
|
33
32
|
import { requireBootstrap } from "../bootstrap-guard.js";
|
|
@@ -111,33 +110,61 @@ function resolveStopSignal(ctx, input, kind) {
|
|
|
111
110
|
};
|
|
112
111
|
});
|
|
113
112
|
}
|
|
114
|
-
function resolveDecisionDraft(ctx, input) {
|
|
113
|
+
async function resolveDecisionDraft(ctx, input) {
|
|
115
114
|
if (!/^DEC-\d{4,}$/.test(input.item_id)) {
|
|
116
115
|
return Promise.resolve(mcpError("VALIDATION_FAILED", `decision_draft item_id must match DEC-NNNN, got ${input.item_id}`));
|
|
117
116
|
}
|
|
118
117
|
const decDir = decisionsDir(ctx.repoRoot);
|
|
119
118
|
const inboxPath = join(decDir, "_inbox", `${input.item_id}.draft.md`);
|
|
119
|
+
const rejectedPath = join(decDir, "_inbox", `${input.item_id}.rejected.md`);
|
|
120
|
+
const acceptedPath = join(decDir, `${input.item_id}.md`);
|
|
121
|
+
// Auto-restore: when the draft is missing but the same id sits as a
|
|
122
|
+
// rejected or already-accepted entry, transparently roll it back to
|
|
123
|
+
// a draft so the operator's choice (a/b/c) lands in one MCP call
|
|
124
|
+
// instead of needing an explicit `cairn_attention_restore` first.
|
|
125
|
+
// Idempotent re-accept on a still-canonical accepted DEC is the same
|
|
126
|
+
// shape as accepting a fresh draft — rebuild ledger, no double-strip
|
|
127
|
+
// (already-stripped check inside runDecSourceStrip).
|
|
128
|
+
let autoRestoredFrom = null;
|
|
120
129
|
if (!existsSync(inboxPath)) {
|
|
121
|
-
|
|
130
|
+
if (existsSync(rejectedPath) || existsSync(acceptedPath)) {
|
|
131
|
+
const restored = await restoreDec({
|
|
132
|
+
repoRoot: ctx.repoRoot,
|
|
133
|
+
decId: input.item_id,
|
|
134
|
+
});
|
|
135
|
+
if (!restored.ok) {
|
|
136
|
+
return mcpError("FILE_NOT_FOUND", `no draft at ${inboxPath}; auto-restore from ${restored.priorState} failed: ${restored.reason ?? "unknown"}`);
|
|
137
|
+
}
|
|
138
|
+
autoRestoredFrom =
|
|
139
|
+
restored.priorState === "rejected" || restored.priorState === "accepted"
|
|
140
|
+
? restored.priorState
|
|
141
|
+
: null;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
return mcpError("FILE_NOT_FOUND", `no draft at ${inboxPath}`);
|
|
145
|
+
}
|
|
122
146
|
}
|
|
123
147
|
if (input.choice === "c") {
|
|
124
148
|
// Edit-pending: return the draft body so the skill can hand it to
|
|
125
149
|
// the operator's editor flow. No state change.
|
|
126
150
|
const body = readFileSync(inboxPath, "utf8");
|
|
127
|
-
|
|
151
|
+
const editBase = {
|
|
128
152
|
ok: true,
|
|
129
153
|
resolved_kind: "decision_edit_pending",
|
|
130
154
|
item_id: input.item_id,
|
|
131
155
|
draft_path: `.cairn/ground/decisions/_inbox/${input.item_id}.draft.md`,
|
|
132
156
|
body,
|
|
133
|
-
}
|
|
157
|
+
};
|
|
158
|
+
return autoRestoredFrom === null
|
|
159
|
+
? editBase
|
|
160
|
+
: { ...editBase, auto_restored_from: autoRestoredFrom };
|
|
134
161
|
}
|
|
135
162
|
return withWriteLock(ctx.repoRoot, () => {
|
|
136
163
|
if (input.choice === "a") {
|
|
137
164
|
const acceptedPath = join(decDir, `${input.item_id}.md`);
|
|
138
165
|
mkdirSync(dirname(acceptedPath), { recursive: true });
|
|
139
166
|
const draft = readFileSync(inboxPath, "utf8");
|
|
140
|
-
const draftMeta =
|
|
167
|
+
const draftMeta = parseDraftMeta(draft);
|
|
141
168
|
const promoted = promoteDraftStatus(draft);
|
|
142
169
|
writeFileSync(acceptedPath, promoted, "utf8");
|
|
143
170
|
// Remove the draft after promoting so the inbox stays clean.
|
|
@@ -167,7 +194,11 @@ function resolveDecisionDraft(ctx, input) {
|
|
|
167
194
|
}
|
|
168
195
|
let stripOutcome = null;
|
|
169
196
|
if (draftMeta?.captureSource === "init-source-comments" && draftMeta.blockId !== null) {
|
|
170
|
-
stripOutcome =
|
|
197
|
+
stripOutcome = runDecSourceStrip({
|
|
198
|
+
repoRoot: ctx.repoRoot,
|
|
199
|
+
decId: input.item_id,
|
|
200
|
+
meta: draftMeta,
|
|
201
|
+
});
|
|
171
202
|
}
|
|
172
203
|
const base = {
|
|
173
204
|
ok: true,
|
|
@@ -175,11 +206,13 @@ function resolveDecisionDraft(ctx, input) {
|
|
|
175
206
|
item_id: input.item_id,
|
|
176
207
|
accepted_path: `.cairn/ground/decisions/${input.item_id}.md`,
|
|
177
208
|
};
|
|
178
|
-
|
|
209
|
+
const withStrip = stripOutcome === null ? base : { ...base, source_strip: stripOutcome };
|
|
210
|
+
return autoRestoredFrom === null
|
|
211
|
+
? withStrip
|
|
212
|
+
: { ...withStrip, auto_restored_from: autoRestoredFrom };
|
|
179
213
|
}
|
|
180
214
|
// choice === "b" — reject. Rename to .rejected.md so scanExistingDecisionIds
|
|
181
215
|
// keeps the id in the high-water mark and it is never recycled.
|
|
182
|
-
const rejectedPath = join(decDir, "_inbox", `${input.item_id}.rejected.md`);
|
|
183
216
|
renameSync(inboxPath, rejectedPath);
|
|
184
217
|
const rejectedRel = `.cairn/ground/decisions/_inbox/${input.item_id}.rejected.md`;
|
|
185
218
|
try {
|
|
@@ -273,136 +306,6 @@ function promoteDraftStatus(body) {
|
|
|
273
306
|
// - `draft-from-rules-merge` (phase 7c)
|
|
274
307
|
return body.replace(/^status:\s*draft(?:-from-[a-z-]+)?\b/m, "status: accepted");
|
|
275
308
|
}
|
|
276
|
-
function parseDraftFrontmatter(body) {
|
|
277
|
-
const match = /^---\n([\s\S]*?)\n---/.exec(body);
|
|
278
|
-
if (match === null)
|
|
279
|
-
return null;
|
|
280
|
-
let parsed;
|
|
281
|
-
try {
|
|
282
|
-
parsed = parseYaml(match[1] ?? "");
|
|
283
|
-
}
|
|
284
|
-
catch {
|
|
285
|
-
return null;
|
|
286
|
-
}
|
|
287
|
-
if (parsed === null || typeof parsed !== "object")
|
|
288
|
-
return null;
|
|
289
|
-
const obj = parsed;
|
|
290
|
-
return {
|
|
291
|
-
blockId: typeof obj["blockId"] === "string" ? obj["blockId"] : null,
|
|
292
|
-
sourceFile: typeof obj["sourceFile"] === "string" ? obj["sourceFile"] : null,
|
|
293
|
-
captureSource: typeof obj["capture_source"] === "string" ? obj["capture_source"] : null,
|
|
294
|
-
title: typeof obj["title"] === "string" ? obj["title"] : null,
|
|
295
|
-
};
|
|
296
|
-
}
|
|
297
|
-
function runSourceStrip(repoRoot, decId, meta) {
|
|
298
|
-
const blockId = meta.blockId;
|
|
299
|
-
if (blockId === null) {
|
|
300
|
-
return { attempted: false, files_modified: 0, items_applied: 0, audit_path: null, reason: "no-block-id" };
|
|
301
|
-
}
|
|
302
|
-
const auditPath = findLatestAudit(repoRoot);
|
|
303
|
-
if (auditPath === null) {
|
|
304
|
-
return { attempted: false, files_modified: 0, items_applied: 0, audit_path: null, reason: "no-audit-found" };
|
|
305
|
-
}
|
|
306
|
-
let auditBody;
|
|
307
|
-
try {
|
|
308
|
-
auditBody = parseYaml(readFileSync(auditPath, "utf8"));
|
|
309
|
-
}
|
|
310
|
-
catch (err) {
|
|
311
|
-
log.warn({ err: err instanceof Error ? err.message : String(err), auditPath }, "audit parse failed");
|
|
312
|
-
return { attempted: false, files_modified: 0, items_applied: 0, audit_path: auditPath, reason: "audit-parse-failed" };
|
|
313
|
-
}
|
|
314
|
-
const blocks = extractAuditBlocks(auditBody);
|
|
315
|
-
const block = blocks.find((b) => b.block_id === blockId);
|
|
316
|
-
if (block === undefined) {
|
|
317
|
-
return { attempted: false, files_modified: 0, items_applied: 0, audit_path: auditPath, reason: "block-not-found" };
|
|
318
|
-
}
|
|
319
|
-
const replacement = formatBareCitation(block.lang, decId);
|
|
320
|
-
const item = {
|
|
321
|
-
blockId,
|
|
322
|
-
file: block.file,
|
|
323
|
-
startOffset: block.start_offset,
|
|
324
|
-
endOffset: block.end_offset,
|
|
325
|
-
replacement,
|
|
326
|
-
...(block.raw !== undefined ? { expectedRaw: block.raw } : {}),
|
|
327
|
-
};
|
|
328
|
-
let result;
|
|
329
|
-
try {
|
|
330
|
-
result = applyStripReplace({ repoRoot, items: [item] });
|
|
331
|
-
}
|
|
332
|
-
catch (err) {
|
|
333
|
-
log.warn({ err: err instanceof Error ? err.message : String(err), decId, blockId }, "strip-replace failed");
|
|
334
|
-
return { attempted: true, files_modified: 0, items_applied: 0, audit_path: auditPath, reason: "strip-failed" };
|
|
335
|
-
}
|
|
336
|
-
return {
|
|
337
|
-
attempted: true,
|
|
338
|
-
files_modified: result.filesModified,
|
|
339
|
-
items_applied: result.itemsApplied,
|
|
340
|
-
audit_path: auditPath,
|
|
341
|
-
};
|
|
342
|
-
}
|
|
343
|
-
function findLatestAudit(repoRoot) {
|
|
344
|
-
const dir = join(repoRoot, ".cairn", "baseline");
|
|
345
|
-
if (!existsSync(dir))
|
|
346
|
-
return null;
|
|
347
|
-
let entries;
|
|
348
|
-
try {
|
|
349
|
-
entries = readdirSync(dir);
|
|
350
|
-
}
|
|
351
|
-
catch {
|
|
352
|
-
return null;
|
|
353
|
-
}
|
|
354
|
-
const candidates = entries
|
|
355
|
-
.filter((n) => n.startsWith("source-comments-") && n.endsWith(".yaml"))
|
|
356
|
-
.map((name) => {
|
|
357
|
-
const abs = join(dir, name);
|
|
358
|
-
let mtime = 0;
|
|
359
|
-
try {
|
|
360
|
-
mtime = statSync(abs).mtimeMs;
|
|
361
|
-
}
|
|
362
|
-
catch {
|
|
363
|
-
// ignore
|
|
364
|
-
}
|
|
365
|
-
return { abs, mtime };
|
|
366
|
-
})
|
|
367
|
-
.sort((a, b) => b.mtime - a.mtime);
|
|
368
|
-
return candidates[0]?.abs ?? null;
|
|
369
|
-
}
|
|
370
|
-
function extractAuditBlocks(body) {
|
|
371
|
-
if (body === null || typeof body !== "object")
|
|
372
|
-
return [];
|
|
373
|
-
const obj = body;
|
|
374
|
-
const raw = obj["blocks"];
|
|
375
|
-
if (!Array.isArray(raw))
|
|
376
|
-
return [];
|
|
377
|
-
const out = [];
|
|
378
|
-
for (const entry of raw) {
|
|
379
|
-
if (entry === null || typeof entry !== "object")
|
|
380
|
-
continue;
|
|
381
|
-
const e = entry;
|
|
382
|
-
const block_id = e["block_id"];
|
|
383
|
-
const file = e["file"];
|
|
384
|
-
const lang = e["lang"];
|
|
385
|
-
const start_offset = e["start_offset"];
|
|
386
|
-
const end_offset = e["end_offset"];
|
|
387
|
-
const rawText = e["raw"];
|
|
388
|
-
if (typeof block_id !== "string" ||
|
|
389
|
-
typeof file !== "string" ||
|
|
390
|
-
typeof lang !== "string" ||
|
|
391
|
-
typeof start_offset !== "number" ||
|
|
392
|
-
typeof end_offset !== "number") {
|
|
393
|
-
continue;
|
|
394
|
-
}
|
|
395
|
-
out.push({
|
|
396
|
-
block_id,
|
|
397
|
-
file,
|
|
398
|
-
lang,
|
|
399
|
-
start_offset,
|
|
400
|
-
end_offset,
|
|
401
|
-
...(typeof rawText === "string" ? { raw: rawText } : {}),
|
|
402
|
-
});
|
|
403
|
-
}
|
|
404
|
-
return out;
|
|
405
|
-
}
|
|
406
309
|
function emitEvent(ctx, kind, decId, path) {
|
|
407
310
|
writeInvalidationEvent(ctx.repoRoot, {
|
|
408
311
|
kind,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-attention.js","sourceRoot":"","sources":["../../../src/mcp/tools/resolve-attention.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resolve-attention.js","sourceRoot":"","sources":["../../../src/mcp/tools/resolve-attention.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ProgressSnapshot } from "../init/progress.js";
|
|
1
2
|
import type { StatusJson } from "./index.js";
|
|
2
3
|
/**
|
|
3
4
|
* Render a single-line status string for Claude Code's status_line hook.
|
|
@@ -5,6 +6,8 @@ import type { StatusJson } from "./index.js";
|
|
|
5
6
|
* Layout: `⬡ cairn [signal] [ctx-meter]`
|
|
6
7
|
*
|
|
7
8
|
* Signal priority (first match wins, blank when nothing applies):
|
|
9
|
+
* adopt-progress → `⏳ adopt <phase> <X>/<Y> (P%) ~Nm` (highest;
|
|
10
|
+
* live during cairn-adopt long phases)
|
|
8
11
|
* bypass_count > 0 → `⚠ N unattested`
|
|
9
12
|
* attention_count > 0 → `⚑ N pending` (drafts + baseline findings + drift)
|
|
10
13
|
* gc_running → `◐ gc`
|
|
@@ -22,4 +25,4 @@ export interface CtxMeterInput {
|
|
|
22
25
|
usedTokens: number;
|
|
23
26
|
}
|
|
24
27
|
export declare function renderCtxMeter(ctx: CtxMeterInput): string;
|
|
25
|
-
export declare function formatStatus(s: StatusJson, ctx?: CtxMeterInput): string;
|
|
28
|
+
export declare function formatStatus(s: StatusJson, ctx?: CtxMeterInput, progress?: ProgressSnapshot | null): string;
|
|
@@ -18,7 +18,30 @@ export function renderCtxMeter(ctx) {
|
|
|
18
18
|
const bar = "█".repeat(filled) + "░".repeat(10 - filled);
|
|
19
19
|
return `${ctxColor(ctx.usedTokens)}${bar} ${pct}%${ANSI_RESET}`;
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Render the live adoption-progress badge from the heartbeat snapshot.
|
|
23
|
+
* Format: `⏳ adopt <phase> <batch>/<total> (P%) ~Nm` — the eta is
|
|
24
|
+
* extrapolated from elapsed time × remaining-fraction. Sub-minute etas
|
|
25
|
+
* collapse to seconds; sub-second etas omit the trailing eta entirely.
|
|
26
|
+
*/
|
|
27
|
+
function renderProgress(p) {
|
|
28
|
+
const pct = p.total > 0 ? Math.max(0, Math.min(100, Math.round((p.batch / p.total) * 100))) : 0;
|
|
29
|
+
const elapsedSec = (Date.now() - p.startedAt) / 1000;
|
|
30
|
+
let eta = "";
|
|
31
|
+
if (p.batch > 0 && p.batch < p.total) {
|
|
32
|
+
const etaSec = Math.round(elapsedSec * ((p.total - p.batch) / p.batch));
|
|
33
|
+
if (etaSec >= 60) {
|
|
34
|
+
eta = ` ~${Math.ceil(etaSec / 60)}m`;
|
|
35
|
+
}
|
|
36
|
+
else if (etaSec > 0) {
|
|
37
|
+
eta = ` ~${etaSec}s`;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return `⏳ adopt ${p.phase} ${p.batch}/${p.total} (${pct}%)${eta}`;
|
|
41
|
+
}
|
|
42
|
+
function renderSignal(s, progress) {
|
|
43
|
+
if (progress)
|
|
44
|
+
return renderProgress(progress);
|
|
22
45
|
if (s.bypass_count > 0)
|
|
23
46
|
return `⚠ ${s.bypass_count} unattested`;
|
|
24
47
|
if (s.attention_count > 0) {
|
|
@@ -41,9 +64,9 @@ function renderSignal(s) {
|
|
|
41
64
|
}
|
|
42
65
|
return null;
|
|
43
66
|
}
|
|
44
|
-
export function formatStatus(s, ctx) {
|
|
67
|
+
export function formatStatus(s, ctx, progress) {
|
|
45
68
|
const parts = ["⬡ cairn"];
|
|
46
|
-
const signal = renderSignal(s);
|
|
69
|
+
const signal = renderSignal(s, progress ?? null);
|
|
47
70
|
if (signal)
|
|
48
71
|
parts.push(signal);
|
|
49
72
|
if (ctx)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/status-line/format.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/status-line/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
+
import { readProgress } from "../init/progress.js";
|
|
3
4
|
import { formatStatus, renderCtxMeter } from "./format.js";
|
|
4
5
|
import { statusJsonPath } from "./writer.js";
|
|
5
6
|
const TASK_STATES = [
|
|
@@ -41,6 +42,10 @@ function isStatusJson(x) {
|
|
|
41
42
|
* Counts pending drafts from `_inbox/`; renders `⬡ cairn ⚑ N drafts` or
|
|
42
43
|
* just `⬡ cairn`. Returns empty string when `.cairn/` is absent.
|
|
43
44
|
*
|
|
45
|
+
* Mid-adoption: `.cairn/init/progress.json` exists and overrides everything
|
|
46
|
+
* else with the live `⏳ adopt …` indicator so the operator sees motion
|
|
47
|
+
* during long ingestion phases.
|
|
48
|
+
*
|
|
44
49
|
* Ctx meter is appended when supplied — operator-side dropdown stays
|
|
45
50
|
* informative even when the session hook hasn't written status yet.
|
|
46
51
|
*/
|
|
@@ -48,6 +53,23 @@ function groundStateFallback(repoRoot, ctx) {
|
|
|
48
53
|
const cairnDir = join(repoRoot, ".cairn");
|
|
49
54
|
if (!existsSync(cairnDir))
|
|
50
55
|
return "";
|
|
56
|
+
const progress = readProgress(repoRoot);
|
|
57
|
+
if (progress !== null) {
|
|
58
|
+
const stub = {
|
|
59
|
+
updated_at: new Date().toISOString(),
|
|
60
|
+
decisions_in_scope: 0,
|
|
61
|
+
invariants_in_scope: 0,
|
|
62
|
+
task_state: "idle",
|
|
63
|
+
task_id: null,
|
|
64
|
+
task_module: null,
|
|
65
|
+
gc_running: false,
|
|
66
|
+
attention_count: 0,
|
|
67
|
+
bypass_count: 0,
|
|
68
|
+
last_run_result: null,
|
|
69
|
+
last_run_at: null,
|
|
70
|
+
};
|
|
71
|
+
return formatStatus(stub, ctx, progress);
|
|
72
|
+
}
|
|
51
73
|
let drafts = 0;
|
|
52
74
|
const inboxDir = join(cairnDir, "ground", "decisions", "_inbox");
|
|
53
75
|
if (existsSync(inboxDir)) {
|
|
@@ -103,6 +125,8 @@ export function readStatusForCLI(repoRoot, sessionId, ctx) {
|
|
|
103
125
|
}
|
|
104
126
|
if (!isStatusJson(parsed))
|
|
105
127
|
return groundStateFallback(repoRoot, ctx);
|
|
106
|
-
|
|
128
|
+
// Mid-adoption: live progress wins over the per-session signal.
|
|
129
|
+
const progress = readProgress(repoRoot);
|
|
130
|
+
return formatStatus(parsed, ctx, progress);
|
|
107
131
|
}
|
|
108
132
|
//# sourceMappingURL=reader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.js","sourceRoot":"","sources":["../../src/status-line/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAsB,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,GAAyB;IACxC,MAAM;IACN,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,SAAS;IACT,WAAW;IACX,UAAU;CACX,CAAC;AAEF,SAAS,WAAW,CAAC,CAAU;IAC7B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAK,WAAiC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,cAAc,CAAC,CAAU;IAChC,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;AAC7C,CAAC;AAED,SAAS,eAAe,CAAC,CAAU;IACjC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,QAAQ,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY,CAAC,CAAU;IAC9B,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,OAAO,CACL,OAAO,CAAC,CAAC,YAAY,CAAC,KAAK,QAAQ;QACnC,OAAO,CAAC,CAAC,oBAAoB,CAAC,KAAK,QAAQ;QAC3C,OAAO,CAAC,CAAC,qBAAqB,CAAC,KAAK,QAAQ;QAC5C,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC5B,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5B,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAChC,OAAO,CAAC,CAAC,YAAY,CAAC,KAAK,SAAS;QACpC,OAAO,CAAC,CAAC,iBAAiB,CAAC,KAAK,QAAQ;QACxC,OAAO,CAAC,CAAC,cAAc,CAAC,KAAK,QAAQ;QACrC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QACrC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CACjC,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"reader.js","sourceRoot":"","sources":["../../src/status-line/reader.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
|
+
"version": "0.4.1",
|
|
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",
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Cairn — read this on every session
|
|
2
|
+
|
|
3
|
+
This project is **adopted by [Cairn](https://github.com/isaacriehm/cairn)** —
|
|
4
|
+
a state + context-loading layer for AI coding agents. The `.cairn/`
|
|
5
|
+
directory at the project root carries decisions, invariants, brand,
|
|
6
|
+
canonical-map, and sensor configuration that govern code changes
|
|
7
|
+
here.
|
|
8
|
+
|
|
9
|
+
## If the Cairn plugin is NOT installed
|
|
10
|
+
|
|
11
|
+
Run an availability probe at session start:
|
|
12
|
+
|
|
13
|
+
- Check whether any `mcp__plugin_cairn_cairn__cairn_*` MCP tools are
|
|
14
|
+
visible in your tool list (or whether the `cairn-direction` /
|
|
15
|
+
`cairn-attention` skills are listed).
|
|
16
|
+
- If **none** are visible, the operator is missing the plugin. On the
|
|
17
|
+
operator's first reply this session, surface:
|
|
18
|
+
|
|
19
|
+
> This repo is adopted by Cairn but the Cairn plugin isn't installed
|
|
20
|
+
> in your Claude Code yet. Install it once per machine:
|
|
21
|
+
>
|
|
22
|
+
> ```
|
|
23
|
+
> /plugin marketplace add isaacriehm/cairn
|
|
24
|
+
> /plugin install cairn@isaacriehm-cairn
|
|
25
|
+
> ```
|
|
26
|
+
>
|
|
27
|
+
> Then `/exit` and reopen Claude Code. Cairn will auto-bootstrap this
|
|
28
|
+
> clone (wire git hooks, load ground state) on the next session.
|
|
29
|
+
|
|
30
|
+
Don't continue with code changes until the plugin is present —
|
|
31
|
+
source mutations without Cairn skip attestation and bypass the
|
|
32
|
+
decisions/invariants the project enforces.
|
|
33
|
+
|
|
34
|
+
## If the Cairn plugin IS installed
|
|
35
|
+
|
|
36
|
+
The plugin's SessionStart hook injects ground-state context, the
|
|
37
|
+
`cairn-direction` skill tightens code-change requests, and the
|
|
38
|
+
`cairn-attention` skill drains pending DEC drafts. Defer to those
|
|
39
|
+
surfaces; this file is a fallback for the plugin-absent case.
|
|
40
|
+
|
|
41
|
+
## Why this file exists
|
|
42
|
+
|
|
43
|
+
Plain Claude Code on a teammate's clone doesn't auto-discover Cairn.
|
|
44
|
+
Without this rule file, opening a Cairn-adopted repo without the
|
|
45
|
+
plugin gets a generic "Hey what's up?" reply with no signal that the
|
|
46
|
+
project has decisions/invariants in scope. This file primes Claude
|
|
47
|
+
to advise the install, regardless of plugin state.
|