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.
- package/README.md +1 -0
- package/dist/cli.js +16 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/graphify-update.d.ts +4 -0
- package/dist/commands/graphify-update.d.ts.map +1 -1
- package/dist/commands/graphify-update.js +64 -10
- package/dist/commands/graphify-update.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +33 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/graph/InMemoryGraph.d.ts.map +1 -1
- package/dist/graph/InMemoryGraph.js +4 -4
- package/dist/graph/InMemoryGraph.js.map +1 -1
- package/dist/graph/merge.d.ts.map +1 -1
- package/dist/graph/merge.js +13 -5
- package/dist/graph/merge.js.map +1 -1
- package/dist/graph/path-target-edges.d.ts +5 -0
- package/dist/graph/path-target-edges.d.ts.map +1 -0
- package/dist/graph/path-target-edges.js +9 -0
- package/dist/graph/path-target-edges.js.map +1 -0
- package/dist/graph/provenance.d.ts +20 -0
- package/dist/graph/provenance.d.ts.map +1 -0
- package/dist/graph/provenance.js +221 -0
- package/dist/graph/provenance.js.map +1 -0
- package/dist/graph/query.d.ts +1 -0
- package/dist/graph/query.d.ts.map +1 -1
- package/dist/graph/query.js +16 -3
- package/dist/graph/query.js.map +1 -1
- package/dist/graph/source-refs.d.ts +2 -0
- package/dist/graph/source-refs.d.ts.map +1 -0
- package/dist/graph/source-refs.js +30 -0
- package/dist/graph/source-refs.js.map +1 -0
- package/dist/graphify/graph-index.d.ts +28 -0
- package/dist/graphify/graph-index.d.ts.map +1 -0
- package/dist/graphify/graph-index.js +52 -0
- package/dist/graphify/graph-index.js.map +1 -0
- package/dist/graphify/sources.d.ts +26 -0
- package/dist/graphify/sources.d.ts.map +1 -1
- package/dist/graphify/sources.js +120 -2
- package/dist/graphify/sources.js.map +1 -1
- package/dist/visualize/html.d.ts.map +1 -1
- package/dist/visualize/html.js +82 -7
- package/dist/visualize/html.js.map +1 -1
- package/package.json +1 -1
- package/scaffold/.cursor/commands/_cli-failures.md +14 -6
- package/scaffold/.cursor/commands/index.md +3 -1
- package/schemas/rules.impact.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/graphify/sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/graphify/sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;AAEnF;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC;IAC9C,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,OAAO;IACP,SAAS;IACT,SAAS;IACT,MAAM;IACN,KAAK;IACL,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,KAAK;IACL,QAAQ;IACR,KAAK;IACL,MAAM;IACN,KAAK;IACL,QAAQ;IACR,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,IAAI;IACJ,KAAK;IACL,KAAK;IACL,MAAM;IACN,SAAS;IACT,QAAQ;IACR,OAAO;IACP,IAAI;IACJ,KAAK;IACL,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AASH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,WAAmB,EACnB,UAAkB;IAElB,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACjD,MAAM,KAAK,GAA4B,EAAE,CAAC;IAE1C,KAAK,UAAU,IAAI,CAAC,GAAW;QAC7B,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtB,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxD,SAAS;gBACX,CAAC;gBACD,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClB,SAAS;YACX,CAAC;YACD,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC3D,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChF,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IACnE,OAAO,KAAK,CAAC;AACf,CAAC;AAeD,gFAAgF;AAChF,MAAM,UAAU,yBAAyB,CACvC,WAAmB,EACnB,aAAsB;IAEtB,MAAM,GAAG,GACP,aAAa,IAAI,yCAAyC,CAAC;IAC7D,OAAO,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,WAAmB,EACnB,SAAiB;IAEjB,OAAO,CAAC,MAAM,2BAA2B,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,KAAK,OAAO,CAAC;AACjF,CAAC;AAED,2FAA2F;AAC3F,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAAmB,EACnB,SAAiB;IAEjB,MAAM,KAAK,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACvE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACtB,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,CACpE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,WAAmB,EACnB,SAAiB;IAEjB,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACvE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/B,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,CACpE,CAAC;IACF,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC;AAC1C,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,WAAmB,EACnB,SAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACzE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,yBAAyB,GAAG,sBAAsB,CAAC;AAEzD,yEAAyE;AACzE,MAAM,UAAU,2BAA2B,CACzC,MAAc,EACd,MAAc,EACd,QAAgB;IAEhB,OAAO,QAAQ,KAAK,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAA6B;IAE7B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAyB,EAAE,CAAC;IAErC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,IAAI,kBAAkB,CAAC;IAC/D,GAAG,CAAC,OAAO,CAAC,CAAC;IAEb,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACrC,GAAG,CAAC,CAAC,CAAC,CAAC;IACT,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QACxC,GAAG,CAAC,CAAC,CAAC,CAAC;IACT,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,WAAmB,EACnB,SAAiB;IAEjB,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,0BAA0B,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACvE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,WAAmB,EACnB,KAA2B,EAC3B,YAAgD,EAChD,KAAc;IAEd,MAAM,MAAM,GAA2B,EAAE,GAAG,YAAY,EAAE,CAAC;IAC3D,MAAM,KAAK,GAAyB,EAAE,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,wBAAwB,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACxB,IAAI,KAAK,IAAI,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -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,
|
|
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"}
|
package/dist/visualize/html.js
CHANGED
|
@@ -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(
|
|
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: {
|
|
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
|
-
:
|
|
442
|
-
|
|
443
|
-
|
|
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
|
|
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
|
@@ -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`**
|
|
102
|
-
|
|
103
|
-
|
|
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`** (
|
|
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"],
|