@isaacriehm/cairn 0.6.0 → 0.7.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.
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
package/dist/cli/join.js CHANGED
@@ -63,7 +63,8 @@ export async function joinCli(argv) {
63
63
  console.log(` cli=${result.cliVersion} project=${result.projectCairnVersion ?? "(unset)"}`);
64
64
  }
65
65
  for (const step of result.steps) {
66
- const glyph = STATUS_GLYPH[step.status] ?? "·";
66
+ const statusValue = step.status;
67
+ const glyph = STATUS_GLYPH[statusValue] ?? "·";
67
68
  console.log(` ${glyph} ${step.step.padEnd(20)} ${step.detail}`);
68
69
  }
69
70
  if (result.bootstrapped) {
@@ -1 +1 @@
1
- {"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/cli/join.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/cli/join.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * `cairn tag --insert-marker <pattern> <file-or-dir>` — operator-driven
3
+ * retro-tagging for existing decision docs.
4
+ *
5
+ * Inserts `<!-- cairn:decision -->` after each line matching `<pattern>` so
6
+ * the phase-6 walker's marker-override path picks them up on the next
7
+ * `cairn init` (Stage-3 deterministic, 0 Haiku — see PHASE_6_REDESIGN §4.1).
8
+ *
9
+ * Safety model (PHASE_6_REDESIGN §4.8):
10
+ *
11
+ * 1. Git-aware. Pre-flight runs `git status --porcelain <file>` for
12
+ * every target. If any are dirty AND `--force` is not passed, abort
13
+ * with the dirty-file list. Operator commits/stashes first or
14
+ * passes `--force`.
15
+ *
16
+ * 2. Impact circuit breaker. Counts pattern matches per file. If
17
+ * matches > 30% of total lines AND `--force-pattern` is not passed,
18
+ * that file is skipped with a WARN line; other files still process.
19
+ *
20
+ * 3. Idempotent. Scans 3 lines ahead (not 1) for an existing
21
+ * `<!-- cairn:decision -->` marker before inserting — handles the
22
+ * blank-line-between-heading-and-body case.
23
+ *
24
+ * Deterministic, 0 Haiku.
25
+ */
26
+ export interface CmdTagResult {
27
+ exitCode: 0 | 1;
28
+ filesProcessed: number;
29
+ filesSkippedHighImpact: number;
30
+ totalInserted: number;
31
+ }
32
+ /**
33
+ * Pure-ish entrypoint for the smoke harness — does NOT call process.exit.
34
+ * The CLI wrapper below maps the result to stdout / stderr / exit code.
35
+ */
36
+ export declare function runTag(args: {
37
+ insertMarker: string;
38
+ targets: string[];
39
+ repoRoot: string;
40
+ force: boolean;
41
+ forcePattern: boolean;
42
+ stdout?: (s: string) => void;
43
+ stderr?: (s: string) => void;
44
+ }): CmdTagResult;
45
+ export declare function tagCli(argv: string[]): Promise<void>;
46
+ export declare const _internal: {
47
+ IMPACT_RATIO_LIMIT: number;
48
+ MARKER_LOOKAHEAD_LINES: number;
49
+ MARKER_TEXT: string;
50
+ };
@@ -0,0 +1,235 @@
1
+ /**
2
+ * `cairn tag --insert-marker <pattern> <file-or-dir>` — operator-driven
3
+ * retro-tagging for existing decision docs.
4
+ *
5
+ * Inserts `<!-- cairn:decision -->` after each line matching `<pattern>` so
6
+ * the phase-6 walker's marker-override path picks them up on the next
7
+ * `cairn init` (Stage-3 deterministic, 0 Haiku — see PHASE_6_REDESIGN §4.1).
8
+ *
9
+ * Safety model (PHASE_6_REDESIGN §4.8):
10
+ *
11
+ * 1. Git-aware. Pre-flight runs `git status --porcelain <file>` for
12
+ * every target. If any are dirty AND `--force` is not passed, abort
13
+ * with the dirty-file list. Operator commits/stashes first or
14
+ * passes `--force`.
15
+ *
16
+ * 2. Impact circuit breaker. Counts pattern matches per file. If
17
+ * matches > 30% of total lines AND `--force-pattern` is not passed,
18
+ * that file is skipped with a WARN line; other files still process.
19
+ *
20
+ * 3. Idempotent. Scans 3 lines ahead (not 1) for an existing
21
+ * `<!-- cairn:decision -->` marker before inserting — handles the
22
+ * blank-line-between-heading-and-body case.
23
+ *
24
+ * Deterministic, 0 Haiku.
25
+ */
26
+ import { execFileSync } from "node:child_process";
27
+ import { existsSync, readFileSync, statSync, writeFileSync } from "node:fs";
28
+ import { extname, relative, resolve } from "node:path";
29
+ import { walkFs } from "@isaacriehm/cairn-core";
30
+ const IMPACT_RATIO_LIMIT = 0.30;
31
+ const MARKER_LOOKAHEAD_LINES = 3;
32
+ const MARKER_TEXT = "<!-- cairn:decision -->";
33
+ const MARKDOWN_EXTENSIONS = new Set([".md", ".mdx", ".markdown"]);
34
+ function usage() {
35
+ process.stderr.write("Usage: cairn tag --insert-marker <pattern> <file-or-dir> [--force] [--force-pattern]\n" +
36
+ " [--repo <path>]\n" +
37
+ "\n" +
38
+ " --insert-marker regex pattern (per-line); marker inserted after each match\n" +
39
+ " <file-or-dir> target file or directory (markdown only)\n" +
40
+ " --force allow run even if targets have uncommitted changes\n" +
41
+ " --force-pattern allow files where pattern matches >30% of lines\n" +
42
+ " --repo repo root for git status (default: cwd)\n");
43
+ process.exit(2);
44
+ }
45
+ function parseArgs(argv) {
46
+ let insertMarker;
47
+ let target;
48
+ let repoRoot = process.cwd();
49
+ let force = false;
50
+ let forcePattern = false;
51
+ for (let i = 0; i < argv.length; i += 1) {
52
+ const arg = argv[i];
53
+ if (arg === "--insert-marker") {
54
+ const v = argv[i + 1];
55
+ if (v === undefined) {
56
+ process.stderr.write("--insert-marker requires a pattern argument\n");
57
+ process.exit(2);
58
+ }
59
+ insertMarker = v;
60
+ i += 1;
61
+ }
62
+ else if (arg === "--repo") {
63
+ const v = argv[i + 1];
64
+ if (v === undefined) {
65
+ process.stderr.write("--repo requires a path argument\n");
66
+ process.exit(2);
67
+ }
68
+ repoRoot = resolve(v);
69
+ i += 1;
70
+ }
71
+ else if (arg === "--force") {
72
+ force = true;
73
+ }
74
+ else if (arg === "--force-pattern") {
75
+ forcePattern = true;
76
+ }
77
+ else if (arg === "-h" || arg === "--help") {
78
+ usage();
79
+ }
80
+ else if (arg !== undefined && !arg.startsWith("--")) {
81
+ if (target === undefined)
82
+ target = arg;
83
+ else {
84
+ process.stderr.write(`unexpected positional argument: ${arg}\n`);
85
+ process.exit(2);
86
+ }
87
+ }
88
+ else {
89
+ process.stderr.write(`unknown flag: ${String(arg)}\n`);
90
+ process.exit(2);
91
+ }
92
+ }
93
+ if (insertMarker === undefined || target === undefined)
94
+ usage();
95
+ return { insertMarker, target, force, forcePattern, repoRoot };
96
+ }
97
+ function resolveTargets(target, repoRoot) {
98
+ const abs = resolve(repoRoot, target);
99
+ if (!existsSync(abs)) {
100
+ process.stderr.write(`target does not exist: ${target}\n`);
101
+ process.exit(2);
102
+ }
103
+ const stat = statSync(abs);
104
+ if (stat.isFile())
105
+ return [abs];
106
+ if (!stat.isDirectory()) {
107
+ process.stderr.write(`target is not a file or directory: ${target}\n`);
108
+ process.exit(2);
109
+ }
110
+ const out = [];
111
+ walkFs({
112
+ dir: abs,
113
+ skipDirs: new Set([".git", "node_modules", ".cairn"]),
114
+ onFile: (_rel, fileAbs) => {
115
+ if (MARKDOWN_EXTENSIONS.has(extname(fileAbs).toLowerCase())) {
116
+ out.push(fileAbs);
117
+ }
118
+ },
119
+ });
120
+ return out;
121
+ }
122
+ function isDirty(filePath, repoRoot) {
123
+ try {
124
+ const rel = relative(repoRoot, filePath);
125
+ const out = execFileSync("git", ["status", "--porcelain", "--", rel], {
126
+ cwd: repoRoot,
127
+ encoding: "utf8",
128
+ });
129
+ return out.trim().length > 0;
130
+ }
131
+ catch {
132
+ return false;
133
+ }
134
+ }
135
+ /**
136
+ * Pure-ish entrypoint for the smoke harness — does NOT call process.exit.
137
+ * The CLI wrapper below maps the result to stdout / stderr / exit code.
138
+ */
139
+ export function runTag(args) {
140
+ const stdout = args.stdout ?? ((s) => void process.stdout.write(s));
141
+ const stderr = args.stderr ?? ((s) => void process.stderr.write(s));
142
+ const dirtyFiles = args.targets.filter((p) => isDirty(p, args.repoRoot));
143
+ if (dirtyFiles.length > 0 && !args.force) {
144
+ stderr(`Error: ${dirtyFiles.length} file${dirtyFiles.length === 1 ? "" : "s"} have uncommitted changes:\n`);
145
+ for (const p of dirtyFiles.slice(0, 5)) {
146
+ stderr(` - ${relative(args.repoRoot, p)}\n`);
147
+ }
148
+ if (dirtyFiles.length > 5)
149
+ stderr(` - …and ${dirtyFiles.length - 5} more\n`);
150
+ stderr(`Commit/stash first or pass --force.\n`);
151
+ return {
152
+ exitCode: 1,
153
+ filesProcessed: 0,
154
+ filesSkippedHighImpact: 0,
155
+ totalInserted: 0,
156
+ };
157
+ }
158
+ const pattern = new RegExp(args.insertMarker);
159
+ let totalInserted = 0;
160
+ let filesProcessed = 0;
161
+ let filesSkippedHighImpact = 0;
162
+ for (const file of args.targets) {
163
+ let content;
164
+ try {
165
+ content = readFileSync(file, "utf8");
166
+ }
167
+ catch (err) {
168
+ const message = err instanceof Error ? err.message : String(err);
169
+ stderr(`WARN: could not read ${relative(args.repoRoot, file)}: ${message}\n`);
170
+ continue;
171
+ }
172
+ const lines = content.split("\n");
173
+ const matchCount = lines.reduce((n, l) => (pattern.test(l) ? n + 1 : n), 0);
174
+ if (matchCount === 0) {
175
+ filesProcessed += 1;
176
+ continue;
177
+ }
178
+ const ratio = matchCount / Math.max(1, lines.length);
179
+ if (ratio > IMPACT_RATIO_LIMIT && !args.forcePattern) {
180
+ stderr(`WARN: pattern matched ${(ratio * 100).toFixed(0)}% of lines in ${relative(args.repoRoot, file)}. Skipping. Use --force-pattern to override.\n`);
181
+ filesSkippedHighImpact += 1;
182
+ continue;
183
+ }
184
+ const out = [];
185
+ let insertedHere = 0;
186
+ for (let i = 0; i < lines.length; i += 1) {
187
+ const line = lines[i] ?? "";
188
+ out.push(line);
189
+ if (pattern.test(line)) {
190
+ const window = lines.slice(i + 1, i + 1 + MARKER_LOOKAHEAD_LINES).join("\n");
191
+ if (!window.includes(MARKER_TEXT)) {
192
+ out.push(MARKER_TEXT);
193
+ insertedHere += 1;
194
+ }
195
+ }
196
+ }
197
+ if (insertedHere > 0) {
198
+ writeFileSync(file, out.join("\n"), "utf8");
199
+ totalInserted += insertedHere;
200
+ }
201
+ filesProcessed += 1;
202
+ }
203
+ stdout(`Inserted ${totalInserted} marker${totalInserted === 1 ? "" : "s"} across ${filesProcessed} file${filesProcessed === 1 ? "" : "s"}.\n`);
204
+ if (filesSkippedHighImpact > 0) {
205
+ stdout(`Skipped ${filesSkippedHighImpact} file${filesSkippedHighImpact === 1 ? "" : "s"} (impact circuit breaker).\n`);
206
+ }
207
+ return {
208
+ exitCode: 0,
209
+ filesProcessed,
210
+ filesSkippedHighImpact,
211
+ totalInserted,
212
+ };
213
+ }
214
+ export async function tagCli(argv) {
215
+ const parsed = parseArgs(argv);
216
+ const targets = resolveTargets(parsed.target, parsed.repoRoot);
217
+ if (targets.length === 0) {
218
+ process.stderr.write(`No markdown targets resolved under: ${parsed.target}\n`);
219
+ process.exit(2);
220
+ }
221
+ const result = runTag({
222
+ insertMarker: parsed.insertMarker,
223
+ targets,
224
+ repoRoot: parsed.repoRoot,
225
+ force: parsed.force,
226
+ forcePattern: parsed.forcePattern,
227
+ });
228
+ process.exit(result.exitCode);
229
+ }
230
+ export const _internal = {
231
+ IMPACT_RATIO_LIMIT,
232
+ MARKER_LOOKAHEAD_LINES,
233
+ MARKER_TEXT,
234
+ };
235
+ //# sourceMappingURL=tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/cli/tag.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isaacriehm/cairn",
3
- "version": "0.6.0",
3
+ "version": "0.7.1",
4
4
  "description": "Cairn — state + context-loading layer for AI coding agents.",
5
5
  "author": "Isaac Riehm",
6
6
  "license": "MIT",
@@ -37,12 +37,13 @@
37
37
  "dependencies": {
38
38
  "simple-git": "^3.36.0",
39
39
  "yaml": "^2.8.4",
40
- "@isaacriehm/cairn-core": "0.6.0"
40
+ "@isaacriehm/cairn-core": "0.7.1"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^25.6.0",
44
44
  "tsx": "^4.21.0",
45
- "typescript": "^6.0.3"
45
+ "typescript": "^6.0.3",
46
+ "zod": "^4.4.3"
46
47
  },
47
48
  "scripts": {
48
49
  "build": "tsc -b",
@@ -80,12 +81,19 @@
80
81
  "smoke:id-content-addressed": "tsx scripts/smoke-id-content-addressed.ts",
81
82
  "smoke:attention-serve": "tsx scripts/smoke-attention-serve.ts",
82
83
  "smoke:topic-index": "tsx scripts/smoke-topic-index.ts",
84
+ "smoke:search-candidates": "tsx scripts/smoke-search-candidates.ts",
85
+ "smoke:propose-decision": "tsx scripts/smoke-propose-decision.ts",
86
+ "smoke:reject-candidate": "tsx scripts/smoke-reject-candidate.ts",
87
+ "smoke:tag-cli": "tsx scripts/smoke-tag-cli.ts",
88
+ "smoke:llm-prompt-eval": "tsx scripts/smoke-llm-prompt-eval.ts",
83
89
  "smoke:conflicts-queue": "tsx scripts/smoke-conflicts-queue.ts",
84
90
  "smoke:sot-align": "tsx scripts/smoke-sot-align.ts",
85
91
  "smoke:layer-b-precommit": "tsx scripts/smoke-layer-b-precommit.ts",
86
92
  "smoke:layer-c-sessionstart-drain": "tsx scripts/smoke-layer-c-sessionstart-drain.ts",
87
93
  "smoke:fix-align": "tsx scripts/smoke-fix-align.ts",
88
94
  "smoke:fix-align-gates": "tsx scripts/smoke-fix-align-gates.ts",
89
- "smoke:attention-undo": "tsx scripts/smoke-attention-undo.ts"
95
+ "smoke:attention-undo": "tsx scripts/smoke-attention-undo.ts",
96
+ "smokes": "pnpm smoke:plugin-layout && pnpm smoke:resolve-attention && pnpm smoke:stop-hook && pnpm smoke:events && pnpm smoke:session-state && pnpm smoke:status-line && pnpm smoke:session-start && pnpm smoke:handoff && pnpm smoke:scope-index && pnpm smoke:read-enrich && pnpm smoke:init && pnpm smoke:ingestion-baseline && pnpm smoke:gc && pnpm smoke:lock && pnpm smoke:source-comments && pnpm smoke:rules-merge && pnpm smoke:join && pnpm smoke:bypass-detection && pnpm smoke:bootstrap-guard && pnpm smoke:e2e-adoption && pnpm smoke:e2e-daily-flow && pnpm smoke:plugin-bundle && pnpm smoke:init-phases-state && pnpm smoke:init-phases-all && pnpm smoke:init-mcp-tools && pnpm smoke:init-progress-heartbeat && pnpm smoke:stop-debounce",
97
+ "smokes:all": "pnpm run \"/^smoke:/\""
90
98
  }
91
99
  }