ai-spector 0.1.6 → 0.1.8
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 +7 -2
- package/dist/cli.js +41 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/graph-impact.d.ts +12 -1
- package/dist/commands/graph-impact.d.ts.map +1 -1
- package/dist/commands/graph-impact.js +108 -2
- package/dist/commands/graph-impact.js.map +1 -1
- package/dist/commands/graphify-update.d.ts +8 -1
- package/dist/commands/graphify-update.d.ts.map +1 -1
- package/dist/commands/graphify-update.js +58 -20
- package/dist/commands/graphify-update.js.map +1 -1
- package/dist/commands/index-refresh.d.ts +22 -0
- package/dist/commands/index-refresh.d.ts.map +1 -0
- package/dist/commands/index-refresh.js +315 -0
- package/dist/commands/index-refresh.js.map +1 -0
- package/dist/commands/index.d.ts +25 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +368 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/graph/doc-extract.d.ts +37 -0
- package/dist/graph/doc-extract.d.ts.map +1 -0
- package/dist/graph/doc-extract.js +278 -0
- package/dist/graph/doc-extract.js.map +1 -0
- package/dist/graph/impact.d.ts +15 -0
- package/dist/graph/impact.d.ts.map +1 -1
- package/dist/graph/impact.js +41 -0
- package/dist/graph/impact.js.map +1 -1
- package/dist/graph/resolve.d.ts +42 -0
- package/dist/graph/resolve.d.ts.map +1 -0
- package/dist/graph/resolve.js +320 -0
- package/dist/graph/resolve.js.map +1 -0
- package/dist/graphify/sources.d.ts +23 -0
- package/dist/graphify/sources.d.ts.map +1 -0
- package/dist/graphify/sources.js +87 -0
- package/dist/graphify/sources.js.map +1 -0
- package/dist/index/doc-semantics.d.ts +14 -0
- package/dist/index/doc-semantics.d.ts.map +1 -0
- package/dist/index/doc-semantics.js +86 -0
- package/dist/index/doc-semantics.js.map +1 -0
- package/dist/index/docs-build.d.ts +40 -0
- package/dist/index/docs-build.d.ts.map +1 -0
- package/dist/index/docs-build.js +136 -0
- package/dist/index/docs-build.js.map +1 -0
- package/dist/index/docs-config.d.ts +19 -0
- package/dist/index/docs-config.d.ts.map +1 -0
- package/dist/index/docs-config.js +5 -0
- package/dist/index/docs-config.js.map +1 -0
- package/dist/util/git-diff.d.ts +12 -0
- package/dist/util/git-diff.d.ts.map +1 -0
- package/dist/util/git-diff.js +58 -0
- package/dist/util/git-diff.js.map +1 -0
- package/package.json +1 -1
- package/scaffold/.ai-spector/.docflow/config/analyze.graphify.json +4 -2
- package/scaffold/.ai-spector/.docflow/config/workflow.dependencies.json +18 -18
- package/scaffold/.ai-spector/index/README.md +2 -2
- package/scaffold/.ai-spector/index/basic-design.md +1 -1
- package/scaffold/.ai-spector/index/srs.md +1 -1
- package/scaffold/.cursor/commands/_cli-failures.md +16 -0
- package/scaffold/.cursor/commands/_graph.md +16 -0
- package/scaffold/.cursor/commands/_workflow.md +5 -3
- package/scaffold/.cursor/commands/generate-basic-design.md +2 -2
- package/scaffold/.cursor/commands/generate-srs.md +8 -1
- package/scaffold/.cursor/commands/graph-impact.md +3 -43
- package/scaffold/.cursor/commands/impact.md +144 -0
- package/scaffold/.cursor/commands/index.md +71 -0
- package/scaffold/.cursor/commands/{index-docs.md → summary.md} +8 -6
- package/scaffold/.cursor/skills/ai-spector/SKILL.md +3 -1
- package/schemas/rules.impact.json +1 -1
package/README.md
CHANGED
|
@@ -29,7 +29,9 @@ Put your source files in `docs/data-source/`, open the folder in Cursor, turn on
|
|
|
29
29
|
| **`/generate-srs`** | All SRS, listed files, or a short request (agent confirms scope) — graph-first, by DAG waves |
|
|
30
30
|
| **`/generate-basic-design`** | All, listed files, or request (confirm) — graph + SRS context, by waves |
|
|
31
31
|
| **`/generate-detail-design`** | Detail design from the graph |
|
|
32
|
-
| **`/
|
|
32
|
+
| **`/impact`** [what changed] | Shows what to regenerate after you change something (agent resolves graph seed) |
|
|
33
|
+
| **`/index`** (or `ai-spector index`) | Rebuild graph, merge knowledge, parse UC/F from SRS bodies, Graphify on changed paths, doc indexes — run after `/generate-srs` |
|
|
34
|
+
| **`/summary`** (optional) | Build `.ai-spector/index/*.md` doc summaries — not the same as full `/index` |
|
|
33
35
|
|
|
34
36
|
**Typical path:**
|
|
35
37
|
|
|
@@ -142,7 +144,10 @@ npm run init:example
|
|
|
142
144
|
| `ai-spector graph validate` | Rules check |
|
|
143
145
|
| `ai-spector graph visualize [--open]` | HTML report |
|
|
144
146
|
| `ai-spector graph query <id> --json` | Context for generation |
|
|
145
|
-
| `ai-spector graph impact <id> --json` | Regen scope |
|
|
147
|
+
| `ai-spector graph impact <id> --json` | Regen scope (or `--file` / `--heading` / `--git` for current diff) |
|
|
148
|
+
| `ai-spector index` | Refresh graph + knowledge merge + SRS body extract + Graphify + `.ai-spector/index/` (see flags below) |
|
|
149
|
+
|
|
150
|
+
**`ai-spector index` flags:** `--graph-only`, `--docs-only`, `--skip-graphify`, `--skip-docs`, `--skip-merge`, `--skip-doc-semantics`, `--force-graphify`, `--skip-validate`
|
|
146
151
|
|
|
147
152
|
Option: `-r <path>` to point at another project root.
|
|
148
153
|
|
package/dist/cli.js
CHANGED
|
@@ -13,6 +13,7 @@ import { runGraphImpact } from "./commands/graph-impact.js";
|
|
|
13
13
|
import { runGraphMerge } from "./commands/graph-merge.js";
|
|
14
14
|
import { runGraphVisualize } from "./commands/graph-visualize.js";
|
|
15
15
|
import { runGraphifyUpdate } from "./commands/graphify-update.js";
|
|
16
|
+
import { runIndex } from "./commands/index.js";
|
|
16
17
|
const program = new Command();
|
|
17
18
|
program
|
|
18
19
|
.name("ai-spector")
|
|
@@ -36,6 +37,30 @@ program
|
|
|
36
37
|
force: opts.force,
|
|
37
38
|
});
|
|
38
39
|
});
|
|
40
|
+
program
|
|
41
|
+
.command("index")
|
|
42
|
+
.description("Refresh graph, knowledge merge, Graphify storage, and doc indexes from current project files")
|
|
43
|
+
.option("--graph-only", "Only registry + bootstrap + merge + validate (no Graphify, no doc indexes)")
|
|
44
|
+
.option("--docs-only", "Only rebuild .ai-spector/index/*.md and state hashes")
|
|
45
|
+
.option("--skip-graphify", "Skip Graphify update (code graph / graphify-index)")
|
|
46
|
+
.option("--skip-docs", "Skip .ai-spector/index document indexes")
|
|
47
|
+
.option("--skip-merge", "Skip merging knowledge.json into graph")
|
|
48
|
+
.option("--skip-doc-semantics", "Skip parsing docs/srs and docs/basic-design for UC/F/actor ids into the graph")
|
|
49
|
+
.option("--force-graphify", "Re-run Graphify update on all sources even when unchanged")
|
|
50
|
+
.option("--skip-validate", "Skip graph validate after refresh")
|
|
51
|
+
.action(async (opts, cmd) => {
|
|
52
|
+
await runIndex({
|
|
53
|
+
root: projectRootOpt(cmd),
|
|
54
|
+
graphOnly: opts.graphOnly,
|
|
55
|
+
docsOnly: opts.docsOnly,
|
|
56
|
+
skipGraphify: opts.skipGraphify,
|
|
57
|
+
skipDocs: opts.skipDocs,
|
|
58
|
+
skipMerge: opts.skipMerge,
|
|
59
|
+
skipDocSemantics: opts.skipDocSemantics,
|
|
60
|
+
forceGraphify: opts.forceGraphify,
|
|
61
|
+
skipValidate: opts.skipValidate,
|
|
62
|
+
});
|
|
63
|
+
});
|
|
39
64
|
program
|
|
40
65
|
.command("analyze")
|
|
41
66
|
.description("Prepare graph structure (registry + bootstrap). Normally invoked by /analyze, not the user.")
|
|
@@ -50,11 +75,13 @@ graphify
|
|
|
50
75
|
.command("update [path]")
|
|
51
76
|
.description("Run graphify update on data-source with output under .ai-spector/.docflow/graph/graphify-out")
|
|
52
77
|
.option("--keep-stale", "Do not delete docs/data-source/graphify-out if Graphify wrote it there by mistake")
|
|
78
|
+
.option("--force", "Re-run update on all configured sources even when content hash unchanged")
|
|
53
79
|
.action(async (path, opts, cmd) => {
|
|
54
80
|
await runGraphifyUpdate({
|
|
55
81
|
root: projectRootOpt(cmd),
|
|
56
82
|
sourcePath: path,
|
|
57
83
|
removeStaleOutput: !opts.keepStale,
|
|
84
|
+
force: opts.force,
|
|
58
85
|
});
|
|
59
86
|
});
|
|
60
87
|
const graph = program.command("graph").description("Traceability graph operations");
|
|
@@ -101,17 +128,29 @@ graph
|
|
|
101
128
|
});
|
|
102
129
|
});
|
|
103
130
|
graph
|
|
104
|
-
.command("impact
|
|
105
|
-
.description("Impact analysis: regenerate / review / downstream buckets")
|
|
131
|
+
.command("impact [id]")
|
|
132
|
+
.description("Impact analysis: regenerate / review / downstream buckets (id optional with --file / --heading / --git)")
|
|
133
|
+
.option("--file <path>", "Resolve origin from repo-relative doc path")
|
|
134
|
+
.option("--heading <text>", "Resolve section by heading (optionally scoped with --file)")
|
|
135
|
+
.option("--git", "Resolve seeds from current git diff (staged + unstaged) and merge impact")
|
|
106
136
|
.option("--change <type>", "Change type", "content_change")
|
|
107
137
|
.option("-o, --output <path>", "Write impact report JSON")
|
|
108
138
|
.option("--json", "Print JSON")
|
|
109
139
|
.action(async (id, opts, cmd) => {
|
|
110
140
|
const paths = await getPaths(cmd);
|
|
141
|
+
if (!id && !opts.file && !opts.heading && !opts.git) {
|
|
142
|
+
console.error("Provide <nodeId>, --file <path>, --heading <text>, or --git to resolve the change origin.");
|
|
143
|
+
process.exitCode = 1;
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
111
146
|
await runGraphImpact({
|
|
112
147
|
graphPath: paths.graph,
|
|
113
148
|
rulesPath: paths.rulesImpact,
|
|
149
|
+
projectRoot: paths.root,
|
|
114
150
|
originId: id,
|
|
151
|
+
file: opts.file,
|
|
152
|
+
heading: opts.heading,
|
|
153
|
+
git: opts.git,
|
|
115
154
|
change: opts.change,
|
|
116
155
|
output: opts.output,
|
|
117
156
|
json: opts.json,
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
|
+
import { loadInMemoryGraph } from "../graph/loadGraph.js";
|
|
2
|
+
import { type ResolvedOrigin } from "../graph/resolve.js";
|
|
1
3
|
export interface GraphImpactCliOptions {
|
|
2
4
|
graphPath: string;
|
|
3
5
|
rulesPath: string;
|
|
4
|
-
|
|
6
|
+
projectRoot: string;
|
|
7
|
+
originId?: string;
|
|
8
|
+
file?: string;
|
|
9
|
+
heading?: string;
|
|
10
|
+
git?: boolean;
|
|
5
11
|
change: string;
|
|
6
12
|
output?: string;
|
|
7
13
|
json?: boolean;
|
|
8
14
|
}
|
|
15
|
+
export declare function resolveImpactOriginId(g: Awaited<ReturnType<typeof loadInMemoryGraph>>, opts: Pick<GraphImpactCliOptions, "originId" | "file" | "heading">): {
|
|
16
|
+
originId: string;
|
|
17
|
+
resolved?: ResolvedOrigin;
|
|
18
|
+
};
|
|
19
|
+
export declare function runGraphImpactFromGit(g: Awaited<ReturnType<typeof loadInMemoryGraph>>, opts: GraphImpactCliOptions): Promise<void>;
|
|
9
20
|
export declare function runGraphImpact(opts: GraphImpactCliOptions): Promise<void>;
|
|
10
21
|
//# sourceMappingURL=graph-impact.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-impact.d.ts","sourceRoot":"","sources":["../../src/commands/graph-impact.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graph-impact.d.ts","sourceRoot":"","sources":["../../src/commands/graph-impact.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,qBAAqB,CACnC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,EAChD,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC,GACjE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAA;CAAE,CAqBjD;AAED,wBAAsB,qBAAqB,CACzC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,EAChD,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAgGf;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC/E"}
|
|
@@ -1,12 +1,118 @@
|
|
|
1
1
|
import { mkdir } from "node:fs/promises";
|
|
2
2
|
import { dirname } from "node:path";
|
|
3
3
|
import { writeJson } from "../util/fs.js";
|
|
4
|
+
import { collectGitDiff } from "../util/git-diff.js";
|
|
4
5
|
import { loadInMemoryGraph } from "../graph/loadGraph.js";
|
|
5
|
-
import { computeImpact, loadImpactRules } from "../graph/impact.js";
|
|
6
|
+
import { computeImpact, loadImpactRules, mergeImpactResults } from "../graph/impact.js";
|
|
7
|
+
import { parseGitDiffRegions, pickPrimaryImpactOrigin, resolveFromGitDiff, resolveImpactOrigins, } from "../graph/resolve.js";
|
|
8
|
+
export function resolveImpactOriginId(g, opts) {
|
|
9
|
+
if (opts.originId?.trim()) {
|
|
10
|
+
const id = opts.originId.trim();
|
|
11
|
+
if (!g.nodesById.has(id)) {
|
|
12
|
+
throw new Error(`Unknown node id: ${id}`);
|
|
13
|
+
}
|
|
14
|
+
return { originId: id };
|
|
15
|
+
}
|
|
16
|
+
const origins = resolveImpactOrigins(g, {
|
|
17
|
+
file: opts.file,
|
|
18
|
+
heading: opts.heading,
|
|
19
|
+
nodeId: opts.originId,
|
|
20
|
+
});
|
|
21
|
+
const primary = pickPrimaryImpactOrigin(origins);
|
|
22
|
+
if (!primary) {
|
|
23
|
+
throw new Error("Could not resolve impact origin. Provide <nodeId>, or --file <path>, or --heading <text>.");
|
|
24
|
+
}
|
|
25
|
+
return { originId: primary.id, resolved: primary };
|
|
26
|
+
}
|
|
27
|
+
export async function runGraphImpactFromGit(g, opts) {
|
|
28
|
+
const collected = await collectGitDiff(opts.projectRoot);
|
|
29
|
+
if (collected.notRepo) {
|
|
30
|
+
throw new Error("Not a git repository. Describe the change (/impact <description>) or select text in the editor.");
|
|
31
|
+
}
|
|
32
|
+
if (collected.empty) {
|
|
33
|
+
throw new Error("No unstaged or staged changes. Describe the change (/impact <description>) or select text in the editor.");
|
|
34
|
+
}
|
|
35
|
+
const origins = resolveFromGitDiff(g, collected.diff);
|
|
36
|
+
if (origins.length === 0) {
|
|
37
|
+
const files = parseGitDiffRegions(collected.diff).map((r) => r.file);
|
|
38
|
+
throw new Error(`Could not map git diff to graph seeds. Changed files: ${files.join(", ") || "(none)"}. ` +
|
|
39
|
+
"Try /impact with a path or short description.");
|
|
40
|
+
}
|
|
41
|
+
const rules = await loadImpactRules(opts.rulesPath);
|
|
42
|
+
const regions = parseGitDiffRegions(collected.diff);
|
|
43
|
+
const seedsByRegion = [];
|
|
44
|
+
for (const region of regions) {
|
|
45
|
+
const regionOrigins = resolveImpactOrigins(g, {
|
|
46
|
+
file: region.file,
|
|
47
|
+
heading: region.heading,
|
|
48
|
+
sectionAnchor: region.sectionAnchor,
|
|
49
|
+
});
|
|
50
|
+
const primary = pickPrimaryImpactOrigin(regionOrigins);
|
|
51
|
+
if (primary) {
|
|
52
|
+
seedsByRegion.push(primary);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const uniqueSeeds = new Map();
|
|
56
|
+
for (const o of seedsByRegion.length > 0 ? seedsByRegion : origins) {
|
|
57
|
+
if (!uniqueSeeds.has(o.id)) {
|
|
58
|
+
uniqueSeeds.set(o.id, o);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const results = [...uniqueSeeds.values()].map((seed) => {
|
|
62
|
+
const result = computeImpact(g, seed.id, opts.change, rules);
|
|
63
|
+
result.resolvedFrom = seed;
|
|
64
|
+
return result;
|
|
65
|
+
});
|
|
66
|
+
const gitSeeds = [...uniqueSeeds.values()].map((s) => {
|
|
67
|
+
const region = regions.find((r) => resolveImpactOrigins(g, {
|
|
68
|
+
file: r.file,
|
|
69
|
+
heading: r.heading,
|
|
70
|
+
sectionAnchor: r.sectionAnchor,
|
|
71
|
+
}).some((o) => o.id === s.id));
|
|
72
|
+
return {
|
|
73
|
+
id: s.id,
|
|
74
|
+
type: s.type,
|
|
75
|
+
reason: s.reason,
|
|
76
|
+
file: region?.file,
|
|
77
|
+
heading: region?.heading,
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
const result = results.length === 1
|
|
81
|
+
? { ...results[0], gitSeeds }
|
|
82
|
+
: mergeImpactResults(results, gitSeeds);
|
|
83
|
+
if (opts.output) {
|
|
84
|
+
await mkdir(dirname(opts.output), { recursive: true });
|
|
85
|
+
await writeJson(opts.output, result);
|
|
86
|
+
}
|
|
87
|
+
if (opts.json || opts.output) {
|
|
88
|
+
console.log(JSON.stringify(result, null, 2));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
console.log(`Impact from git diff (${uniqueSeeds.size} seed(s))`);
|
|
92
|
+
for (const [bucket, entries] of Object.entries(result.affected)) {
|
|
93
|
+
console.log(`\n${bucket}:`);
|
|
94
|
+
if (entries.length === 0) {
|
|
95
|
+
console.log(" (none)");
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
for (const e of entries) {
|
|
99
|
+
const path = e.projectionPath ? ` → ${e.projectionPath}` : "";
|
|
100
|
+
console.log(` - ${e.id} (${e.type})${path}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
6
104
|
export async function runGraphImpact(opts) {
|
|
7
105
|
const g = await loadInMemoryGraph(opts.graphPath);
|
|
106
|
+
if (opts.git) {
|
|
107
|
+
await runGraphImpactFromGit(g, opts);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const { originId, resolved } = resolveImpactOriginId(g, opts);
|
|
8
111
|
const rules = await loadImpactRules(opts.rulesPath);
|
|
9
|
-
const result = computeImpact(g,
|
|
112
|
+
const result = computeImpact(g, originId, opts.change, rules);
|
|
113
|
+
if (resolved) {
|
|
114
|
+
result.resolvedFrom = resolved;
|
|
115
|
+
}
|
|
10
116
|
if (opts.output) {
|
|
11
117
|
await mkdir(dirname(opts.output), { recursive: true });
|
|
12
118
|
await writeJson(opts.output, result);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-impact.js","sourceRoot":"","sources":["../../src/commands/graph-impact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"graph-impact.js","sourceRoot":"","sources":["../../src/commands/graph-impact.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,13 @@ export interface GraphifyUpdateOptions {
|
|
|
2
2
|
root?: string;
|
|
3
3
|
sourcePath?: string;
|
|
4
4
|
removeStaleOutput?: boolean;
|
|
5
|
+
/** Re-run graphify update on all configured sources even when content hash unchanged */
|
|
6
|
+
force?: boolean;
|
|
5
7
|
}
|
|
6
|
-
export
|
|
8
|
+
export interface GraphifyUpdateResult {
|
|
9
|
+
sourcesRun: string[];
|
|
10
|
+
sourcesSkipped: string[];
|
|
11
|
+
sourceHashes: Record<string, string>;
|
|
12
|
+
}
|
|
13
|
+
export declare function runGraphifyUpdate(opts?: GraphifyUpdateOptions): Promise<GraphifyUpdateResult>;
|
|
7
14
|
//# sourceMappingURL=graphify-update.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphify-update.d.ts","sourceRoot":"","sources":["../../src/commands/graphify-update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graphify-update.d.ts","sourceRoot":"","sources":["../../src/commands/graphify-update.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,wFAAwF;IACxF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAgDD,wBAAsB,iBAAiB,CACrC,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,oBAAoB,CAAC,CA2G/B"}
|
|
@@ -2,7 +2,8 @@ import { spawn } from "node:child_process";
|
|
|
2
2
|
import { rm } from "node:fs/promises";
|
|
3
3
|
import { join, resolve } from "node:path";
|
|
4
4
|
import { loadDocflowConfig } from "../config/load.js";
|
|
5
|
-
import {
|
|
5
|
+
import { filterSourcesByHashChange, resolveGraphifySources, } from "../graphify/sources.js";
|
|
6
|
+
import { pathExists, readJson, writeJson } from "../util/fs.js";
|
|
6
7
|
function runCommand(command, args, cwd, env) {
|
|
7
8
|
return new Promise((resolvePromise, reject) => {
|
|
8
9
|
const child = spawn(command, args, {
|
|
@@ -39,48 +40,85 @@ async function runGraphifyCli(args, cwd, env) {
|
|
|
39
40
|
return { ...viaUv, command: `uv ${uvArgs.join(" ")}` };
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
|
-
export async function runGraphifyUpdate(opts) {
|
|
43
|
+
export async function runGraphifyUpdate(opts = {}) {
|
|
43
44
|
const { root: projectRoot } = await loadDocflowConfig(opts.root);
|
|
44
45
|
const configPath = join(projectRoot, ".ai-spector/.docflow/config/analyze.graphify.json");
|
|
45
46
|
const config = await readJson(configPath);
|
|
46
47
|
const g = config.graphify ?? {};
|
|
47
|
-
const sourceRel = opts.sourcePath ?? g.defaultDataSource ?? "docs/data-source";
|
|
48
|
-
const sourcePath = resolve(projectRoot, sourceRel);
|
|
49
48
|
const outputPath = resolve(projectRoot, g.outputPath ?? ".ai-spector/.docflow/graph/graphify-out");
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
const statePath = join(projectRoot, ".ai-spector/.docflow/state.json");
|
|
50
|
+
const state = await readJson(statePath).catch(() => ({
|
|
51
|
+
version: 1,
|
|
52
|
+
graphify: {},
|
|
53
|
+
}));
|
|
54
|
+
const graphifyState = state.graphify ?? {};
|
|
55
|
+
const storedHashes = graphifyState.sourceHashes;
|
|
56
|
+
let specs = resolveGraphifySources(g);
|
|
57
|
+
if (opts.sourcePath) {
|
|
58
|
+
specs = [{ path: opts.sourcePath, key: opts.sourcePath }];
|
|
59
|
+
}
|
|
60
|
+
const { toRun, hashes } = await filterSourcesByHashChange(projectRoot, specs, storedHashes, opts.force === true);
|
|
61
|
+
const sourcesRun = [];
|
|
62
|
+
const sourcesSkipped = specs
|
|
63
|
+
.filter((s) => !toRun.some((r) => r.key === s.key))
|
|
64
|
+
.map((s) => s.path);
|
|
65
|
+
if (toRun.length === 0) {
|
|
66
|
+
console.log("Graphify update: all sources unchanged (use --force to re-index)");
|
|
67
|
+
for (const s of specs) {
|
|
68
|
+
console.log(` ○ ${s.path} (hash ${hashes[s.key] ?? "—"})`);
|
|
69
|
+
}
|
|
70
|
+
return { sourcesRun, sourcesSkipped, sourceHashes: hashes };
|
|
52
71
|
}
|
|
53
72
|
const env = {
|
|
54
73
|
...process.env,
|
|
55
74
|
GRAPHIFY_OUT: outputPath,
|
|
56
75
|
};
|
|
57
|
-
console.log(`Graphify update
|
|
76
|
+
console.log(`Graphify update (${toRun.length} source(s), ${sourcesSkipped.length} unchanged)`);
|
|
58
77
|
console.log(` GRAPHIFY_OUT → ${g.outputPath ?? outputPath}`);
|
|
59
78
|
console.log(" (do not pass --graph to graphify update — use GRAPHIFY_OUT instead)");
|
|
60
79
|
console.log("");
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
80
|
+
for (const spec of toRun) {
|
|
81
|
+
const sourcePath = resolve(projectRoot, spec.path);
|
|
82
|
+
if (!(await pathExists(sourcePath))) {
|
|
83
|
+
console.log(` ⊘ skip ${spec.path} (not found)`);
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
console.log(` ▶ ${spec.path} (hash ${hashes[spec.key] ?? "—"})`);
|
|
87
|
+
const result = await runGraphifyCli(["update", spec.path], projectRoot, env);
|
|
88
|
+
if (result.stdout.trim()) {
|
|
89
|
+
console.log(result.stdout.trimEnd());
|
|
90
|
+
}
|
|
91
|
+
if (result.stderr.trim()) {
|
|
92
|
+
console.error(result.stderr.trimEnd());
|
|
93
|
+
}
|
|
94
|
+
if (result.exitCode !== 0) {
|
|
95
|
+
console.error("");
|
|
96
|
+
console.error(`Failed: ${result.command} (exit ${result.exitCode})`);
|
|
97
|
+
throw new Error(`graphify update failed for ${spec.path} (exit ${result.exitCode})`);
|
|
98
|
+
}
|
|
99
|
+
sourcesRun.push(spec.path);
|
|
72
100
|
}
|
|
73
101
|
const graphJson = join(outputPath, "graph.json");
|
|
74
102
|
if (!(await pathExists(graphJson))) {
|
|
75
103
|
throw new Error(`Expected graph.json at ${g.graphJsonPath ?? graphJson} after update — check Graphify install (graphify or uv + graphifyy)`);
|
|
76
104
|
}
|
|
77
|
-
const
|
|
105
|
+
const primaryRel = g.defaultDataSource ?? "docs/data-source";
|
|
106
|
+
const staleOut = join(resolve(projectRoot, primaryRel), "graphify-out");
|
|
78
107
|
if (opts.removeStaleOutput !== false && (await pathExists(staleOut))) {
|
|
79
108
|
await rm(staleOut, { recursive: true, force: true });
|
|
80
109
|
console.log("");
|
|
81
|
-
console.log(`Removed stale ${
|
|
110
|
+
console.log(`Removed stale ${primaryRel}/graphify-out/ (wrong default location)`);
|
|
82
111
|
}
|
|
112
|
+
graphifyState.lastRunAt = new Date().toISOString();
|
|
113
|
+
graphifyState.sourceHashes = hashes;
|
|
114
|
+
graphifyState.sourcesRun = sourcesRun;
|
|
115
|
+
state.graphify = graphifyState;
|
|
116
|
+
await writeJson(statePath, state);
|
|
83
117
|
console.log("");
|
|
84
118
|
console.log(`OK — ${g.graphJsonPath ?? ".ai-spector/.docflow/graph/graphify-out/graph.json"}`);
|
|
119
|
+
if (sourcesSkipped.length > 0) {
|
|
120
|
+
console.log(`Skipped (unchanged): ${sourcesSkipped.join(", ")}`);
|
|
121
|
+
}
|
|
122
|
+
return { sourcesRun, sourcesSkipped, sourceHashes: hashes };
|
|
85
123
|
}
|
|
86
124
|
//# sourceMappingURL=graphify-update.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphify-update.js","sourceRoot":"","sources":["../../src/commands/graphify-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"graphify-update.js","sourceRoot":"","sources":["../../src/commands/graphify-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type IndexStepStatus = "ok" | "skipped" | "failed";
|
|
2
|
+
export interface IndexStepResult {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
status: IndexStepStatus;
|
|
6
|
+
detail?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface IndexRefreshOptions {
|
|
9
|
+
root?: string;
|
|
10
|
+
graphOnly?: boolean;
|
|
11
|
+
docsOnly?: boolean;
|
|
12
|
+
skipGraphify?: boolean;
|
|
13
|
+
skipDocs?: boolean;
|
|
14
|
+
skipMerge?: boolean;
|
|
15
|
+
skipValidate?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface IndexRefreshReport {
|
|
18
|
+
steps: IndexStepResult[];
|
|
19
|
+
failed: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function runIndexRefresh(opts?: IndexRefreshOptions): Promise<IndexRefreshReport>;
|
|
22
|
+
//# sourceMappingURL=index-refresh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-refresh.d.ts","sourceRoot":"","sources":["../../src/commands/index-refresh.ts"],"names":[],"mappings":"AA4BA,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,eAAe,CACnC,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CA+R7B"}
|