renma 0.1.1 → 0.2.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 CHANGED
@@ -120,6 +120,24 @@ It produces:
120
120
 
121
121
  Findings are meant to explain what is wrong, why it matters, where the evidence is, what to preserve while fixing it, and how to verify the repair. Renma does not apply large semantic rewrites itself; it emits structured diagnostics so a human or coding agent can propose a reviewable patch and run Renma again.
122
122
 
123
+ ### Repeated context diagnostics
124
+
125
+ `renma scan` reports deterministic repeated-context candidates across discovered skills, agents, profiles, references, examples, and shared context assets. These findings are evidence for consolidation, not automatic source-of-truth decisions:
126
+
127
+ ```text
128
+ LLM proposes. Renma verifies. Human approves.
129
+ ```
130
+
131
+ The MVP rule IDs are:
132
+
133
+ - `MAINT-REPEATED-SECTION` for repeated normalized section hashes.
134
+ - `MAINT-REPEATED-HEADING` for repeated non-generic headings.
135
+ - `MAINT-REPEATED-CODE-BLOCK` for repeated substantial code fences.
136
+ - `MAINT-REPEATED-LINK` for repeated repository context link targets.
137
+ - `MAINT-REPEATED-CONTEXT-PATTERN` for repeated token shingles.
138
+
139
+ Renma normalizes whitespace and only reports cross-file candidates with stable parser evidence. Remediation text asks maintainers to preserve ownership boundaries, procedural detail, and human approval while consolidating owned knowledge.
140
+
123
141
  ## How Renma differs from adjacent tools
124
142
 
125
143
  Prompt-management and eval tools focus on prompts, traces, and model outputs.
@@ -143,6 +161,7 @@ npx renma scan .
143
161
  npx renma catalog . --format json
144
162
  npx renma graph . --format mermaid
145
163
  npx renma readiness .
164
+ npx renma diff . --from main --to HEAD --format markdown
146
165
  ```
147
166
 
148
167
  The first command does not require you to design a knowledge architecture up front. It scans the repository, builds a local catalog, and reports obvious health issues such as broken links, unclear ownership, risky instructions, weak structure, and context that may be hard for agents to trust.
@@ -161,8 +180,14 @@ Then inspect the catalog and graph:
161
180
  node dist/index.js catalog . --format json
162
181
  node dist/index.js graph . --format mermaid
163
182
  node dist/index.js readiness .
183
+ node dist/index.js diff . --from main --to HEAD --format markdown
164
184
  ```
165
185
 
186
+ Semantic diff compares deterministic catalog, graph, readiness, and finding
187
+ snapshots across Git refs. It does not interpret arbitrary prose semantics,
188
+ assemble prompts, choose context, call an LLM, repair files, or check out or
189
+ mutate the working tree.
190
+
166
191
  A practical first pass is:
167
192
 
168
193
  1. Run `scan` to find broken links, weak structure, risky instructions, missing lifecycle metadata, and other repairable issues.
@@ -181,6 +206,8 @@ renma catalog <path>
181
206
  renma ownership <path>
182
207
  renma graph <path>
183
208
  renma readiness <path>
209
+ renma diff <path> --from <ref> --to <ref>
210
+ renma ci-report <path> --from <ref> --to <ref>
184
211
  renma inspect <path> <asset-or-file>
185
212
  renma suggest-semantic-split <file>
186
213
  ```
@@ -195,10 +222,18 @@ renma catalog . --format json
195
222
  renma ownership . --include-owned
196
223
  renma graph . --format mermaid
197
224
  renma readiness .
225
+ renma diff . --from main --to HEAD --format markdown
226
+ renma ci-report . --from main --to HEAD --format markdown
198
227
  renma inspect . contexts/testing/boundary-value-analysis.md
199
228
  ```
200
229
 
201
- Use JSON output when Renma is part of CI or another tool. Use text output when a person or coding agent needs a concise repair list.
230
+ Use JSON output when Renma is part of CI or another tool. Use markdown output for PR-review artifacts. Use text output when a person or coding agent needs a concise repair list.
231
+
232
+ `ci-report` exit behavior:
233
+
234
+ - PASS/WARN: exit 0
235
+ - FAIL: exit 1
236
+ - command, runtime, or config error: exit 2
202
237
 
203
238
  ## What Gets Scanned
204
239
 
@@ -272,6 +307,8 @@ Renma can infer some information from paths and headings, but explicit metadata
272
307
 
273
308
  ## CI Example
274
309
 
310
+ For PR review artifacts, see [`examples/github-actions/renma-ci-report.yml`](examples/github-actions/renma-ci-report.yml).
311
+
275
312
  ```yaml
276
313
  name: renma
277
314
 
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AA2BA,wBAAsB,IAAI,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6ExE"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAgCA,wBAAsB,IAAI,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyFxE"}
package/dist/cli.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { parseArgs } from "node:util";
2
2
  import packageJson from "../package.json" with { type: "json" };
3
3
  import { runCatalogCommand } from "./commands/catalog.js";
4
+ import { runCiReportCommand, } from "./commands/ci-report.js";
5
+ import { runDiffCommand } from "./commands/diff.js";
4
6
  import { runGraphCommand, } from "./commands/graph.js";
5
7
  import { runInspectCommand } from "./commands/inspect.js";
6
8
  import { runOwnershipCommand, } from "./commands/ownership.js";
@@ -18,9 +20,11 @@ export async function main(argv = process.argv.slice(2)) {
18
20
  config: { type: "string", short: "c" },
19
21
  "fail-on": { type: "string" },
20
22
  format: { type: "string" },
23
+ from: { type: "string" },
21
24
  "include-owned": { type: "boolean" },
22
25
  json: { type: "boolean" },
23
26
  lines: { type: "string" },
27
+ to: { type: "string" },
24
28
  view: { type: "string" },
25
29
  "max-context-bytes": { type: "string" },
26
30
  "max-source-bytes": { type: "string" },
@@ -44,6 +48,8 @@ export async function main(argv = process.argv.slice(2)) {
44
48
  const [command = "scan", target = "."] = parsed.positionals;
45
49
  if (command !== "scan" &&
46
50
  command !== "catalog" &&
51
+ command !== "diff" &&
52
+ command !== "ci-report" &&
47
53
  command !== "graph" &&
48
54
  command !== "ownership" &&
49
55
  command !== "readiness" &&
@@ -62,6 +68,12 @@ export async function main(argv = process.argv.slice(2)) {
62
68
  if (command === "catalog") {
63
69
  return runCatalog(parsed.values, target);
64
70
  }
71
+ if (command === "diff") {
72
+ return runDiff(parsed.values, target);
73
+ }
74
+ if (command === "ci-report") {
75
+ return runCiReport(parsed.values, target);
76
+ }
65
77
  if (command === "graph") {
66
78
  return runGraph(parsed.values, target);
67
79
  }
@@ -124,6 +136,70 @@ async function runCatalog(values, target) {
124
136
  return 2;
125
137
  }
126
138
  }
139
+ async function runDiff(values, target) {
140
+ const fromRef = stringValue(values.from);
141
+ const toRef = stringValue(values.to);
142
+ if (!fromRef || !toRef) {
143
+ console.error("diff requires --from <ref> and --to <ref>.");
144
+ return 2;
145
+ }
146
+ const format = values.json ? "json" : (stringValue(values.format) ?? "json");
147
+ if (format !== "json" && format !== "markdown") {
148
+ console.error("--format must be either json or markdown.");
149
+ return 2;
150
+ }
151
+ const configPath = stringValue(values.config);
152
+ const overrides = {
153
+ ...(configPath ? { configPath } : {}),
154
+ };
155
+ try {
156
+ return await runDiffCommand(target, {
157
+ fromRef,
158
+ toRef,
159
+ format: format,
160
+ overrides,
161
+ });
162
+ }
163
+ catch (error) {
164
+ console.error(error instanceof ConfigError || error instanceof Error
165
+ ? error.message
166
+ : String(error));
167
+ return 2;
168
+ }
169
+ }
170
+ async function runCiReport(values, target) {
171
+ const fromRef = stringValue(values.from);
172
+ const toRef = stringValue(values.to);
173
+ if (!fromRef || !toRef) {
174
+ console.error("ci-report requires --from <ref> and --to <ref>.");
175
+ return 2;
176
+ }
177
+ const format = values.json
178
+ ? "json"
179
+ : (stringValue(values.format) ?? "markdown");
180
+ if (format !== "json" && format !== "markdown") {
181
+ console.error("--format must be either json or markdown.");
182
+ return 2;
183
+ }
184
+ const configPath = stringValue(values.config);
185
+ const overrides = {
186
+ ...(configPath ? { configPath } : {}),
187
+ };
188
+ try {
189
+ return await runCiReportCommand(target, {
190
+ fromRef,
191
+ toRef,
192
+ format: format,
193
+ overrides,
194
+ });
195
+ }
196
+ catch (error) {
197
+ console.error(error instanceof ConfigError || error instanceof Error
198
+ ? error.message
199
+ : String(error));
200
+ return 2;
201
+ }
202
+ }
127
203
  async function runGraph(values, target) {
128
204
  const format = values.json ? "json" : (stringValue(values.format) ?? "json");
129
205
  if (format !== "json" && format !== "markdown" && format !== "mermaid") {
@@ -266,6 +342,8 @@ function helpText() {
266
342
  "Additional usage:",
267
343
  " renma scan [path] [options]",
268
344
  " renma catalog [path] [options]",
345
+ " renma diff [path] --from <ref> --to <ref> [options]",
346
+ " renma ci-report [path] --from <ref> --to <ref> [options]",
269
347
  " renma graph [path] [options]",
270
348
  " renma ownership [path] [options]",
271
349
  " renma readiness [path] [options]",
@@ -275,6 +353,8 @@ function helpText() {
275
353
  "Commands:",
276
354
  " scan Scan a repository or skill directory",
277
355
  " catalog Print deterministic normalized asset catalog",
356
+ " diff Compare deterministic readiness snapshots",
357
+ " ci-report Print deterministic CI / PR review report",
278
358
  " graph Print deterministic repository graph snapshot",
279
359
  " ownership Print deterministic ownership coverage report",
280
360
  " readiness Print deterministic agent readiness report",
@@ -286,7 +366,7 @@ function helpText() {
286
366
  "Options:",
287
367
  " -c, --config <path> scan: read JSON config from path",
288
368
  " --fail-on <level> scan: exit 1 when findings meet severity: low, medium, high, critical",
289
- " --format <format> scan: text or json; catalog/ownership/readiness: json or markdown; graph: json, markdown, or mermaid; suggest-semantic-split: prompt or json",
369
+ " --format <format> scan: text or json; catalog/ownership/readiness/ci-report: json or markdown; graph: json, markdown, or mermaid; suggest-semantic-split: prompt or json",
290
370
  " --include-owned ownership: include owned asset details",
291
371
  " --json Shortcut for --format json",
292
372
  " --view <view> graph: summary, workflow, or full",
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { type DiffReport, type DiffFormat } from "./diff.js";
2
+ import type { ConfigOverrides } from "../config.js";
3
+ export type CiReportFormat = DiffFormat;
4
+ export type CiReportStatus = "pass" | "warn" | "fail";
5
+ export interface CiReport {
6
+ root: string;
7
+ from: DiffReport["from"];
8
+ to: DiffReport["to"];
9
+ status: CiReportStatus;
10
+ summary: DiffReport["summary"];
11
+ notes: string[];
12
+ diff: DiffReport;
13
+ }
14
+ interface CiReportOptions {
15
+ fromRef: string;
16
+ toRef: string;
17
+ overrides?: ConfigOverrides;
18
+ }
19
+ export declare function runCiReportCommand(targetPath: string, options: CiReportOptions & {
20
+ format: CiReportFormat;
21
+ }): Promise<number>;
22
+ export declare function ciReport(targetPath: string, options: CiReportOptions): Promise<CiReport>;
23
+ export declare function formatCiReport(report: CiReport, format: CiReportFormat): string;
24
+ export declare function determineCiReportStatus(report: DiffReport): CiReportStatus;
25
+ export {};
26
+ //# sourceMappingURL=ci-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-report.d.ts","sourceRoot":"","sources":["../../src/commands/ci-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC;AACxC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACzB,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAgBD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,GAAG;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GACpD,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED,wBAAsB,QAAQ,CAC5B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,QAAQ,CAAC,CAYnB;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,cAAc,GACrB,MAAM,CAGR;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAkB1E"}
@@ -0,0 +1,162 @@
1
+ import { diff } from "./diff.js";
2
+ const MAX_LIST_ITEMS = 10;
3
+ export async function runCiReportCommand(targetPath, options) {
4
+ const report = await ciReport(targetPath, options);
5
+ process.stdout.write(formatCiReport(report, options.format));
6
+ return report.status === "fail" ? 1 : 0;
7
+ }
8
+ export async function ciReport(targetPath, options) {
9
+ const report = await diff(targetPath, options);
10
+ const status = determineCiReportStatus(report);
11
+ return {
12
+ root: report.root,
13
+ from: report.from,
14
+ to: report.to,
15
+ status,
16
+ summary: report.summary,
17
+ notes: reviewNotes(report, status),
18
+ diff: report,
19
+ };
20
+ }
21
+ export function formatCiReport(report, format) {
22
+ if (format === "json")
23
+ return `${JSON.stringify(report, null, 2)}\n`;
24
+ return formatCiReportMarkdown(report);
25
+ }
26
+ export function determineCiReportStatus(report) {
27
+ if (hasNewHighOrCriticalFinding(report) ||
28
+ hasNewUnresolvedRequiredEdge(report)) {
29
+ return "fail";
30
+ }
31
+ if (report.summary.readinessScoreDelta < 0 ||
32
+ report.summary.ownershipCoverageDelta < 0 ||
33
+ report.summary.graphResolutionDelta < 0 ||
34
+ report.summary.findingsDelta > 0) {
35
+ return "warn";
36
+ }
37
+ return "pass";
38
+ }
39
+ function hasNewHighOrCriticalFinding(report) {
40
+ return report.findings.added.some((finding) => finding.severity === "high" || finding.severity === "critical");
41
+ }
42
+ function hasNewUnresolvedRequiredEdge(report) {
43
+ return report.graph.newUnresolvedEdges.some(isRequiredEdge);
44
+ }
45
+ function newUnresolvedRequiredEdgeCount(report) {
46
+ return report.graph.newUnresolvedEdges.filter(isRequiredEdge).length;
47
+ }
48
+ function isRequiredEdge(edge) {
49
+ return edge.kind === "required" || edge.kind === "requires";
50
+ }
51
+ function reviewNotes(report, status) {
52
+ const notes = [];
53
+ if (hasNewUnresolvedRequiredEdge(report)) {
54
+ notes.push("Review new unresolved required edges before merge.");
55
+ }
56
+ if (hasNewHighOrCriticalFinding(report)) {
57
+ notes.push("Review new high or critical findings before merge.");
58
+ }
59
+ if (report.summary.readinessScoreDelta < 0) {
60
+ notes.push("Readiness score decreased.");
61
+ }
62
+ if (report.summary.ownershipCoverageDelta > 0) {
63
+ notes.push("Ownership coverage improved.");
64
+ }
65
+ if (report.summary.findingsDelta < 0) {
66
+ notes.push("Scan findings decreased.");
67
+ }
68
+ if (status === "pass" && notes.length === 0) {
69
+ notes.push("No CI report regressions detected.");
70
+ }
71
+ return notes;
72
+ }
73
+ function formatCiReportMarkdown(report) {
74
+ const lines = [
75
+ "# Renma CI Report",
76
+ "",
77
+ "## Summary",
78
+ "",
79
+ `- Status: ${report.status.toUpperCase()}`,
80
+ `- Range: \`${report.from.ref}\` -> \`${report.to.ref}\``,
81
+ `- Readiness: ${report.from.readinessLevel} ${report.from.readinessScore} -> ${report.to.readinessLevel} ${report.to.readinessScore} (${formatDelta(report.summary.readinessScoreDelta)})`,
82
+ `- Total assets: ${report.from.totalAssets} -> ${report.to.totalAssets} (${formatDelta(report.summary.totalAssetsDelta)})`,
83
+ `- Ownership coverage: ${formatDelta(report.summary.ownershipCoverageDelta)}`,
84
+ `- Graph resolution: ${formatDelta(report.summary.graphResolutionDelta)}`,
85
+ `- Findings: ${formatDelta(report.summary.findingsDelta)}`,
86
+ `- High/critical findings: ${formatDelta(report.summary.highOrCriticalFindingsDelta)}`,
87
+ "",
88
+ "## Status",
89
+ "",
90
+ report.status.toUpperCase(),
91
+ "",
92
+ "## Readiness",
93
+ "",
94
+ `- Target readiness: ${report.to.readinessLevel} (${report.to.readinessScore})`,
95
+ `- Scanned files: ${report.to.scannedFileCount}`,
96
+ `- Check changes: ${report.diff.readiness.checkChanges.length}`,
97
+ "",
98
+ "## Semantic Diff",
99
+ "",
100
+ `- Added assets: ${report.diff.catalog.addedAssets.length}`,
101
+ `- Removed assets: ${report.diff.catalog.removedAssets.length}`,
102
+ `- Changed assets: ${report.diff.catalog.changedAssets.length}`,
103
+ `- New unresolved required edges: ${newUnresolvedRequiredEdgeCount(report.diff)}`,
104
+ `- Resolved edges: ${report.diff.graph.resolvedEdges.length}`,
105
+ `- Added findings: ${report.diff.findings.added.length}`,
106
+ `- Resolved findings: ${report.diff.findings.removed.length}`,
107
+ "",
108
+ "## Scan Findings",
109
+ "",
110
+ ...formatFindingSection("Added", report.diff.findings.added),
111
+ ...formatFindingSection("Resolved", report.diff.findings.removed),
112
+ "",
113
+ "## Finding Count Changes",
114
+ "",
115
+ ...formatCountChanges(report.diff.findings.countById),
116
+ "",
117
+ "## Review Notes",
118
+ "",
119
+ ...report.notes.map((note) => `- ${note}`),
120
+ "",
121
+ ];
122
+ return `${lines.join("\n")}\n`;
123
+ }
124
+ function formatDelta(value) {
125
+ if (value > 0)
126
+ return `+${value}`;
127
+ if (value < 0)
128
+ return String(value);
129
+ return "+0";
130
+ }
131
+ function formatFindingSection(label, findings) {
132
+ if (findings.length === 0)
133
+ return [`### ${label}`, "", "- None"];
134
+ return [
135
+ `### ${label}`,
136
+ "",
137
+ ...findings.slice(0, MAX_LIST_ITEMS).map(formatFinding),
138
+ ...formatOverflow(findings.length),
139
+ ];
140
+ }
141
+ function formatFinding(finding) {
142
+ const location = finding.evidence?.path
143
+ ? `${finding.evidence.path}:${finding.evidence.startLine ?? "?"}`
144
+ : "unknown";
145
+ return `- ${finding.severity.toUpperCase()} ${finding.id} ${location} - ${finding.title}`;
146
+ }
147
+ function formatCountChanges(changes) {
148
+ if (changes.length === 0)
149
+ return ["- None"];
150
+ return [
151
+ ...changes
152
+ .slice(0, MAX_LIST_ITEMS)
153
+ .map((change) => `- ${change.id}: ${change.from} -> ${change.to} (${formatDelta(change.delta)})`),
154
+ ...formatOverflow(changes.length),
155
+ ];
156
+ }
157
+ function formatOverflow(length) {
158
+ if (length <= MAX_LIST_ITEMS)
159
+ return [];
160
+ return [`- ${length - MAX_LIST_ITEMS} more not shown`];
161
+ }
162
+ //# sourceMappingURL=ci-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-report.js","sourceRoot":"","sources":["../../src/commands/ci-report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ import { type GraphReport } from "./graph.js";
2
+ import { type ReadinessReport } from "./readiness.js";
3
+ import type { ConfigOverrides } from "../config.js";
4
+ export type DiffFormat = "json" | "markdown";
5
+ export interface DiffReport {
6
+ root: string;
7
+ from: DiffEndpoint;
8
+ to: DiffEndpoint;
9
+ summary: {
10
+ readinessScoreDelta: number;
11
+ readinessLevelChanged: boolean;
12
+ totalAssetsDelta: number;
13
+ ownershipCoverageDelta: number;
14
+ graphResolutionDelta: number;
15
+ findingsDelta: number;
16
+ highOrCriticalFindingsDelta: number;
17
+ };
18
+ catalog: {
19
+ addedAssets: AssetDelta[];
20
+ removedAssets: AssetDelta[];
21
+ changedAssets: AssetChange[];
22
+ };
23
+ graph: {
24
+ addedEdges: EdgeDelta[];
25
+ removedEdges: EdgeDelta[];
26
+ newUnresolvedEdges: EdgeDelta[];
27
+ resolvedEdges: EdgeDelta[];
28
+ };
29
+ readiness: {
30
+ checkChanges: ReadinessCheckChange[];
31
+ };
32
+ findings: {
33
+ added: FindingDelta[];
34
+ removed: FindingDelta[];
35
+ countById: Array<{
36
+ id: string;
37
+ from: number;
38
+ to: number;
39
+ delta: number;
40
+ }>;
41
+ };
42
+ }
43
+ interface DiffEndpoint {
44
+ ref: string;
45
+ scannedFileCount: number;
46
+ totalAssets: number;
47
+ readinessScore: number;
48
+ readinessLevel: string;
49
+ }
50
+ interface AssetDelta {
51
+ id: string;
52
+ path?: string | undefined;
53
+ kind?: string | undefined;
54
+ owner?: string | undefined;
55
+ status?: string | undefined;
56
+ }
57
+ interface AssetChange {
58
+ id: string;
59
+ path?: string | undefined;
60
+ changedFields: string[];
61
+ from: AssetDelta;
62
+ to: AssetDelta;
63
+ }
64
+ interface EdgeDelta {
65
+ source: string;
66
+ target: string;
67
+ kind: string;
68
+ resolved: boolean;
69
+ evidence?: EvidenceDelta | undefined;
70
+ }
71
+ interface ReadinessCheckChange {
72
+ id: string;
73
+ title: string;
74
+ fromStatus: string;
75
+ toStatus: string;
76
+ fromSeverity: string;
77
+ toSeverity: string;
78
+ summaryChanged: boolean;
79
+ }
80
+ interface FindingDelta {
81
+ id: string;
82
+ severity: string;
83
+ title: string;
84
+ evidence?: EvidenceDelta | undefined;
85
+ }
86
+ interface EvidenceDelta {
87
+ path?: string | undefined;
88
+ startLine?: number | undefined;
89
+ endLine?: number | undefined;
90
+ snippet?: string | undefined;
91
+ }
92
+ interface Snapshot {
93
+ ref: string;
94
+ root: string;
95
+ readiness: ReadinessReport;
96
+ graph: GraphReport;
97
+ }
98
+ export declare function runDiffCommand(targetPath: string, options: {
99
+ fromRef: string;
100
+ toRef: string;
101
+ format: DiffFormat;
102
+ overrides?: ConfigOverrides;
103
+ }): Promise<number>;
104
+ export declare function diff(targetPath: string, options: {
105
+ fromRef: string;
106
+ toRef: string;
107
+ overrides?: ConfigOverrides;
108
+ }): Promise<DiffReport>;
109
+ export declare function buildDiffReport(root: string, fromSnapshot: Snapshot, toSnapshot: Snapshot): DiffReport;
110
+ export declare function formatDiff(report: DiffReport, format: DiffFormat): string;
111
+ export {};
112
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"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"}