@roarpeng/graphflow 1.9.13 → 1.9.14
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/AGENTS.md +2 -0
- package/CHANGELOG.md +20 -0
- package/CLAUDE.md +2 -0
- package/README.md +49 -8
- package/README.zh.md +129 -0
- package/cordis.patch.yml +30 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +1 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +1 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +6 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/graph/snapshot-view.d.ts +4 -0
- package/dist/graph/snapshot-view.d.ts.map +1 -1
- package/dist/graph/snapshot-view.js +36 -2
- package/dist/graph/snapshot-view.js.map +1 -1
- package/dist/integrations/agent-mcp-installer.d.ts.map +1 -1
- package/dist/integrations/agent-mcp-installer.js +8 -0
- package/dist/integrations/agent-mcp-installer.js.map +1 -1
- package/dist/integrations/agent-profiles/index.d.ts +2 -0
- package/dist/integrations/agent-profiles/index.d.ts.map +1 -1
- package/dist/integrations/agent-profiles/index.js +2 -0
- package/dist/integrations/agent-profiles/index.js.map +1 -1
- package/dist/integrations/agent-profiles/profiles/dsh.d.ts +2 -0
- package/dist/integrations/agent-profiles/profiles/dsh.d.ts.map +1 -0
- package/dist/integrations/agent-profiles/profiles/dsh.js +16 -0
- package/dist/integrations/agent-profiles/profiles/dsh.js.map +1 -0
- package/dist/integrations/agent-profiles/skills/dsh.d.ts +2 -0
- package/dist/integrations/agent-profiles/skills/dsh.d.ts.map +1 -0
- package/dist/integrations/agent-profiles/skills/dsh.js +13 -0
- package/dist/integrations/agent-profiles/skills/dsh.js.map +1 -0
- package/dist/integrations/dsh-harness-installer.d.ts +49 -0
- package/dist/integrations/dsh-harness-installer.d.ts.map +1 -0
- package/dist/integrations/dsh-harness-installer.js +193 -0
- package/dist/integrations/dsh-harness-installer.js.map +1 -0
- package/dist/integrations/skill-installer.d.ts.map +1 -1
- package/dist/integrations/skill-installer.js +6 -0
- package/dist/integrations/skill-installer.js.map +1 -1
- package/dist/learning/dialogue-thread.d.ts +88 -0
- package/dist/learning/dialogue-thread.d.ts.map +1 -0
- package/dist/learning/dialogue-thread.js +419 -0
- package/dist/learning/dialogue-thread.js.map +1 -0
- package/dist/learning/workbench-topic.d.ts +116 -0
- package/dist/learning/workbench-topic.d.ts.map +1 -0
- package/dist/learning/workbench-topic.js +642 -0
- package/dist/learning/workbench-topic.js.map +1 -0
- package/dist/surfaces/cli/index.js +123 -5
- package/dist/surfaces/cli/index.js.map +1 -1
- package/dist/surfaces/cli/init.d.ts +3 -0
- package/dist/surfaces/cli/init.d.ts.map +1 -1
- package/dist/surfaces/cli/init.js +36 -3
- package/dist/surfaces/cli/init.js.map +1 -1
- package/dist/surfaces/cli/output.d.ts.map +1 -1
- package/dist/surfaces/cli/output.js +3 -0
- package/dist/surfaces/cli/output.js.map +1 -1
- package/dist/surfaces/cli/runtime/dialogue.d.ts +23 -0
- package/dist/surfaces/cli/runtime/dialogue.d.ts.map +1 -0
- package/dist/surfaces/cli/runtime/dialogue.js +50 -0
- package/dist/surfaces/cli/runtime/dialogue.js.map +1 -0
- package/dist/surfaces/cli/runtime/graph.d.ts +11 -2
- package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/graph.js +225 -5
- package/dist/surfaces/cli/runtime/graph.js.map +1 -1
- package/dist/surfaces/cli/runtime/routing.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/routing.js +44 -3
- package/dist/surfaces/cli/runtime/routing.js.map +1 -1
- package/dist/surfaces/cli/runtime/types.d.ts +48 -0
- package/dist/surfaces/cli/runtime/types.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime.d.ts +2 -1
- package/dist/surfaces/cli/runtime.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime.js +7 -2
- package/dist/surfaces/cli/runtime.js.map +1 -1
- package/dist/surfaces/cursor-rules/graphflow.mdc +10 -3
- package/dist/surfaces/mcp/tool-definitions.d.ts.map +1 -1
- package/dist/surfaces/mcp/tool-definitions.js +23 -3
- 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 +27 -3
- package/dist/surfaces/mcp/tool-handlers.js.map +1 -1
- package/dist/surfaces/trae-skill/graphflow/SKILL.md +50 -5
- package/package.json +11 -2
- package/plugin.json +27 -4
- package/skills/graphflow/SKILL.md +50 -5
- package/src/surfaces/cursor-rules/graphflow.mdc +10 -3
- package/src/surfaces/trae-skill/graphflow/SKILL.md +50 -5
|
@@ -31,6 +31,7 @@ function buildCliUsage() {
|
|
|
31
31
|
" graph file <path> [--json] [--config <path>]",
|
|
32
32
|
" graph rebuild [path] [--json] [--config <path>]",
|
|
33
33
|
" graph inspect [--json] [--config <path>]",
|
|
34
|
+
" workbench tree [--json] [--config <path>] # on-demand function DAG + side branches; click topicId to resume",
|
|
34
35
|
" artifact export [path] [--no-compress] [--include-episodes] [--json] [--config <path>]",
|
|
35
36
|
" artifact export-memory [dir] [--json] [--config <path>] # Markdown experience pack (skills + episodes) → graphflow-out/memory-pack/",
|
|
36
37
|
" artifact import [path] [--json] [--config <path>]",
|
|
@@ -51,6 +52,8 @@ function buildCliUsage() {
|
|
|
51
52
|
" memory list [--limit N] [--outcome pass|fail|pending] [--json] [--config <path>] # audit episodic memory: evidence records (id, task, outcome, lessons, staleGoal, updatedAt) sorted by updatedAt desc",
|
|
52
53
|
' memory search "<query>" [--limit N] [--json] [--config <path>] # semantic similarity over episodes (FNV fallback); per-hit id, task, score, outcome',
|
|
53
54
|
" memory forget <episodeId> [--json] [--config <path>] # delete a single episode record; unknown id is a clean no-op",
|
|
55
|
+
" dialogue list [--session <name|id>] [--limit N] [--json] [--config <path>] # list conversation-turn graph nodes",
|
|
56
|
+
' dialogue record --query "<text>" [--reply "<text>"] [--resume-from <turnId>] [--session <name>] [--json] [--config <path>]',
|
|
54
57
|
" help | --help | -h",
|
|
55
58
|
" version | --version | -v",
|
|
56
59
|
].join("\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/surfaces/cli/output.ts"],"names":[],"mappings":";;AAgBA,
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/surfaces/cli/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface DialogueListItem {
|
|
2
|
+
id: string;
|
|
3
|
+
sessionId: string;
|
|
4
|
+
seq: number;
|
|
5
|
+
userQuery: string;
|
|
6
|
+
assistantReply: string;
|
|
7
|
+
jumped: boolean;
|
|
8
|
+
parentTurnId?: string;
|
|
9
|
+
updatedAt: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function listDialogueTurnsRuntime(configPath?: string, options?: {
|
|
12
|
+
sessionId?: string;
|
|
13
|
+
limit?: number;
|
|
14
|
+
rootDir?: string;
|
|
15
|
+
}): Promise<DialogueListItem[]>;
|
|
16
|
+
export declare function recordDialogueTurnRuntime(userQuery: string, options?: {
|
|
17
|
+
configPath?: string;
|
|
18
|
+
rootDir?: string;
|
|
19
|
+
assistantReply?: string;
|
|
20
|
+
sessionId?: string;
|
|
21
|
+
resumeFromTurnId?: string;
|
|
22
|
+
}): Promise<DialogueListItem | undefined>;
|
|
23
|
+
//# sourceMappingURL=dialogue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialogue.d.ts","sourceRoot":"","sources":["../../../../src/surfaces/cli/runtime/dialogue.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,wBAAwB,CAC5C,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACjE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAY7B;AAED,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IACR,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GACA,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAcvC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listDialogueTurnsRuntime = listDialogueTurnsRuntime;
|
|
4
|
+
exports.recordDialogueTurnRuntime = recordDialogueTurnRuntime;
|
|
5
|
+
const resolve_1 = require("../../../config/resolve");
|
|
6
|
+
const workspace_root_1 = require("../../../config/workspace-root");
|
|
7
|
+
const client_factory_1 = require("../../../graph/client-factory");
|
|
8
|
+
const dialogue_thread_1 = require("../../../learning/dialogue-thread");
|
|
9
|
+
async function listDialogueTurnsRuntime(configPath, options) {
|
|
10
|
+
const config = (0, workspace_root_1.bindRuntimeWorkspaceRoot)((0, resolve_1.resolveConfig)(configPath), options?.rootDir ? { rootDir: options.rootDir } : undefined);
|
|
11
|
+
const client = (0, client_factory_1.createGraphClient)(config);
|
|
12
|
+
const sessionId = resolveSessionId(options?.sessionId, config.graphPolicy.workspaceRoot);
|
|
13
|
+
const turns = await (0, dialogue_thread_1.listDialogueTurns)(client, {
|
|
14
|
+
...(sessionId ? { sessionId } : {}),
|
|
15
|
+
...(options?.limit !== undefined ? { limit: options.limit } : { limit: 20 }),
|
|
16
|
+
});
|
|
17
|
+
return turns.map(toListItem);
|
|
18
|
+
}
|
|
19
|
+
async function recordDialogueTurnRuntime(userQuery, options) {
|
|
20
|
+
const config = (0, workspace_root_1.bindRuntimeWorkspaceRoot)((0, resolve_1.resolveConfig)(options?.configPath), options?.rootDir ? { rootDir: options.rootDir } : undefined);
|
|
21
|
+
const client = (0, client_factory_1.createGraphClient)(config);
|
|
22
|
+
const result = await (0, dialogue_thread_1.recordDialogueTurn)(client, {
|
|
23
|
+
userQuery,
|
|
24
|
+
...(config.graphPolicy.workspaceRoot ? { workspaceRoot: config.graphPolicy.workspaceRoot } : {}),
|
|
25
|
+
...(options?.assistantReply ? { assistantReply: options.assistantReply } : {}),
|
|
26
|
+
...(options?.sessionId ? { sessionName: options.sessionId } : {}),
|
|
27
|
+
...(options?.resumeFromTurnId ? { resumeFromTurnId: options.resumeFromTurnId } : {}),
|
|
28
|
+
});
|
|
29
|
+
return result.turn ? toListItem(result.turn) : undefined;
|
|
30
|
+
}
|
|
31
|
+
function resolveSessionId(raw, workspaceRoot) {
|
|
32
|
+
if (!raw?.trim())
|
|
33
|
+
return undefined;
|
|
34
|
+
if (raw.startsWith("dialogue-session:"))
|
|
35
|
+
return raw;
|
|
36
|
+
return (0, dialogue_thread_1.dialogueSessionIdFor)(raw, workspaceRoot);
|
|
37
|
+
}
|
|
38
|
+
function toListItem(turn) {
|
|
39
|
+
return {
|
|
40
|
+
id: turn.id,
|
|
41
|
+
sessionId: turn.sessionId,
|
|
42
|
+
seq: turn.seq,
|
|
43
|
+
userQuery: turn.userQuery,
|
|
44
|
+
assistantReply: turn.assistantReply,
|
|
45
|
+
jumped: turn.jumped,
|
|
46
|
+
...(turn.parentTurnId ? { parentTurnId: turn.parentTurnId } : {}),
|
|
47
|
+
updatedAt: turn.updatedAt,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=dialogue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialogue.js","sourceRoot":"","sources":["../../../../src/surfaces/cli/runtime/dialogue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { type GraphClient } from "../../../graph/client-factory";
|
|
2
2
|
import { GraphFileWatcher } from "../../../graph/file-watcher.js";
|
|
3
3
|
import type { SkillOutcomeKind } from "../../../learning/skill-types.js";
|
|
4
|
-
import type { ContextPreviewResult, ExpandAnchorResult, GraphIndexResult, GraphRebuildResult, GraphSnapshotResult, SkillInsightsResult } from "./types.js";
|
|
4
|
+
import type { CaptureAssistantReplyResult, ContextPreviewResult, ExpandAnchorResult, GraphIndexResult, GraphRebuildResult, GraphSnapshotResult, PreviewDialogueOptions, SkillInsightsResult } from "./types.js";
|
|
5
5
|
import type { GraphFlowConfig } from "../../../config/schema";
|
|
6
|
-
export declare function previewContext(query: string, configPath?: string, rootDir?: string, englishQuery?: string): Promise<ContextPreviewResult>;
|
|
6
|
+
export declare function previewContext(query: string, configPath?: string, rootDir?: string, englishQuery?: string, dialogue?: PreviewDialogueOptions): Promise<ContextPreviewResult>;
|
|
7
|
+
/**
|
|
8
|
+
* Write the original assistant answer onto the pending user turn/topic.
|
|
9
|
+
* Does not run context packaging and does not invent an LLM summary node.
|
|
10
|
+
*/
|
|
11
|
+
export declare function captureAssistantReply(assistantReply: string, configPath?: string, rootDir?: string, dialogue?: PreviewDialogueOptions): Promise<CaptureAssistantReplyResult>;
|
|
7
12
|
export declare function indexGraph(rootDir?: string, configPath?: string, options?: {
|
|
8
13
|
onProgress?: (processed: number, total: number) => void;
|
|
9
14
|
}): Promise<GraphIndexResult>;
|
|
@@ -29,6 +34,10 @@ export declare function inspectGraph(configPath?: string, options?: {
|
|
|
29
34
|
edgeLimit?: number;
|
|
30
35
|
rootDir?: string;
|
|
31
36
|
}): Promise<GraphSnapshotResult>;
|
|
37
|
+
export declare function listWorkbenchOutline(configPath?: string, rootDir?: string): Promise<{
|
|
38
|
+
outlines: import("../../../learning/workbench-topic").WorkbenchOutline[];
|
|
39
|
+
lines: string[];
|
|
40
|
+
}>;
|
|
32
41
|
export declare function getSkillInsights(configPath?: string, limit?: number, rootDir?: string): Promise<SkillInsightsResult>;
|
|
33
42
|
export interface FlywheelReport {
|
|
34
43
|
transport: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../../src/surfaces/cli/runtime/graph.ts"],"names":[],"mappings":"AAOA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAKpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AASlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../../src/surfaces/cli/runtime/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.previewContext = previewContext;
|
|
4
|
+
exports.captureAssistantReply = captureAssistantReply;
|
|
4
5
|
exports.indexGraph = indexGraph;
|
|
5
6
|
exports.indexFile = indexFile;
|
|
6
7
|
exports.rebuildGraph = rebuildGraph;
|
|
7
8
|
exports.inspectGraph = inspectGraph;
|
|
9
|
+
exports.listWorkbenchOutline = listWorkbenchOutline;
|
|
8
10
|
exports.getSkillInsights = getSkillInsights;
|
|
9
11
|
exports.getFlywheelReport = getFlywheelReport;
|
|
10
12
|
exports.exportArtifact = exportArtifact;
|
|
@@ -34,6 +36,8 @@ const auto_capture_js_1 = require("../../../hooks/auto-capture.js");
|
|
|
34
36
|
const skill_consolidate_js_1 = require("../../../learning/skill-consolidate.js");
|
|
35
37
|
const skill_store_js_1 = require("../../../learning/skill-store.js");
|
|
36
38
|
const logger_js_1 = require("../../../utils/logger.js");
|
|
39
|
+
const dialogue_thread_js_1 = require("../../../learning/dialogue-thread.js");
|
|
40
|
+
const workbench_topic_js_1 = require("../../../learning/workbench-topic.js");
|
|
37
41
|
const env_js_1 = require("./env.js");
|
|
38
42
|
const helpers_js_1 = require("./helpers.js");
|
|
39
43
|
const query_translate_js_1 = require("../../../graph/query-translate.js");
|
|
@@ -86,15 +90,15 @@ function graphStoreNeedsIndexing(config) {
|
|
|
86
90
|
return true;
|
|
87
91
|
}
|
|
88
92
|
}
|
|
89
|
-
async function previewContext(query, configPath, rootDir, englishQuery) {
|
|
93
|
+
async function previewContext(query, configPath, rootDir, englishQuery, dialogue) {
|
|
90
94
|
const config = (0, workspace_root_1.bindRuntimeWorkspaceRoot)((0, resolve_1.resolveConfig)(configPath), rootDir ? { rootDir } : undefined);
|
|
91
95
|
const workspaceRoot = config.graphPolicy.workspaceRoot ?? process.cwd();
|
|
92
96
|
const { getCachedContext, cacheContextResult } = await import("../../../graph/context-cache.js");
|
|
93
97
|
const cached = getCachedContext(query, workspaceRoot);
|
|
98
|
+
const graphClient = (0, client_factory_1.createGraphClient)(config);
|
|
94
99
|
if (cached) {
|
|
95
|
-
return cached;
|
|
100
|
+
return attachWorkbenchThenDialogue(cached, graphClient, config, query, dialogue);
|
|
96
101
|
}
|
|
97
|
-
const graphClient = (0, client_factory_1.createGraphClient)(config);
|
|
98
102
|
if (config.graphPolicy.autoIndexOnPreview) {
|
|
99
103
|
const root = config.graphPolicy.workspaceRoot ?? process.cwd();
|
|
100
104
|
const indexOptions = config.graphPolicy.includeExtensions
|
|
@@ -187,7 +191,185 @@ async function previewContext(query, configPath, rootDir, englishQuery) {
|
|
|
187
191
|
...(queryTranslationDelegation ?? {}),
|
|
188
192
|
};
|
|
189
193
|
cacheContextResult(query, workspaceRoot, result);
|
|
190
|
-
return result;
|
|
194
|
+
return attachWorkbenchThenDialogue(result, graphClient, config, query, dialogue);
|
|
195
|
+
}
|
|
196
|
+
async function attachWorkbenchThenDialogue(result, client, config, query, dialogue) {
|
|
197
|
+
if (dialogue?.recordDialogue === false) {
|
|
198
|
+
return result;
|
|
199
|
+
}
|
|
200
|
+
const withWorkbench = await attachWorkbenchTopic(result, client, config, query, dialogue);
|
|
201
|
+
if (withWorkbench.workbench) {
|
|
202
|
+
return withWorkbench;
|
|
203
|
+
}
|
|
204
|
+
return attachDialogueThread(result, client, config, query, dialogue);
|
|
205
|
+
}
|
|
206
|
+
async function attachWorkbenchTopic(result, client, config, query, dialogue) {
|
|
207
|
+
try {
|
|
208
|
+
const appended = await (0, workbench_topic_js_1.appendTopicMessage)(client, {
|
|
209
|
+
query,
|
|
210
|
+
...(config.graphPolicy.workspaceRoot ? { workspaceRoot: config.graphPolicy.workspaceRoot } : {}),
|
|
211
|
+
...(dialogue?.topicId ? { topicId: dialogue.topicId } : {}),
|
|
212
|
+
...(dialogue?.assistantReply ? { assistantReply: dialogue.assistantReply } : {}),
|
|
213
|
+
allowAutoFork: !dialogue?.topicId,
|
|
214
|
+
});
|
|
215
|
+
if (!appended) {
|
|
216
|
+
return result;
|
|
217
|
+
}
|
|
218
|
+
const view = await (0, workbench_topic_js_1.loadWorkbenchContext)(client, appended.topic.id);
|
|
219
|
+
if (!view) {
|
|
220
|
+
return result;
|
|
221
|
+
}
|
|
222
|
+
const promptLines = [...view.promptLines];
|
|
223
|
+
if (appended.forked) {
|
|
224
|
+
promptLines.splice(1, 0, `Forked: 当前问法偏离主线,已挂到孤立旁支。点回主线 topicId 可恢复主干。`);
|
|
225
|
+
}
|
|
226
|
+
return {
|
|
227
|
+
...result,
|
|
228
|
+
summary: [...promptLines, ...result.summary],
|
|
229
|
+
summaryCount: result.summaryCount + promptLines.length,
|
|
230
|
+
workbench: { ...view, promptLines },
|
|
231
|
+
dialogueCapture: {
|
|
232
|
+
kind: "workbench",
|
|
233
|
+
id: appended.topic.id,
|
|
234
|
+
pendingReply: (0, workbench_topic_js_1.topicPendingReply)(appended.topic),
|
|
235
|
+
forked: appended.forked,
|
|
236
|
+
filled: appended.filled,
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
catch (error) {
|
|
241
|
+
logger_js_1.logger.warn({ error }, "Workbench topic attach failed");
|
|
242
|
+
return result;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
async function attachDialogueThread(result, client, config, query, dialogue) {
|
|
246
|
+
if (config.graphPolicy.enableDialogueThread === false) {
|
|
247
|
+
return result;
|
|
248
|
+
}
|
|
249
|
+
try {
|
|
250
|
+
const workspaceRoot = config.graphPolicy.workspaceRoot;
|
|
251
|
+
const recorded = dialogue?.recordDialogue !== false
|
|
252
|
+
? await (0, dialogue_thread_js_1.recordDialogueTurn)(client, {
|
|
253
|
+
userQuery: query,
|
|
254
|
+
...(workspaceRoot ? { workspaceRoot } : {}),
|
|
255
|
+
...(dialogue?.sessionId ? { sessionName: dialogue.sessionId } : {}),
|
|
256
|
+
...(dialogue?.resumeFromTurnId ? { resumeFromTurnId: dialogue.resumeFromTurnId } : {}),
|
|
257
|
+
...(dialogue?.assistantReply ? { assistantReply: dialogue.assistantReply } : {}),
|
|
258
|
+
relatedNodeIds: result.anchors
|
|
259
|
+
.filter((anchor) => anchor.layer === "L1")
|
|
260
|
+
.slice(0, 6)
|
|
261
|
+
.map((anchor) => anchor.id),
|
|
262
|
+
})
|
|
263
|
+
: undefined;
|
|
264
|
+
const thread = await (0, dialogue_thread_js_1.loadDialogueThread)(client, {
|
|
265
|
+
...(workspaceRoot ? { workspaceRoot } : {}),
|
|
266
|
+
...(dialogue?.sessionId ? { sessionName: dialogue.sessionId } : {}),
|
|
267
|
+
});
|
|
268
|
+
if (!thread) {
|
|
269
|
+
return result;
|
|
270
|
+
}
|
|
271
|
+
const priorTokens = thread.turns
|
|
272
|
+
.slice(0, -1)
|
|
273
|
+
.flatMap((turn) => turn.userQuery.toLowerCase().split(/[^a-z0-9_\u4e00-\u9fff]+/))
|
|
274
|
+
.filter((token) => token.length >= 2);
|
|
275
|
+
const overlap = (0, dialogue_thread_js_1.scoreTopicOverlap)(priorTokens, query);
|
|
276
|
+
const jumped = thread.jumped || (thread.turns.length > 1 && overlap < 0.2);
|
|
277
|
+
const promptLines = (0, dialogue_thread_js_1.formatDialogueThreadLines)({ ...thread, jumped, overlap });
|
|
278
|
+
if (jumped && thread.turns.length > 1) {
|
|
279
|
+
promptLines.splice(1, 0, `Alignment: overlap=${Math.round(overlap * 100)}% — 已链入图谱,问法偏离主线。传入 resumeFromTurnId 可从某次对话继续深挖。`);
|
|
280
|
+
}
|
|
281
|
+
const injectSpine = thread.turns.length >= 2;
|
|
282
|
+
const tip = thread.turns[thread.turns.length - 1];
|
|
283
|
+
return {
|
|
284
|
+
...result,
|
|
285
|
+
...(injectSpine
|
|
286
|
+
? {
|
|
287
|
+
summary: [...promptLines, ...result.summary],
|
|
288
|
+
summaryCount: result.summaryCount + promptLines.length,
|
|
289
|
+
}
|
|
290
|
+
: {}),
|
|
291
|
+
dialogueThread: { ...thread, jumped, overlap, promptLines },
|
|
292
|
+
...(tip
|
|
293
|
+
? {
|
|
294
|
+
dialogueCapture: {
|
|
295
|
+
kind: "turn",
|
|
296
|
+
id: tip.id,
|
|
297
|
+
pendingReply: !tip.assistantReply.trim(),
|
|
298
|
+
filled: recorded?.reused === true && Boolean(dialogue?.assistantReply?.trim()),
|
|
299
|
+
},
|
|
300
|
+
}
|
|
301
|
+
: {}),
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
catch (error) {
|
|
305
|
+
logger_js_1.logger.warn({ error }, "Dialogue thread attach failed");
|
|
306
|
+
return result;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Write the original assistant answer onto the pending user turn/topic.
|
|
311
|
+
* Does not run context packaging and does not invent an LLM summary node.
|
|
312
|
+
*/
|
|
313
|
+
async function captureAssistantReply(assistantReply, configPath, rootDir, dialogue) {
|
|
314
|
+
const reply = assistantReply.trim();
|
|
315
|
+
if (reply.length < 1) {
|
|
316
|
+
return { ok: false, filled: false, reason: "reply-empty" };
|
|
317
|
+
}
|
|
318
|
+
const config = (0, workspace_root_1.bindRuntimeWorkspaceRoot)((0, resolve_1.resolveConfig)(configPath), rootDir ? { rootDir } : undefined);
|
|
319
|
+
const client = (0, client_factory_1.createGraphClient)(config);
|
|
320
|
+
const workspaceRoot = config.graphPolicy.workspaceRoot;
|
|
321
|
+
try {
|
|
322
|
+
const appended = await (0, workbench_topic_js_1.appendTopicMessage)(client, {
|
|
323
|
+
query: "",
|
|
324
|
+
assistantReply: reply,
|
|
325
|
+
...(workspaceRoot ? { workspaceRoot } : {}),
|
|
326
|
+
...(dialogue?.topicId ? { topicId: dialogue.topicId } : {}),
|
|
327
|
+
allowAutoFork: false,
|
|
328
|
+
});
|
|
329
|
+
if (appended) {
|
|
330
|
+
return {
|
|
331
|
+
ok: true,
|
|
332
|
+
filled: appended.filled,
|
|
333
|
+
capture: {
|
|
334
|
+
kind: "workbench",
|
|
335
|
+
id: appended.topic.id,
|
|
336
|
+
pendingReply: (0, workbench_topic_js_1.topicPendingReply)(appended.topic),
|
|
337
|
+
filled: appended.filled,
|
|
338
|
+
},
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
catch (error) {
|
|
343
|
+
logger_js_1.logger.warn({ error }, "Workbench reply capture failed");
|
|
344
|
+
}
|
|
345
|
+
if (config.graphPolicy.enableDialogueThread === false) {
|
|
346
|
+
return { ok: false, filled: false, reason: "no-pending-turn" };
|
|
347
|
+
}
|
|
348
|
+
try {
|
|
349
|
+
const recorded = await (0, dialogue_thread_js_1.recordDialogueTurn)(client, {
|
|
350
|
+
userQuery: "",
|
|
351
|
+
assistantReply: reply,
|
|
352
|
+
...(workspaceRoot ? { workspaceRoot } : {}),
|
|
353
|
+
...(dialogue?.sessionId ? { sessionName: dialogue.sessionId } : {}),
|
|
354
|
+
});
|
|
355
|
+
if (recorded.recorded && recorded.turn) {
|
|
356
|
+
return {
|
|
357
|
+
ok: true,
|
|
358
|
+
filled: recorded.reused,
|
|
359
|
+
capture: {
|
|
360
|
+
kind: "turn",
|
|
361
|
+
id: recorded.turn.id,
|
|
362
|
+
pendingReply: !recorded.turn.assistantReply.trim(),
|
|
363
|
+
filled: recorded.reused,
|
|
364
|
+
},
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
return { ok: false, filled: false, reason: recorded.skipped ?? "no-pending-turn" };
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
logger_js_1.logger.warn({ error }, "Dialogue reply capture failed");
|
|
371
|
+
return { ok: false, filled: false, reason: "capture-failed" };
|
|
372
|
+
}
|
|
191
373
|
}
|
|
192
374
|
async function indexGraph(rootDir, configPath, options) {
|
|
193
375
|
const config = (0, workspace_root_1.bindRuntimeWorkspaceRoot)((0, resolve_1.resolveConfig)(configPath), rootDir ? { rootDir } : undefined);
|
|
@@ -267,6 +449,7 @@ async function inspectGraph(configPath, options) {
|
|
|
267
449
|
topRelations: [],
|
|
268
450
|
sampleNodes: [],
|
|
269
451
|
sampleEdges: [],
|
|
452
|
+
workbenchOutline: [],
|
|
270
453
|
};
|
|
271
454
|
}
|
|
272
455
|
let store = (0, helpers_js_1.loadGraphStore)(config);
|
|
@@ -299,8 +482,15 @@ async function inspectGraph(configPath, options) {
|
|
|
299
482
|
.sort((a, b) => b.count - a.count || a.relation.localeCompare(b.relation))
|
|
300
483
|
.slice(0, 8),
|
|
301
484
|
...(0, snapshot_view_js_1.sampleGraphForSnapshot)(store.nodes, store.edges, nodeLimit, edgeLimit, config.graphPolicy.workspaceRoot ?? process.cwd()),
|
|
485
|
+
workbenchOutline: (0, workbench_topic_js_1.buildWorkbenchOutlines)(store.nodes, store.edges),
|
|
302
486
|
};
|
|
303
487
|
}
|
|
488
|
+
async function listWorkbenchOutline(configPath, rootDir) {
|
|
489
|
+
const config = (0, workspace_root_1.bindRuntimeWorkspaceRoot)((0, resolve_1.resolveConfig)(configPath), rootDir ? { rootDir } : undefined);
|
|
490
|
+
const client = (0, client_factory_1.createGraphClient)(config);
|
|
491
|
+
const outlines = await (0, workbench_topic_js_1.loadWorkbenchOutlines)(client);
|
|
492
|
+
return { outlines, lines: (0, workbench_topic_js_1.formatWorkbenchOutlineLines)(outlines) };
|
|
493
|
+
}
|
|
304
494
|
async function getSkillInsights(configPath, limit = 12, rootDir) {
|
|
305
495
|
const config = (0, workspace_root_1.bindRuntimeWorkspaceRoot)((0, resolve_1.resolveConfig)(configPath), rootDir ? { rootDir } : undefined);
|
|
306
496
|
const boundedLimit = Math.max(1, limit);
|
|
@@ -729,7 +919,7 @@ async function expandAnchor(anchorId, configPath, rootDir) {
|
|
|
729
919
|
}
|
|
730
920
|
}
|
|
731
921
|
}
|
|
732
|
-
|
|
922
|
+
const expanded = {
|
|
733
923
|
anchorId: node.id,
|
|
734
924
|
type: node.type,
|
|
735
925
|
content: node.content,
|
|
@@ -738,6 +928,36 @@ async function expandAnchor(anchorId, configPath, rootDir) {
|
|
|
738
928
|
...(sourceSnippet ? { sourceSnippet } : {}),
|
|
739
929
|
...(node.metadata ? { metadata: node.metadata } : {}),
|
|
740
930
|
};
|
|
931
|
+
if ((0, workbench_topic_js_1.isWorkbenchTopicNode)(node)) {
|
|
932
|
+
const topic = (0, workbench_topic_js_1.parseWorkbenchTopic)(node);
|
|
933
|
+
const view = topic ? await (0, workbench_topic_js_1.loadWorkbenchContext)(graphClient, topic.id) : undefined;
|
|
934
|
+
if (view) {
|
|
935
|
+
expanded.content = view.promptLines.join("\n");
|
|
936
|
+
expanded.metadata = {
|
|
937
|
+
...(expanded.metadata ?? {}),
|
|
938
|
+
workbench: view,
|
|
939
|
+
topicId: view.active.id,
|
|
940
|
+
};
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
else if ((0, dialogue_thread_js_1.isDialogueTurnNode)(node)) {
|
|
944
|
+
const turn = (0, dialogue_thread_js_1.parseDialogueTurn)(node);
|
|
945
|
+
const thread = await (0, dialogue_thread_js_1.loadDialogueThread)(graphClient, {
|
|
946
|
+
...(turn?.sessionId ? { sessionId: turn.sessionId } : {}),
|
|
947
|
+
...(config.graphPolicy.workspaceRoot ? { workspaceRoot: config.graphPolicy.workspaceRoot } : {}),
|
|
948
|
+
});
|
|
949
|
+
if (thread) {
|
|
950
|
+
expanded.dialogueThread = thread;
|
|
951
|
+
expanded.content = [
|
|
952
|
+
`Dialogue turn #${turn?.seq ?? "?"} (${turn?.jumped ? "jump" : "mainline"})`,
|
|
953
|
+
`Q: ${turn?.userQuery ?? node.content}`,
|
|
954
|
+
`A: ${turn?.assistantReply?.trim() ? turn.assistantReply : "(pending)"}`,
|
|
955
|
+
`resumeFromTurnId: ${node.id}`,
|
|
956
|
+
...thread.promptLines,
|
|
957
|
+
].join("\n");
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
return expanded;
|
|
741
961
|
}
|
|
742
962
|
/**
|
|
743
963
|
* Start a file watcher for auto-indexing on save when `autoIndexOnSave` is enabled.
|