@mragentix/cli 4.2.37
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 +21 -0
- package/README.md +149 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +772 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +29 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-session.d.ts +87 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +498 -0
- package/dist/core/agent-session.js.map +1 -0
- package/dist/core/agents.d.ts +30 -0
- package/dist/core/agents.d.ts.map +1 -0
- package/dist/core/agents.js +91 -0
- package/dist/core/agents.js.map +1 -0
- package/dist/core/auth-storage.d.ts +35 -0
- package/dist/core/auth-storage.d.ts.map +1 -0
- package/dist/core/auth-storage.js +144 -0
- package/dist/core/auth-storage.js.map +1 -0
- package/dist/core/auto-update.d.ts +8 -0
- package/dist/core/auto-update.d.ts.map +1 -0
- package/dist/core/auto-update.js +152 -0
- package/dist/core/auto-update.js.map +1 -0
- package/dist/core/compaction/compactor.d.ts +69 -0
- package/dist/core/compaction/compactor.d.ts.map +1 -0
- package/dist/core/compaction/compactor.js +405 -0
- package/dist/core/compaction/compactor.js.map +1 -0
- package/dist/core/compaction/compactor.test.d.ts +2 -0
- package/dist/core/compaction/compactor.test.d.ts.map +1 -0
- package/dist/core/compaction/compactor.test.js +461 -0
- package/dist/core/compaction/compactor.test.js.map +1 -0
- package/dist/core/compaction/token-estimator.d.ts +10 -0
- package/dist/core/compaction/token-estimator.d.ts.map +1 -0
- package/dist/core/compaction/token-estimator.js +75 -0
- package/dist/core/compaction/token-estimator.js.map +1 -0
- package/dist/core/compaction/token-estimator.test.d.ts +2 -0
- package/dist/core/compaction/token-estimator.test.d.ts.map +1 -0
- package/dist/core/compaction/token-estimator.test.js +137 -0
- package/dist/core/compaction/token-estimator.test.js.map +1 -0
- package/dist/core/custom-commands.d.ts +13 -0
- package/dist/core/custom-commands.d.ts.map +1 -0
- package/dist/core/custom-commands.js +40 -0
- package/dist/core/custom-commands.js.map +1 -0
- package/dist/core/event-bus.d.ts +95 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +99 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/extensions/loader.d.ts +8 -0
- package/dist/core/extensions/loader.d.ts.map +1 -0
- package/dist/core/extensions/loader.js +48 -0
- package/dist/core/extensions/loader.js.map +1 -0
- package/dist/core/extensions/types.d.ts +19 -0
- package/dist/core/extensions/types.d.ts.map +1 -0
- package/dist/core/extensions/types.js +2 -0
- package/dist/core/extensions/types.js.map +1 -0
- 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 +14 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts +26 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +132 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/mcp/client.d.ts +9 -0
- package/dist/core/mcp/client.d.ts.map +1 -0
- package/dist/core/mcp/client.js +126 -0
- package/dist/core/mcp/client.js.map +1 -0
- package/dist/core/mcp/defaults.d.ts +9 -0
- package/dist/core/mcp/defaults.d.ts.map +1 -0
- package/dist/core/mcp/defaults.js +47 -0
- package/dist/core/mcp/defaults.js.map +1 -0
- package/dist/core/mcp/index.d.ts +4 -0
- package/dist/core/mcp/index.d.ts.map +1 -0
- package/dist/core/mcp/index.js +3 -0
- package/dist/core/mcp/index.js.map +1 -0
- package/dist/core/mcp/types.d.ts +15 -0
- package/dist/core/mcp/types.d.ts.map +1 -0
- package/dist/core/mcp/types.js +2 -0
- package/dist/core/mcp/types.js.map +1 -0
- package/dist/core/model-registry.d.ts +25 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +135 -0
- package/dist/core/model-registry.js.map +1 -0
- package/dist/core/oauth/anthropic.d.ts +4 -0
- package/dist/core/oauth/anthropic.d.ts.map +1 -0
- package/dist/core/oauth/anthropic.js +75 -0
- package/dist/core/oauth/anthropic.js.map +1 -0
- package/dist/core/oauth/openai.d.ts +4 -0
- package/dist/core/oauth/openai.d.ts.map +1 -0
- package/dist/core/oauth/openai.js +186 -0
- package/dist/core/oauth/openai.js.map +1 -0
- package/dist/core/oauth/pkce.d.ts +5 -0
- package/dist/core/oauth/pkce.d.ts.map +1 -0
- package/dist/core/oauth/pkce.js +17 -0
- package/dist/core/oauth/pkce.js.map +1 -0
- package/dist/core/oauth/types.d.ts +12 -0
- package/dist/core/oauth/types.d.ts.map +1 -0
- package/dist/core/oauth/types.js +2 -0
- package/dist/core/oauth/types.js.map +1 -0
- package/dist/core/process-manager.d.ts +30 -0
- package/dist/core/process-manager.d.ts.map +1 -0
- package/dist/core/process-manager.js +130 -0
- package/dist/core/process-manager.js.map +1 -0
- package/dist/core/prompt-commands.d.ts +14 -0
- package/dist/core/prompt-commands.d.ts.map +1 -0
- package/dist/core/prompt-commands.js +496 -0
- package/dist/core/prompt-commands.js.map +1 -0
- package/dist/core/session-manager.d.ts +112 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +326 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/settings-manager.d.ts +43 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +64 -0
- package/dist/core/settings-manager.js.map +1 -0
- package/dist/core/skills.d.ts +23 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +89 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/slash-commands.d.ts +35 -0
- package/dist/core/slash-commands.d.ts.map +1 -0
- package/dist/core/slash-commands.js +183 -0
- package/dist/core/slash-commands.js.map +1 -0
- 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/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/interactive.d.ts +3 -0
- package/dist/interactive.d.ts.map +1 -0
- package/dist/interactive.js +173 -0
- package/dist/interactive.js.map +1 -0
- package/dist/modes/index.d.ts +3 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +3 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/json-mode.d.ts +13 -0
- package/dist/modes/json-mode.d.ts.map +1 -0
- package/dist/modes/json-mode.js +74 -0
- package/dist/modes/json-mode.js.map +1 -0
- package/dist/modes/print-mode.d.ts +12 -0
- package/dist/modes/print-mode.d.ts.map +1 -0
- package/dist/modes/print-mode.js +49 -0
- package/dist/modes/print-mode.js.map +1 -0
- 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 +145 -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 +649 -0
- package/dist/modes/serve-mode.js.map +1 -0
- package/dist/session.d.ts +16 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +129 -0
- package/dist/session.js.map +1 -0
- package/dist/system-prompt.d.ts +6 -0
- package/dist/system-prompt.d.ts.map +1 -0
- package/dist/system-prompt.js +115 -0
- package/dist/system-prompt.js.map +1 -0
- package/dist/tools/bash.d.ts +13 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +165 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/edit-diff.d.ts +18 -0
- package/dist/tools/edit-diff.d.ts.map +1 -0
- package/dist/tools/edit-diff.js +92 -0
- package/dist/tools/edit-diff.js.map +1 -0
- package/dist/tools/edit.d.ts +11 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/edit.js +57 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/find.d.ts +9 -0
- package/dist/tools/find.d.ts.map +1 -0
- package/dist/tools/find.js +59 -0
- package/dist/tools/find.js.map +1 -0
- package/dist/tools/grep.d.ts +13 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +121 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +30 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +50 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/ls.d.ts +10 -0
- package/dist/tools/ls.d.ts.map +1 -0
- package/dist/tools/ls.js +56 -0
- package/dist/tools/ls.js.map +1 -0
- 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 +7 -0
- package/dist/tools/path-utils.d.ts.map +1 -0
- package/dist/tools/path-utils.js +27 -0
- package/dist/tools/path-utils.js.map +1 -0
- package/dist/tools/read.d.ts +12 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/read.js +113 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/subagent.d.ts +26 -0
- package/dist/tools/subagent.d.ts.map +1 -0
- package/dist/tools/subagent.js +210 -0
- package/dist/tools/subagent.js.map +1 -0
- package/dist/tools/task-output.d.ts +10 -0
- package/dist/tools/task-output.d.ts.map +1 -0
- package/dist/tools/task-output.js +33 -0
- package/dist/tools/task-output.js.map +1 -0
- package/dist/tools/task-stop.d.ts +9 -0
- package/dist/tools/task-stop.d.ts.map +1 -0
- package/dist/tools/task-stop.js +15 -0
- package/dist/tools/task-stop.js.map +1 -0
- package/dist/tools/tasks.d.ts +16 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +132 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/tools/truncate.d.ts +19 -0
- package/dist/tools/truncate.d.ts.map +1 -0
- package/dist/tools/truncate.js +59 -0
- package/dist/tools/truncate.js.map +1 -0
- package/dist/tools/truncate.test.d.ts +2 -0
- package/dist/tools/truncate.test.d.ts.map +1 -0
- package/dist/tools/truncate.test.js +100 -0
- package/dist/tools/truncate.test.js.map +1 -0
- package/dist/tools/web-fetch.d.ts +9 -0
- package/dist/tools/web-fetch.d.ts.map +1 -0
- package/dist/tools/web-fetch.js +97 -0
- package/dist/tools/web-fetch.js.map +1 -0
- package/dist/tools/write.d.ts +10 -0
- package/dist/tools/write.d.ts.map +1 -0
- package/dist/tools/write.js +30 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/tools/write.test.d.ts +2 -0
- package/dist/tools/write.test.d.ts.map +1 -0
- package/dist/tools/write.test.js +84 -0
- package/dist/tools/write.test.js.map +1 -0
- package/dist/types.d.ts +36 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/App.d.ts +148 -0
- package/dist/ui/App.d.ts.map +1 -0
- package/dist/ui/App.js +1191 -0
- package/dist/ui/App.js.map +1 -0
- package/dist/ui/components/ActivityIndicator.d.ts +13 -0
- package/dist/ui/components/ActivityIndicator.d.ts.map +1 -0
- package/dist/ui/components/ActivityIndicator.js +313 -0
- package/dist/ui/components/ActivityIndicator.js.map +1 -0
- 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 +9 -0
- package/dist/ui/components/AssistantMessage.d.ts.map +1 -0
- package/dist/ui/components/AssistantMessage.js +11 -0
- package/dist/ui/components/AssistantMessage.js.map +1 -0
- package/dist/ui/components/BackgroundTasksBar.d.ts +15 -0
- package/dist/ui/components/BackgroundTasksBar.d.ts.map +1 -0
- package/dist/ui/components/BackgroundTasksBar.js +74 -0
- package/dist/ui/components/BackgroundTasksBar.js.map +1 -0
- package/dist/ui/components/Banner.d.ts +11 -0
- package/dist/ui/components/Banner.d.ts.map +1 -0
- package/dist/ui/components/Banner.js +55 -0
- package/dist/ui/components/Banner.js.map +1 -0
- package/dist/ui/components/CompactionNotice.d.ts +10 -0
- package/dist/ui/components/CompactionNotice.d.ts.map +1 -0
- package/dist/ui/components/CompactionNotice.js +27 -0
- package/dist/ui/components/CompactionNotice.js.map +1 -0
- package/dist/ui/components/DiffView.d.ts +4 -0
- package/dist/ui/components/DiffView.d.ts.map +1 -0
- package/dist/ui/components/DiffView.js +20 -0
- package/dist/ui/components/DiffView.js.map +1 -0
- package/dist/ui/components/Footer.d.ts +10 -0
- package/dist/ui/components/Footer.d.ts.map +1 -0
- package/dist/ui/components/Footer.js +105 -0
- package/dist/ui/components/Footer.js.map +1 -0
- package/dist/ui/components/InputArea.d.ts +21 -0
- package/dist/ui/components/InputArea.d.ts.map +1 -0
- package/dist/ui/components/InputArea.js +465 -0
- package/dist/ui/components/InputArea.js.map +1 -0
- package/dist/ui/components/Markdown.d.ts +9 -0
- package/dist/ui/components/Markdown.d.ts.map +1 -0
- package/dist/ui/components/Markdown.js +246 -0
- package/dist/ui/components/Markdown.js.map +1 -0
- package/dist/ui/components/ModelSelector.d.ts +11 -0
- package/dist/ui/components/ModelSelector.d.ts.map +1 -0
- package/dist/ui/components/ModelSelector.js +20 -0
- package/dist/ui/components/ModelSelector.js.map +1 -0
- package/dist/ui/components/Overlay.d.ts +8 -0
- package/dist/ui/components/Overlay.d.ts.map +1 -0
- package/dist/ui/components/Overlay.js +9 -0
- package/dist/ui/components/Overlay.js.map +1 -0
- package/dist/ui/components/SelectList.d.ts +14 -0
- package/dist/ui/components/SelectList.d.ts.map +1 -0
- package/dist/ui/components/SelectList.js +46 -0
- package/dist/ui/components/SelectList.js.map +1 -0
- package/dist/ui/components/ServerToolExecution.d.ts +17 -0
- package/dist/ui/components/ServerToolExecution.d.ts.map +1 -0
- package/dist/ui/components/ServerToolExecution.js +26 -0
- package/dist/ui/components/ServerToolExecution.js.map +1 -0
- package/dist/ui/components/SessionSelector.d.ts +9 -0
- package/dist/ui/components/SessionSelector.d.ts.map +1 -0
- package/dist/ui/components/SessionSelector.js +13 -0
- package/dist/ui/components/SessionSelector.js.map +1 -0
- package/dist/ui/components/SettingsSelector.d.ts +9 -0
- package/dist/ui/components/SettingsSelector.d.ts.map +1 -0
- package/dist/ui/components/SettingsSelector.js +13 -0
- package/dist/ui/components/SettingsSelector.js.map +1 -0
- package/dist/ui/components/SlashCommandMenu.d.ts +15 -0
- package/dist/ui/components/SlashCommandMenu.d.ts.map +1 -0
- package/dist/ui/components/SlashCommandMenu.js +32 -0
- package/dist/ui/components/SlashCommandMenu.js.map +1 -0
- package/dist/ui/components/Spinner.d.ts +4 -0
- package/dist/ui/components/Spinner.d.ts.map +1 -0
- package/dist/ui/components/Spinner.js +13 -0
- package/dist/ui/components/Spinner.js.map +1 -0
- package/dist/ui/components/StreamingArea.d.ts +10 -0
- package/dist/ui/components/StreamingArea.d.ts.map +1 -0
- package/dist/ui/components/StreamingArea.js +58 -0
- package/dist/ui/components/StreamingArea.js.map +1 -0
- package/dist/ui/components/SubAgentPanel.d.ts +21 -0
- package/dist/ui/components/SubAgentPanel.d.ts.map +1 -0
- package/dist/ui/components/SubAgentPanel.js +71 -0
- package/dist/ui/components/SubAgentPanel.js.map +1 -0
- package/dist/ui/components/TaskOverlay.d.ts +10 -0
- package/dist/ui/components/TaskOverlay.d.ts.map +1 -0
- package/dist/ui/components/TaskOverlay.js +263 -0
- package/dist/ui/components/TaskOverlay.js.map +1 -0
- package/dist/ui/components/ThinkingBlock.d.ts +11 -0
- package/dist/ui/components/ThinkingBlock.d.ts.map +1 -0
- package/dist/ui/components/ThinkingBlock.js +43 -0
- package/dist/ui/components/ThinkingBlock.js.map +1 -0
- package/dist/ui/components/ThinkingIndicator.d.ts +6 -0
- package/dist/ui/components/ThinkingIndicator.d.ts.map +1 -0
- package/dist/ui/components/ThinkingIndicator.js +144 -0
- package/dist/ui/components/ThinkingIndicator.js.map +1 -0
- package/dist/ui/components/ToolExecution.d.ts +16 -0
- package/dist/ui/components/ToolExecution.d.ts.map +1 -0
- package/dist/ui/components/ToolExecution.js +490 -0
- package/dist/ui/components/ToolExecution.js.map +1 -0
- 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.d.ts +7 -0
- package/dist/ui/components/UserMessage.d.ts.map +1 -0
- package/dist/ui/components/UserMessage.js +16 -0
- package/dist/ui/components/UserMessage.js.map +1 -0
- package/dist/ui/components/index.d.ts +15 -0
- package/dist/ui/components/index.d.ts.map +1 -0
- package/dist/ui/components/index.js +15 -0
- package/dist/ui/components/index.js.map +1 -0
- package/dist/ui/hooks/useAgentLoop.d.ts +69 -0
- package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -0
- package/dist/ui/hooks/useAgentLoop.js +483 -0
- package/dist/ui/hooks/useAgentLoop.js.map +1 -0
- package/dist/ui/hooks/useSessionManager.d.ts +13 -0
- package/dist/ui/hooks/useSessionManager.d.ts.map +1 -0
- package/dist/ui/hooks/useSessionManager.js +43 -0
- package/dist/ui/hooks/useSessionManager.js.map +1 -0
- package/dist/ui/hooks/useSlashCommands.d.ts +7 -0
- package/dist/ui/hooks/useSlashCommands.d.ts.map +1 -0
- package/dist/ui/hooks/useSlashCommands.js +11 -0
- package/dist/ui/hooks/useSlashCommands.js.map +1 -0
- package/dist/ui/hooks/useTerminalSize.d.ts +20 -0
- package/dist/ui/hooks/useTerminalSize.d.ts.map +1 -0
- package/dist/ui/hooks/useTerminalSize.js +55 -0
- package/dist/ui/hooks/useTerminalSize.js.map +1 -0
- package/dist/ui/hooks/useTerminalTitle.d.ts +3 -0
- package/dist/ui/hooks/useTerminalTitle.d.ts.map +1 -0
- package/dist/ui/hooks/useTerminalTitle.js +41 -0
- package/dist/ui/hooks/useTerminalTitle.js.map +1 -0
- package/dist/ui/live-item-flush.d.ts +59 -0
- package/dist/ui/live-item-flush.d.ts.map +1 -0
- package/dist/ui/live-item-flush.js +135 -0
- package/dist/ui/live-item-flush.js.map +1 -0
- package/dist/ui/live-item-flush.test.d.ts +2 -0
- package/dist/ui/live-item-flush.test.d.ts.map +1 -0
- package/dist/ui/live-item-flush.test.js +307 -0
- package/dist/ui/live-item-flush.test.js.map +1 -0
- package/dist/ui/login.d.ts +3 -0
- package/dist/ui/login.d.ts.map +1 -0
- package/dist/ui/login.js +117 -0
- package/dist/ui/login.js.map +1 -0
- package/dist/ui/render.d.ts +38 -0
- package/dist/ui/render.d.ts.map +1 -0
- package/dist/ui/render.js +72 -0
- package/dist/ui/render.js.map +1 -0
- 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/spinner-frames.d.ts +3 -0
- package/dist/ui/spinner-frames.d.ts.map +1 -0
- package/dist/ui/spinner-frames.js +7 -0
- package/dist/ui/spinner-frames.js.map +1 -0
- package/dist/ui/theme/dark.json +24 -0
- package/dist/ui/theme/detect-theme.d.ts +12 -0
- package/dist/ui/theme/detect-theme.d.ts.map +1 -0
- package/dist/ui/theme/detect-theme.js +152 -0
- package/dist/ui/theme/detect-theme.js.map +1 -0
- package/dist/ui/theme/light.json +24 -0
- package/dist/ui/theme/theme.d.ts +29 -0
- package/dist/ui/theme/theme.d.ts.map +1 -0
- package/dist/ui/theme/theme.js +11 -0
- package/dist/ui/theme/theme.js.map +1 -0
- package/dist/ui/utils/highlight.d.ts +8 -0
- package/dist/ui/utils/highlight.d.ts.map +1 -0
- package/dist/ui/utils/highlight.js +49 -0
- package/dist/ui/utils/highlight.js.map +1 -0
- package/dist/ui/utils/table-text.d.ts +25 -0
- package/dist/ui/utils/table-text.d.ts.map +1 -0
- package/dist/ui/utils/table-text.js +78 -0
- package/dist/ui/utils/table-text.js.map +1 -0
- package/dist/ui/utils/table-text.test.d.ts +2 -0
- package/dist/ui/utils/table-text.test.d.ts.map +1 -0
- package/dist/ui/utils/table-text.test.js +202 -0
- package/dist/ui/utils/table-text.test.js.map +1 -0
- package/dist/utils/error-handler.d.ts +5 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +120 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/format.d.ts +21 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +120 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/git.d.ts +2 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +13 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/image.d.ts +30 -0
- package/dist/utils/image.d.ts.map +1 -0
- package/dist/utils/image.js +231 -0
- package/dist/utils/image.js.map +1 -0
- package/dist/utils/markdown.d.ts +6 -0
- package/dist/utils/markdown.d.ts.map +1 -0
- package/dist/utils/markdown.js +25 -0
- package/dist/utils/markdown.js.map +1 -0
- package/dist/utils/process.d.ts +6 -0
- package/dist/utils/process.d.ts.map +1 -0
- package/dist/utils/process.js +19 -0
- package/dist/utils/process.js.map +1 -0
- package/dist/utils/shell.d.ts +3 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +8 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/sound.d.ts +2 -0
- package/dist/utils/sound.d.ts.map +1 -0
- package/dist/utils/sound.js +11 -0
- package/dist/utils/sound.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
import { stream, } from "@mragentix/ai";
|
|
2
|
+
import { estimateConversationTokens, estimateMessageTokens } from "./token-estimator.js";
|
|
3
|
+
import { getSummaryModel, getContextWindow } from "../model-registry.js";
|
|
4
|
+
import { log } from "../logger.js";
|
|
5
|
+
/** Max chars per tool result when preparing messages for the summarizer. */
|
|
6
|
+
const TOOL_RESULT_MAX_CHARS = 2000;
|
|
7
|
+
/** Max retries for empty LLM responses during summarization. */
|
|
8
|
+
const MAX_SUMMARY_RETRIES = 2;
|
|
9
|
+
/** Max output tokens for the summary response. */
|
|
10
|
+
const MAX_SUMMARY_OUTPUT_TOKENS = 4096;
|
|
11
|
+
const COMPACTION_SYSTEM_PROMPT = "You are a conversation compaction assistant. Your job is to create a concise summary of a conversation " +
|
|
12
|
+
"between a user and an AI coding assistant.\n\n" +
|
|
13
|
+
"This summary will replace older messages to keep the conversation within context limits while preserving " +
|
|
14
|
+
"all important information needed to continue the work seamlessly.\n\n" +
|
|
15
|
+
"Always output the summary — never refuse, never ask questions, never output empty responses.\n\n" +
|
|
16
|
+
"## What to Include\n" +
|
|
17
|
+
"- **User intent and goals** — what the user is trying to accomplish\n" +
|
|
18
|
+
"- **Active development** — what was being implemented, modified, or debugged, including technical approaches\n" +
|
|
19
|
+
"- **File operations** — all files created, modified, or referenced, with key changes\n" +
|
|
20
|
+
"- **Tool call outcomes** — which tools were called and their key results\n" +
|
|
21
|
+
"- **Key decisions** — important choices made and why\n" +
|
|
22
|
+
"- **Solutions & troubleshooting** — problems encountered and how they were resolved\n" +
|
|
23
|
+
"- **Outstanding work** — incomplete tasks, pending implementations, or next steps\n\n" +
|
|
24
|
+
"## What to Exclude\n" +
|
|
25
|
+
"- Redundant or superseded information\n" +
|
|
26
|
+
"- Full file contents (reference by path instead)\n" +
|
|
27
|
+
"- Verbose tool output (summarize key results)\n\n" +
|
|
28
|
+
"Focus on technical precision. Include specific identifiers (file paths, function names, etc.) " +
|
|
29
|
+
"that would be essential for continuation. Write in third person and maintain an objective, technical tone.";
|
|
30
|
+
const COMPACTION_USER_PROMPT = "Summarize the conversation above into a concise summary following the instructions. Output only the summary, nothing else.";
|
|
31
|
+
/**
|
|
32
|
+
* Check if compaction should be triggered.
|
|
33
|
+
*/
|
|
34
|
+
export function shouldCompact(messages, contextWindow, threshold = 0.8) {
|
|
35
|
+
const estimated = estimateConversationTokens(messages);
|
|
36
|
+
const limit = contextWindow * threshold;
|
|
37
|
+
log("INFO", "compaction", `Context check: ${estimated} estimated tokens, threshold ${limit}`);
|
|
38
|
+
return estimated > limit;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Find the index where recent messages should start, given a token budget.
|
|
42
|
+
* Walks backward from the end, accumulating token estimates, and returns the
|
|
43
|
+
* first index that fits within the budget. Never cuts at index 0 (system message).
|
|
44
|
+
* Avoids splitting tool_call / tool_result pairs.
|
|
45
|
+
*/
|
|
46
|
+
export function findRecentCutPoint(messages, tokenBudget) {
|
|
47
|
+
if (messages.length <= 1)
|
|
48
|
+
return messages.length;
|
|
49
|
+
let accumulated = 0;
|
|
50
|
+
let cutIndex = messages.length;
|
|
51
|
+
// Walk backwards from the last message
|
|
52
|
+
for (let i = messages.length - 1; i >= 1; i--) {
|
|
53
|
+
const tokens = estimateMessageTokens(messages[i]);
|
|
54
|
+
if (accumulated + tokens > tokenBudget) {
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
accumulated += tokens;
|
|
58
|
+
cutIndex = i;
|
|
59
|
+
}
|
|
60
|
+
// Don't split tool_call and tool_result pairs:
|
|
61
|
+
// If cut lands on a tool result message, back up to include the preceding assistant
|
|
62
|
+
if (cutIndex < messages.length && messages[cutIndex].role === "tool") {
|
|
63
|
+
// Back up to find the assistant message with the tool_call
|
|
64
|
+
if (cutIndex > 1) {
|
|
65
|
+
cutIndex--;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Never cut before index 1 (preserve system message at 0)
|
|
69
|
+
return Math.max(1, cutIndex);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Truncate a string, appending a note about how much was removed.
|
|
73
|
+
*/
|
|
74
|
+
function truncateString(text, maxChars) {
|
|
75
|
+
if (text.length <= maxChars)
|
|
76
|
+
return text;
|
|
77
|
+
const truncatedChars = text.length - maxChars;
|
|
78
|
+
return `${text.slice(0, maxChars)}\n\n[... ${truncatedChars} more characters truncated]`;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Extract file paths from tool calls in assistant messages for tracking.
|
|
82
|
+
*/
|
|
83
|
+
function extractFileOperations(messages) {
|
|
84
|
+
const read = new Set();
|
|
85
|
+
const modified = new Set();
|
|
86
|
+
for (const msg of messages) {
|
|
87
|
+
if (msg.role !== "assistant")
|
|
88
|
+
continue;
|
|
89
|
+
if (typeof msg.content === "string")
|
|
90
|
+
continue;
|
|
91
|
+
if (!Array.isArray(msg.content))
|
|
92
|
+
continue;
|
|
93
|
+
for (const part of msg.content) {
|
|
94
|
+
if (!("type" in part) || part.type !== "tool_call")
|
|
95
|
+
continue;
|
|
96
|
+
const tc = part;
|
|
97
|
+
const filePath = tc.args.file_path ?? tc.args.path ?? tc.args.file;
|
|
98
|
+
if (typeof filePath !== "string")
|
|
99
|
+
continue;
|
|
100
|
+
if (tc.name === "read" || tc.name === "grep" || tc.name === "find") {
|
|
101
|
+
read.add(filePath);
|
|
102
|
+
}
|
|
103
|
+
else if (tc.name === "write" || tc.name === "edit") {
|
|
104
|
+
modified.add(filePath);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return { read, modified };
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Prepare conversation messages for the summarizer by truncating large tool
|
|
112
|
+
* results and stripping thinking blocks. Returns lightweight copies suitable
|
|
113
|
+
* for a summary LLM call — the originals are not mutated.
|
|
114
|
+
*/
|
|
115
|
+
export function prepareMessagesForSummary(msgs) {
|
|
116
|
+
return msgs.map((msg) => {
|
|
117
|
+
// Tool result messages — truncate long results
|
|
118
|
+
if (msg.role === "tool") {
|
|
119
|
+
const results = msg.content;
|
|
120
|
+
return {
|
|
121
|
+
role: "tool",
|
|
122
|
+
content: results.map((tr) => ({
|
|
123
|
+
...tr,
|
|
124
|
+
content: truncateString(tr.content, TOOL_RESULT_MAX_CHARS),
|
|
125
|
+
})),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
// Assistant messages with ContentPart[] — strip thinking, truncate text
|
|
129
|
+
if (msg.role === "assistant" && Array.isArray(msg.content)) {
|
|
130
|
+
const parts = msg.content
|
|
131
|
+
.filter((p) => p.type !== "thinking") // strip thinking blocks
|
|
132
|
+
.map((p) => {
|
|
133
|
+
if (p.type === "text") {
|
|
134
|
+
return { ...p, text: truncateString(p.text, TOOL_RESULT_MAX_CHARS) };
|
|
135
|
+
}
|
|
136
|
+
return p;
|
|
137
|
+
});
|
|
138
|
+
return { role: "assistant", content: parts.length > 0 ? parts : "" };
|
|
139
|
+
}
|
|
140
|
+
// User string messages — truncate very long prompts
|
|
141
|
+
if (msg.role === "user" && typeof msg.content === "string") {
|
|
142
|
+
return { role: "user", content: truncateString(msg.content, TOOL_RESULT_MAX_CHARS) };
|
|
143
|
+
}
|
|
144
|
+
return msg;
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Select messages that fit within a token budget for the summary LLM call.
|
|
149
|
+
* Walks forward from the start, accumulating messages until the budget is
|
|
150
|
+
* exceeded. Returns the selected subset.
|
|
151
|
+
*/
|
|
152
|
+
export function selectMessagesInBudget(msgs, tokenBudget) {
|
|
153
|
+
let accumulated = 0;
|
|
154
|
+
const selected = [];
|
|
155
|
+
for (const msg of msgs) {
|
|
156
|
+
const tokens = estimateMessageTokens(msg);
|
|
157
|
+
if (accumulated + tokens > tokenBudget)
|
|
158
|
+
break;
|
|
159
|
+
accumulated += tokens;
|
|
160
|
+
selected.push(msg);
|
|
161
|
+
}
|
|
162
|
+
return selected;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Build a fallback summary from file operations and message roles when the
|
|
166
|
+
* LLM summary call fails or returns empty.
|
|
167
|
+
*/
|
|
168
|
+
export function buildFallbackSummary(middleMessages, fileOps) {
|
|
169
|
+
const userMessages = middleMessages.filter((m) => m.role === "user");
|
|
170
|
+
const toolCalls = middleMessages.filter((m) => m.role === "tool");
|
|
171
|
+
const lines = [];
|
|
172
|
+
lines.push("## Goal");
|
|
173
|
+
if (userMessages.length > 0) {
|
|
174
|
+
const firstContent = typeof userMessages[0].content === "string" ? userMessages[0].content : "(complex content)";
|
|
175
|
+
lines.push(truncateString(firstContent, 500));
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
lines.push("(could not determine — no user messages in summarized segment)");
|
|
179
|
+
}
|
|
180
|
+
lines.push("");
|
|
181
|
+
lines.push("## Progress");
|
|
182
|
+
lines.push(`${middleMessages.length} messages exchanged, ${toolCalls.length} tool calls executed.`);
|
|
183
|
+
if (fileOps.read.size > 0) {
|
|
184
|
+
lines.push("");
|
|
185
|
+
lines.push("## Files Read");
|
|
186
|
+
for (const f of fileOps.read)
|
|
187
|
+
lines.push(`- ${f}`);
|
|
188
|
+
}
|
|
189
|
+
if (fileOps.modified.size > 0) {
|
|
190
|
+
lines.push("");
|
|
191
|
+
lines.push("## Files Modified");
|
|
192
|
+
for (const f of fileOps.modified)
|
|
193
|
+
lines.push(`- ${f}`);
|
|
194
|
+
}
|
|
195
|
+
return lines.join("\n");
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Extract summary text from an LLM response.
|
|
199
|
+
*/
|
|
200
|
+
export function extractSummaryText(content) {
|
|
201
|
+
if (typeof content === "string")
|
|
202
|
+
return content;
|
|
203
|
+
return content
|
|
204
|
+
.filter((p) => p.type === "text")
|
|
205
|
+
.map((p) => p.text)
|
|
206
|
+
.join("");
|
|
207
|
+
}
|
|
208
|
+
/** Budget of recent tokens to keep un-summarized (~20K tokens). */
|
|
209
|
+
const KEEP_RECENT_TOKENS = 20_000;
|
|
210
|
+
/**
|
|
211
|
+
* Compact a conversation by summarizing older messages via LLM.
|
|
212
|
+
*
|
|
213
|
+
* Follows the pattern used by Continue and Nao: sends the actual conversation
|
|
214
|
+
* messages to the summarizer (not a serialized string), bookended by a system
|
|
215
|
+
* prompt and a "summarize this" user prompt. This lets the LLM see the real
|
|
216
|
+
* message structure — roles, tool calls, tool results — and produce a much
|
|
217
|
+
* better summary.
|
|
218
|
+
*
|
|
219
|
+
* - Keeps the system message (index 0) intact.
|
|
220
|
+
* - Keeps the most recent ~20K tokens of conversation intact.
|
|
221
|
+
* - Summarizes everything in between using an appropriate model.
|
|
222
|
+
* - Tool results are truncated and thinking blocks stripped in the summary call.
|
|
223
|
+
* - Messages are token-budgeted to avoid overflowing the summarizer's context.
|
|
224
|
+
* - Retries on empty responses, falls back to extractive summary if all fail.
|
|
225
|
+
*/
|
|
226
|
+
export async function compact(messages, options) {
|
|
227
|
+
const originalCount = messages.length;
|
|
228
|
+
const tokensBeforeEstimate = estimateConversationTokens(messages);
|
|
229
|
+
log("INFO", "compaction", `Starting compaction`, {
|
|
230
|
+
messageCount: String(originalCount),
|
|
231
|
+
estimatedTokens: String(tokensBeforeEstimate),
|
|
232
|
+
contextWindow: String(options.contextWindow),
|
|
233
|
+
});
|
|
234
|
+
// Find the cut point — keep ~20K tokens of recent conversation
|
|
235
|
+
const systemMessage = messages[0];
|
|
236
|
+
const recentStart = findRecentCutPoint(messages, KEEP_RECENT_TOKENS);
|
|
237
|
+
const recentMessages = messages.slice(recentStart);
|
|
238
|
+
const middleMessages = messages.slice(1, recentStart);
|
|
239
|
+
log("INFO", "compaction", `Cut point analysis`, {
|
|
240
|
+
recentStart: String(recentStart),
|
|
241
|
+
totalMessages: String(messages.length),
|
|
242
|
+
middleMessages: String(middleMessages.length),
|
|
243
|
+
recentMessages: String(recentMessages.length),
|
|
244
|
+
middleRoles: middleMessages.map((m) => m.role).join(","),
|
|
245
|
+
recentRoles: recentMessages.map((m) => m.role).join(","),
|
|
246
|
+
});
|
|
247
|
+
// If there's nothing to compact, return as-is
|
|
248
|
+
if (middleMessages.length <= 2) {
|
|
249
|
+
log("INFO", "compaction", `Skipping compaction — too few messages to summarize`, {
|
|
250
|
+
middleMessages: String(middleMessages.length),
|
|
251
|
+
recentStart: String(recentStart),
|
|
252
|
+
totalMessages: String(messages.length),
|
|
253
|
+
});
|
|
254
|
+
return {
|
|
255
|
+
messages: [...messages],
|
|
256
|
+
result: {
|
|
257
|
+
originalCount,
|
|
258
|
+
newCount: messages.length,
|
|
259
|
+
tokensBeforeEstimate,
|
|
260
|
+
tokensAfterEstimate: tokensBeforeEstimate,
|
|
261
|
+
},
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
// Track file operations from the messages being summarized
|
|
265
|
+
const fileOps = extractFileOperations(middleMessages);
|
|
266
|
+
// Build file tracking section
|
|
267
|
+
let fileTrackingSection = "";
|
|
268
|
+
if (fileOps.read.size > 0 || fileOps.modified.size > 0) {
|
|
269
|
+
const parts = [];
|
|
270
|
+
if (fileOps.read.size > 0) {
|
|
271
|
+
parts.push(`<read-files>\n${[...fileOps.read].join("\n")}\n</read-files>`);
|
|
272
|
+
}
|
|
273
|
+
if (fileOps.modified.size > 0) {
|
|
274
|
+
parts.push(`<modified-files>\n${[...fileOps.modified].join("\n")}\n</modified-files>`);
|
|
275
|
+
}
|
|
276
|
+
fileTrackingSection = "\n\n" + parts.join("\n");
|
|
277
|
+
}
|
|
278
|
+
// Pick the appropriate model for summarization
|
|
279
|
+
const summaryModel = getSummaryModel(options.provider, options.model);
|
|
280
|
+
const summaryContextWindow = getContextWindow(summaryModel.id);
|
|
281
|
+
// Prepare messages: truncate tool results, strip thinking blocks
|
|
282
|
+
const preparedMessages = prepareMessagesForSummary(middleMessages);
|
|
283
|
+
// Budget: summary model context - output tokens - system/user prompt overhead (~1K)
|
|
284
|
+
const promptOverhead = 1000;
|
|
285
|
+
const tokenBudget = summaryContextWindow - MAX_SUMMARY_OUTPUT_TOKENS - promptOverhead;
|
|
286
|
+
const selectedMessages = selectMessagesInBudget(preparedMessages, tokenBudget);
|
|
287
|
+
log("INFO", "compaction", `Summarizing ${middleMessages.length} messages`, {
|
|
288
|
+
summaryModel: summaryModel.id,
|
|
289
|
+
summaryContextWindow: String(summaryContextWindow),
|
|
290
|
+
tokenBudget: String(tokenBudget),
|
|
291
|
+
preparedMessages: String(preparedMessages.length),
|
|
292
|
+
selectedMessages: String(selectedMessages.length),
|
|
293
|
+
droppedMessages: String(preparedMessages.length - selectedMessages.length),
|
|
294
|
+
filesRead: String(fileOps.read.size),
|
|
295
|
+
filesModified: String(fileOps.modified.size),
|
|
296
|
+
recentKept: String(recentMessages.length),
|
|
297
|
+
});
|
|
298
|
+
// Build the summary messages array following the Nao pattern:
|
|
299
|
+
// [system, ...actual conversation messages, user prompt to summarize]
|
|
300
|
+
const summaryMessages = [
|
|
301
|
+
{ role: "system", content: COMPACTION_SYSTEM_PROMPT },
|
|
302
|
+
...selectedMessages,
|
|
303
|
+
{ role: "user", content: COMPACTION_USER_PROMPT },
|
|
304
|
+
];
|
|
305
|
+
log("INFO", "compaction", `Calling summary LLM`, {
|
|
306
|
+
provider: options.provider,
|
|
307
|
+
model: summaryModel.id,
|
|
308
|
+
messageCount: String(summaryMessages.length),
|
|
309
|
+
hasApiKey: String(!!options.apiKey),
|
|
310
|
+
apiKeyPrefix: options.apiKey ? options.apiKey.slice(0, 15) + "..." : "none",
|
|
311
|
+
});
|
|
312
|
+
// Call LLM with retries on empty responses
|
|
313
|
+
let summaryText = "";
|
|
314
|
+
for (let attempt = 0; attempt <= MAX_SUMMARY_RETRIES; attempt++) {
|
|
315
|
+
try {
|
|
316
|
+
const result = stream({
|
|
317
|
+
provider: options.provider,
|
|
318
|
+
model: summaryModel.id,
|
|
319
|
+
messages: summaryMessages,
|
|
320
|
+
maxTokens: MAX_SUMMARY_OUTPUT_TOKENS,
|
|
321
|
+
apiKey: options.apiKey,
|
|
322
|
+
signal: options.signal,
|
|
323
|
+
});
|
|
324
|
+
const response = await result.response;
|
|
325
|
+
log("INFO", "compaction", `Summary LLM response received`, {
|
|
326
|
+
attempt: String(attempt),
|
|
327
|
+
stopReason: response.stopReason,
|
|
328
|
+
inputTokens: String(response.usage.inputTokens),
|
|
329
|
+
outputTokens: String(response.usage.outputTokens),
|
|
330
|
+
contentType: typeof response.message.content,
|
|
331
|
+
contentIsArray: String(Array.isArray(response.message.content)),
|
|
332
|
+
contentLength: typeof response.message.content === "string"
|
|
333
|
+
? String(response.message.content.length)
|
|
334
|
+
: String(response.message.content.length),
|
|
335
|
+
contentPartTypes: Array.isArray(response.message.content)
|
|
336
|
+
? response.message.content.map((p) => p.type).join(",")
|
|
337
|
+
: "n/a",
|
|
338
|
+
});
|
|
339
|
+
summaryText = extractSummaryText(response.message.content);
|
|
340
|
+
if (summaryText.length > 0) {
|
|
341
|
+
log("INFO", "compaction", `Summary text extracted`, {
|
|
342
|
+
summaryChars: String(summaryText.length),
|
|
343
|
+
summaryPreview: summaryText.slice(0, 300),
|
|
344
|
+
});
|
|
345
|
+
break;
|
|
346
|
+
}
|
|
347
|
+
log("WARN", "compaction", `Summary LLM returned empty response`, {
|
|
348
|
+
attempt: String(attempt),
|
|
349
|
+
maxRetries: String(MAX_SUMMARY_RETRIES),
|
|
350
|
+
outputTokens: String(response.usage.outputTokens),
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
catch (err) {
|
|
354
|
+
log("WARN", "compaction", `Summary LLM call failed: ${err instanceof Error ? err.message : String(err)}`, { attempt: String(attempt) });
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
// Fallback: build an extractive summary from message metadata
|
|
358
|
+
if (summaryText.length === 0) {
|
|
359
|
+
log("WARN", "compaction", `All summary attempts failed — using fallback extractive summary`);
|
|
360
|
+
summaryText = buildFallbackSummary(middleMessages, fileOps);
|
|
361
|
+
}
|
|
362
|
+
// Build new messages array
|
|
363
|
+
const summaryMessage = {
|
|
364
|
+
role: "user",
|
|
365
|
+
content: `[Previous conversation summary]\n\n${summaryText}${fileTrackingSection}`,
|
|
366
|
+
};
|
|
367
|
+
const newMessages = [
|
|
368
|
+
systemMessage,
|
|
369
|
+
summaryMessage,
|
|
370
|
+
{
|
|
371
|
+
role: "assistant",
|
|
372
|
+
content: "I understand. I have the context from our previous conversation. How can I help you continue?",
|
|
373
|
+
},
|
|
374
|
+
...recentMessages,
|
|
375
|
+
];
|
|
376
|
+
// Ensure the conversation doesn't end with an assistant message.
|
|
377
|
+
// Some models reject "assistant prefill" — the conversation must end
|
|
378
|
+
// with a user (or tool) message so the LLM can generate a fresh response.
|
|
379
|
+
while (newMessages.length > 1 && newMessages[newMessages.length - 1].role === "assistant") {
|
|
380
|
+
newMessages.pop();
|
|
381
|
+
}
|
|
382
|
+
const tokensAfterEstimate = estimateConversationTokens(newMessages);
|
|
383
|
+
const reduction = Math.round((1 - tokensAfterEstimate / tokensBeforeEstimate) * 100);
|
|
384
|
+
log("INFO", "compaction", `Compaction complete`, {
|
|
385
|
+
originalMessages: String(originalCount),
|
|
386
|
+
newMessages: String(newMessages.length),
|
|
387
|
+
tokensBefore: String(tokensBeforeEstimate),
|
|
388
|
+
tokensAfter: String(tokensAfterEstimate),
|
|
389
|
+
reduction: `${reduction}%`,
|
|
390
|
+
newMessageRoles: newMessages.map((m) => m.role).join(","),
|
|
391
|
+
summaryMessagePreview: typeof summaryMessage.content === "string"
|
|
392
|
+
? summaryMessage.content.slice(0, 300)
|
|
393
|
+
: "(non-string)",
|
|
394
|
+
});
|
|
395
|
+
return {
|
|
396
|
+
messages: newMessages,
|
|
397
|
+
result: {
|
|
398
|
+
originalCount,
|
|
399
|
+
newCount: newMessages.length,
|
|
400
|
+
tokensBeforeEstimate,
|
|
401
|
+
tokensAfterEstimate,
|
|
402
|
+
},
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
//# sourceMappingURL=compactor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compactor.js","sourceRoot":"","sources":["../../../src/core/compaction/compactor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compactor.test.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/compactor.test.ts"],"names":[],"mappings":""}
|