@roarpeng/graphflow 1.14.1 → 1.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +3 -3
  3. package/README.zh.md +1 -1
  4. package/dist/config/schema.d.ts +3 -1
  5. package/dist/config/schema.d.ts.map +1 -1
  6. package/dist/graph/client-factory.d.ts.map +1 -1
  7. package/dist/graph/client-factory.js +4 -1
  8. package/dist/graph/client-factory.js.map +1 -1
  9. package/dist/graph/graphify-mcp-client.d.ts +33 -0
  10. package/dist/graph/graphify-mcp-client.d.ts.map +1 -1
  11. package/dist/graph/graphify-mcp-client.js +66 -5
  12. package/dist/graph/graphify-mcp-client.js.map +1 -1
  13. package/dist/index.d.ts +3 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +10 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/integrations/claude-code-host-installer.d.ts +42 -0
  18. package/dist/integrations/claude-code-host-installer.d.ts.map +1 -0
  19. package/dist/integrations/claude-code-host-installer.js +341 -0
  20. package/dist/integrations/claude-code-host-installer.js.map +1 -0
  21. package/dist/integrations/cursor-host-installer.d.ts +38 -0
  22. package/dist/integrations/cursor-host-installer.d.ts.map +1 -0
  23. package/dist/integrations/cursor-host-installer.js +291 -0
  24. package/dist/integrations/cursor-host-installer.js.map +1 -0
  25. package/dist/integrations/host-adapter-install.d.ts +39 -4
  26. package/dist/integrations/host-adapter-install.d.ts.map +1 -1
  27. package/dist/integrations/host-adapter-install.js +90 -9
  28. package/dist/integrations/host-adapter-install.js.map +1 -1
  29. package/dist/integrations/host-adapter.d.ts +2 -2
  30. package/dist/security/rbac.d.ts +39 -0
  31. package/dist/security/rbac.d.ts.map +1 -0
  32. package/dist/security/rbac.js +213 -0
  33. package/dist/security/rbac.js.map +1 -0
  34. package/dist/security/token-auth.d.ts +15 -2
  35. package/dist/security/token-auth.d.ts.map +1 -1
  36. package/dist/security/token-auth.js +86 -5
  37. package/dist/security/token-auth.js.map +1 -1
  38. package/dist/surfaces/cli/index.js +79 -4
  39. package/dist/surfaces/cli/index.js.map +1 -1
  40. package/dist/surfaces/cli/init.d.ts +3 -0
  41. package/dist/surfaces/cli/init.d.ts.map +1 -1
  42. package/dist/surfaces/cli/init.js +133 -59
  43. package/dist/surfaces/cli/init.js.map +1 -1
  44. package/dist/surfaces/cli/output.d.ts.map +1 -1
  45. package/dist/surfaces/cli/output.js +7 -3
  46. package/dist/surfaces/cli/output.js.map +1 -1
  47. package/dist/surfaces/cli/runtime/graph.d.ts +13 -0
  48. package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -1
  49. package/dist/surfaces/cli/runtime/graph.js +97 -9
  50. package/dist/surfaces/cli/runtime/graph.js.map +1 -1
  51. package/dist/surfaces/cli/runtime/routing.d.ts +1 -1
  52. package/dist/surfaces/cli/runtime/routing.d.ts.map +1 -1
  53. package/dist/surfaces/cli/runtime/routing.js +12 -2
  54. package/dist/surfaces/cli/runtime/routing.js.map +1 -1
  55. package/dist/surfaces/cli/runtime/types.d.ts +3 -0
  56. package/dist/surfaces/cli/runtime/types.d.ts.map +1 -1
  57. package/dist/surfaces/cli/runtime.d.ts +1 -1
  58. package/dist/surfaces/cli/runtime.d.ts.map +1 -1
  59. package/dist/surfaces/cli/runtime.js +3 -2
  60. package/dist/surfaces/cli/runtime.js.map +1 -1
  61. package/dist/surfaces/mcp/server.d.ts +2 -0
  62. package/dist/surfaces/mcp/server.d.ts.map +1 -1
  63. package/dist/surfaces/mcp/server.js +77 -37
  64. package/dist/surfaces/mcp/server.js.map +1 -1
  65. package/dist/surfaces/mcp/tool-handlers.d.ts.map +1 -1
  66. package/dist/surfaces/mcp/tool-handlers.js +2 -0
  67. package/dist/surfaces/mcp/tool-handlers.js.map +1 -1
  68. package/dist/surfaces/team/diagnose.d.ts +18 -0
  69. package/dist/surfaces/team/diagnose.d.ts.map +1 -0
  70. package/dist/surfaces/team/diagnose.js +57 -0
  71. package/dist/surfaces/team/diagnose.js.map +1 -0
  72. package/dist/surfaces/team/ops.d.ts +16 -0
  73. package/dist/surfaces/team/ops.d.ts.map +1 -0
  74. package/dist/surfaces/team/ops.js +137 -0
  75. package/dist/surfaces/team/ops.js.map +1 -0
  76. package/dist/surfaces/team/server.d.ts +48 -0
  77. package/dist/surfaces/team/server.d.ts.map +1 -0
  78. package/dist/surfaces/team/server.js +393 -0
  79. package/dist/surfaces/team/server.js.map +1 -0
  80. package/package.json +1 -1
  81. package/plugin.json +1 -1
@@ -0,0 +1,393 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isLoopbackHost = isLoopbackHost;
4
+ exports.startTeamMemoryServer = startTeamMemoryServer;
5
+ const node_http_1 = require("node:http");
6
+ const node_fs_1 = require("node:fs");
7
+ const node_path_1 = require("node:path");
8
+ const graphify_file_client_js_1 = require("../../graph/graphify-file-client.js");
9
+ const team_governance_js_1 = require("../../graph/team-governance.js");
10
+ const evidence_js_1 = require("../../learning/evidence.js");
11
+ const rbac_js_1 = require("../../security/rbac.js");
12
+ const token_auth_js_1 = require("../../security/token-auth.js");
13
+ function normalizeHttpEndpoint(endpoint) {
14
+ const value = endpoint?.trim() || "/mcp";
15
+ if (!value.startsWith("/"))
16
+ throw new Error("Team memory endpoint must begin with '/'");
17
+ if (value.includes("*") || value.includes("?"))
18
+ throw new Error("Team memory endpoint must be an exact path");
19
+ return value.endsWith("/") && value !== "/" ? value.slice(0, -1) : value;
20
+ }
21
+ function isLoopbackHost(host) {
22
+ const normalized = host.trim().toLowerCase().replace(/^\[|\]$/g, "");
23
+ return normalized === "localhost" || normalized === "127.0.0.1" || normalized === "::1";
24
+ }
25
+ function writeHttpJson(res, status, body) {
26
+ res.statusCode = status;
27
+ res.setHeader("Content-Type", "application/json");
28
+ res.end(JSON.stringify(body));
29
+ }
30
+ function writeJsonRpcError(res, status, requestId, message, code = -32600) {
31
+ writeHttpJson(res, status, {
32
+ jsonrpc: "2.0",
33
+ id: requestId,
34
+ error: { code, message },
35
+ });
36
+ }
37
+ function validateHttpOrigin(req, allowedOrigins) {
38
+ const origin = req.headers.origin;
39
+ if (typeof origin !== "string" || origin.length === 0)
40
+ return true;
41
+ return Boolean(allowedOrigins?.some((allowed) => allowed.toLowerCase() === origin.toLowerCase()));
42
+ }
43
+ function validateHttpHost(req, host, allowedHosts) {
44
+ const header = req.headers.host;
45
+ if (!header)
46
+ return false;
47
+ if (!allowedHosts?.length) {
48
+ const hostname = header.split(":", 2)[0] ?? "";
49
+ return isLoopbackHost(host) && isLoopbackHost(hostname);
50
+ }
51
+ const normalized = header.toLowerCase();
52
+ return allowedHosts.some((allowed) => allowed.toLowerCase() === normalized);
53
+ }
54
+ function requestTenant(req, auth) {
55
+ const value = req.headers["x-graphflow-tenant"];
56
+ const raw = Array.isArray(value) ? value[0] : value;
57
+ const tenant = raw?.trim() || "default";
58
+ if (!/^[A-Za-z0-9._-]{1,64}$/.test(tenant)) {
59
+ throw new Error("tenant is not allowed");
60
+ }
61
+ if (auth?.allowedTenants?.length && !auth.allowedTenants.includes(tenant)) {
62
+ throw new Error("tenant is not allowed");
63
+ }
64
+ return tenant;
65
+ }
66
+ function sanitizeTenant(tenant) {
67
+ return tenant.replace(/[^A-Za-z0-9._-]/g, "_");
68
+ }
69
+ async function readJsonBody(req) {
70
+ const chunks = [];
71
+ for await (const chunk of req) {
72
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
73
+ }
74
+ const raw = Buffer.concat(chunks).toString("utf8").trim();
75
+ if (!raw)
76
+ return {};
77
+ return JSON.parse(raw);
78
+ }
79
+ function tenantStorePaths(storeRoot, tenant) {
80
+ const root = (0, node_path_1.join)(storeRoot, sanitizeTenant(tenant));
81
+ (0, node_fs_1.mkdirSync)(root, { recursive: true });
82
+ return {
83
+ graph: (0, node_path_1.join)(root, "graph.json"),
84
+ skills: (0, node_path_1.join)(root, "skills.json"),
85
+ };
86
+ }
87
+ function readSkillPack(path) {
88
+ try {
89
+ if (!(0, node_fs_1.existsSync)(path))
90
+ return undefined;
91
+ const parsed = JSON.parse((0, node_fs_1.readFileSync)(path, "utf8"));
92
+ if (!parsed || typeof parsed !== "object")
93
+ return undefined;
94
+ return parsed;
95
+ }
96
+ catch {
97
+ return undefined;
98
+ }
99
+ }
100
+ function writeSkillPack(path, pack) {
101
+ const previous = readSkillPack(path);
102
+ const next = {
103
+ revision: (previous?.revision ?? 0) + 1,
104
+ updatedAt: new Date().toISOString(),
105
+ pack,
106
+ };
107
+ (0, node_fs_1.writeFileSync)(path, `${JSON.stringify(next, null, 2)}\n`, "utf8");
108
+ return next;
109
+ }
110
+ function authModeOf(auth) {
111
+ if (auth?.jwtSecret || auth?.publicKeyPem)
112
+ return "jwt";
113
+ if (auth?.bearerTokens?.length || (auth?.bearerRoleMap && Object.keys(auth.bearerRoleMap).length > 0)) {
114
+ return "bearer";
115
+ }
116
+ return "none";
117
+ }
118
+ async function dispatchTeamMethod(method, params, store, skillPath) {
119
+ switch (method) {
120
+ case "graph.upsert_nodes": {
121
+ await store.upsertNodes(params.nodes ?? []);
122
+ return null;
123
+ }
124
+ case "graph.upsert_edges": {
125
+ await store.upsertEdges(params.edges ?? []);
126
+ return null;
127
+ }
128
+ case "graph.query_subgraph": {
129
+ const query = String(params.query ?? "");
130
+ return { nodes: await store.queryByKeyword(query) };
131
+ }
132
+ case "graph.get_nodes": {
133
+ return { nodes: await store.getNodesByIds(params.ids ?? []) };
134
+ }
135
+ case "graph.get_neighbors": {
136
+ const direction = params.direction === "out" || params.direction === "in" || params.direction === "both"
137
+ ? params.direction
138
+ : "both";
139
+ return {
140
+ neighbors: await store.getNeighbors(params.nodeIds ?? [], params.relations, direction),
141
+ };
142
+ }
143
+ case "graph.delete_node": {
144
+ await store.deleteNode(String(params.id ?? ""));
145
+ return null;
146
+ }
147
+ case "graph.delete_edge": {
148
+ await store.deleteEdge(String(params.from ?? ""), String(params.to ?? ""), params.relation);
149
+ return null;
150
+ }
151
+ case "graph.read_snapshot": {
152
+ return store.readSnapshot();
153
+ }
154
+ case "skill.sync_push": {
155
+ const stored = writeSkillPack(skillPath, params.pack ?? params);
156
+ return { revision: stored.revision, updatedAt: stored.updatedAt };
157
+ }
158
+ case "skill.sync_pull": {
159
+ const stored = readSkillPack(skillPath);
160
+ return { pack: stored?.pack ?? null, revision: stored?.revision ?? null, updatedAt: stored?.updatedAt ?? null };
161
+ }
162
+ case "artifact.import": {
163
+ await store.upsertNodes(params.nodes ?? []);
164
+ await store.upsertEdges(params.edges ?? []);
165
+ const snapshot = store.readSnapshot();
166
+ return { nodeCount: snapshot.nodes.length, edgeCount: snapshot.edges.length, imported: true };
167
+ }
168
+ case "governance.quarantine": {
169
+ const ids = params.nodeIds ?? [];
170
+ return (0, team_governance_js_1.propagateQuarantine)(store, ids, {
171
+ ...(typeof params.actor === "string" ? { actor: params.actor } : {}),
172
+ ...(typeof params.reason === "string" ? { reason: params.reason } : {}),
173
+ });
174
+ }
175
+ case "governance.review": {
176
+ return (0, team_governance_js_1.approveGraphNode)(store, String(params.nodeId ?? ""), String(params.role ?? "admin"), params.decision === "rejected" ? "rejected" : "approved", typeof params.reason === "string" ? params.reason : undefined);
177
+ }
178
+ case "team.health": {
179
+ return null;
180
+ }
181
+ default:
182
+ throw new Error(`Unknown Graphify method: ${method}`);
183
+ }
184
+ }
185
+ async function startTeamMemoryServer(options = {}) {
186
+ const host = options.host ?? "127.0.0.1";
187
+ const requestedPort = options.port ?? Number(process.env.GRAPHFLOW_TEAM_PORT ?? 0);
188
+ const endpoint = normalizeHttpEndpoint(options.endpoint ?? process.env.GRAPHFLOW_TEAM_ENDPOINT);
189
+ const storeRoot = (0, node_path_1.resolve)(options.storeRoot ?? process.env.GRAPHFLOW_TEAM_STORE ?? ".graphflow/team-store");
190
+ const loopback = isLoopbackHost(host);
191
+ const hasCredentials = (0, token_auth_js_1.credentialsConfigured)(options.auth);
192
+ const requireAuth = options.requireAuth ?? (!loopback || hasCredentials);
193
+ if (!loopback && !options.allowedHosts?.length) {
194
+ throw new Error(`Refusing to bind team memory HTTP to non-loopback ${host} without explicit allowedHosts`);
195
+ }
196
+ if (requireAuth && !hasCredentials) {
197
+ throw new Error("Team memory server requires auth for this bind (bearer token or JWT). " +
198
+ "Pass --http-token <role:token> or --http-jwt-secret, or bind loopback without credentials.");
199
+ }
200
+ if (!loopback && hasCredentials) {
201
+ const roles = Object.values(options.auth?.bearerRoleMap ?? {});
202
+ const jwtReady = Boolean(options.auth?.jwtSecret || options.auth?.publicKeyPem);
203
+ if (!jwtReady && roles.length === 0) {
204
+ throw new Error("Non-loopback team serve requires RBAC role assignment: use --http-token viewer|contributor|admin:<token> " +
205
+ "or issue JWTs with a role / memory:* scope.");
206
+ }
207
+ }
208
+ (0, node_fs_1.mkdirSync)(storeRoot, { recursive: true });
209
+ const auditPath = options.auditPath ?? (0, node_path_1.join)(storeRoot, "team-http-audit.jsonl");
210
+ const httpServer = (0, node_http_1.createServer)((req, res) => {
211
+ void (async () => {
212
+ if (!validateHttpHost(req, host, options.allowedHosts)) {
213
+ writeJsonRpcError(res, 403, null, "Invalid GraphFlow team HTTP Host");
214
+ return;
215
+ }
216
+ if (!validateHttpOrigin(req, options.allowedOrigins)) {
217
+ writeJsonRpcError(res, 403, null, "Origin is not allowed by GraphFlow team HTTP");
218
+ return;
219
+ }
220
+ let tenant = "default";
221
+ try {
222
+ tenant = requestTenant(req, options.auth);
223
+ }
224
+ catch (error) {
225
+ writeJsonRpcError(res, 403, null, error instanceof Error ? error.message : "tenant rejected");
226
+ return;
227
+ }
228
+ let authentication = { authenticated: true, subject: "local" };
229
+ if (requireAuth) {
230
+ authentication = await (0, token_auth_js_1.verifyAccessToken)(req.headers.authorization, options.auth ?? {});
231
+ if (!authentication.authenticated) {
232
+ (0, evidence_js_1.appendGovernanceAudit)(auditPath, {
233
+ actor: "anonymous",
234
+ action: "team.auth.reject",
235
+ subject: req.url ?? endpoint,
236
+ tenant,
237
+ data: { reason: authentication.reason },
238
+ });
239
+ writeJsonRpcError(res, 401, null, authentication.reason ?? "authentication rejected");
240
+ return;
241
+ }
242
+ }
243
+ const url = new URL(req.url ?? "/", "http://graphflow.invalid");
244
+ const healthPath = url.pathname === "/health" || url.pathname === `${endpoint}/health`;
245
+ const rpcPath = url.pathname === endpoint || (endpoint === "/mcp" && url.pathname === "/");
246
+ if (req.method === "GET" && healthPath) {
247
+ const paths = tenantStorePaths(storeRoot, tenant);
248
+ const store = new graphify_file_client_js_1.GraphifyFileClient(paths.graph);
249
+ const snapshot = store.readSnapshot();
250
+ const pack = readSkillPack(paths.skills);
251
+ const health = {
252
+ ok: true,
253
+ service: "graphflow-team-memory",
254
+ tenant,
255
+ role: authentication.role ?? "local",
256
+ rbac: true,
257
+ authMode: authModeOf(options.auth),
258
+ nodeCount: snapshot.nodes.length,
259
+ edgeCount: snapshot.edges.length,
260
+ skillPackRevision: pack?.revision ?? null,
261
+ };
262
+ if (requireAuth) {
263
+ try {
264
+ (0, rbac_js_1.assertAuthorized)((0, rbac_js_1.authorizeTeamMethod)(authentication.role, "team.health"));
265
+ }
266
+ catch (error) {
267
+ const message = error instanceof Error ? error.message : "RBAC denied";
268
+ writeJsonRpcError(res, 403, null, message);
269
+ return;
270
+ }
271
+ }
272
+ writeHttpJson(res, 200, health);
273
+ return;
274
+ }
275
+ if (!rpcPath) {
276
+ writeJsonRpcError(res, 404, null, `Unknown GraphFlow team HTTP endpoint: ${url.pathname}`);
277
+ return;
278
+ }
279
+ if (req.method !== "POST") {
280
+ writeJsonRpcError(res, 405, null, "GraphFlow team memory accepts POST JSON-RPC");
281
+ return;
282
+ }
283
+ let parsed;
284
+ try {
285
+ const body = await readJsonBody(req);
286
+ parsed = (body && typeof body === "object" ? body : {});
287
+ }
288
+ catch {
289
+ writeJsonRpcError(res, 400, null, "Invalid JSON body");
290
+ return;
291
+ }
292
+ const requestId = parsed.id ?? null;
293
+ const method = typeof parsed.method === "string" ? parsed.method : "";
294
+ if (!method) {
295
+ writeJsonRpcError(res, 400, requestId, "JSON-RPC method is required");
296
+ return;
297
+ }
298
+ if (requireAuth) {
299
+ try {
300
+ (0, rbac_js_1.assertAuthorized)((0, rbac_js_1.authorizeTeamMethod)(authentication.role, method));
301
+ }
302
+ catch (error) {
303
+ const message = error instanceof rbac_js_1.TeamAuthorizationError || error instanceof Error
304
+ ? error.message
305
+ : "RBAC denied";
306
+ (0, evidence_js_1.appendGovernanceAudit)(auditPath, {
307
+ actor: authentication.subject ?? "anonymous",
308
+ action: "team.rbac.deny",
309
+ subject: method,
310
+ tenant,
311
+ data: { reason: message, role: authentication.role ?? null },
312
+ });
313
+ writeJsonRpcError(res, 403, requestId, message);
314
+ return;
315
+ }
316
+ }
317
+ const paths = tenantStorePaths(storeRoot, tenant);
318
+ const store = new graphify_file_client_js_1.GraphifyFileClient(paths.graph);
319
+ const auditEvent = (0, evidence_js_1.appendGovernanceAudit)(auditPath, {
320
+ actor: authentication.subject ?? "local",
321
+ action: `team.${method}`,
322
+ subject: `${tenant}:${method}`,
323
+ tenant,
324
+ data: { role: authentication.role ?? "local" },
325
+ });
326
+ res.setHeader("x-graphflow-audit-seq", String(auditEvent.seq));
327
+ res.setHeader("x-graphflow-tenant", tenant);
328
+ if (authentication.role) {
329
+ res.setHeader("x-graphflow-role", authentication.role);
330
+ }
331
+ try {
332
+ if (method === "team.health") {
333
+ const snapshot = store.readSnapshot();
334
+ const pack = readSkillPack(paths.skills);
335
+ const health = {
336
+ ok: true,
337
+ service: "graphflow-team-memory",
338
+ tenant,
339
+ role: authentication.role ?? "local",
340
+ rbac: true,
341
+ authMode: authModeOf(options.auth),
342
+ nodeCount: snapshot.nodes.length,
343
+ edgeCount: snapshot.edges.length,
344
+ skillPackRevision: pack?.revision ?? null,
345
+ };
346
+ writeHttpJson(res, 200, { jsonrpc: "2.0", id: requestId, result: health });
347
+ return;
348
+ }
349
+ const result = await dispatchTeamMethod(method, parsed.params && typeof parsed.params === "object" ? parsed.params : {}, store, paths.skills);
350
+ writeHttpJson(res, 200, { jsonrpc: "2.0", id: requestId, result });
351
+ }
352
+ catch (error) {
353
+ const message = error instanceof Error ? error.message : "team method failed";
354
+ writeJsonRpcError(res, 200, requestId, message, -32000);
355
+ }
356
+ })().catch((error) => {
357
+ if (!res.headersSent) {
358
+ writeJsonRpcError(res, 500, null, "Unexpected GraphFlow team HTTP error");
359
+ }
360
+ else {
361
+ res.destroy();
362
+ }
363
+ console.error("[GraphFlow team] Unexpected HTTP error:", error);
364
+ });
365
+ });
366
+ if (options.signal) {
367
+ options.signal.addEventListener("abort", () => {
368
+ void httpServer.close();
369
+ }, { once: true });
370
+ }
371
+ await new Promise((resolveListen, reject) => {
372
+ httpServer.once("error", reject);
373
+ httpServer.listen(requestedPort, host, resolveListen);
374
+ });
375
+ const address = httpServer.address();
376
+ if (!address || typeof address === "string") {
377
+ throw new Error("GraphFlow team HTTP listener did not return a TCP address");
378
+ }
379
+ return {
380
+ httpServer,
381
+ url: `http://${host === "::1" ? `[${host}]` : host}:${address.port}${endpoint}`,
382
+ endpoint,
383
+ host,
384
+ port: address.port,
385
+ storeRoot,
386
+ requireAuth,
387
+ rbac: true,
388
+ async close() {
389
+ await new Promise((resolveClose) => httpServer.close(() => resolveClose()));
390
+ },
391
+ };
392
+ }
393
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/surfaces/team/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roarpeng/graphflow",
3
- "version": "1.14.1",
3
+ "version": "1.15.1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
package/plugin.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "graphflow",
4
- "version": "1.14.1",
4
+ "version": "1.15.1",
5
5
  "description": "图谱上下文压缩与任务规划插件(10 个 MCP 工具)。能力:压缩上下文、DAG 规划、增量建图、技能飞轮、诊断与产物导入导出。DeepSeek Harness:dsh plugin --profile web add @roarpeng/graphflow;工具名为 mcp__graphflow__graphflow_*。先调 graphflow_context(传 rootDir),复杂任务再 plan,改完代码后 index。",
6
6
  "author": {
7
7
  "name": "Roarpeng",