openlore 2.0.7 → 2.0.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 +122 -20
- package/dist/cli/commands/mcp.d.ts +681 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +384 -200
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +14 -0
- package/dist/constants.js.map +1 -1
- package/dist/core/analyzer/artifact-generator.d.ts.map +1 -1
- package/dist/core/analyzer/artifact-generator.js +59 -4
- package/dist/core/analyzer/artifact-generator.js.map +1 -1
- package/dist/core/analyzer/call-graph.d.ts +19 -1
- package/dist/core/analyzer/call-graph.d.ts.map +1 -1
- package/dist/core/analyzer/call-graph.js +128 -28
- package/dist/core/analyzer/call-graph.js.map +1 -1
- package/dist/core/architecture/check.d.ts +63 -0
- package/dist/core/architecture/check.d.ts.map +1 -0
- package/dist/core/architecture/check.js +192 -0
- package/dist/core/architecture/check.js.map +1 -0
- package/dist/core/architecture/rules.d.ts +73 -0
- package/dist/core/architecture/rules.d.ts.map +1 -0
- package/dist/core/architecture/rules.js +201 -0
- package/dist/core/architecture/rules.js.map +1 -0
- package/dist/core/decisions/project.d.ts +59 -0
- package/dist/core/decisions/project.d.ts.map +1 -0
- package/dist/core/decisions/project.js +68 -0
- package/dist/core/decisions/project.js.map +1 -0
- package/dist/core/decisions/verifier.d.ts +10 -0
- package/dist/core/decisions/verifier.d.ts.map +1 -1
- package/dist/core/decisions/verifier.js +48 -5
- package/dist/core/decisions/verifier.js.map +1 -1
- package/dist/core/provenance/change-coupling.d.ts +68 -0
- package/dist/core/provenance/change-coupling.d.ts.map +1 -0
- package/dist/core/provenance/change-coupling.js +134 -0
- package/dist/core/provenance/change-coupling.js.map +1 -0
- package/dist/core/provenance/git-provenance.d.ts +67 -0
- package/dist/core/provenance/git-provenance.d.ts.map +1 -0
- package/dist/core/provenance/git-provenance.js +177 -0
- package/dist/core/provenance/git-provenance.js.map +1 -0
- package/dist/core/provenance/project.d.ts +37 -0
- package/dist/core/provenance/project.d.ts.map +1 -0
- package/dist/core/provenance/project.js +46 -0
- package/dist/core/provenance/project.js.map +1 -0
- package/dist/core/services/edge-store.d.ts +41 -0
- package/dist/core/services/edge-store.d.ts.map +1 -1
- package/dist/core/services/edge-store.js +251 -3
- package/dist/core/services/edge-store.js.map +1 -1
- package/dist/core/services/llm-service.d.ts +9 -0
- package/dist/core/services/llm-service.d.ts.map +1 -1
- package/dist/core/services/llm-service.js +15 -4
- package/dist/core/services/llm-service.js.map +1 -1
- package/dist/core/services/mcp-handlers/architecture.d.ts +19 -0
- package/dist/core/services/mcp-handlers/architecture.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/architecture.js +104 -0
- package/dist/core/services/mcp-handlers/architecture.js.map +1 -0
- package/dist/core/services/mcp-handlers/change-coupling.d.ts +16 -0
- package/dist/core/services/mcp-handlers/change-coupling.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/change-coupling.js +57 -0
- package/dist/core/services/mcp-handlers/change-coupling.js.map +1 -0
- package/dist/core/services/mcp-handlers/graph.d.ts +27 -0
- package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -1
- package/dist/core/services/mcp-handlers/graph.js +98 -16
- package/dist/core/services/mcp-handlers/graph.js.map +1 -1
- package/dist/core/services/mcp-handlers/orient.d.ts.map +1 -1
- package/dist/core/services/mcp-handlers/orient.js +122 -2
- package/dist/core/services/mcp-handlers/orient.js.map +1 -1
- package/dist/core/services/mcp-handlers/reachability.d.ts +30 -0
- package/dist/core/services/mcp-handlers/reachability.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/reachability.js +222 -0
- package/dist/core/services/mcp-handlers/reachability.js.map +1 -0
- package/dist/core/services/mcp-handlers/structural-diff.d.ts +31 -0
- package/dist/core/services/mcp-handlers/structural-diff.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/structural-diff.js +268 -0
- package/dist/core/services/mcp-handlers/structural-diff.js.map +1 -0
- package/dist/core/services/mcp-handlers/test-impact.d.ts +34 -0
- package/dist/core/services/mcp-handlers/test-impact.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/test-impact.js +221 -0
- package/dist/core/services/mcp-handlers/test-impact.js.map +1 -0
- package/dist/core/services/mcp-handlers/tool-guard.d.ts +45 -0
- package/dist/core/services/mcp-handlers/tool-guard.d.ts.map +1 -0
- package/dist/core/services/mcp-handlers/tool-guard.js +81 -0
- package/dist/core/services/mcp-handlers/tool-guard.js.map +1 -0
- package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -1
- package/dist/core/services/mcp-handlers/utils.js +15 -1
- package/dist/core/services/mcp-handlers/utils.js.map +1 -1
- package/dist/core/services/mcp-watcher.d.ts.map +1 -1
- package/dist/core/services/mcp-watcher.js +9 -0
- package/dist/core/services/mcp-watcher.js.map +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Projection: per-file provenance → typed `authored_by` / `changed_in_pr` graph
|
|
3
|
+
* edges (spec-18). The decisions/IaC analogue: git history is the authored source;
|
|
4
|
+
* this projection is derived and regenerable. Edges hang off existing file nodes —
|
|
5
|
+
* no person/PR nodes are added to the call graph, keeping it un-bloated (the cap is
|
|
6
|
+
* applied upstream in the extractor).
|
|
7
|
+
*
|
|
8
|
+
* Edge direction is code → context: a file is `authored_by` a person and
|
|
9
|
+
* `changed_in_pr` a pull request.
|
|
10
|
+
*/
|
|
11
|
+
/** "Name <email>" display key for a person (stable identity). */
|
|
12
|
+
export function personKey(name, email) {
|
|
13
|
+
return email ? `${name} <${email}>` : name;
|
|
14
|
+
}
|
|
15
|
+
export function projectProvenance(records) {
|
|
16
|
+
const authoredBy = [];
|
|
17
|
+
const changedInPr = [];
|
|
18
|
+
for (const r of [...records].sort((a, b) => a.filePath.localeCompare(b.filePath))) {
|
|
19
|
+
// Last-touch author first, then the remaining recent authors (deduped).
|
|
20
|
+
authoredBy.push({
|
|
21
|
+
kind: 'authored_by',
|
|
22
|
+
filePath: r.filePath,
|
|
23
|
+
name: r.lastAuthor.name,
|
|
24
|
+
email: r.lastAuthor.email,
|
|
25
|
+
lastDate: r.lastDate,
|
|
26
|
+
role: 'last',
|
|
27
|
+
});
|
|
28
|
+
const lastKey = personKey(r.lastAuthor.name, r.lastAuthor.email);
|
|
29
|
+
for (const a of r.recentAuthors) {
|
|
30
|
+
if (personKey(a.name, a.email) === lastKey)
|
|
31
|
+
continue;
|
|
32
|
+
authoredBy.push({ kind: 'authored_by', filePath: r.filePath, name: a.name, email: a.email, role: 'recent' });
|
|
33
|
+
}
|
|
34
|
+
for (const pr of r.prs) {
|
|
35
|
+
changedInPr.push({
|
|
36
|
+
kind: 'changed_in_pr',
|
|
37
|
+
filePath: r.filePath,
|
|
38
|
+
pr: pr.number,
|
|
39
|
+
...(pr.title ? { title: pr.title } : {}),
|
|
40
|
+
...(pr.state ? { state: pr.state } : {}),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return { authoredBy, changedInPr };
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/core/provenance/project.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA6BH,iEAAiE;AACjE,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,KAAa;IACnD,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAyB;IACzD,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,MAAM,WAAW,GAAsB,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAClF,wEAAwE;QACxE,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI;YACvB,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK;YACzB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACjE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;YAChC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO;gBAAE,SAAS;YACrD,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/G,CAAC;QAED,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YACvB,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,EAAE,EAAE,EAAE,CAAC,MAAM;gBACb,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import type { CallEdge, FunctionNode, ClassNode, InheritanceEdge } from '../analyzer/call-graph.js';
|
|
2
|
+
import type { DecisionNode, DecisionAffectsEdge } from '../decisions/project.js';
|
|
3
|
+
import type { FileProvenance } from '../provenance/git-provenance.js';
|
|
4
|
+
import type { FileChangeCoupling, ChangeCouplingResult } from '../provenance/change-coupling.js';
|
|
2
5
|
export declare class EdgeStore {
|
|
3
6
|
private readonly db;
|
|
7
|
+
/**
|
|
8
|
+
* True when opening this DB found a stale SCHEMA_VERSION and wiped it (rebuild-on-bump).
|
|
9
|
+
* The data is gone until the next analyze repopulates it — callers that READ
|
|
10
|
+
* (vs. analyze, which repopulates) should treat the store as unavailable so they
|
|
11
|
+
* can tell the user to re-run analyze instead of serving an empty graph.
|
|
12
|
+
*/
|
|
13
|
+
private _wasReset;
|
|
14
|
+
get wasReset(): boolean;
|
|
4
15
|
private constructor();
|
|
5
16
|
private initSchema;
|
|
6
17
|
/** All distinct files that call into calleeFile (reverse lookup before delete). */
|
|
@@ -49,6 +60,36 @@ export declare class EdgeStore {
|
|
|
49
60
|
getClassesForFile(file: string): ClassNode[];
|
|
50
61
|
deleteClassesForFile(file: string): void;
|
|
51
62
|
insertClasses(classes: ClassNode[]): void;
|
|
63
|
+
/** Replace the projected decision graph wholesale (idempotent re-projection). */
|
|
64
|
+
insertDecisions(nodes: DecisionNode[], edges: DecisionAffectsEdge[]): void;
|
|
65
|
+
/** Every projected decision node (deterministic order). */
|
|
66
|
+
getAllDecisions(): DecisionNode[];
|
|
67
|
+
countDecisions(): number;
|
|
68
|
+
/**
|
|
69
|
+
* Governing decisions for a set of files — the deterministic graph join that
|
|
70
|
+
* replaces orient's runtime affectedFiles set-membership filter (spec-16).
|
|
71
|
+
*
|
|
72
|
+
* Path forms differ across callers (edge-store nodes are repo-relative; some
|
|
73
|
+
* callers pass absolute paths), and decisions are few, so we match in JS with a
|
|
74
|
+
* tolerant suffix comparator rather than relying on exact SQL equality.
|
|
75
|
+
*/
|
|
76
|
+
getDecisionsForFiles(files: string[]): DecisionNode[];
|
|
77
|
+
/** Replace the per-file provenance wholesale (idempotent re-extraction). */
|
|
78
|
+
insertProvenance(records: FileProvenance[]): void;
|
|
79
|
+
countProvenance(): number;
|
|
80
|
+
/**
|
|
81
|
+
* Provenance for a set of files. Path forms differ across callers (edge-store
|
|
82
|
+
* nodes are repo-relative; some callers pass absolute paths), so match with the
|
|
83
|
+
* same tolerant comparator used for decisions (spec-18).
|
|
84
|
+
*/
|
|
85
|
+
getProvenanceForFiles(files: string[]): FileProvenance[];
|
|
86
|
+
/** Replace the per-file change-coupling snapshot wholesale (idempotent re-mine). */
|
|
87
|
+
insertChangeCoupling(result: ChangeCouplingResult): void;
|
|
88
|
+
countChangeCoupling(): number;
|
|
89
|
+
/** Change-coupling records for a set of files (tolerant path match, spec-22). */
|
|
90
|
+
getChangeCouplingForFiles(files: string[]): FileChangeCoupling[];
|
|
91
|
+
/** Top-churn (most volatile) files, descending. */
|
|
92
|
+
getTopVolatile(limit?: number): FileChangeCoupling[];
|
|
52
93
|
getFileHash(filePath: string): string | null;
|
|
53
94
|
setFileHash(filePath: string, hash: string): void;
|
|
54
95
|
/** Drop all graph data — used by full analyze rebuild. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge-store.d.ts","sourceRoot":"","sources":["../../../src/core/services/edge-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"edge-store.d.ts","sourceRoot":"","sources":["../../../src/core/services/edge-store.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAe,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AA8C9G,qBAAa,SAAS;IAUA,OAAO,CAAC,QAAQ,CAAC,EAAE;IATvC;;;;;OAKG;IACH,OAAO,CAAC,SAAS,CAAS;IAC1B,IAAI,QAAQ,IAAI,OAAO,CAA2B;IAElD,OAAO;IAIP,OAAO,CAAC,UAAU;IA8IlB,mFAAmF;IACnF,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAO5C,qDAAqD;IACrD,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAAC,QAAQ,EAAE,QAAQ,EAAE,CAAA;KAAE;IAU7E,0DAA0D;IAC1D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE;IAMtC,wDAAwD;IACxD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE;IAMtC,8EAA8E;IAC9E,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE;IAQjD,8EAA8E;IAC9E,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE;IAUjD,4DAA4D;IAC5D,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAItC,yEAAyE;IACzE,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9C,iDAAiD;IACjD,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAwBpC,6DAA6D;IAC7D,sBAAsB,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,IAAI;IAatD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAKxC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE;IAM7C;;;;OAIG;IACH,mBAAmB,IAAI,YAAY,EAAE;IAMrC,0GAA0G;IAC1G,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,YAAY,EAAE;IAwBxD,OAAO,CAAC,KAAK,SAAK,GAAG,YAAY,EAAE;IAQnC,cAAc,CAAC,KAAK,SAAK,GAAG,YAAY,EAAE;IAQ1C,UAAU,IAAI,MAAM;IAOpB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWtC;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI;IAqCtF,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKtC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE;IAQ5C,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIxC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI;IA2BzC,iFAAiF;IACjF,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG,IAAI;IA8B1E,2DAA2D;IAC3D,eAAe,IAAI,YAAY,EAAE;IAMjC,cAAc,IAAI,MAAM;IAKxB;;;;;;;OAOG;IACH,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE;IAmBrD,4EAA4E;IAC5E,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI;IAuBjD,eAAe,IAAI,MAAM;IAKzB;;;;OAIG;IACH,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE;IAYxD,oFAAoF;IACpF,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI;IAiBxD,mBAAmB,IAAI,MAAM;IAK7B,iFAAiF;IACjF,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE;IAQhE,mDAAmD;IACnD,cAAc,CAAC,KAAK,SAAK,GAAG,kBAAkB,EAAE;IAShD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAO5C,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQjD,0DAA0D;IAC1D,QAAQ,IAAI,IAAI;IAIhB,iDAAiD;IACjD,WAAW,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAIjC,KAAK,IAAI,IAAI;IAMb,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAItC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIzC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAGzC"}
|
|
@@ -43,9 +43,17 @@ function runTransaction(db, fn) {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
/** Bump when schema changes. Old DBs are dropped and rebuilt on next analyze --force. */
|
|
46
|
-
const SCHEMA_VERSION =
|
|
46
|
+
const SCHEMA_VERSION = 5;
|
|
47
47
|
export class EdgeStore {
|
|
48
48
|
db;
|
|
49
|
+
/**
|
|
50
|
+
* True when opening this DB found a stale SCHEMA_VERSION and wiped it (rebuild-on-bump).
|
|
51
|
+
* The data is gone until the next analyze repopulates it — callers that READ
|
|
52
|
+
* (vs. analyze, which repopulates) should treat the store as unavailable so they
|
|
53
|
+
* can tell the user to re-run analyze instead of serving an empty graph.
|
|
54
|
+
*/
|
|
55
|
+
_wasReset = false;
|
|
56
|
+
get wasReset() { return this._wasReset; }
|
|
49
57
|
constructor(db) {
|
|
50
58
|
this.db = db;
|
|
51
59
|
this.initSchema();
|
|
@@ -58,12 +66,17 @@ export class EdgeStore {
|
|
|
58
66
|
this.db.prepare('INSERT INTO schema_version (version) VALUES (?)').run(SCHEMA_VERSION);
|
|
59
67
|
}
|
|
60
68
|
else if (row.version !== SCHEMA_VERSION) {
|
|
69
|
+
this._wasReset = true;
|
|
61
70
|
this.db.exec(`
|
|
62
71
|
DROP TABLE IF EXISTS edges;
|
|
63
72
|
DROP TABLE IF EXISTS inheritance_edges;
|
|
64
73
|
DROP TABLE IF EXISTS nodes;
|
|
65
74
|
DROP TABLE IF EXISTS classes;
|
|
66
75
|
DROP TABLE IF EXISTS file_hashes;
|
|
76
|
+
DROP TABLE IF EXISTS decisions;
|
|
77
|
+
DROP TABLE IF EXISTS decision_edges;
|
|
78
|
+
DROP TABLE IF EXISTS provenance;
|
|
79
|
+
DROP TABLE IF EXISTS change_coupling;
|
|
67
80
|
DROP TABLE IF EXISTS schema_version;
|
|
68
81
|
CREATE TABLE schema_version (version INTEGER NOT NULL);
|
|
69
82
|
`);
|
|
@@ -137,6 +150,51 @@ export class EdgeStore {
|
|
|
137
150
|
);
|
|
138
151
|
|
|
139
152
|
CREATE VIRTUAL TABLE IF NOT EXISTS nodes_fts USING fts5(node_id UNINDEXED, name, tokenize='trigram');
|
|
153
|
+
|
|
154
|
+
-- Architectural decisions projected as first-class graph nodes (spec-16).
|
|
155
|
+
-- Derived from .openlore/decisions/pending.json; the JSON store stays
|
|
156
|
+
-- authoritative. Held in dedicated tables so code-node stats (hubs,
|
|
157
|
+
-- entry points, countNodes) and call-edge BFS are untouched.
|
|
158
|
+
CREATE TABLE IF NOT EXISTS decisions (
|
|
159
|
+
id TEXT PRIMARY KEY, -- graph node id "decision::<id>"
|
|
160
|
+
decision_id TEXT NOT NULL, -- original 8-char store id
|
|
161
|
+
title TEXT NOT NULL,
|
|
162
|
+
status TEXT NOT NULL,
|
|
163
|
+
rationale TEXT NOT NULL DEFAULT '',
|
|
164
|
+
consequences TEXT NOT NULL DEFAULT '',
|
|
165
|
+
affected_domains TEXT NOT NULL DEFAULT '[]',
|
|
166
|
+
affected_files TEXT NOT NULL DEFAULT '[]',
|
|
167
|
+
confidence TEXT,
|
|
168
|
+
supersedes TEXT
|
|
169
|
+
);
|
|
170
|
+
|
|
171
|
+
-- affects edges: decision node -> governed file path.
|
|
172
|
+
CREATE TABLE IF NOT EXISTS decision_edges (
|
|
173
|
+
decision_id TEXT NOT NULL, -- graph node id "decision::<id>"
|
|
174
|
+
file_path TEXT NOT NULL
|
|
175
|
+
);
|
|
176
|
+
CREATE INDEX IF NOT EXISTS idx_decision_edge_file ON decision_edges(file_path);
|
|
177
|
+
CREATE INDEX IF NOT EXISTS idx_decision_edge_dec ON decision_edges(decision_id);
|
|
178
|
+
|
|
179
|
+
-- Local provenance (spec-18): per-file last-author + recent authors + PRs,
|
|
180
|
+
-- derived from local git/gh. Capped upstream; one row per file, no graph bloat.
|
|
181
|
+
CREATE TABLE IF NOT EXISTS provenance (
|
|
182
|
+
file_path TEXT PRIMARY KEY,
|
|
183
|
+
last_author TEXT NOT NULL, -- JSON {name,email}
|
|
184
|
+
last_date TEXT,
|
|
185
|
+
last_commit TEXT,
|
|
186
|
+
last_subject TEXT,
|
|
187
|
+
recent_authors TEXT NOT NULL DEFAULT '[]', -- JSON Author[]
|
|
188
|
+
prs TEXT NOT NULL DEFAULT '[]' -- JSON PullRequest[]
|
|
189
|
+
);
|
|
190
|
+
|
|
191
|
+
-- Change coupling & volatility (spec-22): per-file churn + co-change pairs,
|
|
192
|
+
-- mined from local git history. One row per file; advisory caution signals.
|
|
193
|
+
CREATE TABLE IF NOT EXISTS change_coupling (
|
|
194
|
+
file_path TEXT PRIMARY KEY,
|
|
195
|
+
churn INTEGER NOT NULL DEFAULT 0,
|
|
196
|
+
coupled_with TEXT NOT NULL DEFAULT '[]' -- JSON CoupledFile[]
|
|
197
|
+
);
|
|
140
198
|
`);
|
|
141
199
|
}
|
|
142
200
|
// ── Edge queries ──────────────────────────────────────────────────────────────
|
|
@@ -236,6 +294,10 @@ export class EdgeStore {
|
|
|
236
294
|
/** Case-insensitive substring search on node name. FTS5 trigram for ≥3 chars, LIKE fallback otherwise. */
|
|
237
295
|
searchNodes(pattern, limit = 50) {
|
|
238
296
|
if (pattern.length >= 3) {
|
|
297
|
+
// Wrap as an FTS5 phrase so special characters in the symbol are literal —
|
|
298
|
+
// IaC resource names contain ':' (e.g. "Bucket:logs") and '.' which FTS5
|
|
299
|
+
// would otherwise read as column filters / operators (spec-17).
|
|
300
|
+
const phrase = `"${pattern.replace(/"/g, '""')}"`;
|
|
239
301
|
return this.db
|
|
240
302
|
.prepare(`
|
|
241
303
|
SELECT n.* FROM nodes_fts f
|
|
@@ -243,7 +305,7 @@ export class EdgeStore {
|
|
|
243
305
|
WHERE nodes_fts MATCH ? AND n.is_external = 0
|
|
244
306
|
LIMIT ?
|
|
245
307
|
`)
|
|
246
|
-
.all(
|
|
308
|
+
.all(phrase, limit).map(rawToFunctionNode);
|
|
247
309
|
}
|
|
248
310
|
return this.db
|
|
249
311
|
.prepare('SELECT * FROM nodes WHERE name LIKE ? AND is_external = 0 LIMIT ?')
|
|
@@ -347,6 +409,149 @@ export class EdgeStore {
|
|
|
347
409
|
}
|
|
348
410
|
});
|
|
349
411
|
}
|
|
412
|
+
// ── Decision queries / mutations (spec-16) ─────────────────────────────────────
|
|
413
|
+
/** Replace the projected decision graph wholesale (idempotent re-projection). */
|
|
414
|
+
insertDecisions(nodes, edges) {
|
|
415
|
+
const nodeStmt = this.db.prepare(`
|
|
416
|
+
INSERT OR REPLACE INTO decisions
|
|
417
|
+
(id, decision_id, title, status, rationale, consequences, affected_domains, affected_files, confidence, supersedes)
|
|
418
|
+
VALUES
|
|
419
|
+
(@id, @decisionId, @title, @status, @rationale, @consequences, @affectedDomains, @affectedFiles, @confidence, @supersedes)
|
|
420
|
+
`);
|
|
421
|
+
const edgeStmt = this.db.prepare('INSERT INTO decision_edges (decision_id, file_path) VALUES (?, ?)');
|
|
422
|
+
runTransaction(this.db, () => {
|
|
423
|
+
this.db.exec('DELETE FROM decisions; DELETE FROM decision_edges;');
|
|
424
|
+
for (const n of nodes) {
|
|
425
|
+
nodeStmt.run({
|
|
426
|
+
'@id': n.id,
|
|
427
|
+
'@decisionId': n.decisionId,
|
|
428
|
+
'@title': n.title,
|
|
429
|
+
'@status': n.status,
|
|
430
|
+
'@rationale': n.rationale,
|
|
431
|
+
'@consequences': n.consequences,
|
|
432
|
+
'@affectedDomains': JSON.stringify(n.affectedDomains),
|
|
433
|
+
'@affectedFiles': JSON.stringify(n.affectedFiles),
|
|
434
|
+
'@confidence': n.confidence ?? null,
|
|
435
|
+
'@supersedes': n.supersedes ?? null,
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
for (const e of edges)
|
|
439
|
+
edgeStmt.run(e.decisionNodeId, e.filePath);
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
/** Every projected decision node (deterministic order). */
|
|
443
|
+
getAllDecisions() {
|
|
444
|
+
return this.db.prepare('SELECT * FROM decisions ORDER BY id').all().map(rawToDecisionNode);
|
|
445
|
+
}
|
|
446
|
+
countDecisions() {
|
|
447
|
+
const row = this.db.prepare('SELECT COUNT(*) as n FROM decisions').get();
|
|
448
|
+
return row.n;
|
|
449
|
+
}
|
|
450
|
+
/**
|
|
451
|
+
* Governing decisions for a set of files — the deterministic graph join that
|
|
452
|
+
* replaces orient's runtime affectedFiles set-membership filter (spec-16).
|
|
453
|
+
*
|
|
454
|
+
* Path forms differ across callers (edge-store nodes are repo-relative; some
|
|
455
|
+
* callers pass absolute paths), and decisions are few, so we match in JS with a
|
|
456
|
+
* tolerant suffix comparator rather than relying on exact SQL equality.
|
|
457
|
+
*/
|
|
458
|
+
getDecisionsForFiles(files) {
|
|
459
|
+
if (files.length === 0)
|
|
460
|
+
return [];
|
|
461
|
+
const edgeRows = this.db
|
|
462
|
+
.prepare('SELECT decision_id, file_path FROM decision_edges')
|
|
463
|
+
.all();
|
|
464
|
+
if (edgeRows.length === 0)
|
|
465
|
+
return [];
|
|
466
|
+
const wanted = files.filter(Boolean);
|
|
467
|
+
const matchedIds = new Set();
|
|
468
|
+
for (const row of edgeRows) {
|
|
469
|
+
if (wanted.some(f => pathsMatch(f, row.file_path)))
|
|
470
|
+
matchedIds.add(row.decision_id);
|
|
471
|
+
}
|
|
472
|
+
if (matchedIds.size === 0)
|
|
473
|
+
return [];
|
|
474
|
+
return this.getAllDecisions().filter(d => matchedIds.has(d.id));
|
|
475
|
+
}
|
|
476
|
+
// ── Provenance queries / mutations (spec-18) ───────────────────────────────────
|
|
477
|
+
/** Replace the per-file provenance wholesale (idempotent re-extraction). */
|
|
478
|
+
insertProvenance(records) {
|
|
479
|
+
const stmt = this.db.prepare(`
|
|
480
|
+
INSERT OR REPLACE INTO provenance
|
|
481
|
+
(file_path, last_author, last_date, last_commit, last_subject, recent_authors, prs)
|
|
482
|
+
VALUES
|
|
483
|
+
(@filePath, @lastAuthor, @lastDate, @lastCommit, @lastSubject, @recentAuthors, @prs)
|
|
484
|
+
`);
|
|
485
|
+
runTransaction(this.db, () => {
|
|
486
|
+
this.db.exec('DELETE FROM provenance;');
|
|
487
|
+
for (const r of records) {
|
|
488
|
+
stmt.run({
|
|
489
|
+
'@filePath': r.filePath,
|
|
490
|
+
'@lastAuthor': JSON.stringify(r.lastAuthor),
|
|
491
|
+
'@lastDate': r.lastDate ?? null,
|
|
492
|
+
'@lastCommit': r.lastCommit ?? null,
|
|
493
|
+
'@lastSubject': r.lastSubject ?? null,
|
|
494
|
+
'@recentAuthors': JSON.stringify(r.recentAuthors),
|
|
495
|
+
'@prs': JSON.stringify(r.prs),
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
});
|
|
499
|
+
}
|
|
500
|
+
countProvenance() {
|
|
501
|
+
const row = this.db.prepare('SELECT COUNT(*) as n FROM provenance').get();
|
|
502
|
+
return row.n;
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Provenance for a set of files. Path forms differ across callers (edge-store
|
|
506
|
+
* nodes are repo-relative; some callers pass absolute paths), so match with the
|
|
507
|
+
* same tolerant comparator used for decisions (spec-18).
|
|
508
|
+
*/
|
|
509
|
+
getProvenanceForFiles(files) {
|
|
510
|
+
if (files.length === 0)
|
|
511
|
+
return [];
|
|
512
|
+
const rows = this.db.prepare('SELECT * FROM provenance').all();
|
|
513
|
+
if (rows.length === 0)
|
|
514
|
+
return [];
|
|
515
|
+
const wanted = files.filter(Boolean);
|
|
516
|
+
return rows
|
|
517
|
+
.filter(r => wanted.some(f => pathsMatch(f, r.file_path)))
|
|
518
|
+
.map(rawToProvenance);
|
|
519
|
+
}
|
|
520
|
+
// ── Change coupling & volatility (spec-22) ─────────────────────────────────────
|
|
521
|
+
/** Replace the per-file change-coupling snapshot wholesale (idempotent re-mine). */
|
|
522
|
+
insertChangeCoupling(result) {
|
|
523
|
+
const stmt = this.db.prepare('INSERT OR REPLACE INTO change_coupling (file_path, churn, coupled_with) VALUES (@filePath, @churn, @coupledWith)');
|
|
524
|
+
runTransaction(this.db, () => {
|
|
525
|
+
this.db.exec('DELETE FROM change_coupling;');
|
|
526
|
+
// Persist every file that has churn (coupling may be empty for some).
|
|
527
|
+
for (const [filePath, churn] of result.churn) {
|
|
528
|
+
stmt.run({
|
|
529
|
+
'@filePath': filePath,
|
|
530
|
+
'@churn': churn,
|
|
531
|
+
'@coupledWith': JSON.stringify(result.coupling.get(filePath) ?? []),
|
|
532
|
+
});
|
|
533
|
+
}
|
|
534
|
+
});
|
|
535
|
+
}
|
|
536
|
+
countChangeCoupling() {
|
|
537
|
+
const row = this.db.prepare('SELECT COUNT(*) as n FROM change_coupling').get();
|
|
538
|
+
return row.n;
|
|
539
|
+
}
|
|
540
|
+
/** Change-coupling records for a set of files (tolerant path match, spec-22). */
|
|
541
|
+
getChangeCouplingForFiles(files) {
|
|
542
|
+
if (files.length === 0)
|
|
543
|
+
return [];
|
|
544
|
+
const rows = this.db.prepare('SELECT * FROM change_coupling').all();
|
|
545
|
+
if (rows.length === 0)
|
|
546
|
+
return [];
|
|
547
|
+
const wanted = files.filter(Boolean);
|
|
548
|
+
return rows.filter(r => wanted.some(f => pathsMatch(f, r.file_path))).map(rawToCoupling);
|
|
549
|
+
}
|
|
550
|
+
/** Top-churn (most volatile) files, descending. */
|
|
551
|
+
getTopVolatile(limit = 20) {
|
|
552
|
+
return this.db.prepare('SELECT * FROM change_coupling ORDER BY churn DESC, file_path ASC LIMIT ?')
|
|
553
|
+
.all(limit).map(rawToCoupling);
|
|
554
|
+
}
|
|
350
555
|
// ── Content-hash cache ────────────────────────────────────────────────────────
|
|
351
556
|
getFileHash(filePath) {
|
|
352
557
|
const row = this.db
|
|
@@ -361,7 +566,7 @@ export class EdgeStore {
|
|
|
361
566
|
}
|
|
362
567
|
/** Drop all graph data — used by full analyze rebuild. */
|
|
363
568
|
clearAll() {
|
|
364
|
-
this.db.exec('DELETE FROM edges; DELETE FROM inheritance_edges; DELETE FROM nodes; DELETE FROM classes; DELETE FROM nodes_fts; DELETE FROM file_hashes;');
|
|
569
|
+
this.db.exec('DELETE FROM edges; DELETE FROM inheritance_edges; DELETE FROM nodes; DELETE FROM classes; DELETE FROM nodes_fts; DELETE FROM file_hashes; DELETE FROM decisions; DELETE FROM decision_edges; DELETE FROM provenance; DELETE FROM change_coupling;');
|
|
365
570
|
}
|
|
366
571
|
/** Run fn inside a single SQLite transaction. */
|
|
367
572
|
transaction(fn) {
|
|
@@ -381,6 +586,49 @@ export class EdgeStore {
|
|
|
381
586
|
return join(outputDir, ARTIFACT_CALL_GRAPH_DB);
|
|
382
587
|
}
|
|
383
588
|
}
|
|
589
|
+
function rawToCoupling(r) {
|
|
590
|
+
return {
|
|
591
|
+
filePath: r.file_path,
|
|
592
|
+
churn: r.churn,
|
|
593
|
+
coupledWith: JSON.parse(r.coupled_with),
|
|
594
|
+
};
|
|
595
|
+
}
|
|
596
|
+
function rawToProvenance(r) {
|
|
597
|
+
return {
|
|
598
|
+
filePath: r.file_path,
|
|
599
|
+
lastAuthor: JSON.parse(r.last_author),
|
|
600
|
+
lastDate: r.last_date ?? '',
|
|
601
|
+
lastCommit: r.last_commit ?? '',
|
|
602
|
+
lastSubject: r.last_subject ?? '',
|
|
603
|
+
recentAuthors: JSON.parse(r.recent_authors),
|
|
604
|
+
prs: JSON.parse(r.prs),
|
|
605
|
+
};
|
|
606
|
+
}
|
|
607
|
+
/** Tolerant path equality: exact, or one path is a suffix of the other. */
|
|
608
|
+
function pathsMatch(a, b) {
|
|
609
|
+
if (a === b)
|
|
610
|
+
return true;
|
|
611
|
+
const na = a.replace(/^\/+/, '');
|
|
612
|
+
const nb = b.replace(/^\/+/, '');
|
|
613
|
+
if (na === nb)
|
|
614
|
+
return true;
|
|
615
|
+
return na.endsWith('/' + nb) || nb.endsWith('/' + na);
|
|
616
|
+
}
|
|
617
|
+
function rawToDecisionNode(r) {
|
|
618
|
+
return {
|
|
619
|
+
id: r.id,
|
|
620
|
+
decisionId: r.decision_id,
|
|
621
|
+
kind: 'decision',
|
|
622
|
+
title: r.title,
|
|
623
|
+
status: r.status,
|
|
624
|
+
rationale: r.rationale,
|
|
625
|
+
consequences: r.consequences,
|
|
626
|
+
affectedDomains: JSON.parse(r.affected_domains),
|
|
627
|
+
affectedFiles: JSON.parse(r.affected_files),
|
|
628
|
+
confidence: (r.confidence ?? 'medium'),
|
|
629
|
+
...(r.supersedes ? { supersedes: r.supersedes } : {}),
|
|
630
|
+
};
|
|
631
|
+
}
|
|
384
632
|
function rawToCallEdge(r) {
|
|
385
633
|
return {
|
|
386
634
|
callerId: r.caller_id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge-store.js","sourceRoot":"","sources":["../../../src/core/services/edge-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"edge-store.js","sourceRoot":"","sources":["../../../src/core/services/edge-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,15 @@
|
|
|
4
4
|
* Provides a clean interface for LLM interactions with proper error handling,
|
|
5
5
|
* retry logic, token management, and cost tracking.
|
|
6
6
|
*/
|
|
7
|
+
/**
|
|
8
|
+
* Strip NUL bytes from a CLI prompt. Node's `child_process` rejects arguments
|
|
9
|
+
* that contain a NUL ("must be a string without null bytes"), and a prompt built
|
|
10
|
+
* from a git diff or file content can carry one (binary-ish content, a stray
|
|
11
|
+
* control byte in source). Every CLI-based provider applies this before spawning,
|
|
12
|
+
* so one bad byte never aborts an otherwise-valid call (e.g. the decisions
|
|
13
|
+
* extractor consolidating a diff).
|
|
14
|
+
*/
|
|
15
|
+
export declare function sanitizeCliPrompt(prompt: string): string;
|
|
7
16
|
/**
|
|
8
17
|
* Claude Code CLI provider
|
|
9
18
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-service.d.ts","sourceRoot":"","sources":["../../../src/core/services/llm-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"llm-service.d.ts","sourceRoot":"","sources":["../../../src/core/services/llm-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,17 @@ import { writeFile, mkdir } from 'node:fs/promises';
|
|
|
8
8
|
import { join } from 'node:path';
|
|
9
9
|
import logger from '../../utils/logger.js';
|
|
10
10
|
import { CLAUDE_MAX_CONTEXT_TOKENS, CLAUDE_MAX_OUTPUT_TOKENS, MISTRAL_VIBE_MAX_CONTEXT_TOKENS, MISTRAL_VIBE_MAX_OUTPUT_TOKENS, LLM_CLI_MAX_BUFFER_BYTES, LLM_CLI_TIMEOUT_MS, DEFAULT_ANTHROPIC_MODEL, DEFAULT_OPENAI_MODEL, DEFAULT_OPENAI_COMPAT_MODEL, DEFAULT_COPILOT_MODEL, DEFAULT_GEMINI_MODEL, DEFAULT_LLM_MAX_RETRIES, DEFAULT_LLM_INITIAL_DELAY_MS, DEFAULT_LLM_MAX_DELAY_MS, DEFAULT_LLM_TIMEOUT_MS, DEFAULT_LLM_COST_WARNING_THRESHOLD, CONTEXT_LIMIT_WARNING_RATIO, OPENLORE_DIR, OPENLORE_LOGS_SUBDIR, } from '../../constants.js';
|
|
11
|
+
/**
|
|
12
|
+
* Strip NUL bytes from a CLI prompt. Node's `child_process` rejects arguments
|
|
13
|
+
* that contain a NUL ("must be a string without null bytes"), and a prompt built
|
|
14
|
+
* from a git diff or file content can carry one (binary-ish content, a stray
|
|
15
|
+
* control byte in source). Every CLI-based provider applies this before spawning,
|
|
16
|
+
* so one bad byte never aborts an otherwise-valid call (e.g. the decisions
|
|
17
|
+
* extractor consolidating a diff).
|
|
18
|
+
*/
|
|
19
|
+
export function sanitizeCliPrompt(prompt) {
|
|
20
|
+
return prompt.includes('\0') ? prompt.replace(/\0/g, '') : prompt;
|
|
21
|
+
}
|
|
11
22
|
// ============================================================================
|
|
12
23
|
// CLAUDE CODE PROVIDER (uses local `claude` CLI, no API key required)
|
|
13
24
|
// ============================================================================
|
|
@@ -35,7 +46,7 @@ export class ClaudeCodeProvider {
|
|
|
35
46
|
const fullPrompt = request.systemPrompt
|
|
36
47
|
? `${request.systemPrompt}\n\n---\n\n${request.userPrompt}`
|
|
37
48
|
: request.userPrompt;
|
|
38
|
-
const args = ['-p', fullPrompt, '--output-format', 'json'];
|
|
49
|
+
const args = ['-p', sanitizeCliPrompt(fullPrompt), '--output-format', 'json'];
|
|
39
50
|
if (this.model)
|
|
40
51
|
args.push('--model', this.model);
|
|
41
52
|
// Remove Claude Code session env vars so the CLI can run inside an existing session
|
|
@@ -108,7 +119,7 @@ export class MistralVibeProvider {
|
|
|
108
119
|
? `${request.systemPrompt}\n\n---\n\n${request.userPrompt}`
|
|
109
120
|
: request.userPrompt;
|
|
110
121
|
// vibe CLI: -p for prompt, --output json for JSON, --agent for model/agent name
|
|
111
|
-
const args = ['-p', fullPrompt, '--output', 'json'];
|
|
122
|
+
const args = ['-p', sanitizeCliPrompt(fullPrompt), '--output', 'json'];
|
|
112
123
|
if (this.model)
|
|
113
124
|
args.push('--agent', this.model);
|
|
114
125
|
// Use MISTRAL_VIBE_CLI if set (standalone install not on PATH), else 'vibe'
|
|
@@ -891,7 +902,7 @@ export class GeminiCLIProvider {
|
|
|
891
902
|
? `${request.systemPrompt}\n\n---\n\n${request.userPrompt}`
|
|
892
903
|
: request.userPrompt;
|
|
893
904
|
// gemini CLI: -p for prompt, --output-format json, -m for model
|
|
894
|
-
const args = ['-p', fullPrompt, '--output-format', 'json'];
|
|
905
|
+
const args = ['-p', sanitizeCliPrompt(fullPrompt), '--output-format', 'json'];
|
|
895
906
|
if (this.model)
|
|
896
907
|
args.push('-m', this.model);
|
|
897
908
|
const geminiCLIBin = process.env.GEMINI_CLI ?? 'gemini';
|
|
@@ -968,7 +979,7 @@ export class CursorAgentProvider {
|
|
|
968
979
|
const fullPrompt = request.systemPrompt
|
|
969
980
|
? `${request.systemPrompt}\n\n---\n\n${request.userPrompt}`
|
|
970
981
|
: request.userPrompt;
|
|
971
|
-
const args = ['-p', fullPrompt, '--output-format', 'json'];
|
|
982
|
+
const args = ['-p', sanitizeCliPrompt(fullPrompt), '--output-format', 'json'];
|
|
972
983
|
if (this.model)
|
|
973
984
|
args.push('--model', this.model);
|
|
974
985
|
const bin = process.env.CURSOR_AGENT_CLI ?? 'cursor-agent';
|