@roarpeng/graphflow 1.7.12 → 1.7.15
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/CHANGELOG.md +42 -0
- package/README.md +107 -486
- package/dist/config/loader.js +4 -4
- package/dist/config/loader.js.map +1 -1
- package/dist/config/paths.js +1 -1
- package/dist/config/paths.js.map +1 -1
- package/dist/config/schema.d.ts +1 -1
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/core/agent-delegation.d.ts +25 -0
- package/dist/core/agent-delegation.d.ts.map +1 -1
- package/dist/core/agent-delegation.js +109 -1
- package/dist/core/agent-delegation.js.map +1 -1
- package/dist/core/merge-agent-insight.d.ts.map +1 -1
- package/dist/core/merge-agent-insight.js +32 -2
- package/dist/core/merge-agent-insight.js.map +1 -1
- package/dist/core/orchestrator-context.d.ts.map +1 -1
- package/dist/core/orchestrator-context.js +1 -0
- package/dist/core/orchestrator-context.js.map +1 -1
- package/dist/core/orchestrator.js +6 -1
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/types.d.ts +2 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/graph/client-factory.d.ts.map +1 -1
- package/dist/graph/client-factory.js +14 -0
- package/dist/graph/client-factory.js.map +1 -1
- package/dist/graph/context-slicer-types.d.ts +2 -0
- package/dist/graph/context-slicer-types.d.ts.map +1 -1
- package/dist/graph/context-slicer-types.js.map +1 -1
- package/dist/graph/context-slicer.d.ts.map +1 -1
- package/dist/graph/context-slicer.js +7 -6
- package/dist/graph/context-slicer.js.map +1 -1
- package/dist/graph/file-indexer-edges.d.ts.map +1 -1
- package/dist/graph/file-indexer-edges.js +8 -4
- package/dist/graph/file-indexer-edges.js.map +1 -1
- package/dist/graph/graph-compression.d.ts +7 -0
- package/dist/graph/graph-compression.d.ts.map +1 -1
- package/dist/graph/graph-compression.js +64 -1
- package/dist/graph/graph-compression.js.map +1 -1
- package/dist/graph/graph-utils.d.ts.map +1 -1
- package/dist/graph/graph-utils.js +16 -0
- package/dist/graph/graph-utils.js.map +1 -1
- package/dist/graph/sqlite-client.d.ts +9 -0
- package/dist/graph/sqlite-client.d.ts.map +1 -1
- package/dist/graph/sqlite-client.js +66 -10
- package/dist/graph/sqlite-client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/learning/hnsw-index.d.ts +30 -1
- package/dist/learning/hnsw-index.d.ts.map +1 -1
- package/dist/learning/hnsw-index.js +134 -0
- package/dist/learning/hnsw-index.js.map +1 -1
- package/dist/skills/index.d.ts +7 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +5 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/surfaces/cli/index.js +34 -0
- package/dist/surfaces/cli/index.js.map +1 -1
- package/dist/surfaces/cli/output.d.ts.map +1 -1
- package/dist/surfaces/cli/output.js +2 -0
- package/dist/surfaces/cli/output.js.map +1 -1
- package/dist/surfaces/cli/runtime/env.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/env.js +4 -0
- package/dist/surfaces/cli/runtime/env.js.map +1 -1
- package/dist/surfaces/cli/runtime/graph.d.ts +55 -0
- package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/graph.js +110 -1
- package/dist/surfaces/cli/runtime/graph.js.map +1 -1
- package/dist/surfaces/cli/runtime/helpers.js +1 -1
- package/dist/surfaces/cli/runtime/helpers.js.map +1 -1
- package/dist/surfaces/cli/runtime/routing.d.ts +2 -2
- package/dist/surfaces/cli/runtime/routing.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/routing.js +19 -6
- package/dist/surfaces/cli/runtime/routing.js.map +1 -1
- package/dist/surfaces/cli/runtime/types.d.ts +17 -1
- package/dist/surfaces/cli/runtime/types.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime.d.ts +1 -1
- package/dist/surfaces/cli/runtime.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime.js +4 -1
- package/dist/surfaces/cli/runtime.js.map +1 -1
- package/dist/surfaces/mcp/tool-definitions.js +2 -2
- package/dist/surfaces/mcp/tool-definitions.js.map +1 -1
- package/dist/surfaces/mcp/tool-handlers.d.ts.map +1 -1
- package/dist/surfaces/mcp/tool-handlers.js +3 -1
- package/dist/surfaces/mcp/tool-handlers.js.map +1 -1
- package/dist/surfaces/trae-skill/graphflow/SKILL.md +4 -0
- package/package.json +2 -1
- package/src/surfaces/trae-skill/graphflow/SKILL.md +4 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GraphifySqliteClient = void 0;
|
|
4
|
+
exports.buildSearchText = buildSearchText;
|
|
4
5
|
const node_fs_1 = require("node:fs");
|
|
5
6
|
const node_path_1 = require("node:path");
|
|
6
7
|
const node_module_1 = require("node:module");
|
|
@@ -22,24 +23,25 @@ CREATE TABLE IF NOT EXISTS nodes(
|
|
|
22
23
|
id TEXT PRIMARY KEY,
|
|
23
24
|
type TEXT NOT NULL,
|
|
24
25
|
content TEXT NOT NULL,
|
|
25
|
-
metadata TEXT
|
|
26
|
+
metadata TEXT,
|
|
27
|
+
searchtext TEXT NOT NULL DEFAULT ''
|
|
26
28
|
);
|
|
27
29
|
CREATE INDEX IF NOT EXISTS idx_nodes_type ON nodes(type);
|
|
28
30
|
CREATE VIRTUAL TABLE IF NOT EXISTS nodes_fts USING fts5(
|
|
29
|
-
|
|
31
|
+
searchtext,
|
|
30
32
|
content='nodes',
|
|
31
33
|
content_rowid='rowid',
|
|
32
34
|
tokenize='unicode61 remove_diacritics 2'
|
|
33
35
|
);
|
|
34
36
|
CREATE TRIGGER IF NOT EXISTS nodes_ai AFTER INSERT ON nodes BEGIN
|
|
35
|
-
INSERT INTO nodes_fts(rowid,
|
|
37
|
+
INSERT INTO nodes_fts(rowid, searchtext) VALUES (new.rowid, new.searchtext);
|
|
36
38
|
END;
|
|
37
39
|
CREATE TRIGGER IF NOT EXISTS nodes_ad AFTER DELETE ON nodes BEGIN
|
|
38
|
-
INSERT INTO nodes_fts(nodes_fts, rowid,
|
|
40
|
+
INSERT INTO nodes_fts(nodes_fts, rowid, searchtext) VALUES('delete', old.rowid, old.searchtext);
|
|
39
41
|
END;
|
|
40
42
|
CREATE TRIGGER IF NOT EXISTS nodes_au AFTER UPDATE ON nodes BEGIN
|
|
41
|
-
INSERT INTO nodes_fts(nodes_fts, rowid,
|
|
42
|
-
INSERT INTO nodes_fts(rowid,
|
|
43
|
+
INSERT INTO nodes_fts(nodes_fts, rowid, searchtext) VALUES('delete', old.rowid, old.searchtext);
|
|
44
|
+
INSERT INTO nodes_fts(rowid, searchtext) VALUES (new.rowid, new.searchtext);
|
|
43
45
|
END;
|
|
44
46
|
CREATE TABLE IF NOT EXISTS edges(
|
|
45
47
|
from_id TEXT NOT NULL,
|
|
@@ -51,6 +53,17 @@ CREATE INDEX IF NOT EXISTS idx_edges_from ON edges(from_id);
|
|
|
51
53
|
CREATE INDEX IF NOT EXISTS idx_edges_to ON edges(to_id);
|
|
52
54
|
CREATE INDEX IF NOT EXISTS idx_edges_relation ON edges(relation);
|
|
53
55
|
`;
|
|
56
|
+
/**
|
|
57
|
+
* FTS indexes `searchtext` = raw content + tokenizer-aligned subtokens.
|
|
58
|
+
* Without this, camelCase identifiers are indexed as ONE token by FTS5
|
|
59
|
+
* ("alphahandler") while queries split into ["alpha","handler"], and the
|
|
60
|
+
* suffix token can never match (FTS5 only supports prefix queries) — making
|
|
61
|
+
* camelCase symbols unfindable on the sqlite/auto transports.
|
|
62
|
+
*/
|
|
63
|
+
function buildSearchText(content) {
|
|
64
|
+
const subtokens = (0, graph_utils_1.tokenizeForIndex)(content);
|
|
65
|
+
return subtokens.length > 0 ? `${content} ${subtokens.join(" ")}` : content;
|
|
66
|
+
}
|
|
54
67
|
function rowToNode(row) {
|
|
55
68
|
const node = {
|
|
56
69
|
id: row.id,
|
|
@@ -103,18 +116,61 @@ class GraphifySqliteClient {
|
|
|
103
116
|
const currentVersion = this.db.pragma("user_version", { simple: true });
|
|
104
117
|
if (currentVersion < 1) {
|
|
105
118
|
this.db.exec(SCHEMA_SQL);
|
|
106
|
-
this.db.pragma("user_version =
|
|
119
|
+
this.db.pragma("user_version = 2");
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (currentVersion < 2) {
|
|
123
|
+
// v1 → v2: add searchtext column, rebuild FTS over tokenizer-aligned text.
|
|
124
|
+
this.migrateV1ToV2();
|
|
125
|
+
this.db.pragma("user_version = 2");
|
|
107
126
|
}
|
|
108
127
|
}
|
|
128
|
+
migrateV1ToV2() {
|
|
129
|
+
this.db.exec(`
|
|
130
|
+
ALTER TABLE nodes ADD COLUMN searchtext TEXT NOT NULL DEFAULT '';
|
|
131
|
+
DROP TRIGGER IF EXISTS nodes_ai;
|
|
132
|
+
DROP TRIGGER IF EXISTS nodes_ad;
|
|
133
|
+
DROP TRIGGER IF EXISTS nodes_au;
|
|
134
|
+
DROP TABLE IF EXISTS nodes_fts;
|
|
135
|
+
`);
|
|
136
|
+
// Backfill searchtext in JS (tokenizeForIndex is not available in SQL).
|
|
137
|
+
const rows = this.db.prepare(`SELECT rowid, content FROM nodes`).all();
|
|
138
|
+
const update = this.db.prepare(`UPDATE nodes SET searchtext = ? WHERE rowid = ?`);
|
|
139
|
+
const backfill = this.db.transaction((batch) => {
|
|
140
|
+
for (const row of batch) {
|
|
141
|
+
update.run(buildSearchText(row.content), row.rowid);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
backfill(rows);
|
|
145
|
+
this.db.exec(`
|
|
146
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS nodes_fts USING fts5(
|
|
147
|
+
searchtext,
|
|
148
|
+
content='nodes',
|
|
149
|
+
content_rowid='rowid',
|
|
150
|
+
tokenize='unicode61 remove_diacritics 2'
|
|
151
|
+
);
|
|
152
|
+
CREATE TRIGGER IF NOT EXISTS nodes_ai AFTER INSERT ON nodes BEGIN
|
|
153
|
+
INSERT INTO nodes_fts(rowid, searchtext) VALUES (new.rowid, new.searchtext);
|
|
154
|
+
END;
|
|
155
|
+
CREATE TRIGGER IF NOT EXISTS nodes_ad AFTER DELETE ON nodes BEGIN
|
|
156
|
+
INSERT INTO nodes_fts(nodes_fts, rowid, searchtext) VALUES('delete', old.rowid, old.searchtext);
|
|
157
|
+
END;
|
|
158
|
+
CREATE TRIGGER IF NOT EXISTS nodes_au AFTER UPDATE ON nodes BEGIN
|
|
159
|
+
INSERT INTO nodes_fts(nodes_fts, rowid, searchtext) VALUES('delete', old.rowid, old.searchtext);
|
|
160
|
+
INSERT INTO nodes_fts(rowid, searchtext) VALUES (new.rowid, new.searchtext);
|
|
161
|
+
END;
|
|
162
|
+
INSERT INTO nodes_fts(nodes_fts) VALUES('rebuild');
|
|
163
|
+
`);
|
|
164
|
+
}
|
|
109
165
|
async upsertNodes(nodes) {
|
|
110
166
|
if (nodes.length === 0)
|
|
111
167
|
return;
|
|
112
|
-
const stmt = this.db.prepare(`INSERT INTO nodes(id, type, content, metadata) VALUES(?, ?, ?, ?)
|
|
113
|
-
ON CONFLICT(id) DO UPDATE SET type=excluded.type, content=excluded.content, metadata=excluded.metadata`);
|
|
168
|
+
const stmt = this.db.prepare(`INSERT INTO nodes(id, type, content, metadata, searchtext) VALUES(?, ?, ?, ?, ?)
|
|
169
|
+
ON CONFLICT(id) DO UPDATE SET type=excluded.type, content=excluded.content, metadata=excluded.metadata, searchtext=excluded.searchtext`);
|
|
114
170
|
const tx = this.db.transaction((batch) => {
|
|
115
171
|
for (const n of batch) {
|
|
116
172
|
const metaJson = n.metadata !== undefined ? JSON.stringify(n.metadata) : null;
|
|
117
|
-
stmt.run(n.id, n.type, n.content, metaJson);
|
|
173
|
+
stmt.run(n.id, n.type, n.content, metaJson, buildSearchText(n.content));
|
|
118
174
|
}
|
|
119
175
|
});
|
|
120
176
|
tx(nodes);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-client.js","sourceRoot":"","sources":["../../src/graph/sqlite-client.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"sqlite-client.js","sourceRoot":"","sources":["../../src/graph/sqlite-client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export { parseCliOptions, formatCliResult, type CliCommandResult } from "./surfa
|
|
|
5
5
|
export { createMcpServer, executeToolCall, getToolDefinitions, startStdioServer, } from "./surfaces/mcp/server";
|
|
6
6
|
export type { TaskRunResult } from "./core/types";
|
|
7
7
|
export { hasUsableLlmProvider } from "./config/llm-availability";
|
|
8
|
-
export { buildAgentDelegatedPlanInsight, buildAgentInsightWorkItems, summarizeInsightForContext, type AgentDelegatedPlanInsight, type AgentDelegationMode, type AgentWorkItem, } from "./core/agent-delegation";
|
|
8
|
+
export { buildAgentDelegatedPlanInsight, buildAgentDelegatedSimplePlan, buildAgentInsightWorkItems, summarizeInsightForContext, SIMPLE_PLAN_BRIDGE_REQUIRED_IDS, type AgentDelegatedPlanInsight, type AgentDelegationMode, type AgentWorkItem, } from "./core/agent-delegation";
|
|
9
9
|
export { planInsightResult, type PlanInsightResult } from "./surfaces/cli/runtime/routing";
|
|
10
10
|
export { createGraphClient, type GraphClient, } from "./graph/client-factory";
|
|
11
11
|
export { validateConfig, loadConfig, loadConfigSafe, type LoadConfigResult, validateConfigDetailed, type ConfigValidationResult, type ValidationIssue } from "./config/loader";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,OAAO,EACP,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,EAC7B,0BAA0B,EAC1B,qBAAqB,EACrB,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,8BAA8B,EAC9B,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC9G,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,0BAA0B,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAC3F,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC/K,OAAO,EACL,eAAe,EACf,WAAW,EACX,UAAU,EACV,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,OAAO,EACP,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,EAC7B,0BAA0B,EAC1B,qBAAqB,EACrB,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,8BAA8B,EAC9B,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC9G,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,EAC1B,0BAA0B,EAC1B,+BAA+B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAC3F,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,sBAAsB,EAAE,KAAK,sBAAsB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC/K,OAAO,EACL,eAAe,EACf,WAAW,EACX,UAAU,EACV,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.graphflowSkills = exports.validateConfigDetailed = exports.loadConfigSafe = exports.loadConfig = exports.validateConfig = exports.createGraphClient = exports.planInsightResult = exports.SIMPLE_PLAN_BRIDGE_REQUIRED_IDS = exports.summarizeInsightForContext = exports.buildAgentInsightWorkItems = exports.buildAgentDelegatedSimplePlan = exports.buildAgentDelegatedPlanInsight = exports.hasUsableLlmProvider = exports.startStdioServer = exports.getToolDefinitions = exports.executeToolCall = exports.createMcpServer = exports.formatCliResult = exports.parseCliOptions = exports.startFileWatcherIfEnabled = exports.runLearningNightlyResult = exports.runLearningNightly = exports.repairUnsafeWindowsMcpCommands = exports.installMcpToDetectedAgents = exports.formatModelConfigGuide = exports.detectInstalledAgents = exports.assertGraphFlowRuntime = exports.planAndBrainstormResult = exports.planAndBrainstorm = exports.diagnoseRoutingResult = exports.diagnoseRouting = exports.resolveConfig = exports.getSkillInsights = exports.inspectGraph = exports.indexGraph = exports.saveGraphFlowSettings = exports.validateSettingsForRouting = exports.validateSettingsForGraphIndex = exports.indexGraphFromSettings = exports.testRoutingAndIndexGraph = exports.getSettingsPanelStatus = exports.getGraphFlowSettings = exports.expandAnchor = exports.previewContext = exports.mergeAgentInsightResult = exports.submitAgentInsightResult = exports.reportOutcome = exports.runTaskResult = exports.runTask = exports.orchestrate = void 0;
|
|
4
|
+
exports.listSkills = exports.invokeSkill = void 0;
|
|
4
5
|
var orchestrator_1 = require("./core/orchestrator");
|
|
5
6
|
Object.defineProperty(exports, "orchestrate", { enumerable: true, get: function () { return orchestrator_1.orchestrate; } });
|
|
6
7
|
var runtime_1 = require("./surfaces/cli/runtime");
|
|
@@ -46,8 +47,10 @@ var llm_availability_1 = require("./config/llm-availability");
|
|
|
46
47
|
Object.defineProperty(exports, "hasUsableLlmProvider", { enumerable: true, get: function () { return llm_availability_1.hasUsableLlmProvider; } });
|
|
47
48
|
var agent_delegation_1 = require("./core/agent-delegation");
|
|
48
49
|
Object.defineProperty(exports, "buildAgentDelegatedPlanInsight", { enumerable: true, get: function () { return agent_delegation_1.buildAgentDelegatedPlanInsight; } });
|
|
50
|
+
Object.defineProperty(exports, "buildAgentDelegatedSimplePlan", { enumerable: true, get: function () { return agent_delegation_1.buildAgentDelegatedSimplePlan; } });
|
|
49
51
|
Object.defineProperty(exports, "buildAgentInsightWorkItems", { enumerable: true, get: function () { return agent_delegation_1.buildAgentInsightWorkItems; } });
|
|
50
52
|
Object.defineProperty(exports, "summarizeInsightForContext", { enumerable: true, get: function () { return agent_delegation_1.summarizeInsightForContext; } });
|
|
53
|
+
Object.defineProperty(exports, "SIMPLE_PLAN_BRIDGE_REQUIRED_IDS", { enumerable: true, get: function () { return agent_delegation_1.SIMPLE_PLAN_BRIDGE_REQUIRED_IDS; } });
|
|
51
54
|
var routing_1 = require("./surfaces/cli/runtime/routing");
|
|
52
55
|
Object.defineProperty(exports, "planInsightResult", { enumerable: true, get: function () { return routing_1.planInsightResult; } });
|
|
53
56
|
var client_factory_1 = require("./graph/client-factory");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,oDAA2E;AAAlE,2GAAA,WAAW,OAAA;AACpB,kDA+BgC;AA9B9B,kGAAA,OAAO,OAAA;AACP,wGAAA,aAAa,OAAA;AACb,wGAAA,aAAa,OAAA;AACb,mHAAA,wBAAwB,OAAA;AACxB,kHAAA,uBAAuB,OAAA;AACvB,yGAAA,cAAc,OAAA;AACd,uGAAA,YAAY,OAAA;AACZ,+GAAA,oBAAoB,OAAA;AACpB,iHAAA,sBAAsB,OAAA;AACtB,mHAAA,wBAAwB,OAAA;AACxB,iHAAA,sBAAsB,OAAA;AACtB,wHAAA,6BAA6B,OAAA;AAC7B,qHAAA,0BAA0B,OAAA;AAC1B,gHAAA,qBAAqB,OAAA;AACrB,qGAAA,UAAU,OAAA;AACV,uGAAA,YAAY,OAAA;AACZ,2GAAA,gBAAgB,OAAA;AAChB,wGAAA,aAAa,OAAA;AACb,0GAAA,eAAe,OAAA;AACf,gHAAA,qBAAqB,OAAA;AACrB,4GAAA,iBAAiB,OAAA;AACjB,kHAAA,uBAAuB,OAAA;AACvB,iHAAA,sBAAsB,OAAA;AACtB,gHAAA,qBAAqB,OAAA;AACrB,iHAAA,sBAAsB,OAAA;AACtB,qHAAA,0BAA0B,OAAA;AAC1B,yHAAA,8BAA8B,OAAA;AAC9B,6GAAA,kBAAkB,OAAA;AAClB,mHAAA,wBAAwB,OAAA;AACxB,oHAAA,yBAAyB,OAAA;AAG3B,gDAAgG;AAAvF,yGAAA,eAAe,OAAA;AAAE,yGAAA,eAAe,OAAA;AACzC,gDAK+B;AAJ7B,yGAAA,eAAe,OAAA;AACf,yGAAA,eAAe,OAAA;AACf,4GAAA,kBAAkB,OAAA;AAClB,0GAAA,gBAAgB,OAAA;AAGlB,8DAAiE;AAAxD,wHAAA,oBAAoB,OAAA;AAC7B,4DASiC;AAR/B,kIAAA,8BAA8B,OAAA;AAC9B,iIAAA,6BAA6B,OAAA;AAC7B,8HAAA,0BAA0B,OAAA;AAC1B,8HAAA,0BAA0B,OAAA;AAC1B,mIAAA,+BAA+B,OAAA;AAKjC,0DAA2F;AAAlF,4GAAA,iBAAiB,OAAA;AAC1B,yDAGgC;AAF9B,mHAAA,iBAAiB,OAAA;AAGnB,0CAA+K;AAAtK,wGAAA,cAAc,OAAA;AAAE,oGAAA,UAAU,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAyB,gHAAA,sBAAsB,OAAA;AAClG,mCAqBkB;AApBhB,yGAAA,eAAe,OAAA;AACf,qGAAA,WAAW,OAAA;AACX,oGAAA,UAAU,OAAA"}
|
|
@@ -3,7 +3,9 @@ import type { GraphNode } from "../core/types";
|
|
|
3
3
|
* HNSW (Hierarchical Navigable Small World) vector index.
|
|
4
4
|
*
|
|
5
5
|
* Previously used hnswlib-node for ANN search, but that has been removed
|
|
6
|
-
* due to C++ compilation dependency issues. Now always uses linear scan
|
|
6
|
+
* due to C++ compilation dependency issues. Now always uses linear scan,
|
|
7
|
+
* with per-process memoization and optional disk persistence so the index
|
|
8
|
+
* is not rebuilt on every query / every MCP server restart.
|
|
7
9
|
*/
|
|
8
10
|
export interface VectorSearchResult {
|
|
9
11
|
node: GraphNode;
|
|
@@ -15,6 +17,8 @@ export interface HnswVectorIndexOptions {
|
|
|
15
17
|
/** Max elements threshold (no longer used, kept for API compatibility). */
|
|
16
18
|
linearThreshold?: number;
|
|
17
19
|
}
|
|
20
|
+
/** FNV-1a fingerprint over node ids + embedding checksums; identifies a vector set. */
|
|
21
|
+
export declare function computeVectorSetFingerprint(nodes: GraphNode[]): string;
|
|
18
22
|
/**
|
|
19
23
|
* A vector index over graph nodes that have embeddings attached.
|
|
20
24
|
* Uses brute-force cosine similarity (linear scan).
|
|
@@ -32,8 +36,33 @@ export declare class HnswVectorIndex {
|
|
|
32
36
|
save(): void;
|
|
33
37
|
/** Load index is a no-op now. */
|
|
34
38
|
loadIndex(): Promise<boolean>;
|
|
39
|
+
/** Serialize the loaded vectors for disk persistence. */
|
|
40
|
+
serialize(): {
|
|
41
|
+
dim: number;
|
|
42
|
+
ids: string[];
|
|
43
|
+
data: string;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Rebuild an index from persisted vectors, binding to CURRENT graph nodes
|
|
47
|
+
* (matched by id) so callers always see fresh node content.
|
|
48
|
+
*/
|
|
49
|
+
static deserialize(dim: number, ids: string[], data: string, nodesById: Map<string, GraphNode>): HnswVectorIndex | undefined;
|
|
35
50
|
/** Returns top-K nodes by similarity to the query embedding. */
|
|
36
51
|
search(queryEmbedding: number[], topK: number, minSimilarity?: number): Promise<VectorSearchResult[]>;
|
|
37
52
|
private searchLinear;
|
|
38
53
|
}
|
|
54
|
+
/** Test hook: clear the per-process memoized vector index. */
|
|
55
|
+
export declare function resetSharedVectorIndex(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Returns a vector index for the candidate set, reusing the per-process
|
|
58
|
+
* memoized index when the set is unchanged (fingerprint match). On a memo
|
|
59
|
+
* miss, optionally restores from `persistPath` (fingerprint-validated) and
|
|
60
|
+
* persists freshly built indexes for the next process start.
|
|
61
|
+
*/
|
|
62
|
+
export declare function getSharedVectorIndex(nodes: GraphNode[], persistPath?: string): {
|
|
63
|
+
index: HnswVectorIndex;
|
|
64
|
+
fingerprint: string;
|
|
65
|
+
reused: boolean;
|
|
66
|
+
restoredFromDisk: boolean;
|
|
67
|
+
};
|
|
39
68
|
//# sourceMappingURL=hnsw-index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hnsw-index.d.ts","sourceRoot":"","sources":["../../src/learning/hnsw-index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hnsw-index.d.ts","sourceRoot":"","sources":["../../src/learning/hnsw-index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI/C;;;;;;;GAOG;AAEH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,uEAAuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,uFAAuF;AACvF,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAqBtE;AAeD;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,GAAG,CAAK;gBAEJ,QAAQ,CAAC,EAAE,sBAAsB;IAI7C,kDAAkD;IAClD,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI;IAa9B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,QAAQ,CAEtB;IAED,8BAA8B;IAC9B,IAAI,IAAI,IAAI;IAIZ,iCAAiC;IAC3B,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAInC,yDAAyD;IACzD,SAAS,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAYzD;;;OAGG;IACH,MAAM,CAAC,WAAW,CAChB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EAAE,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAChC,eAAe,GAAG,SAAS;IAiB9B,gEAAgE;IAC1D,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,SAAI,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAOtG,OAAO,CAAC,YAAY;CAWrB;AAMD,8DAA8D;AAC9D,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAuCD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,EAAE,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAA;CAAE,CAqB7F"}
|
|
@@ -1,7 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HnswVectorIndex = void 0;
|
|
4
|
+
exports.computeVectorSetFingerprint = computeVectorSetFingerprint;
|
|
5
|
+
exports.resetSharedVectorIndex = resetSharedVectorIndex;
|
|
6
|
+
exports.getSharedVectorIndex = getSharedVectorIndex;
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const node_path_1 = require("node:path");
|
|
4
9
|
const embeddings_1 = require("./embeddings");
|
|
10
|
+
const logger_1 = require("../utils/logger");
|
|
11
|
+
/** FNV-1a fingerprint over node ids + embedding checksums; identifies a vector set. */
|
|
12
|
+
function computeVectorSetFingerprint(nodes) {
|
|
13
|
+
let h = 0x811c9dc5;
|
|
14
|
+
const mix = (v) => {
|
|
15
|
+
h ^= v;
|
|
16
|
+
h = Math.imul(h, 0x01000193);
|
|
17
|
+
};
|
|
18
|
+
let count = 0;
|
|
19
|
+
for (const node of nodes) {
|
|
20
|
+
const emb = (0, embeddings_1.extractEmbedding)(node);
|
|
21
|
+
if (!emb)
|
|
22
|
+
continue;
|
|
23
|
+
count += 1;
|
|
24
|
+
mix(node.id.length);
|
|
25
|
+
for (let i = 0; i < node.id.length; i += 1)
|
|
26
|
+
mix(node.id.charCodeAt(i));
|
|
27
|
+
mix(emb.length);
|
|
28
|
+
// Cheap content checksum: quantized first/middle/last elements.
|
|
29
|
+
mix(Math.round((emb[0] ?? 0) * 1e6));
|
|
30
|
+
mix(Math.round((emb[emb.length >> 1] ?? 0) * 1e6));
|
|
31
|
+
mix(Math.round((emb[emb.length - 1] ?? 0) * 1e6));
|
|
32
|
+
}
|
|
33
|
+
mix(count);
|
|
34
|
+
return (h >>> 0).toString(36);
|
|
35
|
+
}
|
|
36
|
+
/** Skip disk persistence above this many vectors (file would be tens of MB). */
|
|
37
|
+
const PERSIST_MAX_VECTORS = 20_000;
|
|
38
|
+
const PERSIST_VERSION = 1;
|
|
5
39
|
/**
|
|
6
40
|
* A vector index over graph nodes that have embeddings attached.
|
|
7
41
|
* Uses brute-force cosine similarity (linear scan).
|
|
@@ -43,6 +77,39 @@ class HnswVectorIndex {
|
|
|
43
77
|
async loadIndex() {
|
|
44
78
|
return false;
|
|
45
79
|
}
|
|
80
|
+
/** Serialize the loaded vectors for disk persistence. */
|
|
81
|
+
serialize() {
|
|
82
|
+
const flat = new Float32Array(this.embeddings.length * this.dim);
|
|
83
|
+
for (let i = 0; i < this.embeddings.length; i += 1) {
|
|
84
|
+
flat.set(this.embeddings[i], i * this.dim);
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
dim: this.dim,
|
|
88
|
+
ids: this.nodes.map((n) => n.id),
|
|
89
|
+
data: Buffer.from(flat.buffer).toString("base64"),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Rebuild an index from persisted vectors, binding to CURRENT graph nodes
|
|
94
|
+
* (matched by id) so callers always see fresh node content.
|
|
95
|
+
*/
|
|
96
|
+
static deserialize(dim, ids, data, nodesById) {
|
|
97
|
+
const index = new HnswVectorIndex();
|
|
98
|
+
const buf = Buffer.from(data, "base64");
|
|
99
|
+
const flat = new Float32Array(buf.buffer, buf.byteOffset, Math.floor(buf.length / 4));
|
|
100
|
+
if (flat.length !== ids.length * dim) {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
index.dim = dim;
|
|
104
|
+
for (let i = 0; i < ids.length; i += 1) {
|
|
105
|
+
const node = nodesById.get(ids[i]);
|
|
106
|
+
if (!node)
|
|
107
|
+
return undefined;
|
|
108
|
+
index.nodes.push(node);
|
|
109
|
+
index.embeddings.push(Array.from(flat.subarray(i * dim, (i + 1) * dim)));
|
|
110
|
+
}
|
|
111
|
+
return index;
|
|
112
|
+
}
|
|
46
113
|
/** Returns top-K nodes by similarity to the query embedding. */
|
|
47
114
|
async search(queryEmbedding, topK, minSimilarity = 0) {
|
|
48
115
|
if (this.nodes.length === 0 || !queryEmbedding || queryEmbedding.length === 0) {
|
|
@@ -63,4 +130,71 @@ class HnswVectorIndex {
|
|
|
63
130
|
}
|
|
64
131
|
}
|
|
65
132
|
exports.HnswVectorIndex = HnswVectorIndex;
|
|
133
|
+
// ── Shared memoized index + disk persistence ─────────────────────────────
|
|
134
|
+
let sharedVectorIndex;
|
|
135
|
+
/** Test hook: clear the per-process memoized vector index. */
|
|
136
|
+
function resetSharedVectorIndex() {
|
|
137
|
+
sharedVectorIndex = undefined;
|
|
138
|
+
}
|
|
139
|
+
function tryLoadPersistedIndex(filePath, fingerprint, nodes) {
|
|
140
|
+
try {
|
|
141
|
+
if (!(0, node_fs_1.existsSync)(filePath))
|
|
142
|
+
return undefined;
|
|
143
|
+
const parsed = JSON.parse((0, node_fs_1.readFileSync)(filePath, "utf8"));
|
|
144
|
+
if (parsed.version !== PERSIST_VERSION || parsed.fingerprint !== fingerprint) {
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
const nodesById = new Map(nodes.map((n) => [n.id, n]));
|
|
148
|
+
return HnswVectorIndex.deserialize(parsed.dim, parsed.ids, parsed.data, nodesById);
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
logger_1.logger.warn({ error, filePath }, "Failed to load persisted vector index; rebuilding");
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function tryPersistIndex(filePath, fingerprint, index) {
|
|
156
|
+
try {
|
|
157
|
+
if (index.size === 0 || index.size > PERSIST_MAX_VECTORS)
|
|
158
|
+
return;
|
|
159
|
+
const serialized = index.serialize();
|
|
160
|
+
const payload = {
|
|
161
|
+
version: PERSIST_VERSION,
|
|
162
|
+
fingerprint,
|
|
163
|
+
dim: serialized.dim,
|
|
164
|
+
ids: serialized.ids,
|
|
165
|
+
data: serialized.data,
|
|
166
|
+
};
|
|
167
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(filePath), { recursive: true });
|
|
168
|
+
(0, node_fs_1.writeFileSync)(filePath, JSON.stringify(payload), "utf8");
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
logger_1.logger.warn({ error, filePath }, "Failed to persist vector index");
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Returns a vector index for the candidate set, reusing the per-process
|
|
176
|
+
* memoized index when the set is unchanged (fingerprint match). On a memo
|
|
177
|
+
* miss, optionally restores from `persistPath` (fingerprint-validated) and
|
|
178
|
+
* persists freshly built indexes for the next process start.
|
|
179
|
+
*/
|
|
180
|
+
function getSharedVectorIndex(nodes, persistPath) {
|
|
181
|
+
const fingerprint = computeVectorSetFingerprint(nodes);
|
|
182
|
+
if (sharedVectorIndex && sharedVectorIndex.fingerprint === fingerprint) {
|
|
183
|
+
return { index: sharedVectorIndex.index, fingerprint, reused: true, restoredFromDisk: false };
|
|
184
|
+
}
|
|
185
|
+
if (persistPath) {
|
|
186
|
+
const restored = tryLoadPersistedIndex(persistPath, fingerprint, nodes);
|
|
187
|
+
if (restored) {
|
|
188
|
+
sharedVectorIndex = { fingerprint, index: restored };
|
|
189
|
+
return { index: restored, fingerprint, reused: false, restoredFromDisk: true };
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
const index = new HnswVectorIndex();
|
|
193
|
+
index.load(nodes);
|
|
194
|
+
sharedVectorIndex = { fingerprint, index };
|
|
195
|
+
if (persistPath) {
|
|
196
|
+
tryPersistIndex(persistPath, fingerprint, index);
|
|
197
|
+
}
|
|
198
|
+
return { index, fingerprint, reused: false, restoredFromDisk: false };
|
|
199
|
+
}
|
|
66
200
|
//# sourceMappingURL=hnsw-index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hnsw-index.js","sourceRoot":"","sources":["../../src/learning/hnsw-index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"hnsw-index.js","sourceRoot":"","sources":["../../src/learning/hnsw-index.ts"],"names":[],"mappings":"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"}
|
package/dist/skills/index.d.ts
CHANGED
|
@@ -30,13 +30,19 @@ export interface PlanTaskInput extends SkillInvocationOptions {
|
|
|
30
30
|
}
|
|
31
31
|
export interface PlanTaskOutput {
|
|
32
32
|
success: boolean;
|
|
33
|
-
mode: "simple" | "complex";
|
|
33
|
+
mode: "simple" | "complex" | "agent-delegated";
|
|
34
34
|
ideas: string[];
|
|
35
35
|
nodes: Array<{
|
|
36
36
|
id: string;
|
|
37
37
|
description: string;
|
|
38
38
|
dependencies: string[];
|
|
39
39
|
}>;
|
|
40
|
+
suggestedNodes?: Array<{
|
|
41
|
+
id: string;
|
|
42
|
+
description: string;
|
|
43
|
+
dependencies: string[];
|
|
44
|
+
}>;
|
|
45
|
+
requiresAgentBridge?: boolean;
|
|
40
46
|
}
|
|
41
47
|
export interface PlanInsightInput extends SkillInvocationOptions {
|
|
42
48
|
task: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC/F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAqB,SAAQ,sBAAsB;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACxE,WAAW,EAAE;QACX,gBAAgB,EAAE,MAAM,CAAC;QACzB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,gBAAgB,EAAE,MAAM,CAAC;QACzB,uBAAuB,EAAE,MAAM,CAAC;KACjC,CAAC;IACF,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B;AAED,MAAM,WAAW,aAAc,SAAQ,sBAAsB;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"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"}
|
package/dist/skills/index.js
CHANGED
|
@@ -26,12 +26,16 @@ exports.graphflowSkills = {
|
|
|
26
26
|
description: "Plan a coding task with graph context, producing structured task nodes with dependencies.",
|
|
27
27
|
version: "1.0.0",
|
|
28
28
|
async invoke(input) {
|
|
29
|
-
const result =
|
|
29
|
+
const result = (0, routing_1.planAndBrainstormResult)(input.task, input.configPath);
|
|
30
30
|
return {
|
|
31
31
|
success: true,
|
|
32
32
|
mode: result.mode,
|
|
33
33
|
ideas: result.ideas,
|
|
34
34
|
nodes: result.nodes,
|
|
35
|
+
...(result.suggestedNodes ? { suggestedNodes: result.suggestedNodes } : {}),
|
|
36
|
+
...(result.requiresAgentBridge !== undefined
|
|
37
|
+
? { requiresAgentBridge: result.requiresAgentBridge }
|
|
38
|
+
: {}),
|
|
35
39
|
};
|
|
36
40
|
},
|
|
37
41
|
},
|
package/dist/skills/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -267,6 +267,26 @@ async function executeCommand(command, args, configPath) {
|
|
|
267
267
|
legacyText: `path=${data.path}; imported=${data.imported}; skipped=${data.skipped}; total=${data.total}`,
|
|
268
268
|
};
|
|
269
269
|
}
|
|
270
|
+
if (command === "skill" && args[0] === "sync") {
|
|
271
|
+
// Git-based team sharing: export to / import from the committable
|
|
272
|
+
// `.graphflow/skills/team-skills.json` (override with --path <file>).
|
|
273
|
+
const directionArg = args[1]?.trim().toLowerCase();
|
|
274
|
+
if (directionArg !== "export" && directionArg !== "import") {
|
|
275
|
+
console.log("Usage: graphflow skill sync <export|import> [--path <file>]");
|
|
276
|
+
process.exitCode = 1;
|
|
277
|
+
return undefined;
|
|
278
|
+
}
|
|
279
|
+
const pathIdx = args.indexOf("--path");
|
|
280
|
+
const customPath = pathIdx >= 0 ? args[pathIdx + 1]?.trim() : undefined;
|
|
281
|
+
const data = await (0, runtime_1.syncSkillPackageRuntime)(configPath, directionArg, customPath);
|
|
282
|
+
return {
|
|
283
|
+
command: "skill-sync",
|
|
284
|
+
data,
|
|
285
|
+
legacyText: data.direction === "export"
|
|
286
|
+
? `direction=export; path=${data.path}; skillCount=${data.skillCount}; bytes=${data.bytes}`
|
|
287
|
+
: `direction=import; path=${data.path}; imported=${data.imported}; skipped=${data.skipped}; total=${data.total}`,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
270
290
|
if (command === "skill" && args[0] === "decay") {
|
|
271
291
|
const data = await (0, runtime_1.runSkillDecay)(configPath);
|
|
272
292
|
return {
|
|
@@ -298,6 +318,20 @@ async function executeCommand(command, args, configPath) {
|
|
|
298
318
|
legacyText: `pruned=${data.pruned}`,
|
|
299
319
|
};
|
|
300
320
|
}
|
|
321
|
+
if (command === "skill" && args[0] === "report") {
|
|
322
|
+
// Flywheel contribution report: skills health, most-used skills,
|
|
323
|
+
// episode outcomes — makes the learning loop observable.
|
|
324
|
+
const data = (0, runtime_1.getFlywheelReport)(configPath);
|
|
325
|
+
return {
|
|
326
|
+
command: "skill-report",
|
|
327
|
+
data,
|
|
328
|
+
legacyText: [
|
|
329
|
+
`skills=${data.skills.total}(+${data.skills.positive}/0${data.skills.neutral}/-${data.skills.negative})`,
|
|
330
|
+
`episodes=${data.episodes.total}(pass:${data.episodes.pass},fail:${data.episodes.fail},pending:${data.episodes.pending},lessons:${data.episodes.withLessons})`,
|
|
331
|
+
`topUsed=${data.skills.topUsed.map((s) => `${s.name}:${s.uses}`).join(",") || "-"}`,
|
|
332
|
+
].join("; "),
|
|
333
|
+
};
|
|
334
|
+
}
|
|
301
335
|
if (command === "route" && args[0] === "diagnose") {
|
|
302
336
|
const data = (0, runtime_1.diagnoseRoutingResult)(configPath);
|
|
303
337
|
return {
|