@intentset/cli 0.1.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.
Files changed (116) hide show
  1. package/dist/commands/architecture.d.ts +6 -0
  2. package/dist/commands/architecture.d.ts.map +1 -0
  3. package/dist/commands/architecture.js +65 -0
  4. package/dist/commands/architecture.js.map +1 -0
  5. package/dist/commands/context.d.ts +4 -0
  6. package/dist/commands/context.d.ts.map +1 -0
  7. package/dist/commands/context.js +124 -0
  8. package/dist/commands/context.js.map +1 -0
  9. package/dist/commands/evidence.d.ts +29 -0
  10. package/dist/commands/evidence.d.ts.map +1 -0
  11. package/dist/commands/evidence.js +157 -0
  12. package/dist/commands/evidence.js.map +1 -0
  13. package/dist/commands/graph.d.ts +18 -0
  14. package/dist/commands/graph.d.ts.map +1 -0
  15. package/dist/commands/graph.js +77 -0
  16. package/dist/commands/graph.js.map +1 -0
  17. package/dist/commands/impact.d.ts +20 -0
  18. package/dist/commands/impact.d.ts.map +1 -0
  19. package/dist/commands/impact.js +92 -0
  20. package/dist/commands/impact.js.map +1 -0
  21. package/dist/commands/init.d.ts +18 -0
  22. package/dist/commands/init.d.ts.map +1 -0
  23. package/dist/commands/init.js +122 -0
  24. package/dist/commands/init.js.map +1 -0
  25. package/dist/commands/mcp.d.ts +24 -0
  26. package/dist/commands/mcp.d.ts.map +1 -0
  27. package/dist/commands/mcp.js +122 -0
  28. package/dist/commands/mcp.js.map +1 -0
  29. package/dist/commands/publish.d.ts +19 -0
  30. package/dist/commands/publish.d.ts.map +1 -0
  31. package/dist/commands/publish.js +98 -0
  32. package/dist/commands/publish.js.map +1 -0
  33. package/dist/commands/review.d.ts +29 -0
  34. package/dist/commands/review.d.ts.map +1 -0
  35. package/dist/commands/review.js +147 -0
  36. package/dist/commands/review.js.map +1 -0
  37. package/dist/commands/serve.d.ts +14 -0
  38. package/dist/commands/serve.d.ts.map +1 -0
  39. package/dist/commands/serve.js +246 -0
  40. package/dist/commands/serve.js.map +1 -0
  41. package/dist/commands/shared.d.ts +19 -0
  42. package/dist/commands/shared.d.ts.map +1 -0
  43. package/dist/commands/shared.js +43 -0
  44. package/dist/commands/shared.js.map +1 -0
  45. package/dist/commands/validate.d.ts +11 -0
  46. package/dist/commands/validate.d.ts.map +1 -0
  47. package/dist/commands/validate.js +38 -0
  48. package/dist/commands/validate.js.map +1 -0
  49. package/dist/git.d.ts +25 -0
  50. package/dist/git.d.ts.map +1 -0
  51. package/dist/git.js +63 -0
  52. package/dist/git.js.map +1 -0
  53. package/dist/glob.d.ts +16 -0
  54. package/dist/glob.d.ts.map +1 -0
  55. package/dist/glob.js +60 -0
  56. package/dist/glob.js.map +1 -0
  57. package/dist/index.d.ts +9 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +8 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/intentset.d.ts +3 -0
  62. package/dist/intentset.d.ts.map +1 -0
  63. package/dist/intentset.js +15 -0
  64. package/dist/intentset.js.map +1 -0
  65. package/dist/main.d.ts +5 -0
  66. package/dist/main.d.ts.map +1 -0
  67. package/dist/main.js +406 -0
  68. package/dist/main.js.map +1 -0
  69. package/dist/output.d.ts +38 -0
  70. package/dist/output.d.ts.map +1 -0
  71. package/dist/output.js +53 -0
  72. package/dist/output.js.map +1 -0
  73. package/dist/outputs.d.ts +17 -0
  74. package/dist/outputs.d.ts.map +1 -0
  75. package/dist/outputs.js +70 -0
  76. package/dist/outputs.js.map +1 -0
  77. package/dist/reports.d.ts +16 -0
  78. package/dist/reports.d.ts.map +1 -0
  79. package/dist/reports.js +89 -0
  80. package/dist/reports.js.map +1 -0
  81. package/dist/repository.d.ts +56 -0
  82. package/dist/repository.d.ts.map +1 -0
  83. package/dist/repository.js +191 -0
  84. package/dist/repository.js.map +1 -0
  85. package/dist/session.d.ts +61 -0
  86. package/dist/session.d.ts.map +1 -0
  87. package/dist/session.js +202 -0
  88. package/dist/session.js.map +1 -0
  89. package/dist/tree.d.ts +15 -0
  90. package/dist/tree.d.ts.map +1 -0
  91. package/dist/tree.js +56 -0
  92. package/dist/tree.js.map +1 -0
  93. package/package.json +46 -0
  94. package/src/commands/architecture.ts +77 -0
  95. package/src/commands/context.ts +142 -0
  96. package/src/commands/evidence.ts +180 -0
  97. package/src/commands/graph.ts +89 -0
  98. package/src/commands/impact.ts +97 -0
  99. package/src/commands/init.ts +138 -0
  100. package/src/commands/mcp.ts +143 -0
  101. package/src/commands/publish.ts +119 -0
  102. package/src/commands/review.ts +155 -0
  103. package/src/commands/serve.ts +261 -0
  104. package/src/commands/shared.ts +46 -0
  105. package/src/commands/validate.ts +39 -0
  106. package/src/git.ts +81 -0
  107. package/src/glob.ts +58 -0
  108. package/src/index.ts +8 -0
  109. package/src/intentset.ts +15 -0
  110. package/src/main.ts +408 -0
  111. package/src/output.ts +78 -0
  112. package/src/outputs.ts +65 -0
  113. package/src/reports.ts +103 -0
  114. package/src/repository.ts +220 -0
  115. package/src/session.ts +276 -0
  116. package/src/tree.ts +64 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { type Diagnostic } from "@intentset/core";
2
+ export interface Io {
3
+ stdout(s: string): void;
4
+ stderr(s: string): void;
5
+ /** The directory the command was run from; relative paths in arguments resolve against it. */
6
+ cwd: string;
7
+ /** Aborted to stop a long-running command (serve, mcp); the bin aborts it on SIGINT and SIGTERM. */
8
+ signal?: AbortSignal;
9
+ }
10
+ /** The checker identity a report carries (Core §11: publish the checker version). */
11
+ export declare const TOOL: {
12
+ name: "intentset";
13
+ version: string;
14
+ };
15
+ /** ADR 0005: JSON with every object's keys sorted, two-space indent, one trailing newline. */
16
+ export declare function json(value: unknown): string;
17
+ /** Core §9 and ADR 0004: origin "syntax" is Markset's alone, so the origin decides. */
18
+ export declare function isMarkset(d: Diagnostic): boolean;
19
+ /**
20
+ * ADR 0004 as text: `<path>:<line>:<col> <severity> <CODE> [<artifact>] <message>`,
21
+ * then the remediation and the field on their own indented lines. A location
22
+ * that is not known is left out rather than written as 0. Markset's
23
+ * diagnostics are prefixed `markset:` so they read as Markset's (Core §9).
24
+ */
25
+ export declare function formatDiagnostic(d: Diagnostic): string;
26
+ /** "1 artifact", "2 artifacts"; "1 entry", "2 entries" with the plural given. */
27
+ export declare function count(n: number, noun: string, plural?: string): string;
28
+ /** The snapshot a report describes (Core §10, §11): the commit, or why there is none, and the graph hash. */
29
+ export interface Snapshot {
30
+ commit: string | null;
31
+ commitUnavailable?: string;
32
+ /** True when tracked files differ from the commit; the graph hash still describes exactly what was read. */
33
+ uncommitted?: boolean;
34
+ graphHash: string;
35
+ }
36
+ /** One line naming the snapshot, for the top of a text report. */
37
+ export declare function snapshotLine(snapshot: Snapshot): string;
38
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,iBAAiB,CAAC;AAEhE,MAAM,WAAW,EAAE;IACjB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,8FAA8F;IAC9F,GAAG,EAAE,MAAM,CAAC;IACZ,oGAAoG;IACpG,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,qFAAqF;AACrF,eAAO,MAAM,IAAI,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAkD,CAAC;AAS1G,8FAA8F;AAC9F,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE3C;AAED,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAEhD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAUtD;AAED,iFAAiF;AACjF,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,SAAa,GAAG,MAAM,CAE1E;AAED,6GAA6G;AAC7G,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4GAA4G;IAC5G,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAMvD"}
package/dist/output.js ADDED
@@ -0,0 +1,53 @@
1
+ /**
2
+ * What every command shares about output: the io it writes through, the
3
+ * tool's identity, JSON in canonical key order, and the one text form of a
4
+ * diagnostic. Nothing here touches the filesystem except reading this
5
+ * package's own manifest for its version.
6
+ */
7
+ import { readFileSync } from "node:fs";
8
+ import { sortKeysDeep } from "@intentset/core";
9
+ /** The checker identity a report carries (Core §11: publish the checker version). */
10
+ export const TOOL = { name: "intentset", version: readVersion() };
11
+ function readVersion() {
12
+ const manifest = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8"));
13
+ return manifest.version;
14
+ }
15
+ /** ADR 0005: JSON with every object's keys sorted, two-space indent, one trailing newline. */
16
+ export function json(value) {
17
+ return `${JSON.stringify(sortKeysDeep(value), null, 2)}\n`;
18
+ }
19
+ /** Core §9 and ADR 0004: origin "syntax" is Markset's alone, so the origin decides. */
20
+ export function isMarkset(d) {
21
+ return d.origin === "syntax";
22
+ }
23
+ /**
24
+ * ADR 0004 as text: `<path>:<line>:<col> <severity> <CODE> [<artifact>] <message>`,
25
+ * then the remediation and the field on their own indented lines. A location
26
+ * that is not known is left out rather than written as 0. Markset's
27
+ * diagnostics are prefixed `markset:` so they read as Markset's (Core §9).
28
+ */
29
+ export function formatDiagnostic(d) {
30
+ const where = d.path ?? "(repository)";
31
+ const line = d.location === undefined ? "" : `:${d.location.line}`;
32
+ const column = d.location?.column === undefined ? "" : `:${d.location.column}`;
33
+ const artifact = d.artifact === null ? "" : ` [${d.artifact}]`;
34
+ const prefix = isMarkset(d) ? "markset: " : "";
35
+ let text = `${prefix}${where}${line}${column} ${d.severity} ${d.code}${artifact} ${d.message}\n`;
36
+ if (d.remediation !== "")
37
+ text += ` fix: ${d.remediation}\n`;
38
+ if (d.field !== undefined)
39
+ text += ` field: ${d.field}\n`;
40
+ return text;
41
+ }
42
+ /** "1 artifact", "2 artifacts"; "1 entry", "2 entries" with the plural given. */
43
+ export function count(n, noun, plural = `${noun}s`) {
44
+ return `${n} ${n === 1 ? noun : plural}`;
45
+ }
46
+ /** One line naming the snapshot, for the top of a text report. */
47
+ export function snapshotLine(snapshot) {
48
+ const commit = snapshot.commit === null
49
+ ? `no commit (${snapshot.commitUnavailable ?? "none was read"})`
50
+ : `commit ${snapshot.commit}${snapshot.uncommitted === true ? " plus uncommitted changes" : ""}`;
51
+ return `Snapshot: ${commit}, graph ${snapshot.graphHash}`;
52
+ }
53
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type Repository } from "./repository.ts";
2
+ /** The target as a repository-relative POSIX path, "" for the root itself, or null when it lies outside the root. */
3
+ export declare function insideRoot(root: string, target: string): string | null;
4
+ /**
5
+ * Why `target` (absolute) may not be written, or null when it may. A document
6
+ * that would land in scope is refused even when it does not exist yet, since
7
+ * the next run would read it as canonical.
8
+ */
9
+ export declare function outputProblem(repo: Repository, target: string): string | null;
10
+ /**
11
+ * Why a directory may not receive generated output, or null when it may: it
12
+ * is the root, or a Markdown file written into it would fall inside the
13
+ * documents' scope, where generated files would sooner or later be read as
14
+ * canonical. An ignored directory, such as dist/, is the place for them.
15
+ */
16
+ export declare function outputDirProblem(repo: Repository, dir: string): string | null;
17
+ //# sourceMappingURL=outputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputs.d.ts","sourceRoot":"","sources":["../src/outputs.ts"],"names":[],"mappings":"AAaA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAK/D,qHAAqH;AACrH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKtE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgB7E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS7E"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Explicit outputs (`graph --out`, `architecture check --write-baseline`,
3
+ * `evidence import --out`, `publish --out`) may write only what they are
4
+ * named to write, and never a file the repository is made of: a document in
5
+ * scope, the configuration, the registries, the architecture configuration
6
+ * or an exception record, a source file, a manifest. Tools never rewrite
7
+ * those (invariant 1). A target outside the repository is the caller's
8
+ * business.
9
+ */
10
+ import { existsSync } from "node:fs";
11
+ import { isAbsolute, relative, sep } from "node:path";
12
+ import { ARCHITECTURE_CONFIG_PATH, EXCEPTIONS_PATTERNS } from "@intentset/architecture";
13
+ import { matchAny } from "./glob.js";
14
+ import { CONFIG_PATH } from "./repository.js";
15
+ const SOURCE = /\.(?:[cm]?[jt]sx?|md|ya?ml)$/;
16
+ const MANIFEST = /(?:^|\/)(?:package\.json|tsconfig[^/]*\.json)$/;
17
+ /** The target as a repository-relative POSIX path, "" for the root itself, or null when it lies outside the root. */
18
+ export function insideRoot(root, target) {
19
+ const path = relative(root, target);
20
+ if (path === "")
21
+ return "";
22
+ if (path === ".." || path.startsWith(`..${sep}`) || isAbsolute(path))
23
+ return null;
24
+ return path.split(sep).join("/");
25
+ }
26
+ /**
27
+ * Why `target` (absolute) may not be written, or null when it may. A document
28
+ * that would land in scope is refused even when it does not exist yet, since
29
+ * the next run would read it as canonical.
30
+ */
31
+ export function outputProblem(repo, target) {
32
+ const path = insideRoot(repo.root, target);
33
+ if (path === null)
34
+ return null;
35
+ if (path === "")
36
+ return "is the repository root";
37
+ const reads = new Set([
38
+ CONFIG_PATH,
39
+ ARCHITECTURE_CONFIG_PATH,
40
+ ...(repo.config.registries === null ? [] : [repo.config.registries]),
41
+ ...repo.inputs.map((input) => input.path),
42
+ ]);
43
+ if (reads.has(path) || matchAny(EXCEPTIONS_PATTERNS, path))
44
+ return "is a file the repository reads";
45
+ if (matchAny(repo.config.scope, path) && !matchAny(repo.config.ignore, path)) {
46
+ return "is inside the documents' scope, where it would be read as canonical";
47
+ }
48
+ if (existsSync(target) && (SOURCE.test(path) || MANIFEST.test(path)))
49
+ return "is a source file or manifest";
50
+ return null;
51
+ }
52
+ /**
53
+ * Why a directory may not receive generated output, or null when it may: it
54
+ * is the root, or a Markdown file written into it would fall inside the
55
+ * documents' scope, where generated files would sooner or later be read as
56
+ * canonical. An ignored directory, such as dist/, is the place for them.
57
+ */
58
+ export function outputDirProblem(repo, dir) {
59
+ const path = insideRoot(repo.root, dir);
60
+ if (path === null)
61
+ return null;
62
+ if (path === "")
63
+ return "is the repository root";
64
+ const probe = `${path}/generated.md`;
65
+ if (matchAny(repo.config.scope, probe) && !matchAny(repo.config.ignore, probe)) {
66
+ return "is inside the documents' scope; write generated output to an ignored directory such as dist/";
67
+ }
68
+ return null;
69
+ }
70
+ //# sourceMappingURL=outputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputs.js","sourceRoot":"","sources":["../src/outputs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The sections a level adds to a report, as text and as JSON. Every count
3
+ * says what it counts and over what; what could not be checked is listed as
4
+ * not checked, never folded into a pass (invariant 6); coverage is counts
5
+ * and never a percentage (Core §8).
6
+ */
7
+ import type { ArchitectureResult } from "@intentset/architecture";
8
+ import type { EvidenceRun, Session } from "./session.ts";
9
+ export declare function architectureLines(result: ArchitectureResult, skipped: readonly string[]): string[];
10
+ export declare function evidenceLines(run: EvidenceRun): string[];
11
+ export declare function publicationLines(checked: readonly string[]): string[];
12
+ /** Every section the session's level added, as text lines, blank-line separated. */
13
+ export declare function levelSections(session: Session): string[];
14
+ /** The same sections as JSON members. */
15
+ export declare function levelJson(session: Session): Record<string, unknown>;
16
+ //# sourceMappingURL=reports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../src/reports.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEzD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAgBlG;AAUD,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,EAAE,CA6BxD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAMrE;AAED,oFAAoF;AACpF,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAOxD;AAED,yCAAyC;AACzC,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAenE"}
@@ -0,0 +1,89 @@
1
+ import { count } from "./output.js";
2
+ export function architectureLines(result, skipped) {
3
+ const s = result.summary;
4
+ const lines = [
5
+ `Architecture (${s.level}, ${s.mode} mode): ${count(s.slices, "active slice")}; ` +
6
+ `${count(s.filesClaimed, "file")} claimed, ${s.filesUnclaimed} unclaimed, ${s.outOfScope} out of scope (counted, not reported); ` +
7
+ `${count(s.edges, "import edge")}, ${s.crossSliceEdges} across slices; ${count(s.cycles, "cycle")}; ` +
8
+ `${s.excepted} excepted, ${s.baselined} baselined, ${count(s.baselineStale, "stale baseline entry", "stale baseline entries")}`,
9
+ `Not checked, so not a pass (${s.unresolved.length}):${s.unresolved.length === 0 ? " none" : ""}`,
10
+ ...s.unresolved.map((item) => ` - ${item}`),
11
+ `Left to review, which this check cannot decide from source (${s.reviewRequired.length}):`,
12
+ ...s.reviewRequired.map((item) => ` - ${item}`),
13
+ ];
14
+ if (skipped.length > 0) {
15
+ lines.push(`Not read, over 1 MiB (${skipped.length}):`, ...skipped.map((path) => ` - ${path}`));
16
+ }
17
+ return lines;
18
+ }
19
+ function ofCounts(part, whole) {
20
+ return [
21
+ `${part.behaviors} of ${count(whole.behaviors, "behavior")}`,
22
+ `${part.rules} of ${count(whole.rules, "rule")}`,
23
+ `${part.scenarios} of ${count(whole.scenarios, "scenario")}`,
24
+ ].join(", ");
25
+ }
26
+ export function evidenceLines(run) {
27
+ const { coverage, classification } = run.check;
28
+ const snap = run.snapshot;
29
+ const scope = snap.scope === null || snap.scope === undefined
30
+ ? "every product and release"
31
+ : `${snap.scope.product} ${snap.scope.release}`;
32
+ const from = run.files.length === 0 ? "no evidence files" : run.files.join(", ");
33
+ const d = coverage.denominator;
34
+ const lines = [
35
+ `Evidence: ${count(run.records, "run record")} from ${from}; assessed at ${snap.commit === null ? "no commit" : `commit ${snap.commit}`}, graph ${snap.graphHash}, for ${scope}`,
36
+ `Coverage over ${count(d.behaviors, "behavior")}, ${count(d.rules, "rule")} and ${count(d.scenarios, "scenario")} that are not retired:`,
37
+ ` linked: ${ofCounts(coverage.linked, d)} (${coverage.measures.linked})`,
38
+ ` verified: ${ofCounts(coverage.verified, d)} (${coverage.measures.verified})`,
39
+ ` manual: linked ${ofCounts(coverage.manual.linked, d)}; verified ${ofCounts(coverage.manual.verified, d)}`,
40
+ ` automated: linked ${ofCounts(coverage.automated.linked, d)}; verified ${ofCounts(coverage.automated.verified, d)}`,
41
+ "Verifications at this snapshot:",
42
+ ];
43
+ const ids = Object.keys(classification.verifications);
44
+ if (ids.length === 0)
45
+ lines.push(" none");
46
+ for (const id of ids) {
47
+ const v = classification.verifications[id];
48
+ lines.push(` ${id} ${v.method} ${v.status}${v.note === undefined ? "" : ` (${v.note})`}`);
49
+ }
50
+ lines.push(`Not checked, so not a pass (${coverage.unresolved.length}):${coverage.unresolved.length === 0 ? " none" : ""}`);
51
+ for (const item of coverage.unresolved)
52
+ lines.push(` - ${item.subject}: ${item.reason}`);
53
+ return lines;
54
+ }
55
+ export function publicationLines(checked) {
56
+ return [
57
+ `Publication readiness: ${count(checked.length, "active knowledge artifact")} checked for a current review and availability${checked.length === 0 ? "" : ` (${checked.join(", ")})`}`,
58
+ ];
59
+ }
60
+ /** Every section the session's level added, as text lines, blank-line separated. */
61
+ export function levelSections(session) {
62
+ const sections = [];
63
+ if (session.architecture !== undefined)
64
+ sections.push(architectureLines(session.architecture, session.tree?.skipped ?? []));
65
+ if (session.evidence !== undefined)
66
+ sections.push(evidenceLines(session.evidence));
67
+ if (session.publication !== undefined)
68
+ sections.push(publicationLines(session.publication.checked));
69
+ return sections.flatMap((lines) => ["", ...lines]);
70
+ }
71
+ /** The same sections as JSON members. */
72
+ export function levelJson(session) {
73
+ const out = {};
74
+ if (session.architecture !== undefined) {
75
+ out.architecture = { summary: session.architecture.summary, skipped: session.tree?.skipped ?? [] };
76
+ }
77
+ if (session.evidence !== undefined) {
78
+ const { files, records, snapshot, check } = session.evidence;
79
+ const verifications = {};
80
+ for (const [id, v] of Object.entries(check.classification.verifications)) {
81
+ verifications[id] = { method: v.method, status: v.status, ...(v.note === undefined ? {} : { note: v.note }) };
82
+ }
83
+ out.evidence = { files, records, snapshot, coverage: check.coverage, verifications };
84
+ }
85
+ if (session.publication !== undefined)
86
+ out.publication = { checked: session.publication.checked };
87
+ return out;
88
+ }
89
+ //# sourceMappingURL=reports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reports.js","sourceRoot":"","sources":["../src/reports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { type Config, type Diagnostic, type DocumentInput, type Registries, plainCarrier } from "@intentset/core";
2
+ import { marksetCarrier } from "@intentset/markset-adapter";
3
+ /** Where the configuration lives, relative to the repository root. Its presence is what makes a directory a root. */
4
+ export declare const CONFIG_PATH = ".intentset/config.yaml";
5
+ export declare const CARRIERS: {
6
+ readonly markset: typeof marksetCarrier;
7
+ readonly plain: typeof plainCarrier;
8
+ };
9
+ export type CarrierName = keyof typeof CARRIERS;
10
+ export interface Repository {
11
+ /** Absolute path of the repository root. */
12
+ root: string;
13
+ config: Config;
14
+ /** One per document in scope, sorted by repository-relative path. */
15
+ inputs: DocumentInput[];
16
+ registries: Registries;
17
+ /** CFG001 from the configuration and CFG002 from the registries, sorted as core sorts. */
18
+ diagnostics: Diagnostic[];
19
+ /** False when the configuration itself has an error: then no scope is known and nothing was enumerated. */
20
+ configOk: boolean;
21
+ commit: string | null;
22
+ commitUnavailable?: string;
23
+ /** True when tracked files differ from that commit, so the commit alone does not describe what was read. */
24
+ uncommitted?: boolean;
25
+ }
26
+ /**
27
+ * The repository root: `explicit` when given (it must hold the configuration),
28
+ * otherwise the nearest directory at or above `cwd` that does. Null when none.
29
+ */
30
+ export declare function findRoot(cwd: string, explicit: string | undefined): string | null;
31
+ /** Core §11: read the configuration, the documents in its scope with the chosen carrier, the registries and the commit. */
32
+ export declare function loadRepository(root: string, carrier: CarrierName): Repository;
33
+ /**
34
+ * Core §11 scope: every file `listFiles` returns that matches a `scope`
35
+ * pattern, as sorted repository-relative POSIX paths.
36
+ */
37
+ export declare function enumerate(root: string, config: Pick<Config, "scope" | "ignore">): string[];
38
+ /**
39
+ * Every regular file under `root` that no `ignore` pattern matches, sorted.
40
+ * In a git repository the list is git's own (`ls-files --cached --others
41
+ * --exclude-standard`): tracked files and untracked ones .gitignore does not
42
+ * exclude, so build output and untracked worktrees stay out. Elsewhere it is
43
+ * a directory walk. Either way symbolic links are left out, so nothing read
44
+ * lies outside the repository, and a tracked file deleted from the working
45
+ * tree is not listed.
46
+ */
47
+ export declare function listFiles(root: string, ignore: readonly string[]): string[];
48
+ /** Every regular file under `root` that no `ignore` pattern matches, by walking; ignored directories are not entered. */
49
+ export declare function walk(root: string, ignore: readonly string[]): string[];
50
+ /** The commit at HEAD in `root`, or null and the reason none could be read. */
51
+ export declare function readCommit(root: string): {
52
+ commit: string | null;
53
+ commitUnavailable?: string;
54
+ uncommitted?: boolean;
55
+ };
56
+ //# sourceMappingURL=repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,MAAM,EAEX,KAAK,UAAU,EACf,KAAK,aAAa,EAElB,KAAK,UAAU,EAEf,YAAY,EAGb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,qHAAqH;AACrH,eAAO,MAAM,WAAW,2BAA2B,CAAC;AAEpD,eAAO,MAAM,QAAQ;aACnB,OAAO;aACP,KAAK;CACG,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,QAAQ,CAAC;AAEhD,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,0FAA0F;IAC1F,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,2GAA2G;IAC3G,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4GAA4G;IAC5G,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAYjF;AAED,2HAA2H;AAC3H,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,UAAU,CAsB7E;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,CAAC,GAAG,MAAM,EAAE,CAE1F;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAM3E;AA8CD,yHAAyH;AACzH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CActE;AAED,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,CAoBrH"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Loading a repository: the one place the CLI reads the tree. Everything here
3
+ * is a read. The commit comes from `git rev-parse HEAD`, which reads the
4
+ * object store and writes nothing; any failure becomes `commit: null` with
5
+ * the reason, because the export and every report must say which snapshot
6
+ * they describe and a missing commit is a fact to state, not to invent.
7
+ */
8
+ import { execFileSync } from "node:child_process";
9
+ import { existsSync, lstatSync, readdirSync, readFileSync } from "node:fs";
10
+ import { dirname, join, resolve } from "node:path";
11
+ import { compareStrings, EMPTY_REGISTRIES, hasErrors, plainCarrier, readConfig, readRegistries, } from "@intentset/core";
12
+ import { marksetCarrier } from "@intentset/markset-adapter";
13
+ import { matchAny } from "./glob.js";
14
+ /** Where the configuration lives, relative to the repository root. Its presence is what makes a directory a root. */
15
+ export const CONFIG_PATH = ".intentset/config.yaml";
16
+ export const CARRIERS = {
17
+ markset: marksetCarrier,
18
+ plain: plainCarrier,
19
+ };
20
+ /**
21
+ * The repository root: `explicit` when given (it must hold the configuration),
22
+ * otherwise the nearest directory at or above `cwd` that does. Null when none.
23
+ */
24
+ export function findRoot(cwd, explicit) {
25
+ if (explicit !== undefined) {
26
+ const root = resolve(cwd, explicit);
27
+ return existsSync(join(root, CONFIG_PATH)) ? root : null;
28
+ }
29
+ let dir = resolve(cwd);
30
+ for (;;) {
31
+ if (existsSync(join(dir, CONFIG_PATH)))
32
+ return dir;
33
+ const parent = dirname(dir);
34
+ if (parent === dir)
35
+ return null;
36
+ dir = parent;
37
+ }
38
+ }
39
+ /** Core §11: read the configuration, the documents in its scope with the chosen carrier, the registries and the commit. */
40
+ export function loadRepository(root, carrier) {
41
+ const read = readConfig(readFileSync(join(root, CONFIG_PATH), "utf8"), CONFIG_PATH);
42
+ const config = read.config;
43
+ const diagnostics = [...read.diagnostics];
44
+ const configOk = !hasErrors(read.diagnostics);
45
+ const inputs = [];
46
+ let registries = { ...EMPTY_REGISTRIES, resources: [] };
47
+ if (configOk) {
48
+ const parse = CARRIERS[carrier];
49
+ for (const path of enumerate(root, config)) {
50
+ inputs.push(parse(path, readFileSync(join(root, path), "utf8")));
51
+ }
52
+ if (config.registries !== null) {
53
+ const file = join(root, config.registries);
54
+ const text = isFile(file) ? readFileSync(file, "utf8") : null;
55
+ const loaded = readRegistries(text, config.registries);
56
+ registries = loaded.registries;
57
+ diagnostics.push(...loaded.diagnostics);
58
+ }
59
+ }
60
+ return { root, config, inputs, registries, diagnostics, configOk, ...readCommit(root) };
61
+ }
62
+ /**
63
+ * Core §11 scope: every file `listFiles` returns that matches a `scope`
64
+ * pattern, as sorted repository-relative POSIX paths.
65
+ */
66
+ export function enumerate(root, config) {
67
+ return listFiles(root, config.ignore).filter((path) => matchAny(config.scope, path));
68
+ }
69
+ /**
70
+ * Every regular file under `root` that no `ignore` pattern matches, sorted.
71
+ * In a git repository the list is git's own (`ls-files --cached --others
72
+ * --exclude-standard`): tracked files and untracked ones .gitignore does not
73
+ * exclude, so build output and untracked worktrees stay out. Elsewhere it is
74
+ * a directory walk. Either way symbolic links are left out, so nothing read
75
+ * lies outside the repository, and a tracked file deleted from the working
76
+ * tree is not listed.
77
+ */
78
+ export function listFiles(root, ignore) {
79
+ const listed = gitFiles(root) ?? walk(root, ignore);
80
+ const nested = nestedCheckouts(root);
81
+ return listed.filter((path) => !matchAny(ignore, path) && !ignoredDirectory(ignore, path) && !nested(path) && isFile(join(root, path)));
82
+ }
83
+ /**
84
+ * A directory with its own `.git` is another checkout (a nested repository or
85
+ * a worktree), not part of this one. git lists an untracked worktree's files
86
+ * one by one, so without this a repository with worktrees under it is read
87
+ * twice: Streamlane's `.claude/worktrees` made every package appear twice.
88
+ */
89
+ function nestedCheckouts(root) {
90
+ const cache = new Map();
91
+ return (path) => {
92
+ const parts = path.split("/");
93
+ for (let i = 1; i < parts.length; i++) {
94
+ const dir = parts.slice(0, i).join("/");
95
+ let found = cache.get(dir);
96
+ if (found === undefined) {
97
+ found = existsSync(join(root, dir, ".git"));
98
+ cache.set(dir, found);
99
+ }
100
+ if (found)
101
+ return true;
102
+ }
103
+ return false;
104
+ };
105
+ }
106
+ /** True when some directory containing `path` is ignored, as the walk would never have entered it. */
107
+ function ignoredDirectory(ignore, path) {
108
+ const parts = path.split("/");
109
+ for (let i = 1; i < parts.length; i++)
110
+ if (matchAny(ignore, parts.slice(0, i).join("/")))
111
+ return true;
112
+ return false;
113
+ }
114
+ function gitFiles(root) {
115
+ try {
116
+ const out = execFileSync("git", ["ls-files", "-z", "--cached", "--others", "--exclude-standard"], {
117
+ cwd: root,
118
+ encoding: "utf8",
119
+ stdio: ["ignore", "pipe", "pipe"],
120
+ maxBuffer: 256 * 1024 * 1024,
121
+ });
122
+ return [...new Set(out.split("\0").filter((path) => path !== ""))].sort(compareStrings);
123
+ }
124
+ catch {
125
+ return null;
126
+ }
127
+ }
128
+ /** Every regular file under `root` that no `ignore` pattern matches, by walking; ignored directories are not entered. */
129
+ export function walk(root, ignore) {
130
+ const out = [];
131
+ const visit = (relative) => {
132
+ const entries = readdirSync(relative === "" ? root : join(root, relative), { withFileTypes: true });
133
+ for (const entry of entries) {
134
+ const path = relative === "" ? entry.name : `${relative}/${entry.name}`;
135
+ if (matchAny(ignore, path))
136
+ continue;
137
+ if (entry.isDirectory() && existsSync(join(root, path, ".git")))
138
+ continue;
139
+ if (entry.isDirectory())
140
+ visit(path);
141
+ else if (entry.isFile())
142
+ out.push(path);
143
+ }
144
+ };
145
+ visit("");
146
+ return out.sort(compareStrings);
147
+ }
148
+ /** The commit at HEAD in `root`, or null and the reason none could be read. */
149
+ export function readCommit(root) {
150
+ try {
151
+ const commit = execFileSync("git", ["rev-parse", "--verify", "--quiet", "HEAD^{commit}"], {
152
+ cwd: root,
153
+ encoding: "utf8",
154
+ stdio: ["ignore", "pipe", "pipe"],
155
+ }).trim();
156
+ if (/^[0-9a-f]{40}(?:[0-9a-f]{24})?$/.test(commit)) {
157
+ // --no-optional-locks: asking whether the tree is clean must not refresh git's index either.
158
+ const status = execFileSync("git", ["--no-optional-locks", "status", "--porcelain", "--untracked-files=no"], {
159
+ cwd: root,
160
+ encoding: "utf8",
161
+ stdio: ["ignore", "pipe", "pipe"],
162
+ });
163
+ return status.trim() === "" ? { commit } : { commit, uncommitted: true };
164
+ }
165
+ return { commit: null, commitUnavailable: `git rev-parse printed "${commit}", which is not a commit ID.` };
166
+ }
167
+ catch (error) {
168
+ return { commit: null, commitUnavailable: commitFailure(error) };
169
+ }
170
+ }
171
+ function commitFailure(error) {
172
+ const failure = error;
173
+ if (failure.code === "ENOENT")
174
+ return "git is not installed, so no commit could be read.";
175
+ const detail = (failure.stderr ?? "").trim().split("\n")[0] ?? "";
176
+ if (/not a git repository/i.test(detail))
177
+ return "The repository root is not inside a git repository.";
178
+ if (failure.status === 1 && detail === "")
179
+ return "The git repository has no commit at HEAD yet.";
180
+ return detail === "" ? "git rev-parse HEAD failed." : `git rev-parse HEAD failed: ${detail}`;
181
+ }
182
+ /** A regular file, not a symbolic link to one. */
183
+ function isFile(path) {
184
+ try {
185
+ return lstatSync(path).isFile();
186
+ }
187
+ catch {
188
+ return false;
189
+ }
190
+ }
191
+ //# sourceMappingURL=repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"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"}