@sledorze/cairn 0.2.0 → 0.3.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/README.md +37 -1
- package/dist/cli.js +1011 -526
- package/dist/cli.js.map +1 -1
- package/dist/core/Config.d.ts +1 -1
- package/dist/core/Config.d.ts.map +1 -1
- package/dist/core/Config.js +1 -1
- package/dist/core/Config.js.map +1 -1
- package/dist/core/hashing.d.ts +3 -0
- package/dist/core/hashing.d.ts.map +1 -0
- package/dist/core/hashing.js +16 -0
- package/dist/core/hashing.js.map +1 -0
- package/dist/core/links/Anchors.d.ts +30 -0
- package/dist/core/links/Anchors.d.ts.map +1 -0
- package/dist/core/links/Anchors.js +119 -0
- package/dist/core/links/Anchors.js.map +1 -0
- package/dist/core/links/MarkdownLinks.bench.d.ts.map +1 -0
- package/dist/core/links/MarkdownLinks.bench.js.map +1 -0
- package/dist/core/links/MarkdownLinks.d.ts +121 -0
- package/dist/core/links/MarkdownLinks.d.ts.map +1 -0
- package/dist/core/links/MarkdownLinks.js +228 -0
- package/dist/core/links/MarkdownLinks.js.map +1 -0
- package/dist/core/links/RefStore.d.ts +32 -0
- package/dist/core/links/RefStore.d.ts.map +1 -0
- package/dist/core/links/RefStore.js +60 -0
- package/dist/core/links/RefStore.js.map +1 -0
- package/dist/core/links/markdownFences.d.ts +10 -0
- package/dist/core/links/markdownFences.d.ts.map +1 -0
- package/dist/core/links/markdownFences.js +51 -0
- package/dist/core/links/markdownFences.js.map +1 -0
- package/dist/core/paths.d.ts +8 -0
- package/dist/core/paths.d.ts.map +1 -1
- package/dist/core/paths.js +13 -0
- package/dist/core/paths.js.map +1 -1
- package/dist/core/sidecar.d.ts +45 -0
- package/dist/core/sidecar.d.ts.map +1 -0
- package/dist/core/sidecar.js +83 -0
- package/dist/core/sidecar.js.map +1 -0
- package/dist/core/{DocSummaries.d.ts → summaries/DocSummaries.d.ts} +0 -2
- package/dist/core/summaries/DocSummaries.d.ts.map +1 -0
- package/dist/core/{DocSummaries.js → summaries/DocSummaries.js} +6 -8
- package/dist/core/summaries/DocSummaries.js.map +1 -0
- package/dist/core/summaries/StampStore.d.ts +19 -0
- package/dist/core/summaries/StampStore.d.ts.map +1 -0
- package/dist/core/summaries/StampStore.js +34 -0
- package/dist/core/summaries/StampStore.js.map +1 -0
- package/dist/core/summaries/SummaryTree.bench.d.ts.map +1 -0
- package/dist/core/{SummaryTree.bench.js → summaries/SummaryTree.bench.js} +2 -1
- package/dist/core/summaries/SummaryTree.bench.js.map +1 -0
- package/dist/core/summaries/SummaryTree.d.ts.map +1 -0
- package/dist/core/{SummaryTree.js → summaries/SummaryTree.js} +4 -3
- package/dist/core/summaries/SummaryTree.js.map +1 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/program/JsonReport.d.ts +2 -2
- package/dist/program/JsonReport.d.ts.map +1 -1
- package/dist/program/JsonReport.js +2 -2
- package/dist/program/JsonReport.js.map +1 -1
- package/dist/program/{CheckLinks.d.ts → links/CheckLinks.d.ts} +9 -4
- package/dist/program/links/CheckLinks.d.ts.map +1 -0
- package/dist/program/links/CheckLinks.js +243 -0
- package/dist/program/links/CheckLinks.js.map +1 -0
- package/dist/program/links/CheckRefs.d.ts +47 -0
- package/dist/program/links/CheckRefs.d.ts.map +1 -0
- package/dist/program/links/CheckRefs.js +151 -0
- package/dist/program/links/CheckRefs.js.map +1 -0
- package/dist/program/summaries/CheckSummaries.bench.d.ts.map +1 -0
- package/dist/program/{CheckSummaries.bench.js → summaries/CheckSummaries.bench.js} +6 -4
- package/dist/program/summaries/CheckSummaries.bench.js.map +1 -0
- package/dist/program/{CheckSummaries.d.ts → summaries/CheckSummaries.d.ts} +7 -7
- package/dist/program/summaries/CheckSummaries.d.ts.map +1 -0
- package/dist/program/{CheckSummaries.js → summaries/CheckSummaries.js} +13 -12
- package/dist/program/summaries/CheckSummaries.js.map +1 -0
- package/package.json +3 -2
- package/dist/core/DocSummaries.d.ts.map +0 -1
- package/dist/core/DocSummaries.js.map +0 -1
- package/dist/core/MarkdownLinks.bench.d.ts.map +0 -1
- package/dist/core/MarkdownLinks.bench.js.map +0 -1
- package/dist/core/MarkdownLinks.d.ts +0 -51
- package/dist/core/MarkdownLinks.d.ts.map +0 -1
- package/dist/core/MarkdownLinks.js +0 -115
- package/dist/core/MarkdownLinks.js.map +0 -1
- package/dist/core/StampStore.d.ts +0 -47
- package/dist/core/StampStore.d.ts.map +0 -1
- package/dist/core/StampStore.js +0 -90
- package/dist/core/StampStore.js.map +0 -1
- package/dist/core/SummaryTree.bench.d.ts.map +0 -1
- package/dist/core/SummaryTree.bench.js.map +0 -1
- package/dist/core/SummaryTree.d.ts.map +0 -1
- package/dist/core/SummaryTree.js.map +0 -1
- package/dist/program/CheckLinks.d.ts.map +0 -1
- package/dist/program/CheckLinks.js +0 -122
- package/dist/program/CheckLinks.js.map +0 -1
- package/dist/program/CheckSummaries.bench.d.ts.map +0 -1
- package/dist/program/CheckSummaries.bench.js.map +0 -1
- package/dist/program/CheckSummaries.d.ts.map +0 -1
- package/dist/program/CheckSummaries.js.map +0 -1
- /package/dist/core/{MarkdownLinks.bench.d.ts → links/MarkdownLinks.bench.d.ts} +0 -0
- /package/dist/core/{MarkdownLinks.bench.js → links/MarkdownLinks.bench.js} +0 -0
- /package/dist/core/{SummaryTree.bench.d.ts → summaries/SummaryTree.bench.d.ts} +0 -0
- /package/dist/core/{SummaryTree.d.ts → summaries/SummaryTree.d.ts} +0 -0
- /package/dist/program/{CheckSummaries.bench.d.ts → summaries/CheckSummaries.bench.d.ts} +0 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// Effect programs for issue #39 Scenario I: record and check reference
|
|
2
|
+
// content hashes. `stampRefs` records the CURRENT hash of every resolvable
|
|
3
|
+
// reference target a doc makes; `checkRefs` compares the CURRENT hash
|
|
4
|
+
// against what was last recorded, surfacing drift as "may be stale" — a
|
|
5
|
+
// distinct signal from `CheckLinks.ts`'s "broken": the link still resolves,
|
|
6
|
+
// its target just isn't what it was when the reference was authored.
|
|
7
|
+
//
|
|
8
|
+
// Deliberately does NOT touch `CheckSummaries.ts`'s stamping machinery — the
|
|
9
|
+
// summary-tree Merkle/manifest hash computation answers a different
|
|
10
|
+
// question ("does this SUMMARY still reflect its SOURCE") with its own
|
|
11
|
+
// careful bottom-up invariants this file has no reason to entangle with.
|
|
12
|
+
// `stampRefs`/`checkRefs` are opt-in (wired behind `cairn check --refs`, not
|
|
13
|
+
// part of the default `checks.links`/`checks.summaries` gate) — v1 of a
|
|
14
|
+
// scenario the issue itself parks as "ships only after A-H are solid."
|
|
15
|
+
import * as nodePath from 'node:path';
|
|
16
|
+
import { Effect } from 'effect';
|
|
17
|
+
import { extractReferences } from '../../core/links/MarkdownLinks.js';
|
|
18
|
+
import { parseRefs, refsSidecarPathFor, serializeRefs } from '../../core/links/RefStore.js';
|
|
19
|
+
import { hashContent } from '../../core/hashing.js';
|
|
20
|
+
import { isWithinBase } from '../../core/paths.js';
|
|
21
|
+
import { metaRootFor } from '../../core/sidecar.js';
|
|
22
|
+
import { DocsFs } from '../../io/DocsFs.js';
|
|
23
|
+
import { pick } from '../locale.js';
|
|
24
|
+
const path = nodePath.posix;
|
|
25
|
+
/** 0 when nothing is stale, 1 otherwise — same convention as `linkExitCode`. */
|
|
26
|
+
export const refsExitCode = (result) => (result.stale.length > 0 ? 1 : 0);
|
|
27
|
+
/**
|
|
28
|
+
* Resolve one reference target to its real, CURRENT content — bounded by
|
|
29
|
+
* `base` exactly like `CheckLinks.ts`'s `resolvePendingCheck` (nothing
|
|
30
|
+
* outside the checkout root is ever stat'd/read). `null` if the target
|
|
31
|
+
* doesn't currently exist or isn't readable (e.g. a directory): a target
|
|
32
|
+
* that no longer resolves is `CheckLinks.ts`'s "broken" concern, not this
|
|
33
|
+
* file's "stale" concern, so it's silently skipped here rather than
|
|
34
|
+
* double-reported.
|
|
35
|
+
*/
|
|
36
|
+
const resolveReferenceContent = ({ base, dfs, targetAbs, }) => Effect.gen(function* () {
|
|
37
|
+
if (!isWithinBase(targetAbs, base)) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const exists = yield* dfs.exists(targetAbs);
|
|
41
|
+
if (!exists) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return yield* dfs.readFile(targetAbs).pipe(Effect.catchDefect(() => Effect.succeed(null)));
|
|
45
|
+
});
|
|
46
|
+
const listMdFiles = (roots) => Effect.gen(function* () {
|
|
47
|
+
const dfs = yield* DocsFs;
|
|
48
|
+
const allFiles = yield* dfs.listFiles(roots);
|
|
49
|
+
return allFiles.filter((f) => f.endsWith('.md'));
|
|
50
|
+
});
|
|
51
|
+
const toRecord = (ref, hash) => ref.anchor === null ? { hash, target: ref.target } : { anchor: ref.anchor, hash, target: ref.target };
|
|
52
|
+
/**
|
|
53
|
+
* Record the current content hash of every real reference each scanned doc
|
|
54
|
+
* makes. Overwrites any previously-recorded sidecar unconditionally (same
|
|
55
|
+
* "stamp always writes fresh state" convention as `stampSummaries`) — a doc
|
|
56
|
+
* with no resolvable references gets no sidecar at all (nothing to compare
|
|
57
|
+
* against later, and no reason to create an empty one).
|
|
58
|
+
*/
|
|
59
|
+
export const stampRefs = ({ base, roots }) => Effect.gen(function* () {
|
|
60
|
+
const dfs = yield* DocsFs;
|
|
61
|
+
const layout = { base, metaRoot: metaRootFor(base) };
|
|
62
|
+
const mdFiles = yield* listMdFiles(roots);
|
|
63
|
+
let stamped = 0;
|
|
64
|
+
for (const file of mdFiles) {
|
|
65
|
+
const content = yield* dfs.readFile(file);
|
|
66
|
+
const fromDir = path.dirname(file);
|
|
67
|
+
const records = [];
|
|
68
|
+
for (const ref of extractReferences(content)) {
|
|
69
|
+
const targetAbs = path.resolve(fromDir, ref.target);
|
|
70
|
+
const targetContent = yield* resolveReferenceContent({ base, dfs, targetAbs });
|
|
71
|
+
if (targetContent !== null) {
|
|
72
|
+
records.push(toRecord(ref, hashContent(targetContent)));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (records.length > 0) {
|
|
76
|
+
yield* dfs.writeFile(refsSidecarPathFor(file, layout), serializeRefs({ refs: records }));
|
|
77
|
+
stamped += 1;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return { stamped };
|
|
81
|
+
});
|
|
82
|
+
/**
|
|
83
|
+
* Compare each scanned doc's recorded reference hashes (if any) against
|
|
84
|
+
* current target content, reporting drift. A doc with no refs sidecar
|
|
85
|
+
* (never stamped, or every reference already broken/unrecordable) is
|
|
86
|
+
* silently skipped — nothing recorded, nothing to compare.
|
|
87
|
+
*/
|
|
88
|
+
export const checkRefs = ({ base, roots }) => Effect.gen(function* () {
|
|
89
|
+
const dfs = yield* DocsFs;
|
|
90
|
+
const layout = { base, metaRoot: metaRootFor(base) };
|
|
91
|
+
const mdFiles = yield* listMdFiles(roots);
|
|
92
|
+
const stale = [];
|
|
93
|
+
let checked = 0;
|
|
94
|
+
for (const file of mdFiles) {
|
|
95
|
+
const sidecarPath = refsSidecarPathFor(file, layout);
|
|
96
|
+
const sidecarExists = yield* dfs.exists(sidecarPath);
|
|
97
|
+
if (!sidecarExists) {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
const recorded = parseRefs(yield* dfs.readFile(sidecarPath));
|
|
101
|
+
if (recorded === null) {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
checked += 1;
|
|
105
|
+
const fromDir = path.dirname(file);
|
|
106
|
+
const drifted = [];
|
|
107
|
+
for (const record of recorded.refs) {
|
|
108
|
+
const targetAbs = path.resolve(fromDir, record.target);
|
|
109
|
+
const targetContent = yield* resolveReferenceContent({ base, dfs, targetAbs });
|
|
110
|
+
if (targetContent === null) {
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const currentHash = hashContent(targetContent);
|
|
114
|
+
if (currentHash !== record.hash) {
|
|
115
|
+
drifted.push(record.anchor === undefined
|
|
116
|
+
? { currentHash, recordedHash: record.hash, target: record.target }
|
|
117
|
+
: { anchor: record.anchor, currentHash, recordedHash: record.hash, target: record.target });
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (drifted.length > 0) {
|
|
121
|
+
stale.push({ file, refs: drifted });
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return { checked, stale };
|
|
125
|
+
});
|
|
126
|
+
/** Human-readable report lines (pure, so it can be unit-tested). */
|
|
127
|
+
export const formatRefsReport = (result, options = {}) => {
|
|
128
|
+
const locale = options.locale ?? 'en';
|
|
129
|
+
const lines = [];
|
|
130
|
+
if (result.stale.length === 0) {
|
|
131
|
+
lines.push(pick(locale, {
|
|
132
|
+
en: `✅ References OK (${result.checked} tracked doc(s)).`,
|
|
133
|
+
fr: `✅ Références OK (${result.checked} document(s) suivi(s)).`,
|
|
134
|
+
}));
|
|
135
|
+
return lines;
|
|
136
|
+
}
|
|
137
|
+
const total = result.stale.reduce((n, f) => n + f.refs.length, 0);
|
|
138
|
+
lines.push(pick(locale, {
|
|
139
|
+
en: `⚠️ ${total} possibly stale reference(s):`,
|
|
140
|
+
fr: `⚠️ ${total} référence(s) possiblement obsolète(s) :`,
|
|
141
|
+
}));
|
|
142
|
+
for (const { file, refs } of result.stale) {
|
|
143
|
+
lines.push(` ${file}`);
|
|
144
|
+
for (const ref of refs) {
|
|
145
|
+
const anchorSuffix = ref.anchor !== undefined ? `#${ref.anchor}` : '';
|
|
146
|
+
lines.push(` ~ ${ref.target}${anchorSuffix} (${ref.recordedHash.slice(0, 8)} → ${ref.currentHash.slice(0, 8)})`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return lines;
|
|
150
|
+
};
|
|
151
|
+
//# sourceMappingURL=CheckRefs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckRefs.js","sourceRoot":"","sources":["../../../src/program/links/CheckRefs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckSummaries.bench.d.ts","sourceRoot":"","sources":["../../../src/program/summaries/CheckSummaries.bench.ts"],"names":[],"mappings":""}
|
|
@@ -6,10 +6,12 @@
|
|
|
6
6
|
// "does the sidecar move keep things fast."
|
|
7
7
|
import { Effect } from 'effect';
|
|
8
8
|
import { bench, describe } from 'vitest';
|
|
9
|
-
import { hashContent
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
9
|
+
import { hashContent } from '../../core/hashing.js';
|
|
10
|
+
import { isSummaryFile, summaryPathFor } from '../../core/summaries/DocSummaries.js';
|
|
11
|
+
import { DIR_SUMMARY, isDirSummary } from '../../core/summaries/SummaryTree.js';
|
|
12
|
+
import { serializeStamp, STAMP_VERSION } from '../../core/summaries/StampStore.js';
|
|
13
|
+
import { isSidecarPath, metaRootFor, sidecarPathFor } from '../../core/sidecar.js';
|
|
14
|
+
import { makeTestDocsFs } from '../../io/DocsFs.js';
|
|
13
15
|
import { checkSummaries } from './CheckSummaries.js';
|
|
14
16
|
const bigContent = (seed) => Array.from({ length: 40 }, (_, i) => `${seed} body line ${i} with some representative prose content`).join('\n');
|
|
15
17
|
const smallContent = (seed) => `${seed} short note`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckSummaries.bench.js","sourceRoot":"","sources":["../../../src/program/summaries/CheckSummaries.bench.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Effect } from 'effect';
|
|
2
|
-
import type { Naming } from '
|
|
3
|
-
import type { PlanNode, SummaryPlan } from '
|
|
4
|
-
import { DocsFs } from '
|
|
5
|
-
import type { Locale } from '
|
|
6
|
-
export { DEFAULT_STAMP_COMMAND } from '
|
|
2
|
+
import type { Naming } from '../../core/summaries/DocSummaries.ts';
|
|
3
|
+
import type { PlanNode, SummaryPlan } from '../../core/summaries/SummaryTree.ts';
|
|
4
|
+
import { DocsFs } from '../../io/DocsFs.ts';
|
|
5
|
+
import type { Locale } from '../locale.ts';
|
|
6
|
+
export { DEFAULT_STAMP_COMMAND } from '../../core/Config.ts';
|
|
7
7
|
export interface CheckSummariesArgs {
|
|
8
8
|
/** Project root every root/node path and every `.cairn/**` sidecar is
|
|
9
9
|
* resolved under (see StampStore.ts's `MetaLayout`). Real usage: `process.cwd()`. */
|
|
@@ -53,6 +53,6 @@ export declare const migrateStamps: (args: CheckSummariesArgs) => Effect.Effect<
|
|
|
53
53
|
* `.cairn/**` sidecar (deleted-source stamp — see `SummaryPlan.orphanStamps`),
|
|
54
54
|
* reporting the total count removed. */
|
|
55
55
|
export declare const pruneOrphans: (args: CheckSummariesArgs) => Effect.Effect<number, never, DocsFs>;
|
|
56
|
-
export { isSummaryFile } from '
|
|
57
|
-
export { isDirSummary } from '
|
|
56
|
+
export { isSummaryFile } from '../../core/summaries/DocSummaries.ts';
|
|
57
|
+
export { isDirSummary } from '../../core/summaries/SummaryTree.ts';
|
|
58
58
|
//# sourceMappingURL=CheckSummaries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckSummaries.d.ts","sourceRoot":"","sources":["../../../src/program/summaries/CheckSummaries.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAA;AAGlE,OAAO,KAAK,EAAY,QAAQ,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAA;AAI1F,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAG1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,MAAM,WAAW,kBAAkB;IACjC;yFACqF;IACrF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B;;;;oEAIgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED;;;iDAGiD;AACjD,MAAM,MAAM,aAAa,GAAG,WAAW,CAAA;AA8DvC;iCACiC;AACjC,eAAO,MAAM,eAAe,SAAU,WAAW,KAAG,MACqC,CAAA;AAEzF,kFAAkF;AAClF,eAAO,MAAM,mBAAmB,SAAU,WAAW,YAAW,oBAAoB,KAAQ,MAAM,EAwFjG,CAAA;AAoDD,eAAO,MAAM,cAAc,SAAU,kBAAkB,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAK9F,CAAA;AAEJ,uGAAuG;AACvG,eAAO,MAAM,gBAAgB,SACrB,kBAAkB,YACf,oBAAoB,KAC5B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAMpC,CAAA;AAwEJ,eAAO,MAAM,cAAc,SAAU,kBAAkB,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAI9F,CAAA;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,aAAa,SAAU,kBAAkB,KAAG,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAI/F,CAAA;AAEJ;;wCAEwC;AACxC,eAAO,MAAM,YAAY,SAAU,kBAAkB,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAcvF,CAAA;AAGJ,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAA;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA"}
|
|
@@ -5,17 +5,18 @@
|
|
|
5
5
|
// content — see StampStore.ts).
|
|
6
6
|
// - `migrateStamps` -> one-off: strips the legacy in-content stamp from
|
|
7
7
|
// every summary, then runs the sidecar stamp pass over the stripped tree.
|
|
8
|
-
// Pure planning lives in
|
|
9
|
-
//
|
|
10
|
-
//
|
|
8
|
+
// Pure planning lives in ../../core/summaries/SummaryTree.ts; freshness
|
|
9
|
+
// primitives in ../../core/summaries/DocSummaries.ts; sidecar path mapping +
|
|
10
|
+
// (de)serialisation in ../../core/summaries/StampStore.ts.
|
|
11
11
|
import { Effect } from 'effect';
|
|
12
|
-
import { DEFAULT_STAMP_COMMAND } from '
|
|
13
|
-
import { countLines, isSummaryFile, stripSourceHash } from '
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
|
|
12
|
+
import { DEFAULT_STAMP_COMMAND } from '../../core/Config.js';
|
|
13
|
+
import { countLines, isSummaryFile, stripSourceHash } from '../../core/summaries/DocSummaries.js';
|
|
14
|
+
import { parseStamp, serializeStamp, STAMP_VERSION } from '../../core/summaries/StampStore.js';
|
|
15
|
+
import { isDirSummary, nodeExpectedHash, planSummaries } from '../../core/summaries/SummaryTree.js';
|
|
16
|
+
import { metaRootFor, nodePathForSidecar, sidecarPathFor } from '../../core/sidecar.js';
|
|
17
|
+
import { DocsFs } from '../../io/DocsFs.js';
|
|
18
|
+
import { enOnly, pick } from '../locale.js';
|
|
19
|
+
export { DEFAULT_STAMP_COMMAND } from '../../core/Config.js';
|
|
19
20
|
const EMPTY_STAMPS = new Map();
|
|
20
21
|
const layoutFor = (base) => ({ base, metaRoot: metaRootFor(base) });
|
|
21
22
|
/** Assemble the pure planner's arguments from the program args + file map.
|
|
@@ -296,6 +297,6 @@ export const pruneOrphans = (args) => Effect.gen(function* () {
|
|
|
296
297
|
return plan.orphans.length + plan.orphanStamps.length;
|
|
297
298
|
});
|
|
298
299
|
// Re-exported so callers can recognise summary files without importing two modules.
|
|
299
|
-
export { isSummaryFile } from '
|
|
300
|
-
export { isDirSummary } from '
|
|
300
|
+
export { isSummaryFile } from '../../core/summaries/DocSummaries.js';
|
|
301
|
+
export { isDirSummary } from '../../core/summaries/SummaryTree.js';
|
|
301
302
|
//# sourceMappingURL=CheckSummaries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckSummaries.js","sourceRoot":"","sources":["../../../src/program/summaries/CheckSummaries.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sledorze/cairn",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Hierarchical documentation summary consolidation with content-hash freshness (clone/CI-proof) and dead-link checking. Agent-agnostic CLI; scaffolds guidance for Claude Code and GitHub Copilot.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"documentation",
|
|
@@ -39,7 +39,8 @@
|
|
|
39
39
|
],
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@effect/platform-node": "4.0.0-beta.100",
|
|
42
|
-
"effect": "4.0.0-beta.100"
|
|
42
|
+
"effect": "4.0.0-beta.100",
|
|
43
|
+
"github-slugger": "^2.0.0"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
45
46
|
"@changesets/cli": "^2.27.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocSummaries.d.ts","sourceRoot":"","sources":["../../src/core/DocSummaries.ts"],"names":[],"mappings":"AAsBA,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAAA;AAEtD,qDAAqD;AACrD,MAAM,WAAW,MAAM;IACrB,yDAAyD;IACzD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,sFAAsF;IACtF,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;CACnC;AAED,4DAA4D;AAC5D,eAAO,MAAM,cAAc,EAAE,MAG5B,CAAA;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;CAChC;AAED,sEAAsE;AACtE,eAAO,MAAM,uBAAuB,KAAK,CAAA;AAIzC,uDAAuD;AACvD,eAAO,MAAM,UAAU,YAAa,MAAM,KAAG,MAM5C,CAAA;AAED,uDAAuD;AACvD,eAAO,MAAM,aAAa,SAAU,MAAM,WAAU,MAAM,KAAoB,OACrC,CAAA;AAEzC,wEAAwE;AACxE,eAAO,MAAM,cAAc,SAAU,MAAM,WAAU,MAAM,KAAoB,MAC9B,CAAA;AAEjD,iFAAiF;AACjF,eAAO,MAAM,YAAY,iDAKtB,gBAAgB,KAAG,OAQrB,CAAA;AAMD,qEAAqE;AACrE,eAAO,MAAM,WAAW,YAAa,MAAM,KAAG,MAA2C,CAAA;AAEzF,uFAAuF;AACvF,eAAO,MAAM,aAAa,SAAU,MAAM,KAAG,MAA2C,CAAA;AAExF,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,mBAAoB,MAAM,KAAG,MAAM,GAAG,IAAiD,CAAA;AAErH;;;;0DAI0D;AAC1D,eAAO,MAAM,cAAc,mBAAoB,MAAM,QAAQ,MAAM,KAAG,MAMrE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,mBAAoB,MAAM,KAAG,MAKxD,CAAA;AAED,4EAA4E;AAC5E,eAAO,MAAM,eAAe,gDAAiD,YAAY,KAAG,aAQ3F,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocSummaries.js","sourceRoot":"","sources":["../../src/core/DocSummaries.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownLinks.bench.d.ts","sourceRoot":"","sources":["../../src/core/MarkdownLinks.bench.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownLinks.bench.js","sourceRoot":"","sources":["../../src/core/MarkdownLinks.bench.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
export interface MarkdownLink {
|
|
2
|
-
readonly target: string;
|
|
3
|
-
readonly text: string;
|
|
4
|
-
}
|
|
5
|
-
export interface MarkdownLinkDef {
|
|
6
|
-
readonly label: string;
|
|
7
|
-
readonly target: string;
|
|
8
|
-
}
|
|
9
|
-
export interface BrokenLink {
|
|
10
|
-
readonly suggestion?: string;
|
|
11
|
-
readonly target: string;
|
|
12
|
-
readonly text: string;
|
|
13
|
-
}
|
|
14
|
-
export interface SuggestFixArgs {
|
|
15
|
-
readonly fromDir: string;
|
|
16
|
-
readonly index: ReadonlyMap<string, readonly string[]>;
|
|
17
|
-
readonly target: string;
|
|
18
|
-
}
|
|
19
|
-
export interface CheckContentArgs {
|
|
20
|
-
readonly content: string;
|
|
21
|
-
readonly existsAbs: (absPath: string) => boolean;
|
|
22
|
-
readonly fileAbs: string;
|
|
23
|
-
readonly index?: ReadonlyMap<string, readonly string[]>;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Blank out fenced (``` / ~~~) and inline (`code`) spans so links that only
|
|
27
|
-
* appear inside code examples are NOT treated as real links. Newlines are kept
|
|
28
|
-
* so line-based reasoning is unaffected; other characters become spaces.
|
|
29
|
-
*/
|
|
30
|
-
export declare const stripCode: (content: string) => string;
|
|
31
|
-
/** Extract inline Markdown links/images as `{ target, text }`. */
|
|
32
|
-
export declare const extractLinks: (content: string) => MarkdownLink[];
|
|
33
|
-
/** Extract reference-style link definitions (`[label]: ./path "title"`). */
|
|
34
|
-
export declare const extractLinkDefinitions: (content: string) => MarkdownLinkDef[];
|
|
35
|
-
/** True only for relative paths we can resolve on disk. */
|
|
36
|
-
export declare const isCheckableTarget: (target: string) => boolean;
|
|
37
|
-
/** Drop `#anchor` and `?query` from a target. */
|
|
38
|
-
export declare const stripAnchor: (target: string) => string;
|
|
39
|
-
/** Map basename -> list of absolute paths, for ambiguity-aware fixing. */
|
|
40
|
-
export declare const buildBasenameIndex: (absPaths: readonly string[]) => Map<string, string[]>;
|
|
41
|
-
/**
|
|
42
|
-
* Suggest a repaired relative path for a broken target. Returns a path only
|
|
43
|
-
* when exactly one indexed file matches the basename (no ambiguity); else null.
|
|
44
|
-
*/
|
|
45
|
-
export declare const suggestFix: ({ fromDir, index, target }: SuggestFixArgs) => string | null;
|
|
46
|
-
/**
|
|
47
|
-
* Check one file's content for broken relative links. Returns the broken ones,
|
|
48
|
-
* each with an optional `suggestion` when an `index` is supplied.
|
|
49
|
-
*/
|
|
50
|
-
export declare const checkContent: ({ content, existsAbs, fileAbs, index }: CheckContentArgs) => BrokenLink[];
|
|
51
|
-
//# sourceMappingURL=MarkdownLinks.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownLinks.d.ts","sourceRoot":"","sources":["../../src/core/MarkdownLinks.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAA;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAA;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAA;CACxD;AAMD;;;;GAIG;AACH,eAAO,MAAM,SAAS,YAAa,MAAM,KAAG,MAGwB,CAAA;AAIpE,kEAAkE;AAClE,eAAO,MAAM,YAAY,YAAa,MAAM,KAAG,YAAY,EAM1D,CAAA;AAED,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB,YAAa,MAAM,KAAG,eAAe,EAMvE,CAAA;AAED,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,WAAY,MAAM,KAAG,OAclD,CAAA;AAED,iDAAiD;AACjD,eAAO,MAAM,WAAW,WAAY,MAAM,KAAG,MAAuC,CAAA;AAEpF,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,aAAc,SAAS,MAAM,EAAE,KAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAYpF,CAAA;AAOD;;;GAGG;AACH,eAAO,MAAM,UAAU,+BAAgC,cAAc,KAAG,MAAM,GAAG,IAOhF,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,2CAA4C,gBAAgB,KAAG,UAAU,EA2BjG,CAAA"}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
// Pure, IO-free helpers to find and auto-repair relative Markdown links.
|
|
2
|
-
// All functions here are deterministic and unit-tested in MarkdownLinks.unit.test.ts.
|
|
3
|
-
// The Effect program that touches the filesystem lives in ../program/CheckLinks.ts.
|
|
4
|
-
import * as nodePath from 'node:path';
|
|
5
|
-
// Reason in POSIX so link resolution is identical on every OS (inputs are
|
|
6
|
-
// normalised to `/` at the IO boundary).
|
|
7
|
-
const path = nodePath.posix;
|
|
8
|
-
const LINK_RE = /!?\[([^\]]*)\]\(([^)\s]+)(?:\s+"[^"]*")?\)/g;
|
|
9
|
-
const FENCED_CODE_RE = /(^|\n)[ \t]*(```|~~~)[\s\S]*?\n[ \t]*\2[ \t]*(?=\n|$)/g;
|
|
10
|
-
const INLINE_CODE_RE = /`[^`\n]*`/g;
|
|
11
|
-
/**
|
|
12
|
-
* Blank out fenced (``` / ~~~) and inline (`code`) spans so links that only
|
|
13
|
-
* appear inside code examples are NOT treated as real links. Newlines are kept
|
|
14
|
-
* so line-based reasoning is unaffected; other characters become spaces.
|
|
15
|
-
*/
|
|
16
|
-
export const stripCode = (content) => content
|
|
17
|
-
.replaceAll(FENCED_CODE_RE, (block) => block.replaceAll(/[^\n]/g, ' '))
|
|
18
|
-
.replaceAll(INLINE_CODE_RE, (block) => ' '.repeat(block.length));
|
|
19
|
-
const LINK_DEF_RE = /^[ \t]*\[([^\]]+)\]:[ \t]*<?([^>\s]+)>?/gm;
|
|
20
|
-
/** Extract inline Markdown links/images as `{ target, text }`. */
|
|
21
|
-
export const extractLinks = (content) => {
|
|
22
|
-
const links = [];
|
|
23
|
-
for (const match of content.matchAll(LINK_RE)) {
|
|
24
|
-
links.push({ target: match[2] ?? '', text: match[1] ?? '' });
|
|
25
|
-
}
|
|
26
|
-
return links;
|
|
27
|
-
};
|
|
28
|
-
/** Extract reference-style link definitions (`[label]: ./path "title"`). */
|
|
29
|
-
export const extractLinkDefinitions = (content) => {
|
|
30
|
-
const defs = [];
|
|
31
|
-
for (const match of content.matchAll(LINK_DEF_RE)) {
|
|
32
|
-
defs.push({ label: match[1] ?? '', target: match[2] ?? '' });
|
|
33
|
-
}
|
|
34
|
-
return defs;
|
|
35
|
-
};
|
|
36
|
-
/** True only for relative paths we can resolve on disk. */
|
|
37
|
-
export const isCheckableTarget = (target) => {
|
|
38
|
-
if (!target) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
if (target.startsWith('#')) {
|
|
42
|
-
return false;
|
|
43
|
-
} // same-page anchor
|
|
44
|
-
if (target.startsWith('//')) {
|
|
45
|
-
return false;
|
|
46
|
-
} // protocol-relative URL
|
|
47
|
-
if (/^[a-z][a-z0-9+.-]*:/i.test(target)) {
|
|
48
|
-
return false;
|
|
49
|
-
} // http:, mailto:, etc.
|
|
50
|
-
return true;
|
|
51
|
-
};
|
|
52
|
-
/** Drop `#anchor` and `?query` from a target. */
|
|
53
|
-
export const stripAnchor = (target) => target.replace(/[#?].*$/, '');
|
|
54
|
-
/** Map basename -> list of absolute paths, for ambiguity-aware fixing. */
|
|
55
|
-
export const buildBasenameIndex = (absPaths) => {
|
|
56
|
-
const index = new Map();
|
|
57
|
-
for (const abs of absPaths) {
|
|
58
|
-
const base = path.basename(abs);
|
|
59
|
-
const bucket = index.get(base);
|
|
60
|
-
if (bucket) {
|
|
61
|
-
bucket.push(abs);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
index.set(base, [abs]);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return index;
|
|
68
|
-
};
|
|
69
|
-
const toRelative = (fromDir, toAbs) => {
|
|
70
|
-
const rel = path.relative(fromDir, toAbs).split(path.sep).join('/');
|
|
71
|
-
return rel.startsWith('.') ? rel : `./${rel}`;
|
|
72
|
-
};
|
|
73
|
-
/**
|
|
74
|
-
* Suggest a repaired relative path for a broken target. Returns a path only
|
|
75
|
-
* when exactly one indexed file matches the basename (no ambiguity); else null.
|
|
76
|
-
*/
|
|
77
|
-
export const suggestFix = ({ fromDir, index, target }) => {
|
|
78
|
-
const base = path.basename(stripAnchor(target));
|
|
79
|
-
const candidates = index.get(base);
|
|
80
|
-
if (!candidates || candidates.length !== 1) {
|
|
81
|
-
return null;
|
|
82
|
-
}
|
|
83
|
-
return toRelative(fromDir, candidates[0] ?? '');
|
|
84
|
-
};
|
|
85
|
-
/**
|
|
86
|
-
* Check one file's content for broken relative links. Returns the broken ones,
|
|
87
|
-
* each with an optional `suggestion` when an `index` is supplied.
|
|
88
|
-
*/
|
|
89
|
-
export const checkContent = ({ content, existsAbs, fileAbs, index }) => {
|
|
90
|
-
const fromDir = path.dirname(fileAbs);
|
|
91
|
-
const broken = [];
|
|
92
|
-
const masked = stripCode(content);
|
|
93
|
-
const candidates = [
|
|
94
|
-
...extractLinks(masked),
|
|
95
|
-
// Reference-style definitions are checked by their target too.
|
|
96
|
-
...extractLinkDefinitions(masked).map((def) => ({ target: def.target, text: `[${def.label}]` })),
|
|
97
|
-
];
|
|
98
|
-
for (const link of candidates) {
|
|
99
|
-
if (!isCheckableTarget(link.target)) {
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
const rel = stripAnchor(link.target);
|
|
103
|
-
if (!rel) {
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
const abs = path.resolve(fromDir, rel);
|
|
107
|
-
if (existsAbs(abs)) {
|
|
108
|
-
continue;
|
|
109
|
-
}
|
|
110
|
-
const suggestion = index ? suggestFix({ fromDir, index, target: link.target }) : null;
|
|
111
|
-
broken.push(suggestion ? { suggestion, target: link.target, text: link.text } : { target: link.target, text: link.text });
|
|
112
|
-
}
|
|
113
|
-
return broken;
|
|
114
|
-
};
|
|
115
|
-
//# sourceMappingURL=MarkdownLinks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownLinks.js","sourceRoot":"","sources":["../../src/core/MarkdownLinks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/** The hidden directory name every metadata tree lives under, relative to `base`. */
|
|
2
|
-
export declare const META_DIR = ".cairn";
|
|
3
|
-
export interface StampRecord {
|
|
4
|
-
readonly sha256: string;
|
|
5
|
-
readonly version: number;
|
|
6
|
-
}
|
|
7
|
-
/** Bumped only if the sidecar's own shape changes incompatibly (never for adding
|
|
8
|
-
* an optional field — `decodeStamp` already tolerates unknown keys). */
|
|
9
|
-
export declare const STAMP_VERSION = 1;
|
|
10
|
-
/** The sidecar's on-disk JSON form. Trailing newline for a clean git diff. */
|
|
11
|
-
export declare const serializeStamp: (record: StampRecord) => string;
|
|
12
|
-
/**
|
|
13
|
-
* Read a sidecar's `StampRecord` back, or `null` if it's missing/corrupt/
|
|
14
|
-
* malformed/hand-edited/merge-conflicted — this must NEVER throw. A stamp that
|
|
15
|
-
* can't be trusted is exactly equivalent to no stamp: the node it covers reads
|
|
16
|
-
* as stale, not as a crash (see AGENTS.md's note on treating an unparsable
|
|
17
|
-
* stamp the same as a missing one).
|
|
18
|
-
*/
|
|
19
|
-
export declare const parseStamp: (content: string) => StampRecord | null;
|
|
20
|
-
export interface MetaLayout {
|
|
21
|
-
/** The project root every node path and every sidecar is resolved under. */
|
|
22
|
-
readonly base: string;
|
|
23
|
-
/** `join(base, META_DIR)` — passed explicitly (not recomputed) so callers who
|
|
24
|
-
* already have it (e.g. after listing `.cairn/**`) don't rederive it. */
|
|
25
|
-
readonly metaRoot: string;
|
|
26
|
-
}
|
|
27
|
-
export declare const metaRootFor: (base: string) => string;
|
|
28
|
-
/** True for any path inside the hidden metadata tree — used to keep `.cairn/**`
|
|
29
|
-
* out of the set of markdown source files a plan considers. */
|
|
30
|
-
export declare const isSidecarPath: (candidate: string, metaRoot: string) => boolean;
|
|
31
|
-
/**
|
|
32
|
-
* `<base>/docs/a.summary.md` -> `<metaRoot>/docs/a.summary.md.json`. Throws if
|
|
33
|
-
* `nodeAtPath` isn't under `base` — every real node path is (roots are always
|
|
34
|
-
* resolved under the project root before a plan ever runs), so this signals a
|
|
35
|
-
* caller bug, not a runtime data condition to recover from.
|
|
36
|
-
*/
|
|
37
|
-
export declare const sidecarPathFor: (nodeAtPath: string, layout: MetaLayout) => string;
|
|
38
|
-
/**
|
|
39
|
-
* The inverse of `sidecarPathFor`: given a sidecar's own path (e.g. found by
|
|
40
|
-
* listing `.cairn/**`), recover the node path it mirrors. Returns `null` for a
|
|
41
|
-
* path that isn't a well-formed sidecar under `metaRoot` (not `.json`, or
|
|
42
|
-
* outside the tree) rather than throwing — unlike `sidecarPathFor`, this reads
|
|
43
|
-
* data that could plausibly be malformed (a stray non-JSON file dropped into
|
|
44
|
-
* `.cairn/` by hand), so `null` is the right "not a sidecar" signal, not a crash.
|
|
45
|
-
*/
|
|
46
|
-
export declare const nodePathForSidecar: (sidecarPath: string, layout: MetaLayout) => string | null;
|
|
47
|
-
//# sourceMappingURL=StampStore.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StampStore.d.ts","sourceRoot":"","sources":["../../src/core/StampStore.ts"],"names":[],"mappings":"AA4BA,qFAAqF;AACrF,eAAO,MAAM,QAAQ,WAAW,CAAA;AAEhC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED;wEACwE;AACxE,eAAO,MAAM,aAAa,IAAI,CAAA;AAS9B,8EAA8E;AAC9E,eAAO,MAAM,cAAc,WAAY,WAAW,KAAG,MAAgD,CAAA;AAErG;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,YAAa,MAAM,KAAG,WAAW,GAAG,IAS1D,CAAA;AAED,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;6EACyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,MAAmC,CAAA;AAE9E;+DAC+D;AAC/D,eAAO,MAAM,aAAa,cAAe,MAAM,YAAY,MAAM,KAAG,OACJ,CAAA;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,cAAc,eAAgB,MAAM,UAAU,UAAU,KAAG,MAMvE,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,gBAAiB,MAAM,UAAU,UAAU,KAAG,MAAM,GAAG,IASrF,CAAA"}
|