@isaacriehm/cairn-core 0.5.0 → 0.7.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/align-undo/log.d.ts +2 -2
- package/dist/align-undo/log.js +80 -17
- package/dist/align-undo/log.js.map +1 -1
- package/dist/align-undo/undo.d.ts +10 -11
- package/dist/align-undo/undo.js +233 -23
- package/dist/align-undo/undo.js.map +1 -1
- package/dist/attention/bulk-accept.js +65 -37
- package/dist/attention/bulk-accept.js.map +1 -1
- package/dist/attention/serve/api.js +10 -18
- package/dist/attention/serve/api.js.map +1 -1
- package/dist/attention/serve/index.js +3 -3
- package/dist/attention/serve/index.js.map +1 -1
- package/dist/drain/drain.js +4 -4
- package/dist/drain/drain.js.map +1 -1
- package/dist/fix-align/index.d.ts +2 -0
- package/dist/fix-align/index.js +1 -0
- package/dist/fix-align/index.js.map +1 -1
- package/dist/fix-align/sentinel.d.ts +59 -0
- package/dist/fix-align/sentinel.js +149 -0
- package/dist/fix-align/sentinel.js.map +1 -0
- package/dist/fs.d.ts +5 -0
- package/dist/fs.js +11 -0
- package/dist/fs.js.map +1 -0
- package/dist/gc/apply.js +4 -4
- package/dist/gc/apply.js.map +1 -1
- package/dist/ground/anchor-map.js +3 -4
- package/dist/ground/anchor-map.js.map +1 -1
- package/dist/ground/file-candidates-map.d.ts +23 -0
- package/dist/ground/file-candidates-map.js +76 -0
- package/dist/ground/file-candidates-map.js.map +1 -0
- package/dist/ground/frontmatter.d.ts +12 -0
- package/dist/ground/frontmatter.js +28 -0
- package/dist/ground/frontmatter.js.map +1 -1
- package/dist/ground/index.d.ts +6 -4
- package/dist/ground/index.js +6 -4
- package/dist/ground/index.js.map +1 -1
- package/dist/ground/paths.d.ts +2 -0
- package/dist/ground/paths.js +6 -0
- package/dist/ground/paths.js.map +1 -1
- package/dist/ground/rejected.d.ts +42 -0
- package/dist/ground/rejected.js +100 -0
- package/dist/ground/rejected.js.map +1 -0
- package/dist/ground/schemas.d.ts +88 -8
- package/dist/ground/schemas.js +73 -19
- package/dist/ground/schemas.js.map +1 -1
- package/dist/ground/scope-index.js +4 -4
- package/dist/ground/scope-index.js.map +1 -1
- package/dist/ground/sot-bindings.js +3 -4
- package/dist/ground/sot-bindings.js.map +1 -1
- package/dist/ground/sot-cache.js +3 -4
- package/dist/ground/sot-cache.js.map +1 -1
- package/dist/ground/topic-index.d.ts +7 -0
- package/dist/ground/topic-index.js +26 -4
- package/dist/ground/topic-index.js.map +1 -1
- package/dist/hooks/post-tool-use/index.d.ts +1 -1
- package/dist/hooks/post-tool-use/index.js +1 -1
- package/dist/hooks/post-tool-use/index.js.map +1 -1
- package/dist/hooks/post-tool-use/ledger-cache.d.ts +13 -0
- package/dist/hooks/post-tool-use/ledger-cache.js +48 -0
- package/dist/hooks/post-tool-use/ledger-cache.js.map +1 -1
- package/dist/hooks/post-tool-use/legend-builder.d.ts +10 -1
- package/dist/hooks/post-tool-use/legend-builder.js +27 -2
- package/dist/hooks/post-tool-use/legend-builder.js.map +1 -1
- package/dist/hooks/post-tool-use/read-enricher.js +8 -2
- package/dist/hooks/post-tool-use/read-enricher.js.map +1 -1
- package/dist/hooks/post-tool-use/sot-align.js +11 -16
- package/dist/hooks/post-tool-use/sot-align.js.map +1 -1
- package/dist/hooks/pre-commit/sot-align-precommit.js +3 -3
- package/dist/hooks/pre-commit/sot-align-precommit.js.map +1 -1
- package/dist/init/index.d.ts +2 -2
- package/dist/init/index.js +1 -1
- package/dist/init/index.js.map +1 -1
- package/dist/init/ingest-docs.d.ts +82 -22
- package/dist/init/ingest-docs.js +632 -108
- package/dist/init/ingest-docs.js.map +1 -1
- package/dist/init/init.d.ts +10 -1
- package/dist/init/init.js +113 -251
- package/dist/init/init.js.map +1 -1
- package/dist/init/mapper-parallel.js +8 -0
- package/dist/init/mapper-parallel.js.map +1 -1
- package/dist/init/mapper.js +6 -6
- package/dist/init/mapper.js.map +1 -1
- package/dist/init/phases/6-docs-ingest.d.ts +9 -4
- package/dist/init/phases/6-docs-ingest.js +13 -10
- package/dist/init/phases/6-docs-ingest.js.map +1 -1
- package/dist/init/phases/parallel-678.js +10 -4
- package/dist/init/phases/parallel-678.js.map +1 -1
- package/dist/init/sot-emit.d.ts +22 -0
- package/dist/init/sot-emit.js +51 -9
- package/dist/init/sot-emit.js.map +1 -1
- package/dist/init/source-comments/ingest.js +107 -7
- package/dist/init/source-comments/ingest.js.map +1 -1
- package/dist/init/topic-index/index.d.ts +14 -0
- package/dist/init/topic-index/index.js +83 -4
- package/dist/init/topic-index/index.js.map +1 -1
- package/dist/init/topic-index/judge.js +14 -1
- package/dist/init/topic-index/judge.js.map +1 -1
- package/dist/init/topic-index/resolve.d.ts +19 -0
- package/dist/init/topic-index/resolve.js +100 -14
- package/dist/init/topic-index/resolve.js.map +1 -1
- package/dist/init/topic-index/walk.d.ts +32 -0
- package/dist/init/topic-index/walk.js +70 -4
- package/dist/init/topic-index/walk.js.map +1 -1
- package/dist/mcp/history/summarizer.js +5 -0
- package/dist/mcp/history/summarizer.js.map +1 -1
- package/dist/mcp/schemas.d.ts +48 -0
- package/dist/mcp/schemas.js +43 -0
- package/dist/mcp/schemas.js.map +1 -1
- package/dist/mcp/tools/index.d.ts +1 -1
- package/dist/mcp/tools/index.js +8 -0
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/init-phases.js.map +1 -1
- package/dist/mcp/tools/propose-decision.d.ts +34 -0
- package/dist/mcp/tools/propose-decision.js +200 -0
- package/dist/mcp/tools/propose-decision.js.map +1 -0
- package/dist/mcp/tools/record-decision.js +5 -2
- package/dist/mcp/tools/record-decision.js.map +1 -1
- package/dist/mcp/tools/reject-candidate.d.ts +24 -0
- package/dist/mcp/tools/reject-candidate.js +71 -0
- package/dist/mcp/tools/reject-candidate.js.map +1 -0
- package/dist/mcp/tools/resolve-attention.js +7 -54
- package/dist/mcp/tools/resolve-attention.js.map +1 -1
- package/dist/mcp/tools/search-candidates.d.ts +20 -0
- package/dist/mcp/tools/search-candidates.js +93 -0
- package/dist/mcp/tools/search-candidates.js.map +1 -0
- package/package.json +1 -1
- package/templates/attention-ui/app.js +40 -3
package/dist/align-undo/log.d.ts
CHANGED
|
@@ -42,7 +42,7 @@ export declare const AlignUndoEntry: z.ZodObject<{
|
|
|
42
42
|
}, z.core.$strip>;
|
|
43
43
|
export type AlignUndoEntry = z.infer<typeof AlignUndoEntry>;
|
|
44
44
|
export declare function alignUndoLogPath(repoRoot: string): string;
|
|
45
|
-
export declare function appendAlignUndoEntry(repoRoot: string, entry: AlignUndoEntry): void
|
|
45
|
+
export declare function appendAlignUndoEntry(repoRoot: string, entry: AlignUndoEntry): Promise<void>;
|
|
46
46
|
export declare function readAlignUndoLog(repoRoot: string): AlignUndoEntry[];
|
|
47
47
|
/**
|
|
48
48
|
* Rewrite the undo log keeping only the entries NOT in `undone`.
|
|
@@ -50,4 +50,4 @@ export declare function readAlignUndoLog(repoRoot: string): AlignUndoEntry[];
|
|
|
50
50
|
* on the same window does nothing the second time because the entries
|
|
51
51
|
* inside the window have already been removed.
|
|
52
52
|
*/
|
|
53
|
-
export declare function pruneAlignUndoLog(repoRoot: string, remaining: AlignUndoEntry[]): void
|
|
53
|
+
export declare function pruneAlignUndoLog(repoRoot: string, remaining: AlignUndoEntry[]): Promise<void>;
|
package/dist/align-undo/log.js
CHANGED
|
@@ -21,11 +21,23 @@
|
|
|
21
21
|
import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
22
22
|
import { dirname, join } from "node:path";
|
|
23
23
|
import { z } from "zod";
|
|
24
|
+
import { withWriteLock } from "../lock.js";
|
|
24
25
|
import { logger } from "../logger.js";
|
|
25
26
|
const log = logger("align-undo.log");
|
|
27
|
+
/**
|
|
28
|
+
* Drop entries older than this on the next append + GC sweep. Operators
|
|
29
|
+
* who never run `cairn attention undo` would otherwise accumulate one
|
|
30
|
+
* line per Layer A auto-resolution forever.
|
|
31
|
+
*/
|
|
32
|
+
const MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
|
|
33
|
+
/**
|
|
34
|
+
* Skip the read-rewrite GC pass when the log is below this line count
|
|
35
|
+
* — steady-state operators don't pay for the read on every append.
|
|
36
|
+
*/
|
|
37
|
+
const GC_THRESHOLD_LINES = 256;
|
|
26
38
|
export const AlignUndoEntry = z.object({
|
|
27
39
|
ts: z.string(),
|
|
28
|
-
session_id: z.string().
|
|
40
|
+
session_id: z.string().nullish(),
|
|
29
41
|
kind: z.enum(["tier1-cite", "tier2-cite", "tier3-creation", "augments"]),
|
|
30
42
|
file: z.string(),
|
|
31
43
|
start_offset: z.number(),
|
|
@@ -44,16 +56,63 @@ export const AlignUndoEntry = z.object({
|
|
|
44
56
|
export function alignUndoLogPath(repoRoot) {
|
|
45
57
|
return join(repoRoot, ".cairn", "state", "align-undo-log.jsonl");
|
|
46
58
|
}
|
|
47
|
-
export function appendAlignUndoEntry(repoRoot, entry) {
|
|
59
|
+
export async function appendAlignUndoEntry(repoRoot, entry) {
|
|
48
60
|
const validated = AlignUndoEntry.parse(entry);
|
|
49
61
|
const path = alignUndoLogPath(repoRoot);
|
|
62
|
+
// Wrap the read-trim-append cycle in the project write lock so two
|
|
63
|
+
// concurrent Layer A invocations (or a session running `cairn
|
|
64
|
+
// attention undo` in another shell) can't interleave a partial
|
|
65
|
+
// append against a rewrite.
|
|
66
|
+
await withWriteLock(repoRoot, () => {
|
|
67
|
+
try {
|
|
68
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
69
|
+
const remaining = sweepStale(path);
|
|
70
|
+
if (remaining === null) {
|
|
71
|
+
appendFileSync(path, `${JSON.stringify(validated)}\n`, "utf8");
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
remaining.push(validated);
|
|
75
|
+
writeFileSync(path, `${remaining.map((e) => JSON.stringify(e)).join("\n")}\n`, "utf8");
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
log.warn({ err: err instanceof Error ? err.message : String(err) }, "align-undo log append failed");
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Read the current log and drop entries older than `MAX_AGE_MS`.
|
|
84
|
+
* Returns the surviving entries when a GC pass actually ran, or `null`
|
|
85
|
+
* when the log is small enough to skip the rewrite (cheap append path).
|
|
86
|
+
*/
|
|
87
|
+
function sweepStale(path) {
|
|
88
|
+
if (!existsSync(path))
|
|
89
|
+
return null;
|
|
90
|
+
let text;
|
|
50
91
|
try {
|
|
51
|
-
|
|
52
|
-
appendFileSync(path, `${JSON.stringify(validated)}\n`, "utf8");
|
|
92
|
+
text = readFileSync(path, "utf8");
|
|
53
93
|
}
|
|
54
|
-
catch
|
|
55
|
-
|
|
94
|
+
catch {
|
|
95
|
+
return null;
|
|
56
96
|
}
|
|
97
|
+
if (text.trim().length === 0)
|
|
98
|
+
return null;
|
|
99
|
+
const lines = text.split("\n").filter((line) => line.trim().length > 0);
|
|
100
|
+
if (lines.length < GC_THRESHOLD_LINES)
|
|
101
|
+
return null;
|
|
102
|
+
const cutoff = Date.now() - MAX_AGE_MS;
|
|
103
|
+
const surviving = [];
|
|
104
|
+
for (const line of lines) {
|
|
105
|
+
try {
|
|
106
|
+
const parsed = AlignUndoEntry.parse(JSON.parse(line));
|
|
107
|
+
const ts = Date.parse(parsed.ts);
|
|
108
|
+
if (Number.isFinite(ts) && ts >= cutoff)
|
|
109
|
+
surviving.push(parsed);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// Drop malformed entries on this GC pass.
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return surviving;
|
|
57
116
|
}
|
|
58
117
|
export function readAlignUndoLog(repoRoot) {
|
|
59
118
|
const path = alignUndoLogPath(repoRoot);
|
|
@@ -82,18 +141,22 @@ export function readAlignUndoLog(repoRoot) {
|
|
|
82
141
|
* on the same window does nothing the second time because the entries
|
|
83
142
|
* inside the window have already been removed.
|
|
84
143
|
*/
|
|
85
|
-
export function pruneAlignUndoLog(repoRoot, remaining) {
|
|
144
|
+
export async function pruneAlignUndoLog(repoRoot, remaining) {
|
|
86
145
|
const path = alignUndoLogPath(repoRoot);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
146
|
+
// Lock so a concurrent `appendAlignUndoEntry` from a parallel Layer A
|
|
147
|
+
// hook can't slip a write between our read and rewrite.
|
|
148
|
+
await withWriteLock(repoRoot, () => {
|
|
149
|
+
try {
|
|
150
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
151
|
+
if (remaining.length === 0) {
|
|
152
|
+
writeFileSync(path, "", "utf8");
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
writeFileSync(path, `${remaining.map((e) => JSON.stringify(e)).join("\n")}\n`, "utf8");
|
|
92
156
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
log.warn({ err: err instanceof Error ? err.message : String(err) }, "align-undo log prune failed");
|
|
159
|
+
}
|
|
160
|
+
});
|
|
98
161
|
}
|
|
99
162
|
//# sourceMappingURL=log.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/align-undo/log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,GAAG,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAErC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/align-undo/log.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,23 +6,22 @@
|
|
|
6
6
|
* <duration>` (default 1h); only entries within the window are
|
|
7
7
|
* undone, the rest stay in the log.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* Reverses:
|
|
10
10
|
*
|
|
11
11
|
* - `tier1-cite` / `tier2-cite` — find the cite line in the current
|
|
12
12
|
* source, swap it back for the original prose block. Idempotent
|
|
13
13
|
* when the source has been hand-edited away from the cite already.
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* - `tier3-creation` — delete the freshly-emitted DEC/INV file, drop
|
|
16
|
+
* its sot-bindings / sot-cache entries, clear the topic-index
|
|
17
|
+
* reference, refresh the affected ledger, and restore the source
|
|
18
|
+
* prose at the recorded offsets. All mutations run under
|
|
19
|
+
* `withWriteLock` so a parallel Layer A hook can't slip in
|
|
20
|
+
* mid-rollback.
|
|
17
21
|
*
|
|
18
|
-
* - `
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* so the operator can hand-resolve.
|
|
22
|
-
*
|
|
23
|
-
* - `augments` — would need to delete the sibling DEC/INV and
|
|
24
|
-
* remove its cite from the double-cite while keeping the
|
|
25
|
-
* existing-id cite in place.
|
|
22
|
+
* - `augments` — delete the sibling DEC/INV (steps mirror
|
|
23
|
+
* tier3-creation), then trim the double-cite line in source down to
|
|
24
|
+
* the existing-id cite (the augmented entity stays referenced).
|
|
26
25
|
*
|
|
27
26
|
* Idempotent: the runner truncates undone entries from the log so a
|
|
28
27
|
* second invocation against the same window is a no-op.
|
package/dist/align-undo/undo.js
CHANGED
|
@@ -6,29 +6,31 @@
|
|
|
6
6
|
* <duration>` (default 1h); only entries within the window are
|
|
7
7
|
* undone, the rest stay in the log.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* Reverses:
|
|
10
10
|
*
|
|
11
11
|
* - `tier1-cite` / `tier2-cite` — find the cite line in the current
|
|
12
12
|
* source, swap it back for the original prose block. Idempotent
|
|
13
13
|
* when the source has been hand-edited away from the cite already.
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* - `tier3-creation` — delete the freshly-emitted DEC/INV file, drop
|
|
16
|
+
* its sot-bindings / sot-cache entries, clear the topic-index
|
|
17
|
+
* reference, refresh the affected ledger, and restore the source
|
|
18
|
+
* prose at the recorded offsets. All mutations run under
|
|
19
|
+
* `withWriteLock` so a parallel Layer A hook can't slip in
|
|
20
|
+
* mid-rollback.
|
|
17
21
|
*
|
|
18
|
-
* - `
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* so the operator can hand-resolve.
|
|
22
|
-
*
|
|
23
|
-
* - `augments` — would need to delete the sibling DEC/INV and
|
|
24
|
-
* remove its cite from the double-cite while keeping the
|
|
25
|
-
* existing-id cite in place.
|
|
22
|
+
* - `augments` — delete the sibling DEC/INV (steps mirror
|
|
23
|
+
* tier3-creation), then trim the double-cite line in source down to
|
|
24
|
+
* the existing-id cite (the augmented entity stays referenced).
|
|
26
25
|
*
|
|
27
26
|
* Idempotent: the runner truncates undone entries from the log so a
|
|
28
27
|
* second invocation against the same window is a no-op.
|
|
29
28
|
*/
|
|
30
|
-
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
29
|
+
import { existsSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
31
30
|
import { join } from "node:path";
|
|
31
|
+
import { clearDecFromTopicIndex, decisionsDir, deleteSotCacheEntry, invariantsDir, readSotBindings, readSotCache, readTopicIndex, unbindDec, writeSotBindings, writeSotCache, writeTopicIndex, } from "../ground/index.js";
|
|
32
|
+
import { writeDecisionsLedger, writeInvariantsLedger } from "../ground/ledgers.js";
|
|
33
|
+
import { withWriteLock } from "../lock.js";
|
|
32
34
|
import { logger } from "../logger.js";
|
|
33
35
|
import { pruneAlignUndoLog, readAlignUndoLog, } from "./log.js";
|
|
34
36
|
const log = logger("align-undo.runner");
|
|
@@ -58,7 +60,7 @@ export async function runAttentionUndo(args) {
|
|
|
58
60
|
// operator intent ("undo my last 5 minutes of cites").
|
|
59
61
|
inside.sort((a, b) => Date.parse(b.ts) - Date.parse(a.ts));
|
|
60
62
|
for (const entry of inside) {
|
|
61
|
-
outcomes.push(reverseEntry(repoRoot, entry, dryRun));
|
|
63
|
+
outcomes.push(await reverseEntry(repoRoot, entry, dryRun));
|
|
62
64
|
}
|
|
63
65
|
const result = {
|
|
64
66
|
windowEntries: inside.length,
|
|
@@ -80,23 +82,23 @@ export async function runAttentionUndo(args) {
|
|
|
80
82
|
.filter((o) => o.status === "not-supported" || o.status === "error")
|
|
81
83
|
.map((o) => o.entry),
|
|
82
84
|
];
|
|
83
|
-
pruneAlignUndoLog(repoRoot, keep);
|
|
85
|
+
await pruneAlignUndoLog(repoRoot, keep);
|
|
84
86
|
}
|
|
85
87
|
return result;
|
|
86
88
|
}
|
|
87
89
|
/* -------------------------------------------------------------------------- */
|
|
88
90
|
/* Per-entry reversal */
|
|
89
91
|
/* -------------------------------------------------------------------------- */
|
|
90
|
-
function reverseEntry(repoRoot, entry, dryRun) {
|
|
91
|
-
if (entry.kind === "tier3-creation"
|
|
92
|
-
return
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
? "fresh DEC/INV creation undo deferred to v0.6 — manually delete the entity file and restore the source block"
|
|
97
|
-
: "augments-sibling undo deferred to v0.6 — manually delete the sibling and trim the double-cite",
|
|
98
|
-
};
|
|
92
|
+
async function reverseEntry(repoRoot, entry, dryRun) {
|
|
93
|
+
if (entry.kind === "tier3-creation") {
|
|
94
|
+
return reverseTier3Creation(repoRoot, entry, dryRun);
|
|
95
|
+
}
|
|
96
|
+
if (entry.kind === "augments") {
|
|
97
|
+
return reverseAugments(repoRoot, entry, dryRun);
|
|
99
98
|
}
|
|
99
|
+
return reverseCite(repoRoot, entry, dryRun);
|
|
100
|
+
}
|
|
101
|
+
function reverseCite(repoRoot, entry, dryRun) {
|
|
100
102
|
const abs = join(repoRoot, entry.file);
|
|
101
103
|
if (!existsSync(abs)) {
|
|
102
104
|
return { entry, status: "source-missing", detail: `${entry.file} no longer exists` };
|
|
@@ -153,6 +155,214 @@ function reverseEntry(repoRoot, entry, dryRun) {
|
|
|
153
155
|
}
|
|
154
156
|
return { entry, status: "reverted", detail: `${entry.file}` };
|
|
155
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Reverse a tier3-creation undo entry — Layer A spawned a fresh
|
|
160
|
+
* DEC/INV from this prose block, strip-replaced the source with a
|
|
161
|
+
* cite. Rolling back deletes the entity file, drops every sot-state
|
|
162
|
+
* surface that referenced it, and restores the source block.
|
|
163
|
+
*/
|
|
164
|
+
async function reverseTier3Creation(repoRoot, entry, dryRun) {
|
|
165
|
+
const kind = derivePrimaryKind(entry);
|
|
166
|
+
const entityDir = kind === "INV" ? invariantsDir(repoRoot) : decisionsDir(repoRoot);
|
|
167
|
+
const entityPath = join(entityDir, `${entry.primary_id}.md`);
|
|
168
|
+
const sourceCheck = checkSourceForReversal(repoRoot, entry);
|
|
169
|
+
if (sourceCheck.status !== "ready") {
|
|
170
|
+
const { status, detail } = sourceCheck;
|
|
171
|
+
return { entry, status, detail };
|
|
172
|
+
}
|
|
173
|
+
if (dryRun) {
|
|
174
|
+
return {
|
|
175
|
+
entry,
|
|
176
|
+
status: "reverted",
|
|
177
|
+
detail: `[dry-run] would delete ${kind === "INV" ? "INV" : "DEC"} ${entry.primary_id} + restore ${entry.file}`,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
try {
|
|
181
|
+
await withWriteLock(repoRoot, () => {
|
|
182
|
+
// Source restore first so a partial failure doesn't leave the
|
|
183
|
+
// operator with an orphaned cite pointing at a deleted entity.
|
|
184
|
+
writeFileSync(sourceCheck.absSource, sourceCheck.next, "utf8");
|
|
185
|
+
// Entity removal — `force: true` so an already-deleted file is a no-op.
|
|
186
|
+
rmSync(entityPath, { force: true });
|
|
187
|
+
let bindings = readSotBindings(repoRoot);
|
|
188
|
+
const nextBindings = unbindDec(bindings, entry.primary_id);
|
|
189
|
+
if (nextBindings !== bindings) {
|
|
190
|
+
bindings = nextBindings;
|
|
191
|
+
writeSotBindings(repoRoot, bindings);
|
|
192
|
+
}
|
|
193
|
+
let cache = readSotCache(repoRoot);
|
|
194
|
+
const nextCache = deleteSotCacheEntry(cache, entry.primary_id);
|
|
195
|
+
if (nextCache !== cache) {
|
|
196
|
+
cache = nextCache;
|
|
197
|
+
writeSotCache(repoRoot, cache);
|
|
198
|
+
}
|
|
199
|
+
let topics = readTopicIndex(repoRoot);
|
|
200
|
+
const nextTopics = clearDecFromTopicIndex(topics, entry.primary_id);
|
|
201
|
+
if (nextTopics !== topics) {
|
|
202
|
+
topics = nextTopics;
|
|
203
|
+
writeTopicIndex(repoRoot, topics);
|
|
204
|
+
}
|
|
205
|
+
if (kind === "INV") {
|
|
206
|
+
writeInvariantsLedger({ repoRoot });
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
writeDecisionsLedger({ repoRoot });
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
log.warn({ file: entry.file, primary_id: entry.primary_id, err: err instanceof Error ? err.message : String(err) }, "tier3-creation undo failed");
|
|
215
|
+
return {
|
|
216
|
+
entry,
|
|
217
|
+
status: "error",
|
|
218
|
+
detail: `tier3-creation undo failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
entry,
|
|
223
|
+
status: "reverted",
|
|
224
|
+
detail: `deleted ${kind} ${entry.primary_id} + restored ${entry.file}`,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Reverse an augments undo entry — Layer A emitted a sibling DEC/INV
|
|
229
|
+
* alongside an existing one and stamped the source with a double-cite
|
|
230
|
+
* (`// §existing\n// §new`). Rolling back deletes the sibling and
|
|
231
|
+
* trims the source line down to the existing cite.
|
|
232
|
+
*/
|
|
233
|
+
async function reverseAugments(repoRoot, entry, dryRun) {
|
|
234
|
+
const kind = derivePrimaryKind(entry);
|
|
235
|
+
const entityDir = kind === "INV" ? invariantsDir(repoRoot) : decisionsDir(repoRoot);
|
|
236
|
+
const entityPath = join(entityDir, `${entry.primary_id}.md`);
|
|
237
|
+
// The replacement is `<existingCite>\n<newCite>` — first line is the
|
|
238
|
+
// cite we want to keep, second line is the sibling cite to drop.
|
|
239
|
+
const replacement = entry.replacement.trimEnd();
|
|
240
|
+
const newlineIdx = replacement.indexOf("\n");
|
|
241
|
+
if (newlineIdx === -1) {
|
|
242
|
+
return {
|
|
243
|
+
entry,
|
|
244
|
+
status: "error",
|
|
245
|
+
detail: `augments replacement missing newline boundary: ${replacement}`,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
const keepCite = replacement.slice(0, newlineIdx);
|
|
249
|
+
const sourceAbs = join(repoRoot, entry.file);
|
|
250
|
+
if (!existsSync(sourceAbs)) {
|
|
251
|
+
return { entry, status: "source-missing", detail: `${entry.file} no longer exists` };
|
|
252
|
+
}
|
|
253
|
+
let source;
|
|
254
|
+
try {
|
|
255
|
+
source = readFileSync(sourceAbs, "utf8");
|
|
256
|
+
}
|
|
257
|
+
catch (err) {
|
|
258
|
+
return {
|
|
259
|
+
entry,
|
|
260
|
+
status: "error",
|
|
261
|
+
detail: `cannot read ${entry.file}: ${err instanceof Error ? err.message : String(err)}`,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
const idx = source.indexOf(replacement);
|
|
265
|
+
if (idx === -1) {
|
|
266
|
+
return {
|
|
267
|
+
entry,
|
|
268
|
+
status: "already-reverted",
|
|
269
|
+
detail: `double-cite "${replacement.trim()}" not found in ${entry.file}`,
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
const next = `${source.slice(0, idx)}${keepCite}${source.slice(idx + replacement.length)}`;
|
|
273
|
+
if (dryRun) {
|
|
274
|
+
return {
|
|
275
|
+
entry,
|
|
276
|
+
status: "reverted",
|
|
277
|
+
detail: `[dry-run] would delete sibling ${kind} ${entry.primary_id} + trim double-cite in ${entry.file}`,
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
try {
|
|
281
|
+
await withWriteLock(repoRoot, () => {
|
|
282
|
+
writeFileSync(sourceAbs, next, "utf8");
|
|
283
|
+
rmSync(entityPath, { force: true });
|
|
284
|
+
let bindings = readSotBindings(repoRoot);
|
|
285
|
+
const nextBindings = unbindDec(bindings, entry.primary_id);
|
|
286
|
+
if (nextBindings !== bindings) {
|
|
287
|
+
bindings = nextBindings;
|
|
288
|
+
writeSotBindings(repoRoot, bindings);
|
|
289
|
+
}
|
|
290
|
+
let cache = readSotCache(repoRoot);
|
|
291
|
+
const nextCache = deleteSotCacheEntry(cache, entry.primary_id);
|
|
292
|
+
if (nextCache !== cache) {
|
|
293
|
+
cache = nextCache;
|
|
294
|
+
writeSotCache(repoRoot, cache);
|
|
295
|
+
}
|
|
296
|
+
let topics = readTopicIndex(repoRoot);
|
|
297
|
+
const nextTopics = clearDecFromTopicIndex(topics, entry.primary_id);
|
|
298
|
+
if (nextTopics !== topics) {
|
|
299
|
+
topics = nextTopics;
|
|
300
|
+
writeTopicIndex(repoRoot, topics);
|
|
301
|
+
}
|
|
302
|
+
if (kind === "INV") {
|
|
303
|
+
writeInvariantsLedger({ repoRoot });
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
writeDecisionsLedger({ repoRoot });
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
catch (err) {
|
|
311
|
+
log.warn({ file: entry.file, primary_id: entry.primary_id, err: err instanceof Error ? err.message : String(err) }, "augments undo failed");
|
|
312
|
+
return {
|
|
313
|
+
entry,
|
|
314
|
+
status: "error",
|
|
315
|
+
detail: `augments undo failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
return {
|
|
319
|
+
entry,
|
|
320
|
+
status: "reverted",
|
|
321
|
+
detail: `deleted sibling ${kind} ${entry.primary_id} + trimmed double-cite in ${entry.file}`,
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Helper for tier3-creation: precompute the source-restore content so
|
|
326
|
+
* a missing source surfaces before we touch the entity files. Returns
|
|
327
|
+
* the restored source text + abs path on success, or a non-`reverted`
|
|
328
|
+
* outcome status.
|
|
329
|
+
*/
|
|
330
|
+
function checkSourceForReversal(repoRoot, entry) {
|
|
331
|
+
const abs = join(repoRoot, entry.file);
|
|
332
|
+
if (!existsSync(abs)) {
|
|
333
|
+
return { status: "source-missing", detail: `${entry.file} no longer exists` };
|
|
334
|
+
}
|
|
335
|
+
let source;
|
|
336
|
+
try {
|
|
337
|
+
source = readFileSync(abs, "utf8");
|
|
338
|
+
}
|
|
339
|
+
catch (err) {
|
|
340
|
+
return {
|
|
341
|
+
status: "error",
|
|
342
|
+
detail: `cannot read ${entry.file}: ${err instanceof Error ? err.message : String(err)}`,
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
const replacement = entry.replacement.trimEnd();
|
|
346
|
+
const idx = source.indexOf(replacement);
|
|
347
|
+
if (idx === -1) {
|
|
348
|
+
return {
|
|
349
|
+
status: "already-reverted",
|
|
350
|
+
detail: `cite "${replacement.trim()}" not found in ${entry.file}`,
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
const lineStart = source.lastIndexOf("\n", idx) + 1;
|
|
354
|
+
const lineEnd = source.indexOf("\n", idx + replacement.length);
|
|
355
|
+
const cutEnd = lineEnd === -1 ? source.length : lineEnd;
|
|
356
|
+
const indent = source.slice(lineStart, idx);
|
|
357
|
+
const reflowedOriginal = reapplyIndent(entry.original_raw, indent);
|
|
358
|
+
const next = `${source.slice(0, lineStart)}${reflowedOriginal}${source.slice(cutEnd)}`;
|
|
359
|
+
return { status: "ready", absSource: abs, next };
|
|
360
|
+
}
|
|
361
|
+
function derivePrimaryKind(entry) {
|
|
362
|
+
if (entry.primary_kind !== undefined)
|
|
363
|
+
return entry.primary_kind;
|
|
364
|
+
return entry.primary_id.startsWith("INV-") ? "INV" : "DEC";
|
|
365
|
+
}
|
|
156
366
|
/**
|
|
157
367
|
* Re-apply the leading indent that the cite line carried so the
|
|
158
368
|
* restored original block lines up at the right column. Most blocks'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"undo.js","sourceRoot":"","sources":["../../src/align-undo/undo.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"undo.js","sourceRoot":"","sources":["../../src/align-undo/undo.ts"],"names":[],"mappings":"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"}
|