ai-spector 0.2.0 → 0.2.2

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 (47) hide show
  1. package/README.md +1 -0
  2. package/dist/cli.js +16 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/graphify-update.d.ts +4 -0
  5. package/dist/commands/graphify-update.d.ts.map +1 -1
  6. package/dist/commands/graphify-update.js +64 -10
  7. package/dist/commands/graphify-update.js.map +1 -1
  8. package/dist/commands/index.d.ts.map +1 -1
  9. package/dist/commands/index.js +33 -1
  10. package/dist/commands/index.js.map +1 -1
  11. package/dist/graph/InMemoryGraph.d.ts.map +1 -1
  12. package/dist/graph/InMemoryGraph.js +4 -4
  13. package/dist/graph/InMemoryGraph.js.map +1 -1
  14. package/dist/graph/merge.d.ts.map +1 -1
  15. package/dist/graph/merge.js +13 -5
  16. package/dist/graph/merge.js.map +1 -1
  17. package/dist/graph/path-target-edges.d.ts +5 -0
  18. package/dist/graph/path-target-edges.d.ts.map +1 -0
  19. package/dist/graph/path-target-edges.js +9 -0
  20. package/dist/graph/path-target-edges.js.map +1 -0
  21. package/dist/graph/provenance.d.ts +20 -0
  22. package/dist/graph/provenance.d.ts.map +1 -0
  23. package/dist/graph/provenance.js +221 -0
  24. package/dist/graph/provenance.js.map +1 -0
  25. package/dist/graph/query.d.ts +1 -0
  26. package/dist/graph/query.d.ts.map +1 -1
  27. package/dist/graph/query.js +16 -3
  28. package/dist/graph/query.js.map +1 -1
  29. package/dist/graph/source-refs.d.ts +2 -0
  30. package/dist/graph/source-refs.d.ts.map +1 -0
  31. package/dist/graph/source-refs.js +30 -0
  32. package/dist/graph/source-refs.js.map +1 -0
  33. package/dist/graphify/graph-index.d.ts +28 -0
  34. package/dist/graphify/graph-index.d.ts.map +1 -0
  35. package/dist/graphify/graph-index.js +52 -0
  36. package/dist/graphify/graph-index.js.map +1 -0
  37. package/dist/graphify/sources.d.ts +26 -0
  38. package/dist/graphify/sources.d.ts.map +1 -1
  39. package/dist/graphify/sources.js +120 -2
  40. package/dist/graphify/sources.js.map +1 -1
  41. package/dist/visualize/html.d.ts.map +1 -1
  42. package/dist/visualize/html.js +82 -7
  43. package/dist/visualize/html.js.map +1 -1
  44. package/package.json +1 -1
  45. package/scaffold/.cursor/commands/_cli-failures.md +14 -6
  46. package/scaffold/.cursor/commands/index.md +3 -1
  47. package/schemas/rules.impact.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/graphify/sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/graphify/sources.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/visualize/html.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,iBAAiB,CAAC;IACzB,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;CAChC;AAMD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CA2cxE"}
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/visualize/html.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,iBAAiB,CAAC;IACzB,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;CAChC;AAMD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAshBxE"}
@@ -183,6 +183,8 @@ export function buildVisualizationHtml(payload) {
183
183
  const NODE_COLORS = {
184
184
  document: "#3b82f6",
185
185
  file: "#38bdf8",
186
+ source: "#14b8a6",
187
+ graphify: "#2dd4bf",
186
188
  section: "#64748b",
187
189
  table: "#475569",
188
190
  diagram: "#475569",
@@ -322,10 +324,12 @@ export function buildVisualizationHtml(payload) {
322
324
  filtered.filter((n) => DOMAIN_TYPES.has(n.type)).map((n) => n.id),
323
325
  );
324
326
  const linked = domainLinkedStructureIds(domainIds);
327
+ const sourceLinked = domainLinkedSourceIds(domainIds);
325
328
  return filtered.filter(
326
329
  (n) =>
327
330
  DOMAIN_TYPES.has(n.type) ||
328
331
  linked.has(n.id) ||
332
+ sourceLinked.has(n.id) ||
329
333
  (n.type === "document" && linked.has(n.id)),
330
334
  );
331
335
  }
@@ -334,6 +338,25 @@ export function buildVisualizationHtml(payload) {
334
338
  return "file:" + path;
335
339
  }
336
340
 
341
+ function sourceNodeId(path) {
342
+ return "source:" + path;
343
+ }
344
+
345
+ function domainLinkedSourceIds(domainIds) {
346
+ const linked = new Set();
347
+ for (const e of P.graph.edges) {
348
+ if (e.type !== "derivedFrom" || !domainIds.has(e.from)) {
349
+ continue;
350
+ }
351
+ if (e.to.startsWith("graphify:")) {
352
+ linked.add(e.to);
353
+ } else {
354
+ linked.add(sourceNodeId(e.to));
355
+ }
356
+ }
357
+ return linked;
358
+ }
359
+
337
360
  function buildVisData(viewMode, search) {
338
361
  const nodes = filterNodes(viewMode, search);
339
362
  const ids = new Set(nodes.map((n) => n.id));
@@ -343,7 +366,35 @@ export function buildVisualizationHtml(payload) {
343
366
  .map((n) => n.output),
344
367
  );
345
368
  const fileNodes = new Map();
369
+ const sourceNodes = new Map();
370
+ const graphifyNodes = new Map();
346
371
  for (const e of P.graph.edges) {
372
+ if (e.type === "derivedFrom" && ids.has(e.from)) {
373
+ if (e.to.startsWith("graphify:")) {
374
+ const gid = e.to;
375
+ if (!graphifyNodes.has(gid)) {
376
+ const label = gid.slice("graphify:".length);
377
+ graphifyNodes.set(gid, {
378
+ id: gid,
379
+ type: "graphify",
380
+ title: label,
381
+ graphifyId: label,
382
+ });
383
+ }
384
+ } else {
385
+ const sid = sourceNodeId(e.to);
386
+ if (!sourceNodes.has(sid)) {
387
+ const base = e.to.split("/").pop() || e.to;
388
+ sourceNodes.set(sid, {
389
+ id: sid,
390
+ type: "source",
391
+ title: base,
392
+ output: e.to,
393
+ });
394
+ }
395
+ }
396
+ continue;
397
+ }
347
398
  if (e.type !== "rendersTo" || !ids.has(e.from)) {
348
399
  continue;
349
400
  }
@@ -370,7 +421,11 @@ export function buildVisualizationHtml(payload) {
370
421
  pathToDocId.set(n.output, n.id);
371
422
  }
372
423
  }
373
- const allNodes = nodes.concat([...fileNodes.values()]);
424
+ const allNodes = nodes.concat(
425
+ [...fileNodes.values()],
426
+ [...sourceNodes.values()],
427
+ [...graphifyNodes.values()],
428
+ );
374
429
  const allIds = new Set(allNodes.map((n) => n.id));
375
430
  function resolveEdgeTarget(to) {
376
431
  if (allIds.has(to)) {
@@ -383,6 +438,12 @@ export function buildVisualizationHtml(payload) {
383
438
  if (fileNodes.has(fileNodeId(to))) {
384
439
  return fileNodeId(to);
385
440
  }
441
+ if (sourceNodes.has(sourceNodeId(to))) {
442
+ return sourceNodeId(to);
443
+ }
444
+ if (graphifyNodes.has(to)) {
445
+ return to;
446
+ }
386
447
  return null;
387
448
  }
388
449
  const visNodes = allNodes.map((n) => ({
@@ -391,8 +452,8 @@ export function buildVisualizationHtml(payload) {
391
452
  title: "<pre style=\\"margin:0;font-size:11px\\">" + escapeHtml(JSON.stringify(n, null, 2)) + "</pre>",
392
453
  color: NODE_COLORS[n.type] || "#94a3b8",
393
454
  font: { color: "#e7ecf3", size: 11 },
394
- shape: n.type === "document" || n.type === "file" ? "box" : "dot",
395
- size: n.type === "section" ? 10 : STRUCTURE.has(n.type) ? 12 : n.type === "file" ? 14 : 18,
455
+ shape: n.type === "document" || n.type === "file" || n.type === "source" || n.type === "graphify" ? "box" : "dot",
456
+ size: n.type === "section" ? 10 : STRUCTURE.has(n.type) ? 12 : n.type === "file" || n.type === "source" || n.type === "graphify" ? 14 : 18,
396
457
  }));
397
458
  const visEdges = P.graph.edges
398
459
  .map((e) => ({ e, to: resolveEdgeTarget(e.to) }))
@@ -403,7 +464,10 @@ export function buildVisualizationHtml(payload) {
403
464
  to,
404
465
  label: e.type,
405
466
  font: { size: 9, color: "#8b9cb3", strokeWidth: 0 },
406
- color: { color: "#4b5563", highlight: "#60a5fa" },
467
+ color: {
468
+ color: e.type === "derivedFrom" ? "#14b8a6" : "#4b5563",
469
+ highlight: e.type === "derivedFrom" ? "#2dd4bf" : "#60a5fa",
470
+ },
407
471
  arrows: "to",
408
472
  }));
409
473
  return { nodes: new vis.DataSet(visNodes), edges: new vis.DataSet(visEdges) };
@@ -438,9 +502,20 @@ export function buildVisualizationHtml(payload) {
438
502
  P.graph.nodes.find((n) => n.id === id) ||
439
503
  (id.startsWith("file:")
440
504
  ? { id, type: "file", output: id.slice(5) }
441
- : null);
442
- const out = P.graph.edges.filter((e) => e.from === id || (id.startsWith("file:") && e.to === id.slice(5)));
443
- const inc = P.graph.edges.filter((e) => e.to === id || (id.startsWith("file:") && e.type === "rendersTo" && e.to === id.slice(5)));
505
+ : id.startsWith("source:")
506
+ ? { id, type: "source", output: id.slice(7) }
507
+ : id.startsWith("graphify:")
508
+ ? { id, type: "graphify", graphifyId: id.slice(9) }
509
+ : null);
510
+ const pathTail = id.startsWith("file:") ? id.slice(5) : id.startsWith("source:") ? id.slice(7) : null;
511
+ const out = P.graph.edges.filter(
512
+ (e) => e.from === id || (pathTail && (e.to === pathTail || e.to === id)),
513
+ );
514
+ const inc = P.graph.edges.filter(
515
+ (e) =>
516
+ e.to === id ||
517
+ (pathTail && (e.type === "rendersTo" || e.type === "derivedFrom") && e.to === pathTail),
518
+ );
444
519
  detail.textContent =
445
520
  JSON.stringify(node, null, 2) +
446
521
  "\\n\\n--- outgoing (" + out.length + ") ---\\n" +
@@ -1 +1 @@
1
- {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/visualize/html.ts"],"names":[],"mappings":"AAaA,SAAS,mBAAmB,CAAC,IAAa;IACxC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAyB;IAC9D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE9C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDA4KwC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2RjD,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/visualize/html.ts"],"names":[],"mappings":"AAaA,SAAS,mBAAmB,CAAC,IAAa;IACxC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAyB;IAC9D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE9C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDA4KwC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAsWjD,CAAC;AACT,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-spector",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Cursor-first documentation workflow: traceability graph, SRS/basic/detail design templates, and ai-spector CLI",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -98,9 +98,17 @@ When any `ai-spector` command **fails** (non-zero exit, throws, or empty/invalid
98
98
  ### `graphify update` — `unknown option: --graph`
99
99
 
100
100
  - **Means:** Agent used `graphify update <path> --graph <file>`. The `update` subcommand does **not** accept `--graph` (only `query`, `explain`, `path`, `cluster-only` do).
101
- - **Fix:** Run **`ai-spector graphify update`** or
102
- `GRAPHIFY_OUT=.ai-spector/.docflow/graph/graphify-out graphify update docs/data-source`
103
- Then delete `docs/data-source/graphify-out/` if it exists.
101
+ - **Fix:** Run **`ai-spector graphify update`** (sets absolute `GRAPHIFY_OUT` and project-root cwd). Do not pass `--graph` on `update`.
102
+
103
+ ### `graphify update` — `No code files found` (exit 1) on `docs/srs` / `docs/basic-design`
104
+
105
+ - **Means:** Those paths are empty or markdown-only; Graphify `update` AST-indexes **code** extensions (`.py`, `.ts`, `.js`, …), not SRS markdown alone.
106
+ - **Fix:** **`ai-spector index`** / **`ai-spector graphify update`** skip empty and markdown-only sources automatically (success, not failure). Use **`docs/data-source`** for code Graphify indexing; SRS/basic-design semantics come from index doc-extract, not `graphify update`.
107
+
108
+ ### `graphify update` — output under `docs/data-source/.ai-spector/...`
109
+
110
+ - **Means:** `GRAPHIFY_OUT` was a **relative** path and Graphify resolved it from the **source directory** (`docs/data-source`), not the repo root.
111
+ - **Fix:** Run **`ai-spector graphify update`** from the project root. Delete mistaken `docs/data-source/graphify-out/` or `docs/data-source/.ai-spector/.docflow/graph/graphify-out/` if present.
104
112
 
105
113
  ### `graph impact --git` — not a git repository / no changes
106
114
 
@@ -118,10 +126,10 @@ When any `ai-spector` command **fails** (non-zero exit, throws, or empty/invalid
118
126
  - **Fix:** Run **`ai-spector index`** (or **`/index`**). Index merges `knowledge.json`, parses UC/F/actor ids from `docs/srs/` bodies, and runs Graphify on **changed** paths (`docs/data-source`, `docs/srs`, `docs/basic-design`). Use **`--force-graphify`** if Graphify output must rebuild entirely.
119
127
  - **Still stale domain detail?** Re-run **`/analyze`** for Graphify MCP → fresh `knowledge.json`.
120
128
 
121
- ### Graphify wrote `docs/data-source/graphify-out/`
129
+ ### Graphify wrote `docs/data-source/graphify-out/` or `docs/data-source/.ai-spector/.../graphify-out/`
122
130
 
123
- - **Means:** `graphify update` ran without `GRAPHIFY_OUT`.
124
- - **Fix:** Run **`ai-spector graphify update`** (sets env + removes stale folder). Do not copy files manually unless CLI failed.
131
+ - **Means:** `graphify update` ran without absolute `GRAPHIFY_OUT` from project root (or used a relative env path).
132
+ - **Fix:** Run **`ai-spector graphify update`** (absolute `GRAPHIFY_OUT`, cwd = project root, removes stale folders). Do not copy files manually unless CLI failed.
125
133
 
126
134
  ---
127
135
 
@@ -31,7 +31,9 @@ After **`/generate-srs`** (recommended):
31
31
  ai-spector index
32
32
  ```
33
33
 
34
- Index steps (default): registry/bootstrap → knowledge merge → **SRS/docs body extract** → Graphify (changed paths only) → validate → doc indexes.
34
+ Index steps (default): registry/bootstrap → knowledge merge → **SRS/docs body extract** → Graphify (changed paths only) → **data-source provenance (`derivedFrom`)** → validate → doc indexes.
35
+
36
+ **Provenance:** UC/F/requirement/actor nodes get **`derivedFrom`** edges to `docs/data-source/**` paths (from `knowledge.json` source fields, SRS detail `Source:` lines, or inline path mentions) and optionally **`graphify:<nodeId>`** when Graphify `graph.json` matches a single symbol in that file. No evidence → no edge.
35
37
 
36
38
  Flags:
37
39
 
@@ -7,7 +7,8 @@
7
7
  "satisfies": { "direction": "in", "depth": 1 },
8
8
  "dependsOn": { "direction": "out", "depth": "unbounded" },
9
9
  "definedIn": { "direction": "in", "depth": 1 },
10
- "listedIn": { "direction": "in", "depth": 1 }
10
+ "listedIn": { "direction": "in", "depth": 1 },
11
+ "derivedFrom": { "direction": "out", "depth": 1 }
11
12
  },
12
13
  "buckets": {
13
14
  "regenerate": ["section", "document"],