@prestyj/cli 4.2.15 → 4.2.44
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/LICENSE +1 -1
- package/README.md +15 -7
- package/dist/cli.js +457 -225
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +66 -0
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts +22 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +184 -23
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/agents.d.ts +0 -2
- package/dist/core/agents.d.ts.map +1 -1
- package/dist/core/agents.js +1 -5
- package/dist/core/agents.js.map +1 -1
- package/dist/core/auth-storage.d.ts +2 -0
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +66 -17
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/auto-update.js +1 -1
- package/dist/core/auto-update.js.map +1 -1
- package/dist/core/compaction/compactor.d.ts +36 -5
- package/dist/core/compaction/compactor.d.ts.map +1 -1
- package/dist/core/compaction/compactor.js +222 -63
- package/dist/core/compaction/compactor.js.map +1 -1
- package/dist/core/compaction/compactor.test.js +377 -32
- package/dist/core/compaction/compactor.test.js.map +1 -1
- package/dist/core/compaction/token-estimator.d.ts +5 -0
- package/dist/core/compaction/token-estimator.d.ts.map +1 -1
- package/dist/core/compaction/token-estimator.js +41 -2
- package/dist/core/compaction/token-estimator.js.map +1 -1
- package/dist/core/compaction/token-estimator.test.js +43 -21
- package/dist/core/compaction/token-estimator.test.js.map +1 -1
- package/dist/core/event-bus.d.ts +6 -0
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js +7 -0
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/file-lock.d.ts +6 -0
- package/dist/core/file-lock.d.ts.map +1 -0
- package/dist/core/file-lock.js +76 -0
- package/dist/core/file-lock.js.map +1 -0
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/mcp/client.d.ts +0 -26
- package/dist/core/mcp/client.d.ts.map +1 -1
- package/dist/core/mcp/client.js +34 -141
- package/dist/core/mcp/client.js.map +1 -1
- package/dist/core/mcp/defaults.d.ts.map +1 -1
- package/dist/core/mcp/defaults.js +4 -8
- package/dist/core/mcp/defaults.js.map +1 -1
- package/dist/core/mcp/types.d.ts +0 -2
- package/dist/core/mcp/types.d.ts.map +1 -1
- package/dist/core/model-registry.d.ts +2 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +16 -5
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/oauth/anthropic.d.ts.map +1 -1
- package/dist/core/oauth/anthropic.js +3 -3
- package/dist/core/oauth/anthropic.js.map +1 -1
- package/dist/core/prompt-commands.d.ts.map +1 -1
- package/dist/core/prompt-commands.js +21 -0
- package/dist/core/prompt-commands.js.map +1 -1
- package/dist/core/session-manager.d.ts +34 -2
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +160 -54
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +2 -2
- package/dist/core/skills.d.ts +2 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +8 -8
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts +4 -0
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +22 -0
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/telegram.d.ts +94 -0
- package/dist/core/telegram.d.ts.map +1 -0
- package/dist/core/telegram.js +227 -0
- package/dist/core/telegram.js.map +1 -0
- package/dist/interactive.d.ts.map +1 -1
- package/dist/interactive.js +36 -5
- package/dist/interactive.js.map +1 -1
- package/dist/modes/index.d.ts +1 -0
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js +1 -0
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/json-mode.d.ts.map +1 -1
- package/dist/modes/json-mode.js +2 -1
- package/dist/modes/json-mode.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +2 -1
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc-mode.d.ts +28 -0
- package/dist/modes/rpc-mode.d.ts.map +1 -0
- package/dist/modes/rpc-mode.js +146 -0
- package/dist/modes/rpc-mode.js.map +1 -0
- package/dist/modes/serve-mode.d.ts +21 -0
- package/dist/modes/serve-mode.d.ts.map +1 -0
- package/dist/modes/serve-mode.js +650 -0
- package/dist/modes/serve-mode.js.map +1 -0
- package/dist/system-prompt.d.ts +1 -1
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +45 -10
- package/dist/system-prompt.js.map +1 -1
- package/dist/tools/bash.d.ts +4 -1
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +58 -5
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/edit.d.ts +4 -1
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +9 -5
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/enter-plan.d.ts +8 -0
- package/dist/tools/enter-plan.d.ts.map +1 -0
- package/dist/tools/enter-plan.js +28 -0
- package/dist/tools/enter-plan.js.map +1 -0
- package/dist/tools/exit-plan.d.ts +8 -0
- package/dist/tools/exit-plan.d.ts.map +1 -0
- package/dist/tools/exit-plan.js +35 -0
- package/dist/tools/exit-plan.js.map +1 -0
- package/dist/tools/grep.d.ts +2 -1
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +7 -8
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/index.d.ts +17 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +26 -7
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/ls.d.ts +2 -1
- package/dist/tools/ls.d.ts.map +1 -1
- package/dist/tools/ls.js +4 -4
- package/dist/tools/ls.js.map +1 -1
- package/dist/tools/operations.d.ts +39 -0
- package/dist/tools/operations.d.ts.map +1 -0
- package/dist/tools/operations.js +27 -0
- package/dist/tools/operations.js.map +1 -0
- package/dist/tools/path-utils.d.ts +5 -0
- package/dist/tools/path-utils.d.ts.map +1 -1
- package/dist/tools/path-utils.js +18 -0
- package/dist/tools/path-utils.js.map +1 -1
- package/dist/tools/plan-mode.test.d.ts +2 -0
- package/dist/tools/plan-mode.test.d.ts.map +1 -0
- package/dist/tools/plan-mode.test.js +214 -0
- package/dist/tools/plan-mode.test.js.map +1 -0
- package/dist/tools/read.d.ts +2 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +6 -5
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/skill.d.ts +10 -0
- package/dist/tools/skill.d.ts.map +1 -0
- package/dist/tools/skill.js +36 -0
- package/dist/tools/skill.js.map +1 -0
- package/dist/tools/subagent.d.ts +3 -1
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/subagent.js +46 -4
- package/dist/tools/subagent.js.map +1 -1
- package/dist/tools/tasks.d.ts +2 -2
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +47 -0
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/write.d.ts +4 -1
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +17 -6
- package/dist/tools/write.js.map +1 -1
- package/dist/ui/App.d.ts +35 -1
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +367 -73
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/components/ActivityIndicator.d.ts +2 -1
- package/dist/ui/components/ActivityIndicator.d.ts.map +1 -1
- package/dist/ui/components/ActivityIndicator.js +25 -4
- package/dist/ui/components/ActivityIndicator.js.map +1 -1
- package/dist/ui/components/AnimationContext.d.ts +22 -0
- package/dist/ui/components/AnimationContext.d.ts.map +1 -0
- package/dist/ui/components/AnimationContext.js +35 -0
- package/dist/ui/components/AnimationContext.js.map +1 -0
- package/dist/ui/components/AssistantMessage.d.ts.map +1 -1
- package/dist/ui/components/AssistantMessage.js +6 -1
- package/dist/ui/components/AssistantMessage.js.map +1 -1
- package/dist/ui/components/Banner.d.ts.map +1 -1
- package/dist/ui/components/Banner.js +4 -7
- package/dist/ui/components/Banner.js.map +1 -1
- package/dist/ui/components/CompactionNotice.d.ts.map +1 -1
- package/dist/ui/components/CompactionNotice.js +4 -8
- package/dist/ui/components/CompactionNotice.js.map +1 -1
- package/dist/ui/components/Footer.d.ts +2 -1
- package/dist/ui/components/Footer.d.ts.map +1 -1
- package/dist/ui/components/Footer.js +8 -15
- package/dist/ui/components/Footer.js.map +1 -1
- package/dist/ui/components/InputArea.d.ts +3 -1
- package/dist/ui/components/InputArea.d.ts.map +1 -1
- package/dist/ui/components/InputArea.js +23 -25
- package/dist/ui/components/InputArea.js.map +1 -1
- package/dist/ui/components/PlanApproval.d.ts +8 -0
- package/dist/ui/components/PlanApproval.d.ts.map +1 -0
- package/dist/ui/components/PlanApproval.js +44 -0
- package/dist/ui/components/PlanApproval.js.map +1 -0
- package/dist/ui/components/PlanBanner.d.ts +6 -0
- package/dist/ui/components/PlanBanner.d.ts.map +1 -0
- package/dist/ui/components/PlanBanner.js +14 -0
- package/dist/ui/components/PlanBanner.js.map +1 -0
- package/dist/ui/components/PlanOverlay.d.ts +11 -0
- package/dist/ui/components/PlanOverlay.d.ts.map +1 -0
- package/dist/ui/components/PlanOverlay.js +263 -0
- package/dist/ui/components/PlanOverlay.js.map +1 -0
- package/dist/ui/components/ServerToolExecution.d.ts +1 -0
- package/dist/ui/components/ServerToolExecution.d.ts.map +1 -1
- package/dist/ui/components/ServerToolExecution.js +12 -3
- package/dist/ui/components/ServerToolExecution.js.map +1 -1
- package/dist/ui/components/SkillsOverlay.d.ts +7 -0
- package/dist/ui/components/SkillsOverlay.d.ts.map +1 -0
- package/dist/ui/components/SkillsOverlay.js +158 -0
- package/dist/ui/components/SkillsOverlay.js.map +1 -0
- package/dist/ui/components/Spinner.d.ts.map +1 -1
- package/dist/ui/components/Spinner.js +5 -9
- package/dist/ui/components/Spinner.js.map +1 -1
- package/dist/ui/components/StreamingArea.d.ts +2 -1
- package/dist/ui/components/StreamingArea.d.ts.map +1 -1
- package/dist/ui/components/StreamingArea.js +11 -4
- package/dist/ui/components/StreamingArea.js.map +1 -1
- package/dist/ui/components/SubAgentPanel.d.ts.map +1 -1
- package/dist/ui/components/SubAgentPanel.js +27 -29
- package/dist/ui/components/SubAgentPanel.js.map +1 -1
- package/dist/ui/components/TaskOverlay.d.ts.map +1 -1
- package/dist/ui/components/TaskOverlay.js +7 -3
- package/dist/ui/components/TaskOverlay.js.map +1 -1
- package/dist/ui/components/ThinkingBlock.d.ts.map +1 -1
- package/dist/ui/components/ThinkingBlock.js +4 -1
- package/dist/ui/components/ThinkingBlock.js.map +1 -1
- package/dist/ui/components/ThinkingIndicator.d.ts.map +1 -1
- package/dist/ui/components/ThinkingIndicator.js +8 -33
- package/dist/ui/components/ThinkingIndicator.js.map +1 -1
- package/dist/ui/components/ToolExecution.d.ts.map +1 -1
- package/dist/ui/components/ToolExecution.js +95 -41
- package/dist/ui/components/ToolExecution.js.map +1 -1
- package/dist/ui/components/ToolGroupExecution.d.ts +7 -0
- package/dist/ui/components/ToolGroupExecution.d.ts.map +1 -0
- package/dist/ui/components/ToolGroupExecution.js +115 -0
- package/dist/ui/components/ToolGroupExecution.js.map +1 -0
- package/dist/ui/components/UserMessage.js +1 -1
- package/dist/ui/components/UserMessage.js.map +1 -1
- package/dist/ui/components/index.d.ts +1 -0
- package/dist/ui/components/index.d.ts.map +1 -1
- package/dist/ui/components/index.js +1 -0
- package/dist/ui/components/index.js.map +1 -1
- package/dist/ui/hooks/useAgentLoop.d.ts +8 -0
- package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
- package/dist/ui/hooks/useAgentLoop.js +320 -220
- package/dist/ui/hooks/useAgentLoop.js.map +1 -1
- package/dist/ui/hooks/useTerminalSize.d.ts +21 -9
- package/dist/ui/hooks/useTerminalSize.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalSize.js +33 -16
- package/dist/ui/hooks/useTerminalSize.js.map +1 -1
- package/dist/ui/hooks/useTerminalTitle.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalTitle.js +8 -16
- package/dist/ui/hooks/useTerminalTitle.js.map +1 -1
- package/dist/ui/live-item-flush.d.ts +11 -1
- package/dist/ui/live-item-flush.d.ts.map +1 -1
- package/dist/ui/live-item-flush.js +81 -2
- package/dist/ui/live-item-flush.js.map +1 -1
- package/dist/ui/login.d.ts +1 -1
- package/dist/ui/login.d.ts.map +1 -1
- package/dist/ui/login.js +30 -6
- package/dist/ui/login.js.map +1 -1
- package/dist/ui/render.d.ts +11 -0
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +24 -10
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/sessions.d.ts +2 -0
- package/dist/ui/sessions.d.ts.map +1 -0
- package/dist/ui/sessions.js +208 -0
- package/dist/ui/sessions.js.map +1 -0
- package/dist/ui/theme/dark.json +3 -1
- package/dist/ui/theme/light.json +3 -1
- package/dist/ui/theme/theme.d.ts +2 -0
- package/dist/ui/theme/theme.d.ts.map +1 -1
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js +17 -5
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/image.d.ts.map +1 -1
- package/dist/utils/image.js +60 -5
- package/dist/utils/image.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/mcp/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/mcp/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,mBAAmB,EAAE,eAAe,EAEhD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,mBAAmB,EAAE,eAAe,EAEhD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE,CA4CpF"}
|
|
@@ -9,7 +9,7 @@ export function getMCPServers(provider, apiKey) {
|
|
|
9
9
|
const servers = [...DEFAULT_MCP_SERVERS];
|
|
10
10
|
if (provider === "glm" && apiKey) {
|
|
11
11
|
const zaiAuth = { Authorization: `Bearer ${apiKey}` };
|
|
12
|
-
// Vision (image support via stdio MCP server)
|
|
12
|
+
// Vision (image support via stdio MCP server)
|
|
13
13
|
servers.push({
|
|
14
14
|
name: "zai_vision",
|
|
15
15
|
command: "npx",
|
|
@@ -19,31 +19,27 @@ export function getMCPServers(provider, apiKey) {
|
|
|
19
19
|
Z_AI_MODE: "ZAI",
|
|
20
20
|
},
|
|
21
21
|
timeout: 60_000,
|
|
22
|
-
lazy: true,
|
|
23
22
|
});
|
|
24
|
-
// Web search
|
|
23
|
+
// Web search
|
|
25
24
|
servers.push({
|
|
26
25
|
name: "zai_web_search",
|
|
27
26
|
url: "https://api.z.ai/api/mcp/web_search_prime/mcp",
|
|
28
27
|
headers: zaiAuth,
|
|
29
28
|
timeout: 60_000,
|
|
30
|
-
lazy: true,
|
|
31
29
|
});
|
|
32
|
-
// Web reader (full-page content extraction)
|
|
30
|
+
// Web reader (full-page content extraction)
|
|
33
31
|
servers.push({
|
|
34
32
|
name: "zai_web_reader",
|
|
35
33
|
url: "https://api.z.ai/api/mcp/web_reader/mcp",
|
|
36
34
|
headers: zaiAuth,
|
|
37
35
|
timeout: 60_000,
|
|
38
|
-
lazy: true,
|
|
39
36
|
});
|
|
40
|
-
// GitHub repository exploration
|
|
37
|
+
// GitHub repository exploration
|
|
41
38
|
servers.push({
|
|
42
39
|
name: "zai_zread",
|
|
43
40
|
url: "https://api.z.ai/api/mcp/zread/mcp",
|
|
44
41
|
headers: zaiAuth,
|
|
45
42
|
timeout: 60_000,
|
|
46
|
-
lazy: true,
|
|
47
43
|
});
|
|
48
44
|
}
|
|
49
45
|
return servers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/core/mcp/defaults.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,sBAAsB,EAAE;CAC9C,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAkB,EAAE,MAAe;IAC/D,MAAM,OAAO,GAAG,CAAC,GAAG,mBAAmB,CAAC,CAAC;IAEzC,IAAI,QAAQ,KAAK,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE,CAAC;QAEtD,
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/core/mcp/defaults.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,sBAAsB,EAAE;CAC9C,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAkB,EAAE,MAAe;IAC/D,MAAM,OAAO,GAAG,CAAC,GAAG,mBAAmB,CAAC,CAAC;IAEzC,IAAI,QAAQ,KAAK,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE,CAAC;QAEtD,8CAA8C;QAC9C,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,CAAC,IAAI,EAAE,kBAAkB,CAAC;YAChC,GAAG,EAAE;gBACH,YAAY,EAAE,MAAM;gBACpB,SAAS,EAAE,KAAK;aACjB;YACD,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QAEH,aAAa;QACb,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,GAAG,EAAE,+CAA+C;YACpD,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QAEH,4CAA4C;QAC5C,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,gBAAgB;YACtB,GAAG,EAAE,yCAAyC;YAC9C,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QAEH,gCAAgC;QAChC,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,oCAAoC;YACzC,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/core/mcp/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
|
|
@@ -18,7 +18,8 @@ export declare function getContextWindow(modelId: string): number;
|
|
|
18
18
|
* Get the model to use for compaction summarization.
|
|
19
19
|
* - Anthropic: always Sonnet 4.6
|
|
20
20
|
* - OpenAI: cheapest (Codex Mini)
|
|
21
|
-
* - GLM
|
|
21
|
+
* - GLM: GLM-4.7 Flash (cheap alternative)
|
|
22
|
+
* - Moonshot: use the current model (no cheap alternative)
|
|
22
23
|
*/
|
|
23
24
|
export declare function getSummaryModel(provider: Provider, currentModelId: string): ModelInfo;
|
|
24
25
|
//# sourceMappingURL=model-registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACrC;AAED,eAAO,MAAM,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"model-registry.d.ts","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACrC;AAED,eAAO,MAAM,MAAM,EAAE,SAAS,EA+F7B,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAE1D;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAAE,CAEpE;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAK7D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,GAAG,SAAS,CAUrF"}
|
|
@@ -4,7 +4,7 @@ export const MODELS = [
|
|
|
4
4
|
id: "claude-opus-4-6",
|
|
5
5
|
name: "Claude Opus 4.6",
|
|
6
6
|
provider: "anthropic",
|
|
7
|
-
contextWindow:
|
|
7
|
+
contextWindow: 1_000_000,
|
|
8
8
|
maxOutputTokens: 128_000,
|
|
9
9
|
supportsThinking: true,
|
|
10
10
|
supportsImages: true,
|
|
@@ -14,7 +14,7 @@ export const MODELS = [
|
|
|
14
14
|
id: "claude-sonnet-4-6",
|
|
15
15
|
name: "Claude Sonnet 4.6",
|
|
16
16
|
provider: "anthropic",
|
|
17
|
-
contextWindow:
|
|
17
|
+
contextWindow: 1_000_000,
|
|
18
18
|
maxOutputTokens: 64_000,
|
|
19
19
|
supportsThinking: true,
|
|
20
20
|
supportsImages: true,
|
|
@@ -72,6 +72,16 @@ export const MODELS = [
|
|
|
72
72
|
supportsImages: false,
|
|
73
73
|
costTier: "low",
|
|
74
74
|
},
|
|
75
|
+
{
|
|
76
|
+
id: "glm-4.7-flash",
|
|
77
|
+
name: "GLM-4.7 Flash",
|
|
78
|
+
provider: "glm",
|
|
79
|
+
contextWindow: 128_000,
|
|
80
|
+
maxOutputTokens: 16_384,
|
|
81
|
+
supportsThinking: true,
|
|
82
|
+
supportsImages: false,
|
|
83
|
+
costTier: "low",
|
|
84
|
+
},
|
|
75
85
|
// ── Moonshot (Kimi) ──────────────────────────────────────
|
|
76
86
|
{
|
|
77
87
|
id: "kimi-k2.5",
|
|
@@ -107,18 +117,19 @@ export function getContextWindow(modelId) {
|
|
|
107
117
|
* Get the model to use for compaction summarization.
|
|
108
118
|
* - Anthropic: always Sonnet 4.6
|
|
109
119
|
* - OpenAI: cheapest (Codex Mini)
|
|
110
|
-
* - GLM
|
|
120
|
+
* - GLM: GLM-4.7 Flash (cheap alternative)
|
|
121
|
+
* - Moonshot: use the current model (no cheap alternative)
|
|
111
122
|
*/
|
|
112
123
|
export function getSummaryModel(provider, currentModelId) {
|
|
113
124
|
if (provider === "anthropic") {
|
|
114
125
|
return MODELS.find((m) => m.id === "claude-sonnet-4-6");
|
|
115
126
|
}
|
|
116
|
-
if (provider === "openai") {
|
|
127
|
+
if (provider === "openai" || provider === "glm") {
|
|
117
128
|
const low = getModelsForProvider(provider).find((m) => m.costTier === "low");
|
|
118
129
|
if (low)
|
|
119
130
|
return low;
|
|
120
131
|
}
|
|
121
|
-
//
|
|
132
|
+
// Moonshot or fallback: use current model
|
|
122
133
|
return getModel(currentModelId) ?? getDefaultModel(provider);
|
|
123
134
|
}
|
|
124
135
|
//# sourceMappingURL=model-registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,MAAM,GAAgB;IACjC,0DAA0D;IAC1D;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,WAAW;QACrB,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,MAAM,GAAgB;IACjC,0DAA0D;IAC1D;QACE,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,WAAW;QACrB,aAAa,EAAE,SAAS;QACxB,eAAe,EAAE,OAAO;QACxB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,mBAAmB;QACzB,QAAQ,EAAE,WAAW;QACrB,aAAa,EAAE,SAAS;QACxB,eAAe,EAAE,MAAM;QACvB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,QAAQ;KACnB;IACD;QACE,EAAE,EAAE,2BAA2B;QAC/B,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,WAAW;QACrB,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,MAAM;QACvB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,KAAK;KAChB;IACD,0DAA0D;IAC1D;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,QAAQ;QAClB,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,OAAO;QACxB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,MAAM;KACjB;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,QAAQ;QAClB,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,OAAO;QACxB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,KAAK;KAChB;IACD,4DAA4D;IAC5D;QACE,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;QACf,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,MAAM;QACvB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,KAAK;QACrB,QAAQ,EAAE,QAAQ;KACnB;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;QACf,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,MAAM;QACvB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,KAAK;QACrB,QAAQ,EAAE,KAAK;KAChB;IACD;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,eAAe;QACrB,QAAQ,EAAE,KAAK;QACf,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,MAAM;QACvB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,KAAK;QACrB,QAAQ,EAAE,KAAK;KAChB;IACD,4DAA4D;IAC5D;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,UAAU;QACpB,aAAa,EAAE,OAAO;QACtB,eAAe,EAAE,MAAM;QACvB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,QAAQ;KACnB;CACF,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAkB;IACrD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAkB;IAChD,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,eAAe,CAAE,CAAC;IAChF,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAE,CAAC;IACrE,IAAI,QAAQ,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,WAAW,CAAE,CAAC;IAC9E,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,mBAAmB,CAAE,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO,KAAK,EAAE,aAAa,IAAI,OAAO,CAAC;AACzC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,QAAkB,EAAE,cAAsB;IACxE,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,mBAAmB,CAAE,CAAC;IAC3D,CAAC;IACD,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;QAC7E,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;IACtB,CAAC;IACD,0CAA0C;IAC1C,OAAO,QAAQ,CAAC,cAAc,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/core/oauth/anthropic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/core/oauth/anthropic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AASxE,wBAAsB,cAAc,CAAC,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA0B9F;AAsCD,wBAAsB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2B3F"}
|
|
@@ -2,9 +2,9 @@ import crypto from "node:crypto";
|
|
|
2
2
|
import { generatePKCE } from "./pkce.js";
|
|
3
3
|
const CLIENT_ID = atob("OWQxYzI1MGEtZTYxYi00NGQ5LTg4ZWQtNTk0NGQxOTYyZjVl");
|
|
4
4
|
const AUTHORIZE_URL = "https://claude.ai/oauth/authorize";
|
|
5
|
-
const TOKEN_URL = "https://
|
|
6
|
-
const REDIRECT_URI = "https://
|
|
7
|
-
const SCOPES = "org:create_api_key user:profile user:inference";
|
|
5
|
+
const TOKEN_URL = "https://platform.claude.com/v1/oauth/token";
|
|
6
|
+
const REDIRECT_URI = "https://platform.claude.com/oauth/code/callback";
|
|
7
|
+
const SCOPES = "org:create_api_key user:profile user:inference user:sessions:claude_code user:mcp_servers user:file_upload";
|
|
8
8
|
export async function loginAnthropic(callbacks) {
|
|
9
9
|
const { verifier, challenge } = await generatePKCE();
|
|
10
10
|
const state = crypto.randomBytes(16).toString("hex");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/core/oauth/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,MAAM,SAAS,GAAG,IAAI,CAAC,kDAAkD,CAAC,CAAC;AAC3E,MAAM,aAAa,GAAG,mCAAmC,CAAC;AAC1D,MAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/core/oauth/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-commands.d.ts","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"prompt-commands.d.ts","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,EAse1C,CAAC;AAEF,gDAAgD;AAChD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAExE"}
|
|
@@ -467,6 +467,27 @@ Replace all placeholders with the actual commands for the detected project type
|
|
|
467
467
|
|
|
468
468
|
Report that /update is now available with dependency updates, security audits, and deprecation fixes.`,
|
|
469
469
|
},
|
|
470
|
+
{
|
|
471
|
+
name: "compare",
|
|
472
|
+
aliases: [],
|
|
473
|
+
description: "Compare code against real-world implementations via Grep MCP",
|
|
474
|
+
prompt: `Compare the code you just created or modified in this conversation against real-world implementations using the \`mcp__grep__searchGitHub\` tool.
|
|
475
|
+
|
|
476
|
+
You already know what you just built. For each file you created or modified, use \`mcp__grep__searchGitHub\` to search for how real projects implement the same patterns. Look at the specific APIs, hooks, functions, and architecture you used.
|
|
477
|
+
|
|
478
|
+
If you find something consistently done differently across real codebases, or something commonly included that you left out, report it:
|
|
479
|
+
|
|
480
|
+
\`\`\`
|
|
481
|
+
[MISSING/DIVERGENT/INCOMPLETE] file:line - What it is
|
|
482
|
+
Wrote: What was implemented
|
|
483
|
+
Real-world: What real projects do instead/additionally
|
|
484
|
+
Evidence: Grep MCP - pattern seen in X out of Y repos searched
|
|
485
|
+
\`\`\`
|
|
486
|
+
|
|
487
|
+
Style preferences and subjective improvements are not valid findings. Only report things backed by clear Grep MCP evidence across multiple repos.
|
|
488
|
+
|
|
489
|
+
If the code aligns well with real-world patterns, say so. That's a good outcome.`,
|
|
490
|
+
},
|
|
470
491
|
];
|
|
471
492
|
/** Look up a prompt command by name or alias */
|
|
472
493
|
export function getPromptCommand(name) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-commands.js","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,2CAA2C;QACxD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uFAuC2E;KACpF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,6CAA6C;QAC1D,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8FAiDkF;KAC3F;IACD;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,yCAAyC;QACtD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDA6DwC;KACjD;IACD;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,+CAA+C;QAC5D,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2FAwC+E;KACxF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,sDAAsD;QACnE,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8EA8DkE;KAC3E;IACD;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,gDAAgD;QAC7D,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2FA2C+E;KACxF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,6CAA6C;QAC1D,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yFA4D6E;KACtF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,oDAAoD;QACjE,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sGA8D0F;KACnG;CACF,CAAC;AAEF,gDAAgD;AAChD,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACxF,CAAC"}
|
|
1
|
+
{"version":3,"file":"prompt-commands.js","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,2CAA2C;QACxD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uFAuC2E;KACpF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,6CAA6C;QAC1D,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8FAiDkF;KAC3F;IACD;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,yCAAyC;QACtD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oDA6DwC;KACjD;IACD;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,+CAA+C;QAC5D,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2FAwC+E;KACxF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,sDAAsD;QACnE,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8EA8DkE;KAC3E;IACD;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,gDAAgD;QAC7D,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2FA2C+E;KACxF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,6CAA6C;QAC1D,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yFA4D6E;KACtF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,oDAAoD;QACjE,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sGA8D0F;KACnG;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,8DAA8D;QAC3E,MAAM,EAAE;;;;;;;;;;;;;;;iFAeqE;KAC9E;CACF,CAAC;AAEF,gDAAgD;AAChD,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACxF,CAAC"}
|
|
@@ -50,6 +50,16 @@ export interface SessionInfo {
|
|
|
50
50
|
cwd: string;
|
|
51
51
|
messageCount: number;
|
|
52
52
|
}
|
|
53
|
+
export interface BranchInfo {
|
|
54
|
+
/** The entry ID where this branch diverges from its parent branch */
|
|
55
|
+
branchPointId: string;
|
|
56
|
+
/** The leaf (tip) entry ID of this branch */
|
|
57
|
+
leafId: string;
|
|
58
|
+
/** Number of entries in this branch after the branch point */
|
|
59
|
+
entryCount: number;
|
|
60
|
+
/** Timestamp of the first entry in the branch */
|
|
61
|
+
timestamp: string;
|
|
62
|
+
}
|
|
53
63
|
export declare class SessionManager {
|
|
54
64
|
private sessionsDir;
|
|
55
65
|
constructor(sessionsDir: string);
|
|
@@ -67,14 +77,36 @@ export declare class SessionManager {
|
|
|
67
77
|
getMostRecent(cwd: string): Promise<string | null>;
|
|
68
78
|
appendEntry(sessionPath: string, entry: SessionEntry): Promise<void>;
|
|
69
79
|
updateLeaf(sessionPath: string, leafId: string): Promise<void>;
|
|
70
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Get messages for the current branch. If leafId is set, walks the
|
|
82
|
+
* DAG from leaf to root. Otherwise returns all entries linearly.
|
|
83
|
+
*/
|
|
84
|
+
getMessages(entries: SessionEntry[], leafId?: string | null): Message[];
|
|
71
85
|
/**
|
|
72
86
|
* Ensure every assistant message with tool_use blocks is followed by a tool
|
|
73
87
|
* message containing matching tool_result entries. Inserts synthetic
|
|
74
88
|
* tool_result messages where needed to prevent Anthropic API 400 errors.
|
|
75
89
|
*/
|
|
76
90
|
static repairToolPairs(messages: Message[]): Message[];
|
|
77
|
-
|
|
91
|
+
/**
|
|
92
|
+
* Build a lookup Map from entry id → entry. Reusable across multiple
|
|
93
|
+
* getBranch / listBranches calls on the same entry set.
|
|
94
|
+
*/
|
|
95
|
+
private buildIndex;
|
|
96
|
+
/**
|
|
97
|
+
* Walk the DAG from a leaf entry back to the root, returning entries
|
|
98
|
+
* in chronological order (root → leaf). This is the "branch" — the
|
|
99
|
+
* path through the conversation tree that leads to the given leaf.
|
|
100
|
+
*
|
|
101
|
+
* Accepts an optional pre-built index to avoid redundant Map allocations
|
|
102
|
+
* when called in a loop.
|
|
103
|
+
*/
|
|
104
|
+
getBranch(entries: SessionEntry[], leafId: string | null, byId?: Map<string, SessionEntry>): SessionEntry[];
|
|
105
|
+
/**
|
|
106
|
+
* List all branches (leaf nodes) in a session's entry DAG.
|
|
107
|
+
* A leaf is any entry whose id is not referenced as a parentId by any other entry.
|
|
108
|
+
*/
|
|
109
|
+
listBranches(entries: SessionEntry[]): BranchInfo[];
|
|
78
110
|
}
|
|
79
111
|
export {};
|
|
80
112
|
//# sourceMappingURL=session-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/core/session-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/core/session-manager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIrD,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAyB,SAAQ,SAAS;IACzD,IAAI,EAAE,uBAAuB,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,IAAI,EAAE,YAAY,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,gBAAgB,GAChB,wBAAwB,GACxB,eAAe,GACf,UAAU,GACV,WAAW,CAAC;AAIhB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,CAAC,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAiBD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACtB;AAID,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM;IAI/B,OAAO,CAAC,SAAS;IAIX,MAAM,CACV,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QACT,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,aAAa,CAAC;KACvB,CAAC;IAwBI,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QACvC,MAAM,EAAE,aAAa,CAAC;QACtB,OAAO,EAAE,YAAY,EAAE,CAAC;KACzB,CAAC;IAwDI,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA2DzC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMlD,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCpE;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,EAAE;IAYvE;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAsDtD;;;OAGG;IACH,OAAO,CAAC,UAAU;IAIlB;;;;;;;OAOG;IACH,SAAS,CACP,OAAO,EAAE,YAAY,EAAE,EACvB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GAC/B,YAAY,EAAE;IAiBjB;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE;CAqCpD"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
|
+
import { createReadStream } from "node:fs";
|
|
3
|
+
import { createInterface } from "node:readline";
|
|
2
4
|
import path from "node:path";
|
|
3
5
|
import crypto from "node:crypto";
|
|
4
6
|
// ── Session Manager ────────────────────────────────────────
|
|
@@ -34,42 +36,54 @@ export class SessionManager {
|
|
|
34
36
|
return { id, path: filePath, header };
|
|
35
37
|
}
|
|
36
38
|
async load(sessionPath) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
// Stream the JSONL file line-by-line instead of loading the entire
|
|
40
|
+
// file into memory. For large sessions (100MB+) this avoids holding
|
|
41
|
+
// the raw string, the split array, and the parsed objects all at once.
|
|
39
42
|
let header = null;
|
|
40
43
|
const entries = [];
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
const rl = createInterface({
|
|
45
|
+
input: createReadStream(sessionPath, { encoding: "utf-8" }),
|
|
46
|
+
crlfDelay: Infinity,
|
|
47
|
+
});
|
|
48
|
+
for await (const line of rl) {
|
|
49
|
+
if (!line)
|
|
50
|
+
continue;
|
|
51
|
+
try {
|
|
52
|
+
const parsed = JSON.parse(line);
|
|
53
|
+
if (parsed.type === "session") {
|
|
54
|
+
if (parsed.version === 2) {
|
|
55
|
+
header = parsed;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// Upgrade v1 to v2
|
|
59
|
+
const v1 = parsed;
|
|
60
|
+
header = {
|
|
61
|
+
type: "session",
|
|
62
|
+
version: 2,
|
|
63
|
+
id: v1.id,
|
|
64
|
+
timestamp: v1.timestamp,
|
|
65
|
+
cwd: v1.cwd,
|
|
66
|
+
provider: v1.provider,
|
|
67
|
+
model: v1.model,
|
|
68
|
+
leafId: null,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
46
71
|
}
|
|
47
|
-
else {
|
|
48
|
-
//
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
cwd: v1.cwd,
|
|
56
|
-
provider: v1.provider,
|
|
57
|
-
model: v1.model,
|
|
58
|
-
leafId: null,
|
|
59
|
-
};
|
|
72
|
+
else if (parsed.type === "message") {
|
|
73
|
+
// v1 compat: entries without id/parentId
|
|
74
|
+
const entry = parsed;
|
|
75
|
+
if (!entry.id) {
|
|
76
|
+
entry.id = crypto.randomUUID();
|
|
77
|
+
entry.parentId = null;
|
|
78
|
+
}
|
|
79
|
+
entries.push(entry);
|
|
60
80
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
// v1 compat: entries without id/parentId
|
|
64
|
-
const entry = parsed;
|
|
65
|
-
if (!entry.id) {
|
|
66
|
-
entry.id = crypto.randomUUID();
|
|
67
|
-
entry.parentId = null;
|
|
81
|
+
else {
|
|
82
|
+
entries.push(parsed);
|
|
68
83
|
}
|
|
69
|
-
entries.push(entry);
|
|
70
84
|
}
|
|
71
|
-
|
|
72
|
-
|
|
85
|
+
catch {
|
|
86
|
+
// Skip malformed JSON lines — a corrupt line shouldn't crash the session
|
|
73
87
|
}
|
|
74
88
|
}
|
|
75
89
|
if (!header) {
|
|
@@ -92,21 +106,33 @@ export class SessionManager {
|
|
|
92
106
|
continue;
|
|
93
107
|
const filePath = path.join(dir, file);
|
|
94
108
|
try {
|
|
95
|
-
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const
|
|
109
|
+
// Stream line-by-line to avoid loading entire file for listing
|
|
110
|
+
const rl = createInterface({
|
|
111
|
+
input: createReadStream(filePath, { encoding: "utf-8" }),
|
|
112
|
+
crlfDelay: Infinity,
|
|
113
|
+
});
|
|
114
|
+
let first = null;
|
|
115
|
+
let messageCount = 0;
|
|
116
|
+
for await (const line of rl) {
|
|
117
|
+
if (!line)
|
|
118
|
+
continue;
|
|
103
119
|
try {
|
|
104
|
-
|
|
120
|
+
const parsed = JSON.parse(line);
|
|
121
|
+
if (!first) {
|
|
122
|
+
if (parsed.type !== "session")
|
|
123
|
+
break;
|
|
124
|
+
first = parsed;
|
|
125
|
+
}
|
|
126
|
+
else if (parsed.type === "message") {
|
|
127
|
+
messageCount++;
|
|
128
|
+
}
|
|
105
129
|
}
|
|
106
130
|
catch {
|
|
107
|
-
|
|
131
|
+
// Skip malformed lines
|
|
108
132
|
}
|
|
109
|
-
}
|
|
133
|
+
}
|
|
134
|
+
if (!first || first.type !== "session")
|
|
135
|
+
continue;
|
|
110
136
|
sessions.push({
|
|
111
137
|
id: first.id,
|
|
112
138
|
path: filePath,
|
|
@@ -131,19 +157,49 @@ export class SessionManager {
|
|
|
131
157
|
await fs.appendFile(sessionPath, JSON.stringify(entry) + "\n", "utf-8");
|
|
132
158
|
}
|
|
133
159
|
async updateLeaf(sessionPath, leafId) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
160
|
+
// Read only the first line (the header) instead of loading the entire file.
|
|
161
|
+
// For large session files (100MB+), this avoids a full file read+write.
|
|
162
|
+
const fd = await fs.open(sessionPath, "r+");
|
|
163
|
+
try {
|
|
164
|
+
// Read enough bytes to cover the header line (typically <500 bytes)
|
|
165
|
+
const buf = Buffer.alloc(4096);
|
|
166
|
+
const { bytesRead } = await fd.read(buf, 0, 4096, 0);
|
|
167
|
+
const chunk = buf.toString("utf-8", 0, bytesRead);
|
|
168
|
+
const newlineIdx = chunk.indexOf("\n");
|
|
169
|
+
if (newlineIdx === -1)
|
|
170
|
+
return;
|
|
171
|
+
const headerLine = chunk.slice(0, newlineIdx);
|
|
172
|
+
const header = JSON.parse(headerLine);
|
|
173
|
+
if (header.type !== "session")
|
|
174
|
+
return;
|
|
140
175
|
header.leafId = leafId;
|
|
141
|
-
|
|
142
|
-
|
|
176
|
+
const newHeaderLine = JSON.stringify(header);
|
|
177
|
+
if (newHeaderLine.length === headerLine.length) {
|
|
178
|
+
// Same length — overwrite in place (fast path)
|
|
179
|
+
await fd.write(newHeaderLine, 0, "utf-8");
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
// Different length — must rewrite the file (rare: only on first leafId set)
|
|
183
|
+
await fd.close();
|
|
184
|
+
const content = await fs.readFile(sessionPath, "utf-8");
|
|
185
|
+
const firstNewline = content.indexOf("\n");
|
|
186
|
+
await fs.writeFile(sessionPath, newHeaderLine + content.slice(firstNewline), "utf-8");
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
finally {
|
|
191
|
+
// fd.close() may have already been called in the else branch above,
|
|
192
|
+
// but calling it again on a closed handle is a no-op in Node >= 20.
|
|
193
|
+
await fd.close().catch(() => { });
|
|
143
194
|
}
|
|
144
195
|
}
|
|
145
|
-
|
|
146
|
-
|
|
196
|
+
/**
|
|
197
|
+
* Get messages for the current branch. If leafId is set, walks the
|
|
198
|
+
* DAG from leaf to root. Otherwise returns all entries linearly.
|
|
199
|
+
*/
|
|
200
|
+
getMessages(entries, leafId) {
|
|
201
|
+
const branch = leafId ? this.getBranch(entries, leafId) : entries;
|
|
202
|
+
const messages = branch
|
|
147
203
|
.filter((e) => e.type === "message")
|
|
148
204
|
.map((e) => e.message)
|
|
149
205
|
.filter((m) => m.role !== "system");
|
|
@@ -201,14 +257,29 @@ export class SessionManager {
|
|
|
201
257
|
}
|
|
202
258
|
return repaired;
|
|
203
259
|
}
|
|
204
|
-
|
|
260
|
+
/**
|
|
261
|
+
* Build a lookup Map from entry id → entry. Reusable across multiple
|
|
262
|
+
* getBranch / listBranches calls on the same entry set.
|
|
263
|
+
*/
|
|
264
|
+
buildIndex(entries) {
|
|
265
|
+
return new Map(entries.map((e) => [e.id, e]));
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Walk the DAG from a leaf entry back to the root, returning entries
|
|
269
|
+
* in chronological order (root → leaf). This is the "branch" — the
|
|
270
|
+
* path through the conversation tree that leads to the given leaf.
|
|
271
|
+
*
|
|
272
|
+
* Accepts an optional pre-built index to avoid redundant Map allocations
|
|
273
|
+
* when called in a loop.
|
|
274
|
+
*/
|
|
275
|
+
getBranch(entries, leafId, byId) {
|
|
205
276
|
if (!leafId)
|
|
206
277
|
return entries;
|
|
207
|
-
const
|
|
278
|
+
const index = byId ?? this.buildIndex(entries);
|
|
208
279
|
const branch = [];
|
|
209
280
|
let current = leafId;
|
|
210
281
|
while (current) {
|
|
211
|
-
const entry =
|
|
282
|
+
const entry = index.get(current);
|
|
212
283
|
if (!entry)
|
|
213
284
|
break;
|
|
214
285
|
branch.push(entry);
|
|
@@ -216,5 +287,40 @@ export class SessionManager {
|
|
|
216
287
|
}
|
|
217
288
|
return branch.reverse();
|
|
218
289
|
}
|
|
290
|
+
/**
|
|
291
|
+
* List all branches (leaf nodes) in a session's entry DAG.
|
|
292
|
+
* A leaf is any entry whose id is not referenced as a parentId by any other entry.
|
|
293
|
+
*/
|
|
294
|
+
listBranches(entries) {
|
|
295
|
+
if (entries.length === 0)
|
|
296
|
+
return [];
|
|
297
|
+
// Build shared index once — reused by every getBranch call below
|
|
298
|
+
const byId = this.buildIndex(entries);
|
|
299
|
+
// Find all ids that are referenced as parentId
|
|
300
|
+
const parentIds = new Set(entries.map((e) => e.parentId).filter(Boolean));
|
|
301
|
+
// Leaves = entries whose id is NOT in parentIds
|
|
302
|
+
const leaves = entries.filter((e) => !parentIds.has(e.id));
|
|
303
|
+
// Build childCount once — was previously rebuilt per-leaf (O(n²))
|
|
304
|
+
const childCount = new Map();
|
|
305
|
+
for (const e of entries) {
|
|
306
|
+
childCount.set(e.parentId, (childCount.get(e.parentId) ?? 0) + 1);
|
|
307
|
+
}
|
|
308
|
+
return leaves.map((leaf) => {
|
|
309
|
+
const branch = this.getBranch(entries, leaf.id, byId);
|
|
310
|
+
let branchPointId = branch[0]?.id ?? leaf.id;
|
|
311
|
+
for (const e of branch) {
|
|
312
|
+
if ((childCount.get(e.parentId) ?? 0) > 1) {
|
|
313
|
+
branchPointId = e.id;
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return {
|
|
318
|
+
branchPointId,
|
|
319
|
+
leafId: leaf.id,
|
|
320
|
+
entryCount: branch.length,
|
|
321
|
+
timestamp: branch[0]?.timestamp ?? leaf.timestamp,
|
|
322
|
+
};
|
|
323
|
+
});
|
|
324
|
+
}
|
|
219
325
|
}
|
|
220
326
|
//# sourceMappingURL=session-manager.js.map
|