whale-code 6.5.5 → 6.5.6
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/README.md +39 -31
- package/bin/{swagmanager-mcp.js → whale-code.js} +17 -2
- package/dist/cli/app.js +148 -72
- package/dist/cli/app.js.map +1 -0
- package/dist/cli/chat/AgentSelector.js +105 -10
- package/dist/cli/chat/AgentSelector.js.map +1 -0
- package/dist/cli/chat/ChatApp.d.ts +31 -0
- package/dist/cli/chat/ChatApp.js +539 -286
- package/dist/cli/chat/ChatApp.js.map +1 -0
- package/dist/cli/chat/ChatInput.js +1088 -770
- package/dist/cli/chat/ChatInput.js.map +1 -0
- package/dist/cli/chat/MarkdownText.js +39 -14
- package/dist/cli/chat/MarkdownText.js.map +1 -0
- package/dist/cli/chat/MemoryManager.js +181 -46
- package/dist/cli/chat/MemoryManager.js.map +1 -0
- package/dist/cli/chat/MessageList.d.ts +2 -3
- package/dist/cli/chat/MessageList.js +186 -45
- package/dist/cli/chat/MessageList.js.map +1 -0
- package/dist/cli/chat/ModelSelector.js +282 -63
- package/dist/cli/chat/ModelSelector.js.map +1 -0
- package/dist/cli/chat/NodeManager.js +165 -75
- package/dist/cli/chat/NodeManager.js.map +1 -0
- package/dist/cli/chat/NodeSelector.js +171 -30
- package/dist/cli/chat/NodeSelector.js.map +1 -0
- package/dist/cli/chat/PlanApproval.js +281 -57
- package/dist/cli/chat/PlanApproval.js.map +1 -0
- package/dist/cli/chat/RewindViewer.js +559 -144
- package/dist/cli/chat/RewindViewer.js.map +1 -0
- package/dist/cli/chat/SessionManager.js +137 -30
- package/dist/cli/chat/SessionManager.js.map +1 -0
- package/dist/cli/chat/SlashMenu.js +293 -164
- package/dist/cli/chat/SlashMenu.js.map +1 -0
- package/dist/cli/chat/StatusBar.js +172 -9
- package/dist/cli/chat/StatusBar.js.map +1 -0
- package/dist/cli/chat/StoreSelector.js +147 -18
- package/dist/cli/chat/StoreSelector.js.map +1 -0
- package/dist/cli/chat/StreamingText.d.ts +1 -5
- package/dist/cli/chat/StreamingText.js +22 -7
- package/dist/cli/chat/StreamingText.js.map +1 -0
- package/dist/cli/chat/SubagentPanel.d.ts +1 -2
- package/dist/cli/chat/SubagentPanel.js +612 -72
- package/dist/cli/chat/SubagentPanel.js.map +1 -0
- package/dist/cli/chat/TeamPanel.d.ts +1 -0
- package/dist/cli/chat/TeamPanel.js +230 -30
- package/dist/cli/chat/TeamPanel.js.map +1 -0
- package/dist/cli/chat/ThemeSelector.js +84 -24
- package/dist/cli/chat/ThemeSelector.js.map +1 -0
- package/dist/cli/chat/ToolIndicator.js +1476 -371
- package/dist/cli/chat/ToolIndicator.js.map +1 -0
- package/dist/cli/chat/hooks/useAgentLoop.d.ts +1 -0
- package/dist/cli/chat/hooks/useAgentLoop.js +481 -367
- package/dist/cli/chat/hooks/useAgentLoop.js.map +1 -0
- package/dist/cli/chat/hooks/useSlashCommands.d.ts +3 -14
- package/dist/cli/chat/hooks/useSlashCommands.js +744 -572
- package/dist/cli/chat/hooks/useSlashCommands.js.map +1 -0
- package/dist/cli/commands/config-cmd.js +56 -57
- package/dist/cli/commands/config-cmd.js.map +1 -0
- package/dist/cli/commands/db.js +184 -169
- package/dist/cli/commands/db.js.map +1 -0
- package/dist/cli/commands/doctor.js +212 -122
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.js +211 -244
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/mcp.js +127 -122
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/login/LoginApp.js +355 -141
- package/dist/cli/login/LoginApp.js.map +1 -0
- package/dist/cli/print-mode.js +196 -177
- package/dist/cli/print-mode.js.map +1 -0
- package/dist/cli/serve-mode.js +615 -530
- package/dist/cli/serve-mode.js.map +1 -0
- package/dist/cli/services/agent-config.d.ts +5 -1
- package/dist/cli/services/agent-config.js +66 -36
- package/dist/cli/services/agent-config.js.map +1 -0
- package/dist/cli/services/agent-definitions.d.ts +4 -1
- package/dist/cli/services/agent-definitions.js +97 -56
- package/dist/cli/services/agent-definitions.js.map +1 -0
- package/dist/cli/services/agent-events.js +225 -162
- package/dist/cli/services/agent-events.js.map +1 -0
- package/dist/cli/services/agent-loop.js +976 -688
- package/dist/cli/services/agent-loop.js.map +1 -0
- package/dist/cli/services/agent-worker-base.d.ts +35 -5
- package/dist/cli/services/agent-worker-base.js +337 -153
- package/dist/cli/services/agent-worker-base.js.map +1 -0
- package/dist/cli/services/api-retry.js +69 -64
- package/dist/cli/services/api-retry.js.map +1 -0
- package/dist/cli/services/auth-service.d.ts +3 -3
- package/dist/cli/services/auth-service.js +209 -132
- package/dist/cli/services/auth-service.js.map +1 -0
- package/dist/cli/services/background-processes.js +343 -267
- package/dist/cli/services/background-processes.js.map +1 -0
- package/dist/cli/services/browser-auth.d.ts +2 -2
- package/dist/cli/services/browser-auth.js +159 -118
- package/dist/cli/services/browser-auth.js.map +1 -0
- package/dist/cli/services/claude-md-loader.js +40 -36
- package/dist/cli/services/claude-md-loader.js.map +1 -0
- package/dist/cli/services/config-store.d.ts +9 -4
- package/dist/cli/services/config-store.js +164 -117
- package/dist/cli/services/config-store.js.map +1 -0
- package/dist/cli/services/debug-log.d.ts +1 -1
- package/dist/cli/services/debug-log.js +34 -35
- package/dist/cli/services/debug-log.js.map +1 -0
- package/dist/cli/services/env-detect.d.ts +7 -0
- package/dist/cli/services/env-detect.js +9 -0
- package/dist/cli/services/env-detect.js.map +1 -0
- package/dist/cli/services/error-logger.js +187 -169
- package/dist/cli/services/error-logger.js.map +1 -0
- package/dist/cli/services/file-history.d.ts +1 -1
- package/dist/cli/services/file-history.js +50 -54
- package/dist/cli/services/file-history.js.map +1 -0
- package/dist/cli/services/format-server-response.js +332 -372
- package/dist/cli/services/format-server-response.js.map +1 -0
- package/dist/cli/services/git-context.js +61 -45
- package/dist/cli/services/git-context.js.map +1 -0
- package/dist/cli/services/hooks.d.ts +2 -2
- package/dist/cli/services/hooks.js +195 -180
- package/dist/cli/services/hooks.js.map +1 -0
- package/dist/cli/services/ink-incremental.d.ts +19 -0
- package/dist/cli/services/ink-incremental.js +59 -0
- package/dist/cli/services/ink-incremental.js.map +1 -0
- package/dist/cli/services/ink-resize-fix.js +54 -44
- package/dist/cli/services/ink-resize-fix.js.map +1 -0
- package/dist/cli/services/ink-sync-output.d.ts +12 -0
- package/dist/cli/services/ink-sync-output.js +16 -0
- package/dist/cli/services/ink-sync-output.js.map +1 -0
- package/dist/cli/services/interactive-tools.js +268 -212
- package/dist/cli/services/interactive-tools.js.map +1 -0
- package/dist/cli/services/keybinding-manager.d.ts +11 -1
- package/dist/cli/services/keybinding-manager.js +126 -63
- package/dist/cli/services/keybinding-manager.js.map +1 -0
- package/dist/cli/services/local-tools.d.ts +1 -1
- package/dist/cli/services/local-tools.js +939 -656
- package/dist/cli/services/local-tools.js.map +1 -0
- package/dist/cli/services/lsp-manager.js +757 -594
- package/dist/cli/services/lsp-manager.js.map +1 -0
- package/dist/cli/services/mcp-client.d.ts +1 -1
- package/dist/cli/services/mcp-client.js +173 -134
- package/dist/cli/services/mcp-client.js.map +1 -0
- package/dist/cli/services/memory-manager.js +53 -40
- package/dist/cli/services/memory-manager.js.map +1 -0
- package/dist/cli/services/model-manager.js +55 -40
- package/dist/cli/services/model-manager.js.map +1 -0
- package/dist/cli/services/model-router.js +115 -85
- package/dist/cli/services/model-router.js.map +1 -0
- package/dist/cli/services/paths.d.ts +30 -0
- package/dist/cli/services/paths.js +81 -0
- package/dist/cli/services/paths.js.map +1 -0
- package/dist/cli/services/permission-modes.js +32 -25
- package/dist/cli/services/permission-modes.js.map +1 -0
- package/dist/cli/services/rewind.js +182 -168
- package/dist/cli/services/rewind.js.map +1 -0
- package/dist/cli/services/ripgrep.js +115 -115
- package/dist/cli/services/ripgrep.js.map +1 -0
- package/dist/cli/services/sandbox.d.ts +1 -1
- package/dist/cli/services/sandbox.js +58 -37
- package/dist/cli/services/sandbox.js.map +1 -0
- package/dist/cli/services/server-tools.js +738 -565
- package/dist/cli/services/server-tools.js.map +1 -0
- package/dist/cli/services/session-persistence.js +69 -74
- package/dist/cli/services/session-persistence.js.map +1 -0
- package/dist/cli/services/subagent-worker.js +42 -27
- package/dist/cli/services/subagent-worker.js.map +1 -0
- package/dist/cli/services/subagent.d.ts +2 -0
- package/dist/cli/services/subagent.js +605 -433
- package/dist/cli/services/subagent.js.map +1 -0
- package/dist/cli/services/system-prompt.js +86 -78
- package/dist/cli/services/system-prompt.js.map +1 -0
- package/dist/cli/services/task-decomposer.d.ts +1 -1
- package/dist/cli/services/task-decomposer.js +172 -139
- package/dist/cli/services/task-decomposer.js.map +1 -0
- package/dist/cli/services/team-lead.d.ts +2 -2
- package/dist/cli/services/team-lead.js +727 -529
- package/dist/cli/services/team-lead.js.map +1 -0
- package/dist/cli/services/team-state.js +319 -319
- package/dist/cli/services/team-state.js.map +1 -0
- package/dist/cli/services/teammate.d.ts +8 -2
- package/dist/cli/services/teammate.js +857 -569
- package/dist/cli/services/teammate.js.map +1 -0
- package/dist/cli/services/telemetry.d.ts +6 -1
- package/dist/cli/services/telemetry.js +180 -157
- package/dist/cli/services/telemetry.js.map +1 -0
- package/dist/cli/services/tools/agent-tools.d.ts +3 -3
- package/dist/cli/services/tools/agent-tools.js +480 -322
- package/dist/cli/services/tools/agent-tools.js.map +1 -0
- package/dist/cli/services/tools/file-ops.js +563 -450
- package/dist/cli/services/tools/file-ops.js.map +1 -0
- package/dist/cli/services/tools/search-tools.js +231 -162
- package/dist/cli/services/tools/search-tools.js.map +1 -0
- package/dist/cli/services/tools/shell-exec.js +197 -151
- package/dist/cli/services/tools/shell-exec.js.map +1 -0
- package/dist/cli/services/tools/task-manager.js +206 -173
- package/dist/cli/services/tools/task-manager.js.map +1 -0
- package/dist/cli/services/tools/web-tools.js +388 -341
- package/dist/cli/services/tools/web-tools.js.map +1 -0
- package/dist/cli/setup/SetupApp.d.ts +2 -2
- package/dist/cli/setup/SetupApp.js +608 -160
- package/dist/cli/setup/SetupApp.js.map +1 -0
- package/dist/cli/shared/ErrorBoundary.d.ts +22 -0
- package/dist/cli/shared/ErrorBoundary.js +73 -0
- package/dist/cli/shared/ErrorBoundary.js.map +1 -0
- package/dist/cli/shared/MatrixIntro.js +66 -69
- package/dist/cli/shared/MatrixIntro.js.map +1 -0
- package/dist/cli/shared/SpinnerSlot.d.ts +14 -0
- package/dist/cli/shared/SpinnerSlot.js +63 -0
- package/dist/cli/shared/SpinnerSlot.js.map +1 -0
- package/dist/cli/shared/Theme.d.ts +1 -1
- package/dist/cli/shared/Theme.js +136 -92
- package/dist/cli/shared/Theme.js.map +1 -0
- package/dist/cli/shared/WhaleBanner.js +99 -11
- package/dist/cli/shared/WhaleBanner.js.map +1 -0
- package/dist/cli/shared/markdown.d.ts +3 -1
- package/dist/cli/shared/markdown.js +736 -674
- package/dist/cli/shared/markdown.js.map +1 -0
- package/dist/cli/shared/marked-terminal.d.js +2 -0
- package/dist/cli/shared/marked-terminal.d.js.map +1 -0
- package/dist/cli/shared/theme-manager.js +99 -90
- package/dist/cli/shared/theme-manager.js.map +1 -0
- package/dist/cli/shared/theme-presets.js +256 -254
- package/dist/cli/shared/theme-presets.js.map +1 -0
- package/dist/cli/status/StatusApp.js +235 -86
- package/dist/cli/status/StatusApp.js.map +1 -0
- package/dist/cli/stores/StoreApp.js +275 -65
- package/dist/cli/stores/StoreApp.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +509 -396
- package/dist/index.js.map +1 -0
- package/dist/local-agent/connection.d.ts +2 -2
- package/dist/local-agent/connection.js +352 -293
- package/dist/local-agent/connection.js.map +1 -0
- package/dist/local-agent/discovery.js +259 -122
- package/dist/local-agent/discovery.js.map +1 -0
- package/dist/local-agent/executor.js +216 -193
- package/dist/local-agent/executor.js.map +1 -0
- package/dist/local-agent/index.d.ts +2 -2
- package/dist/local-agent/index.js +156 -156
- package/dist/local-agent/index.js.map +1 -0
- package/dist/node/adapters/base.js +18 -8
- package/dist/node/adapters/base.js.map +1 -0
- package/dist/node/adapters/discord.js +286 -275
- package/dist/node/adapters/discord.js.map +1 -0
- package/dist/node/adapters/email.js +189 -202
- package/dist/node/adapters/email.js.map +1 -0
- package/dist/node/adapters/imessage.js +145 -142
- package/dist/node/adapters/imessage.js.map +1 -0
- package/dist/node/adapters/slack.js +237 -236
- package/dist/node/adapters/slack.js.map +1 -0
- package/dist/node/adapters/sms.js +149 -151
- package/dist/node/adapters/sms.js.map +1 -0
- package/dist/node/adapters/telegram.js +88 -92
- package/dist/node/adapters/telegram.js.map +1 -0
- package/dist/node/adapters/webchat.js +160 -136
- package/dist/node/adapters/webchat.js.map +1 -0
- package/dist/node/adapters/whatsapp.js +212 -215
- package/dist/node/adapters/whatsapp.js.map +1 -0
- package/dist/node/cli.js +884 -653
- package/dist/node/cli.js.map +1 -0
- package/dist/node/config.js +20 -18
- package/dist/node/config.js.map +1 -0
- package/dist/node/gateway-client.js +191 -181
- package/dist/node/gateway-client.js.map +1 -0
- package/dist/node/portal/clipboard.js +161 -130
- package/dist/node/portal/clipboard.js.map +1 -0
- package/dist/node/portal/discovery.js +51 -45
- package/dist/node/portal/discovery.js.map +1 -0
- package/dist/node/portal/forward.js +64 -58
- package/dist/node/portal/forward.js.map +1 -0
- package/dist/node/portal/index.js +246 -221
- package/dist/node/portal/index.js.map +1 -0
- package/dist/node/portal/multiplexer.js +192 -182
- package/dist/node/portal/multiplexer.js.map +1 -0
- package/dist/node/portal/permissions.js +102 -70
- package/dist/node/portal/permissions.js.map +1 -0
- package/dist/node/portal/protocol.js +153 -116
- package/dist/node/portal/protocol.js.map +1 -0
- package/dist/node/portal/screen.js +80 -69
- package/dist/node/portal/screen.js.map +1 -0
- package/dist/node/portal/session.js +124 -117
- package/dist/node/portal/session.js.map +1 -0
- package/dist/node/portal/shell.js +140 -113
- package/dist/node/portal/shell.js.map +1 -0
- package/dist/node/portal/stream.js +77 -75
- package/dist/node/portal/stream.js.map +1 -0
- package/dist/node/portal/transfer.js +190 -167
- package/dist/node/portal/transfer.js.map +1 -0
- package/dist/node/portal/ui.js +124 -99
- package/dist/node/portal/ui.js.map +1 -0
- package/dist/node/remote-desktop/compile-helper.js +50 -45
- package/dist/node/remote-desktop/compile-helper.js.map +1 -0
- package/dist/node/remote-desktop/index.js +215 -187
- package/dist/node/remote-desktop/index.js.map +1 -0
- package/dist/node/remote-desktop/protocol.js +45 -29
- package/dist/node/remote-desktop/protocol.js.map +1 -0
- package/dist/node/runtime.js +493 -410
- package/dist/node/runtime.js.map +1 -0
- package/dist/server/handlers/__test-utils__/test-db.js +39 -89
- package/dist/server/handlers/__test-utils__/test-db.js.map +1 -0
- package/dist/server/handlers/analytics.js +467 -261
- package/dist/server/handlers/analytics.js.map +1 -0
- package/dist/server/handlers/api-docs.js +1030 -895
- package/dist/server/handlers/api-docs.js.map +1 -0
- package/dist/server/handlers/api-keys.js +291 -242
- package/dist/server/handlers/api-keys.js.map +1 -0
- package/dist/server/handlers/billing.js +330 -239
- package/dist/server/handlers/billing.js.map +1 -0
- package/dist/server/handlers/browser.js +468 -395
- package/dist/server/handlers/browser.js.map +1 -0
- package/dist/server/handlers/catalog.js +1377 -978
- package/dist/server/handlers/catalog.js.map +1 -0
- package/dist/server/handlers/clickhouse.js +157 -109
- package/dist/server/handlers/clickhouse.js.map +1 -0
- package/dist/server/handlers/comms.js +1439 -984
- package/dist/server/handlers/comms.js.map +1 -0
- package/dist/server/handlers/creations.js +461 -394
- package/dist/server/handlers/creations.js.map +1 -0
- package/dist/server/handlers/crm.js +1082 -791
- package/dist/server/handlers/crm.js.map +1 -0
- package/dist/server/handlers/discovery.js +251 -232
- package/dist/server/handlers/discovery.js.map +1 -0
- package/dist/server/handlers/embeddings.js +241 -164
- package/dist/server/handlers/embeddings.js.map +1 -0
- package/dist/server/handlers/enrichment.js +887 -718
- package/dist/server/handlers/enrichment.js.map +1 -0
- package/dist/server/handlers/image-gen.js +467 -376
- package/dist/server/handlers/image-gen.js.map +1 -0
- package/dist/server/handlers/inventory.js +797 -424
- package/dist/server/handlers/inventory.js.map +1 -0
- package/dist/server/handlers/kali.js +272 -230
- package/dist/server/handlers/kali.js.map +1 -0
- package/dist/server/handlers/llm-providers.js +803 -580
- package/dist/server/handlers/llm-providers.js.map +1 -0
- package/dist/server/handlers/local-agent.js +133 -105
- package/dist/server/handlers/local-agent.js.map +1 -0
- package/dist/server/handlers/media.js +1179 -857
- package/dist/server/handlers/media.js.map +1 -0
- package/dist/server/handlers/meta-ads.js +2669 -2093
- package/dist/server/handlers/meta-ads.js.map +1 -0
- package/dist/server/handlers/nodes.js +1321 -913
- package/dist/server/handlers/nodes.js.map +1 -0
- package/dist/server/handlers/operations.js +183 -157
- package/dist/server/handlers/operations.js.map +1 -0
- package/dist/server/handlers/platform.js +346 -210
- package/dist/server/handlers/platform.js.map +1 -0
- package/dist/server/handlers/remove-bg.js +118 -86
- package/dist/server/handlers/remove-bg.js.map +1 -0
- package/dist/server/handlers/storefront.js +586 -446
- package/dist/server/handlers/storefront.js.map +1 -0
- package/dist/server/handlers/supply-chain.js +546 -326
- package/dist/server/handlers/supply-chain.js.map +1 -0
- package/dist/server/handlers/transcription.js +106 -97
- package/dist/server/handlers/transcription.js.map +1 -0
- package/dist/server/handlers/video-gen.js +593 -424
- package/dist/server/handlers/video-gen.js.map +1 -0
- package/dist/server/handlers/voice.js +1458 -1039
- package/dist/server/handlers/voice.js.map +1 -0
- package/dist/server/handlers/workflow-steps.js +2837 -2116
- package/dist/server/handlers/workflow-steps.js.map +1 -0
- package/dist/server/handlers/workflows.js +1630 -933
- package/dist/server/handlers/workflows.js.map +1 -0
- package/dist/server/index.js +3167 -2422
- package/dist/server/index.js.map +1 -0
- package/dist/server/lib/batch-client.js +471 -409
- package/dist/server/lib/batch-client.js.map +1 -0
- package/dist/server/lib/clickhouse-buffer.js +118 -104
- package/dist/server/lib/clickhouse-buffer.js.map +1 -0
- package/dist/server/lib/clickhouse-client.js +107 -107
- package/dist/server/lib/clickhouse-client.js.map +1 -0
- package/dist/server/lib/coa-renderer.js +1786 -356
- package/dist/server/lib/coa-renderer.js.map +1 -0
- package/dist/server/lib/code-worker-pool.js +227 -177
- package/dist/server/lib/code-worker-pool.js.map +1 -0
- package/dist/server/lib/code-worker.js +174 -164
- package/dist/server/lib/code-worker.js.map +1 -0
- package/dist/server/lib/compaction-service.d.ts +2 -12
- package/dist/server/lib/compaction-service.js +74 -184
- package/dist/server/lib/compaction-service.js.map +1 -0
- package/dist/server/lib/logger.js +36 -24
- package/dist/server/lib/logger.js.map +1 -0
- package/dist/server/lib/otel.js +101 -80
- package/dist/server/lib/otel.js.map +1 -0
- package/dist/server/lib/pdf-renderer.js +952 -788
- package/dist/server/lib/pdf-renderer.js.map +1 -0
- package/dist/server/lib/prompt-sanitizer.js +188 -108
- package/dist/server/lib/prompt-sanitizer.js.map +1 -0
- package/dist/server/lib/provider-capabilities.js +136 -138
- package/dist/server/lib/provider-capabilities.js.map +1 -0
- package/dist/server/lib/provider-failover.js +190 -168
- package/dist/server/lib/provider-failover.js.map +1 -0
- package/dist/server/lib/rate-limiter.js +186 -117
- package/dist/server/lib/rate-limiter.js.map +1 -0
- package/dist/server/lib/react-pdf-layout.js +551 -382
- package/dist/server/lib/react-pdf-layout.js.map +1 -0
- package/dist/server/lib/server-agent-loop.d.ts +4 -1
- package/dist/server/lib/server-agent-loop.js +906 -634
- package/dist/server/lib/server-agent-loop.js.map +1 -0
- package/dist/server/lib/server-subagent.js +260 -164
- package/dist/server/lib/server-subagent.js.map +1 -0
- package/dist/server/lib/session-checkpoint.js +105 -96
- package/dist/server/lib/session-checkpoint.js.map +1 -0
- package/dist/server/lib/ssrf-guard.js +193 -184
- package/dist/server/lib/ssrf-guard.js.map +1 -0
- package/dist/server/lib/supabase-client.js +94 -82
- package/dist/server/lib/supabase-client.js.map +1 -0
- package/dist/server/lib/template-resolver.js +154 -176
- package/dist/server/lib/template-resolver.js.map +1 -0
- package/dist/server/lib/utils.js +242 -133
- package/dist/server/lib/utils.js.map +1 -0
- package/dist/server/local-agent-gateway.d.ts +2 -2
- package/dist/server/local-agent-gateway.js +785 -627
- package/dist/server/local-agent-gateway.js.map +1 -0
- package/dist/server/providers/anthropic.js +250 -172
- package/dist/server/providers/anthropic.js.map +1 -0
- package/dist/server/providers/bedrock.js +217 -158
- package/dist/server/providers/bedrock.js.map +1 -0
- package/dist/server/providers/gemini.js +548 -418
- package/dist/server/providers/gemini.js.map +1 -0
- package/dist/server/providers/openai.js +571 -437
- package/dist/server/providers/openai.js.map +1 -0
- package/dist/server/providers/registry.js +23 -18
- package/dist/server/providers/registry.js.map +1 -0
- package/dist/server/providers/shared.js +123 -95
- package/dist/server/providers/shared.js.map +1 -0
- package/dist/server/providers/types.js +1 -11
- package/dist/server/providers/types.js.map +1 -0
- package/dist/server/proxy-handlers.js +209 -165
- package/dist/server/proxy-handlers.js.map +1 -0
- package/dist/server/tool-router.js +959 -599
- package/dist/server/tool-router.js.map +1 -0
- package/dist/server/validation.js +248 -188
- package/dist/server/validation.js.map +1 -0
- package/dist/server/worker.js +202 -133
- package/dist/server/worker.js.map +1 -0
- package/dist/setup.d.ts +2 -2
- package/dist/setup.js +151 -147
- package/dist/setup.js.map +1 -0
- package/dist/shared/agent-core.d.ts +115 -26
- package/dist/shared/agent-core.js +956 -522
- package/dist/shared/agent-core.js.map +1 -0
- package/dist/shared/anthropic-types.js +1 -6
- package/dist/shared/anthropic-types.js.map +1 -0
- package/dist/shared/api-client.d.ts +16 -9
- package/dist/shared/api-client.js +419 -327
- package/dist/shared/api-client.js.map +1 -0
- package/dist/shared/compaction.d.ts +36 -0
- package/dist/shared/compaction.js +138 -0
- package/dist/shared/compaction.js.map +1 -0
- package/dist/shared/constants.js +67 -64
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/sse-parser.js +221 -219
- package/dist/shared/sse-parser.js.map +1 -0
- package/dist/shared/tool-dispatch.d.ts +4 -0
- package/dist/shared/tool-dispatch.js +226 -165
- package/dist/shared/tool-dispatch.js.map +1 -0
- package/dist/shared/types.js +1 -6
- package/dist/shared/types.js.map +1 -0
- package/dist/types/cli-highlight.d.js +2 -0
- package/dist/types/cli-highlight.d.js.map +1 -0
- package/dist/types/diff.d.js +2 -0
- package/dist/types/diff.d.js.map +1 -0
- package/dist/types/pdf-parse.d.js +2 -0
- package/dist/types/pdf-parse.d.js.map +1 -0
- package/dist/updater.d.ts +1 -1
- package/dist/updater.js +118 -92
- package/dist/updater.js.map +1 -0
- package/dist/webchat/widget.js +227 -380
- package/dist/webchat/widget.js.map +1 -0
- package/package.json +22 -10
- package/vendor/ink/build/ansi-tokenizer.d.ts +38 -0
- package/vendor/ink/build/ansi-tokenizer.js +316 -0
- package/vendor/ink/build/ansi-tokenizer.js.map +1 -0
- package/vendor/ink/build/apply-styles.js +175 -0
- package/vendor/ink/build/build-layout.js +77 -0
- package/vendor/ink/build/calculate-wrapped-text.js +53 -0
- package/vendor/ink/build/colorize.d.ts +3 -0
- package/vendor/ink/build/colorize.js +48 -0
- package/vendor/ink/build/colorize.js.map +1 -0
- package/vendor/ink/build/components/AccessibilityContext.d.ts +3 -0
- package/vendor/ink/build/components/AccessibilityContext.js +5 -0
- package/vendor/ink/build/components/AccessibilityContext.js.map +1 -0
- package/vendor/ink/build/components/App.d.ts +18 -0
- package/vendor/ink/build/components/App.js +351 -0
- package/vendor/ink/build/components/App.js.map +1 -0
- package/vendor/ink/build/components/AppContext.d.ts +15 -0
- package/vendor/ink/build/components/AppContext.js +11 -0
- package/vendor/ink/build/components/AppContext.js.map +1 -0
- package/vendor/ink/build/components/BackgroundContext.d.ts +4 -0
- package/vendor/ink/build/components/BackgroundContext.js +3 -0
- package/vendor/ink/build/components/BackgroundContext.js.map +1 -0
- package/vendor/ink/build/components/Box.d.ts +117 -0
- package/vendor/ink/build/components/Box.js +34 -0
- package/vendor/ink/build/components/Box.js.map +1 -0
- package/vendor/ink/build/components/Color.js +62 -0
- package/vendor/ink/build/components/Cursor.d.ts +83 -0
- package/vendor/ink/build/components/Cursor.js +53 -0
- package/vendor/ink/build/components/Cursor.js.map +1 -0
- package/vendor/ink/build/components/CursorContext.d.ts +11 -0
- package/vendor/ink/build/components/CursorContext.js +8 -0
- package/vendor/ink/build/components/CursorContext.js.map +1 -0
- package/vendor/ink/build/components/ErrorBoundary.d.ts +18 -0
- package/vendor/ink/build/components/ErrorBoundary.js +23 -0
- package/vendor/ink/build/components/ErrorBoundary.js.map +1 -0
- package/vendor/ink/build/components/ErrorOverview.d.ts +6 -0
- package/vendor/ink/build/components/ErrorOverview.js +84 -0
- package/vendor/ink/build/components/ErrorOverview.js.map +1 -0
- package/vendor/ink/build/components/FocusContext.d.ts +16 -0
- package/vendor/ink/build/components/FocusContext.js +17 -0
- package/vendor/ink/build/components/FocusContext.js.map +1 -0
- package/vendor/ink/build/components/Newline.d.ts +13 -0
- package/vendor/ink/build/components/Newline.js +8 -0
- package/vendor/ink/build/components/Newline.js.map +1 -0
- package/vendor/ink/build/components/Spacer.d.ts +7 -0
- package/vendor/ink/build/components/Spacer.js +11 -0
- package/vendor/ink/build/components/Spacer.js.map +1 -0
- package/vendor/ink/build/components/Static.d.ts +24 -0
- package/vendor/ink/build/components/Static.js +28 -0
- package/vendor/ink/build/components/Static.js.map +1 -0
- package/vendor/ink/build/components/StderrContext.d.ts +15 -0
- package/vendor/ink/build/components/StderrContext.js +13 -0
- package/vendor/ink/build/components/StderrContext.js.map +1 -0
- package/vendor/ink/build/components/StdinContext.d.ts +22 -0
- package/vendor/ink/build/components/StdinContext.js +19 -0
- package/vendor/ink/build/components/StdinContext.js.map +1 -0
- package/vendor/ink/build/components/StdoutContext.d.ts +15 -0
- package/vendor/ink/build/components/StdoutContext.js +13 -0
- package/vendor/ink/build/components/StdoutContext.js.map +1 -0
- package/vendor/ink/build/components/Text.d.ts +55 -0
- package/vendor/ink/build/components/Text.js +50 -0
- package/vendor/ink/build/components/Text.js.map +1 -0
- package/vendor/ink/build/components/Transform.d.ts +16 -0
- package/vendor/ink/build/components/Transform.js +15 -0
- package/vendor/ink/build/components/Transform.js.map +1 -0
- package/vendor/ink/build/cursor-helpers.d.ts +38 -0
- package/vendor/ink/build/cursor-helpers.js +56 -0
- package/vendor/ink/build/cursor-helpers.js.map +1 -0
- package/vendor/ink/build/devtools-window-polyfill.d.ts +1 -0
- package/vendor/ink/build/devtools-window-polyfill.js +65 -0
- package/vendor/ink/build/devtools-window-polyfill.js.map +1 -0
- package/vendor/ink/build/devtools.d.ts +1 -0
- package/vendor/ink/build/devtools.js +11 -0
- package/vendor/ink/build/devtools.js.map +1 -0
- package/vendor/ink/build/dom.d.ts +56 -0
- package/vendor/ink/build/dom.js +124 -0
- package/vendor/ink/build/dom.js.map +1 -0
- package/vendor/ink/build/experimental/apply-style.js +140 -0
- package/vendor/ink/build/experimental/dom.js +123 -0
- package/vendor/ink/build/experimental/output.js +91 -0
- package/vendor/ink/build/experimental/reconciler.js +141 -0
- package/vendor/ink/build/experimental/renderer.js +81 -0
- package/vendor/ink/build/get-max-width.d.ts +3 -0
- package/vendor/ink/build/get-max-width.js +10 -0
- package/vendor/ink/build/get-max-width.js.map +1 -0
- package/vendor/ink/build/hooks/use-app.d.ts +5 -0
- package/vendor/ink/build/hooks/use-app.js +8 -0
- package/vendor/ink/build/hooks/use-app.js.map +1 -0
- package/vendor/ink/build/hooks/use-cursor.d.ts +12 -0
- package/vendor/ink/build/hooks/use-cursor.js +29 -0
- package/vendor/ink/build/hooks/use-cursor.js.map +1 -0
- package/vendor/ink/build/hooks/use-focus-manager.d.ts +28 -0
- package/vendor/ink/build/hooks/use-focus-manager.js +17 -0
- package/vendor/ink/build/hooks/use-focus-manager.js.map +1 -0
- package/vendor/ink/build/hooks/use-focus.d.ts +29 -0
- package/vendor/ink/build/hooks/use-focus.js +42 -0
- package/vendor/ink/build/hooks/use-focus.js.map +1 -0
- package/vendor/ink/build/hooks/use-input.d.ts +131 -0
- package/vendor/ink/build/hooks/use-input.js +124 -0
- package/vendor/ink/build/hooks/use-input.js.map +1 -0
- package/vendor/ink/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
- package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js +11 -0
- package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
- package/vendor/ink/build/hooks/use-stderr.d.ts +5 -0
- package/vendor/ink/build/hooks/use-stderr.js +8 -0
- package/vendor/ink/build/hooks/use-stderr.js.map +1 -0
- package/vendor/ink/build/hooks/use-stdin.d.ts +5 -0
- package/vendor/ink/build/hooks/use-stdin.js +8 -0
- package/vendor/ink/build/hooks/use-stdin.js.map +1 -0
- package/vendor/ink/build/hooks/use-stdout.d.ts +5 -0
- package/vendor/ink/build/hooks/use-stdout.js +8 -0
- package/vendor/ink/build/hooks/use-stdout.js.map +1 -0
- package/vendor/ink/build/hooks/useInput.js +38 -0
- package/vendor/ink/build/index.d.ts +34 -0
- package/vendor/ink/build/index.js +20 -0
- package/vendor/ink/build/index.js.map +1 -0
- package/vendor/ink/build/ink.d.ts +90 -0
- package/vendor/ink/build/ink.js +654 -0
- package/vendor/ink/build/ink.js.map +1 -0
- package/vendor/ink/build/input-parser.d.ts +7 -0
- package/vendor/ink/build/input-parser.js +154 -0
- package/vendor/ink/build/input-parser.js.map +1 -0
- package/vendor/ink/build/instance.js +205 -0
- package/vendor/ink/build/instances.d.ts +3 -0
- package/vendor/ink/build/instances.js +8 -0
- package/vendor/ink/build/instances.js.map +1 -0
- package/vendor/ink/build/kitty-keyboard.d.ts +23 -0
- package/vendor/ink/build/kitty-keyboard.js +32 -0
- package/vendor/ink/build/kitty-keyboard.js.map +1 -0
- package/vendor/ink/build/layout.d.ts +7 -0
- package/vendor/ink/build/layout.js +33 -0
- package/vendor/ink/build/layout.js.map +1 -0
- package/vendor/ink/build/log-update.d.ts +19 -0
- package/vendor/ink/build/log-update.js +243 -0
- package/vendor/ink/build/log-update.js.map +1 -0
- package/vendor/ink/build/measure-element.d.ts +16 -0
- package/vendor/ink/build/measure-element.js +9 -0
- package/vendor/ink/build/measure-element.js.map +1 -0
- package/vendor/ink/build/measure-text.d.ts +6 -0
- package/vendor/ink/build/measure-text.js +21 -0
- package/vendor/ink/build/measure-text.js.map +1 -0
- package/vendor/ink/build/options.d.ts +52 -0
- package/vendor/ink/build/options.js +2 -0
- package/vendor/ink/build/options.js.map +1 -0
- package/vendor/ink/build/output.d.ts +35 -0
- package/vendor/ink/build/output.js +183 -0
- package/vendor/ink/build/output.js.map +1 -0
- package/vendor/ink/build/parse-keypress.d.ts +22 -0
- package/vendor/ink/build/parse-keypress.js +493 -0
- package/vendor/ink/build/parse-keypress.js.map +1 -0
- package/vendor/ink/build/reconciler.d.ts +4 -0
- package/vendor/ink/build/reconciler.js +274 -0
- package/vendor/ink/build/reconciler.js.map +1 -0
- package/vendor/ink/build/render-background.d.ts +4 -0
- package/vendor/ink/build/render-background.js +25 -0
- package/vendor/ink/build/render-background.js.map +1 -0
- package/vendor/ink/build/render-border.d.ts +4 -0
- package/vendor/ink/build/render-border.js +73 -0
- package/vendor/ink/build/render-border.js.map +1 -0
- package/vendor/ink/build/render-node-to-output.d.ts +14 -0
- package/vendor/ink/build/render-node-to-output.js +147 -0
- package/vendor/ink/build/render-node-to-output.js.map +1 -0
- package/vendor/ink/build/render-to-string.d.ts +38 -0
- package/vendor/ink/build/render-to-string.js +115 -0
- package/vendor/ink/build/render-to-string.js.map +1 -0
- package/vendor/ink/build/render.d.ts +121 -0
- package/vendor/ink/build/render.js +55 -0
- package/vendor/ink/build/render.js.map +1 -0
- package/vendor/ink/build/renderer.d.ts +8 -0
- package/vendor/ink/build/renderer.js +55 -0
- package/vendor/ink/build/renderer.js.map +1 -0
- package/vendor/ink/build/sanitize-ansi.d.ts +2 -0
- package/vendor/ink/build/sanitize-ansi.js +27 -0
- package/vendor/ink/build/sanitize-ansi.js.map +1 -0
- package/vendor/ink/build/screen-reader-update.d.ts +13 -0
- package/vendor/ink/build/screen-reader-update.js +38 -0
- package/vendor/ink/build/screen-reader-update.js.map +1 -0
- package/vendor/ink/build/squash-text-nodes.d.ts +3 -0
- package/vendor/ink/build/squash-text-nodes.js +36 -0
- package/vendor/ink/build/squash-text-nodes.js.map +1 -0
- package/vendor/ink/build/styles.d.ts +240 -0
- package/vendor/ink/build/styles.js +232 -0
- package/vendor/ink/build/styles.js.map +1 -0
- package/vendor/ink/build/utils.d.ts +2 -0
- package/vendor/ink/build/utils.js +4 -0
- package/vendor/ink/build/utils.js.map +1 -0
- package/vendor/ink/build/wrap-text.d.ts +3 -0
- package/vendor/ink/build/wrap-text.js +31 -0
- package/vendor/ink/build/wrap-text.js.map +1 -0
- package/vendor/ink/build/write-synchronized.d.ts +4 -0
- package/vendor/ink/build/write-synchronized.js +7 -0
- package/vendor/ink/build/write-synchronized.js.map +1 -0
- package/vendor/ink/license +10 -0
- package/vendor/ink/node_modules/@types/node/LICENSE +21 -0
- package/vendor/ink/node_modules/@types/node/README.md +15 -0
- package/vendor/ink/node_modules/@types/node/assert/strict.d.ts +105 -0
- package/vendor/ink/node_modules/@types/node/assert.d.ts +955 -0
- package/vendor/ink/node_modules/@types/node/async_hooks.d.ts +623 -0
- package/vendor/ink/node_modules/@types/node/buffer.buffer.d.ts +466 -0
- package/vendor/ink/node_modules/@types/node/buffer.d.ts +1810 -0
- package/vendor/ink/node_modules/@types/node/child_process.d.ts +1428 -0
- package/vendor/ink/node_modules/@types/node/cluster.d.ts +486 -0
- package/vendor/ink/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
- package/vendor/ink/node_modules/@types/node/console.d.ts +151 -0
- package/vendor/ink/node_modules/@types/node/constants.d.ts +20 -0
- package/vendor/ink/node_modules/@types/node/crypto.d.ts +4065 -0
- package/vendor/ink/node_modules/@types/node/dgram.d.ts +564 -0
- package/vendor/ink/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
- package/vendor/ink/node_modules/@types/node/dns/promises.d.ts +503 -0
- package/vendor/ink/node_modules/@types/node/dns.d.ts +922 -0
- package/vendor/ink/node_modules/@types/node/domain.d.ts +166 -0
- package/vendor/ink/node_modules/@types/node/events.d.ts +1054 -0
- package/vendor/ink/node_modules/@types/node/fs/promises.d.ts +1329 -0
- package/vendor/ink/node_modules/@types/node/fs.d.ts +4676 -0
- package/vendor/ink/node_modules/@types/node/globals.d.ts +150 -0
- package/vendor/ink/node_modules/@types/node/globals.typedarray.d.ts +101 -0
- package/vendor/ink/node_modules/@types/node/http.d.ts +2167 -0
- package/vendor/ink/node_modules/@types/node/http2.d.ts +2480 -0
- package/vendor/ink/node_modules/@types/node/https.d.ts +405 -0
- package/vendor/ink/node_modules/@types/node/index.d.ts +115 -0
- package/vendor/ink/node_modules/@types/node/inspector/promises.d.ts +41 -0
- package/vendor/ink/node_modules/@types/node/inspector.d.ts +224 -0
- package/vendor/ink/node_modules/@types/node/inspector.generated.d.ts +4226 -0
- package/vendor/ink/node_modules/@types/node/module.d.ts +819 -0
- package/vendor/ink/node_modules/@types/node/net.d.ts +933 -0
- package/vendor/ink/node_modules/@types/node/os.d.ts +507 -0
- package/vendor/ink/node_modules/@types/node/package.json +155 -0
- package/vendor/ink/node_modules/@types/node/path/posix.d.ts +8 -0
- package/vendor/ink/node_modules/@types/node/path/win32.d.ts +8 -0
- package/vendor/ink/node_modules/@types/node/path.d.ts +187 -0
- package/vendor/ink/node_modules/@types/node/perf_hooks.d.ts +643 -0
- package/vendor/ink/node_modules/@types/node/process.d.ts +2156 -0
- package/vendor/ink/node_modules/@types/node/punycode.d.ts +117 -0
- package/vendor/ink/node_modules/@types/node/querystring.d.ts +152 -0
- package/vendor/ink/node_modules/@types/node/quic.d.ts +910 -0
- package/vendor/ink/node_modules/@types/node/readline/promises.d.ts +161 -0
- package/vendor/ink/node_modules/@types/node/readline.d.ts +541 -0
- package/vendor/ink/node_modules/@types/node/repl.d.ts +415 -0
- package/vendor/ink/node_modules/@types/node/sea.d.ts +162 -0
- package/vendor/ink/node_modules/@types/node/sqlite.d.ts +955 -0
- package/vendor/ink/node_modules/@types/node/stream/consumers.d.ts +38 -0
- package/vendor/ink/node_modules/@types/node/stream/promises.d.ts +211 -0
- package/vendor/ink/node_modules/@types/node/stream/web.d.ts +296 -0
- package/vendor/ink/node_modules/@types/node/stream.d.ts +1760 -0
- package/vendor/ink/node_modules/@types/node/string_decoder.d.ts +67 -0
- package/vendor/ink/node_modules/@types/node/test/reporters.d.ts +96 -0
- package/vendor/ink/node_modules/@types/node/test.d.ts +2240 -0
- package/vendor/ink/node_modules/@types/node/timers/promises.d.ts +108 -0
- package/vendor/ink/node_modules/@types/node/timers.d.ts +159 -0
- package/vendor/ink/node_modules/@types/node/tls.d.ts +1198 -0
- package/vendor/ink/node_modules/@types/node/trace_events.d.ts +197 -0
- package/vendor/ink/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
- package/vendor/ink/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
- package/vendor/ink/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
- package/vendor/ink/node_modules/@types/node/ts5.6/index.d.ts +117 -0
- package/vendor/ink/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
- package/vendor/ink/node_modules/@types/node/ts5.7/index.d.ts +117 -0
- package/vendor/ink/node_modules/@types/node/tty.d.ts +250 -0
- package/vendor/ink/node_modules/@types/node/url.d.ts +519 -0
- package/vendor/ink/node_modules/@types/node/util/types.d.ts +558 -0
- package/vendor/ink/node_modules/@types/node/util.d.ts +1662 -0
- package/vendor/ink/node_modules/@types/node/v8.d.ts +983 -0
- package/vendor/ink/node_modules/@types/node/vm.d.ts +1208 -0
- package/vendor/ink/node_modules/@types/node/wasi.d.ts +202 -0
- package/vendor/ink/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
- package/vendor/ink/node_modules/@types/node/web-globals/blob.d.ts +23 -0
- package/vendor/ink/node_modules/@types/node/web-globals/console.d.ts +9 -0
- package/vendor/ink/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
- package/vendor/ink/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
- package/vendor/ink/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
- package/vendor/ink/node_modules/@types/node/web-globals/events.d.ts +106 -0
- package/vendor/ink/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
- package/vendor/ink/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
- package/vendor/ink/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
- package/vendor/ink/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
- package/vendor/ink/node_modules/@types/node/web-globals/performance.d.ts +45 -0
- package/vendor/ink/node_modules/@types/node/web-globals/storage.d.ts +24 -0
- package/vendor/ink/node_modules/@types/node/web-globals/streams.d.ts +115 -0
- package/vendor/ink/node_modules/@types/node/web-globals/timers.d.ts +44 -0
- package/vendor/ink/node_modules/@types/node/web-globals/url.d.ts +24 -0
- package/vendor/ink/node_modules/@types/node/worker_threads.d.ts +717 -0
- package/vendor/ink/node_modules/@types/node/zlib.d.ts +618 -0
- package/vendor/ink/node_modules/node-pty/LICENSE +69 -0
- package/vendor/ink/node_modules/node-pty/README.md +164 -0
- package/vendor/ink/node_modules/node-pty/binding.gyp +150 -0
- package/vendor/ink/node_modules/node-pty/lib/conpty_console_list_agent.js +25 -0
- package/vendor/ink/node_modules/node-pty/lib/eventEmitter2.js +47 -0
- package/vendor/ink/node_modules/node-pty/lib/index.js +52 -0
- package/vendor/ink/node_modules/node-pty/lib/interfaces.js +7 -0
- package/vendor/ink/node_modules/node-pty/lib/shared/conout.js +11 -0
- package/vendor/ink/node_modules/node-pty/lib/terminal.js +190 -0
- package/vendor/ink/node_modules/node-pty/lib/types.js +7 -0
- package/vendor/ink/node_modules/node-pty/lib/unixTerminal.js +349 -0
- package/vendor/ink/node_modules/node-pty/lib/utils.js +39 -0
- package/vendor/ink/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
- package/vendor/ink/node_modules/node-pty/lib/windowsPtyAgent.js +287 -0
- package/vendor/ink/node_modules/node-pty/lib/windowsTerminal.js +201 -0
- package/vendor/ink/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
- package/vendor/ink/node_modules/node-pty/package.json +65 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/linux-arm64/pty.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/linux-x64/pty.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
- package/vendor/ink/node_modules/node-pty/scripts/post-install.js +76 -0
- package/vendor/ink/node_modules/node-pty/scripts/prebuild.js +34 -0
- package/vendor/ink/node_modules/node-pty/src/unix/pty.cc +875 -0
- package/vendor/ink/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
- package/vendor/ink/node_modules/node-pty/src/win/conpty.cc +582 -0
- package/vendor/ink/node_modules/node-pty/src/win/conpty.h +41 -0
- package/vendor/ink/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
- package/vendor/ink/node_modules/node-pty/src/win/path_util.cc +95 -0
- package/vendor/ink/node_modules/node-pty/src/win/path_util.h +26 -0
- package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
- package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
- package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
- package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
- package/vendor/ink/node_modules/node-pty/typings/node-pty.d.ts +215 -0
- package/vendor/ink/node_modules/undici-types/LICENSE +21 -0
- package/vendor/ink/node_modules/undici-types/README.md +6 -0
- package/vendor/ink/node_modules/undici-types/agent.d.ts +32 -0
- package/vendor/ink/node_modules/undici-types/api.d.ts +43 -0
- package/vendor/ink/node_modules/undici-types/balanced-pool.d.ts +30 -0
- package/vendor/ink/node_modules/undici-types/cache-interceptor.d.ts +173 -0
- package/vendor/ink/node_modules/undici-types/cache.d.ts +36 -0
- package/vendor/ink/node_modules/undici-types/client-stats.d.ts +15 -0
- package/vendor/ink/node_modules/undici-types/client.d.ts +108 -0
- package/vendor/ink/node_modules/undici-types/connector.d.ts +34 -0
- package/vendor/ink/node_modules/undici-types/content-type.d.ts +21 -0
- package/vendor/ink/node_modules/undici-types/cookies.d.ts +30 -0
- package/vendor/ink/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
- package/vendor/ink/node_modules/undici-types/dispatcher.d.ts +276 -0
- package/vendor/ink/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
- package/vendor/ink/node_modules/undici-types/errors.d.ts +161 -0
- package/vendor/ink/node_modules/undici-types/eventsource.d.ts +66 -0
- package/vendor/ink/node_modules/undici-types/fetch.d.ts +211 -0
- package/vendor/ink/node_modules/undici-types/formdata.d.ts +108 -0
- package/vendor/ink/node_modules/undici-types/global-dispatcher.d.ts +9 -0
- package/vendor/ink/node_modules/undici-types/global-origin.d.ts +7 -0
- package/vendor/ink/node_modules/undici-types/h2c-client.d.ts +73 -0
- package/vendor/ink/node_modules/undici-types/handlers.d.ts +15 -0
- package/vendor/ink/node_modules/undici-types/header.d.ts +160 -0
- package/vendor/ink/node_modules/undici-types/index.d.ts +88 -0
- package/vendor/ink/node_modules/undici-types/interceptors.d.ts +73 -0
- package/vendor/ink/node_modules/undici-types/mock-agent.d.ts +68 -0
- package/vendor/ink/node_modules/undici-types/mock-call-history.d.ts +111 -0
- package/vendor/ink/node_modules/undici-types/mock-client.d.ts +27 -0
- package/vendor/ink/node_modules/undici-types/mock-errors.d.ts +12 -0
- package/vendor/ink/node_modules/undici-types/mock-interceptor.d.ts +94 -0
- package/vendor/ink/node_modules/undici-types/mock-pool.d.ts +27 -0
- package/vendor/ink/node_modules/undici-types/package.json +55 -0
- package/vendor/ink/node_modules/undici-types/patch.d.ts +29 -0
- package/vendor/ink/node_modules/undici-types/pool-stats.d.ts +19 -0
- package/vendor/ink/node_modules/undici-types/pool.d.ts +41 -0
- package/vendor/ink/node_modules/undici-types/proxy-agent.d.ts +29 -0
- package/vendor/ink/node_modules/undici-types/readable.d.ts +68 -0
- package/vendor/ink/node_modules/undici-types/retry-agent.d.ts +8 -0
- package/vendor/ink/node_modules/undici-types/retry-handler.d.ts +125 -0
- package/vendor/ink/node_modules/undici-types/round-robin-pool.d.ts +41 -0
- package/vendor/ink/node_modules/undici-types/snapshot-agent.d.ts +109 -0
- package/vendor/ink/node_modules/undici-types/util.d.ts +18 -0
- package/vendor/ink/node_modules/undici-types/utility.d.ts +7 -0
- package/vendor/ink/node_modules/undici-types/webidl.d.ts +341 -0
- package/vendor/ink/node_modules/undici-types/websocket.d.ts +186 -0
- package/vendor/ink/package.json +201 -0
- package/vendor/ink/readme.md +2636 -0
- package/bin/swag-agent.js +0 -9
- package/dist/server/lib/pg-rate-limiter.d.ts +0 -21
- package/dist/server/lib/pg-rate-limiter.js +0 -86
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-manager.js","names":["readFileSync","writeFileSync","existsSync","mkdirSync","MEMORY_DIR","MEMORY_FILE","ensureDataDir","ensureMemoryDir","recursive","loadMemory","trim","addMemory","fact","existing","entry","includes","success","message","updated","removeMemory","pattern","content","lines","split","lower","toLowerCase","filtered","filter","line","length","removed","join","listMemories","l","startsWith","map","replace"],"sources":["../../../src/cli/services/memory-manager.ts"],"sourcesContent":["/**\n * Memory Manager — persistent /remember and /forget across sessions\n *\n * Extracted from agent-loop.ts for single-responsibility.\n * All consumers should import from agent-loop.ts (re-export facade).\n */\n\nimport { readFileSync, writeFileSync, existsSync, mkdirSync } from \"fs\";\nimport { MEMORY_DIR, MEMORY_FILE, ensureDataDir } from \"./paths.js\";\n\nfunction ensureMemoryDir(): void {\n ensureDataDir();\n if (!existsSync(MEMORY_DIR)) mkdirSync(MEMORY_DIR, { recursive: true });\n}\n\nexport function loadMemory(): string {\n if (!existsSync(MEMORY_FILE)) return \"\";\n try {\n return readFileSync(MEMORY_FILE, \"utf-8\").trim();\n } catch { return \"\"; }\n}\n\nexport function addMemory(fact: string): { success: boolean; message: string } {\n ensureMemoryDir();\n const existing = loadMemory();\n const entry = `- ${fact}`;\n\n // Check for duplicate\n if (existing.includes(fact)) {\n return { success: false, message: \"Already remembered.\" };\n }\n\n const updated = existing ? existing + \"\\n\" + entry : entry;\n writeFileSync(MEMORY_FILE, updated + \"\\n\", \"utf-8\");\n return { success: true, message: `Remembered: ${fact}` };\n}\n\nexport function removeMemory(pattern: string): { success: boolean; message: string } {\n if (!existsSync(MEMORY_FILE)) return { success: false, message: \"No memories stored.\" };\n\n const content = readFileSync(MEMORY_FILE, \"utf-8\");\n const lines = content.split(\"\\n\");\n const lower = pattern.toLowerCase();\n const filtered = lines.filter(line => !line.toLowerCase().includes(lower));\n\n if (filtered.length === lines.length) {\n return { success: false, message: `No memory matching \"${pattern}\" found.` };\n }\n\n const removed = lines.length - filtered.length;\n writeFileSync(MEMORY_FILE, filtered.join(\"\\n\"), \"utf-8\");\n return { success: true, message: `Forgot ${removed} memor${removed === 1 ? \"y\" : \"ies\"} matching \"${pattern}\".` };\n}\n\nexport function listMemories(): string[] {\n const content = loadMemory();\n if (!content) return [];\n return content.split(\"\\n\").filter(l => l.trim().startsWith(\"- \")).map(l => l.replace(/^- /, \"\").trim());\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,68 +4,83 @@
|
|
|
4
4
|
* Extracted from agent-loop.ts for single-responsibility.
|
|
5
5
|
* All consumers should import from agent-loop.ts (re-export facade).
|
|
6
6
|
*/
|
|
7
|
+
|
|
7
8
|
import { MODEL_MAP } from "../../shared/constants.js";
|
|
8
9
|
import { estimateCostUsd as coreEstimateCostUsd } from "../../shared/agent-core.js";
|
|
9
10
|
import { loadConfig, updateConfig } from "./config-store.js";
|
|
11
|
+
|
|
10
12
|
/** CLI-only: current model ID for the active session */
|
|
11
13
|
let activeModel = "claude-opus-4-6";
|
|
14
|
+
|
|
12
15
|
// Load persisted default model on import
|
|
13
16
|
try {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
catch { /* use default */ }
|
|
17
|
+
const cfg = loadConfig();
|
|
18
|
+
if (cfg.default_model) {
|
|
19
|
+
const id = MODEL_MAP[cfg.default_model.toLowerCase()];
|
|
20
|
+
if (id) activeModel = id;
|
|
21
|
+
}
|
|
22
|
+
} catch {/* use default */}
|
|
23
|
+
|
|
22
24
|
/** Reverse map: full model ID → short key */
|
|
23
25
|
const REVERSE_MAP = {};
|
|
24
26
|
for (const [key, id] of Object.entries(MODEL_MAP)) {
|
|
25
|
-
|
|
27
|
+
REVERSE_MAP[id] = key;
|
|
26
28
|
}
|
|
27
29
|
export function setModel(name, persist = true) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
30
|
+
// Try direct key match first (e.g. "opus", "bedrock-sonnet", "gemini-pro")
|
|
31
|
+
const directId = MODEL_MAP[name.toLowerCase()];
|
|
32
|
+
if (directId) {
|
|
33
|
+
activeModel = directId;
|
|
34
|
+
if (persist) try {
|
|
35
|
+
updateConfig({
|
|
36
|
+
default_model: name.toLowerCase()
|
|
37
|
+
});
|
|
38
|
+
} catch {/* best effort */}
|
|
39
|
+
return {
|
|
40
|
+
success: true,
|
|
41
|
+
model: activeModel
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Legacy: strip "claude-" prefix for backward compat (e.g. "claude-opus" → "opus")
|
|
46
|
+
const legacy = name.toLowerCase().replace(/^claude-?/, "").replace(/-.*/, "");
|
|
47
|
+
const legacyId = MODEL_MAP[legacy];
|
|
48
|
+
if (legacyId) {
|
|
49
|
+
activeModel = legacyId;
|
|
50
|
+
if (persist) try {
|
|
51
|
+
updateConfig({
|
|
52
|
+
default_model: legacy
|
|
53
|
+
});
|
|
54
|
+
} catch {/* best effort */}
|
|
55
|
+
return {
|
|
56
|
+
success: true,
|
|
57
|
+
model: activeModel
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
success: false,
|
|
62
|
+
model: activeModel,
|
|
63
|
+
error: `Unknown model: "${name}". Valid: ${Object.keys(MODEL_MAP).join(", ")}`
|
|
64
|
+
};
|
|
52
65
|
}
|
|
66
|
+
|
|
53
67
|
/** Internal: set model by full ID (used for restoring after fallback) */
|
|
54
68
|
export function setModelById(modelId) {
|
|
55
|
-
|
|
69
|
+
activeModel = modelId;
|
|
56
70
|
}
|
|
57
71
|
export function getModel() {
|
|
58
|
-
|
|
72
|
+
return activeModel;
|
|
59
73
|
}
|
|
60
74
|
export function getModelShortName() {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return REVERSE_MAP[activeModel] || "sonnet";
|
|
75
|
+
if (activeModel === "auto") return "auto";
|
|
76
|
+
return REVERSE_MAP[activeModel] || "sonnet";
|
|
64
77
|
}
|
|
78
|
+
|
|
65
79
|
/** Check if the current model is set to auto-routing */
|
|
66
80
|
export function isAutoRouting() {
|
|
67
|
-
|
|
81
|
+
return activeModel === "auto";
|
|
68
82
|
}
|
|
69
83
|
export function estimateCostUsd(inputTokens, outputTokens, model, thinkingTokens = 0, cacheReadTokens = 0, cacheCreationTokens = 0) {
|
|
70
|
-
|
|
84
|
+
return coreEstimateCostUsd(inputTokens, outputTokens, model || activeModel, thinkingTokens, cacheReadTokens, cacheCreationTokens);
|
|
71
85
|
}
|
|
86
|
+
//# sourceMappingURL=model-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-manager.js","names":["MODEL_MAP","estimateCostUsd","coreEstimateCostUsd","loadConfig","updateConfig","activeModel","cfg","default_model","id","toLowerCase","REVERSE_MAP","key","Object","entries","setModel","name","persist","directId","success","model","legacy","replace","legacyId","error","keys","join","setModelById","modelId","getModel","getModelShortName","isAutoRouting","inputTokens","outputTokens","thinkingTokens","cacheReadTokens","cacheCreationTokens"],"sources":["../../../src/cli/services/model-manager.ts"],"sourcesContent":["/**\n * Model Manager — CLI model selection and cost tracking\n *\n * Extracted from agent-loop.ts for single-responsibility.\n * All consumers should import from agent-loop.ts (re-export facade).\n */\n\nimport { MODEL_MAP } from \"../../shared/constants.js\";\nimport { estimateCostUsd as coreEstimateCostUsd } from \"../../shared/agent-core.js\";\nimport { loadConfig, updateConfig } from \"./config-store.js\";\n\n/** CLI-only: current model ID for the active session */\nlet activeModel = \"claude-opus-4-6\";\n\n// Load persisted default model on import\ntry {\n const cfg = loadConfig();\n if (cfg.default_model) {\n const id = MODEL_MAP[cfg.default_model.toLowerCase()];\n if (id) activeModel = id;\n }\n} catch { /* use default */ }\n\n/** Reverse map: full model ID → short key */\nconst REVERSE_MAP: Record<string, string> = {};\nfor (const [key, id] of Object.entries(MODEL_MAP)) {\n REVERSE_MAP[id] = key;\n}\n\nexport function setModel(name: string, persist = true): { success: boolean; model: string; error?: string } {\n // Try direct key match first (e.g. \"opus\", \"bedrock-sonnet\", \"gemini-pro\")\n const directId = MODEL_MAP[name.toLowerCase()];\n if (directId) {\n activeModel = directId;\n if (persist) try { updateConfig({ default_model: name.toLowerCase() }); } catch { /* best effort */ }\n return { success: true, model: activeModel };\n }\n\n // Legacy: strip \"claude-\" prefix for backward compat (e.g. \"claude-opus\" → \"opus\")\n const legacy = name.toLowerCase().replace(/^claude-?/, \"\").replace(/-.*/, \"\");\n const legacyId = MODEL_MAP[legacy];\n if (legacyId) {\n activeModel = legacyId;\n if (persist) try { updateConfig({ default_model: legacy }); } catch { /* best effort */ }\n return { success: true, model: activeModel };\n }\n\n return { success: false, model: activeModel, error: `Unknown model: \"${name}\". Valid: ${Object.keys(MODEL_MAP).join(\", \")}` };\n}\n\n/** Internal: set model by full ID (used for restoring after fallback) */\nexport function setModelById(modelId: string): void {\n activeModel = modelId;\n}\n\nexport function getModel(): string {\n return activeModel;\n}\n\nexport function getModelShortName(): string {\n if (activeModel === \"auto\") return \"auto\";\n return REVERSE_MAP[activeModel] || \"sonnet\";\n}\n\n/** Check if the current model is set to auto-routing */\nexport function isAutoRouting(): boolean {\n return activeModel === \"auto\";\n}\n\nexport function estimateCostUsd(inputTokens: number, outputTokens: number, model?: string, thinkingTokens = 0, cacheReadTokens = 0, cacheCreationTokens = 0): number {\n return coreEstimateCostUsd(inputTokens, outputTokens, model || activeModel, thinkingTokens, cacheReadTokens, cacheCreationTokens);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,11 +5,18 @@
|
|
|
5
5
|
* by Haiku to determine the optimal model (haiku/sonnet/opus) based on task
|
|
6
6
|
* complexity. Matches Gemini CLI's auto-routing feature.
|
|
7
7
|
*/
|
|
8
|
+
|
|
8
9
|
import { MODELS } from "../../shared/constants.js";
|
|
9
10
|
import { callServerProxy } from "../../shared/api-client.js";
|
|
11
|
+
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// TYPES
|
|
14
|
+
// ============================================================================
|
|
15
|
+
|
|
10
16
|
// ============================================================================
|
|
11
17
|
// CONSTANTS
|
|
12
18
|
// ============================================================================
|
|
19
|
+
|
|
13
20
|
const CLASSIFIER_MODEL = MODELS.HAIKU;
|
|
14
21
|
const CLASSIFIER_PROMPT = `Classify this user request by complexity. Respond with ONLY a JSON object.
|
|
15
22
|
|
|
@@ -22,128 +29,151 @@ User request: {message}
|
|
|
22
29
|
|
|
23
30
|
Respond: {"model": "haiku"|"sonnet"|"opus", "reasoning": "brief reason", "confidence": 0.0-1.0}`;
|
|
24
31
|
const MODEL_ID_MAP = {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
haiku: MODELS.HAIKU,
|
|
33
|
+
sonnet: MODELS.SONNET,
|
|
34
|
+
opus: MODELS.OPUS
|
|
28
35
|
};
|
|
29
36
|
const DEFAULT_ROUTE = {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
model: "sonnet",
|
|
38
|
+
reasoning: "default fallback",
|
|
39
|
+
confidence: 0.5
|
|
33
40
|
};
|
|
41
|
+
|
|
34
42
|
// ============================================================================
|
|
35
43
|
// CLASSIFIER
|
|
36
44
|
// ============================================================================
|
|
45
|
+
|
|
37
46
|
/**
|
|
38
47
|
* Classify a user message to determine the best model.
|
|
39
48
|
* Uses Haiku via server proxy for fast, cheap classification.
|
|
40
49
|
*/
|
|
41
50
|
export async function classifyAndRoute(userMessage, serverUrl, authToken) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
51
|
+
try {
|
|
52
|
+
const prompt = CLASSIFIER_PROMPT.replace("{message}", userMessage);
|
|
53
|
+
const apiConfig = {
|
|
54
|
+
betas: [],
|
|
55
|
+
contextManagement: {
|
|
56
|
+
edits: []
|
|
57
|
+
},
|
|
58
|
+
maxTokens: 256
|
|
59
|
+
};
|
|
60
|
+
const stream = await callServerProxy({
|
|
61
|
+
proxyUrl: `${serverUrl}/proxy`,
|
|
62
|
+
token: authToken,
|
|
63
|
+
model: CLASSIFIER_MODEL,
|
|
64
|
+
system: [{
|
|
65
|
+
type: "text",
|
|
66
|
+
text: "You are a task complexity classifier. Respond with only valid JSON."
|
|
67
|
+
}],
|
|
68
|
+
messages: [{
|
|
69
|
+
role: "user",
|
|
70
|
+
content: prompt
|
|
71
|
+
}],
|
|
72
|
+
tools: [],
|
|
73
|
+
apiConfig,
|
|
74
|
+
timeoutMs: 5000
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// Collect the full text response from the SSE stream
|
|
78
|
+
const text = await collectText(stream);
|
|
79
|
+
return parseClassifierResponse(text);
|
|
80
|
+
} catch {
|
|
81
|
+
// On any error (network, timeout, parse), fall back to sonnet
|
|
82
|
+
return DEFAULT_ROUTE;
|
|
83
|
+
}
|
|
67
84
|
}
|
|
85
|
+
|
|
68
86
|
/**
|
|
69
87
|
* Check if auto-routing is enabled for this model string.
|
|
70
88
|
*/
|
|
71
89
|
export function isAutoModel(model) {
|
|
72
|
-
|
|
90
|
+
return model === "auto";
|
|
73
91
|
}
|
|
92
|
+
|
|
74
93
|
/**
|
|
75
94
|
* Resolve "auto" to an actual model ID based on classification.
|
|
76
95
|
*/
|
|
77
96
|
export async function resolveAutoModel(userMessage, serverUrl, authToken) {
|
|
78
|
-
|
|
79
|
-
|
|
97
|
+
const result = await classifyAndRoute(userMessage, serverUrl, authToken);
|
|
98
|
+
return MODEL_ID_MAP[result.model];
|
|
80
99
|
}
|
|
100
|
+
|
|
81
101
|
// ============================================================================
|
|
82
102
|
// INTERNAL HELPERS
|
|
83
103
|
// ============================================================================
|
|
104
|
+
|
|
84
105
|
/**
|
|
85
106
|
* Collect all text from an SSE stream body.
|
|
86
107
|
* Lightweight extraction — only reads text_delta events.
|
|
87
108
|
*/
|
|
88
109
|
async function collectText(body) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
finally {
|
|
119
|
-
reader.releaseLock();
|
|
110
|
+
const reader = body.getReader();
|
|
111
|
+
const decoder = new TextDecoder();
|
|
112
|
+
let buffer = "";
|
|
113
|
+
let text = "";
|
|
114
|
+
try {
|
|
115
|
+
while (true) {
|
|
116
|
+
const {
|
|
117
|
+
done,
|
|
118
|
+
value
|
|
119
|
+
} = await reader.read();
|
|
120
|
+
if (done) break;
|
|
121
|
+
buffer += decoder.decode(value, {
|
|
122
|
+
stream: true
|
|
123
|
+
});
|
|
124
|
+
const lines = buffer.split("\n");
|
|
125
|
+
buffer = lines.pop() || "";
|
|
126
|
+
for (const line of lines) {
|
|
127
|
+
const trimmed = line.trim();
|
|
128
|
+
if (!trimmed || !trimmed.startsWith("data: ")) continue;
|
|
129
|
+
const payload = trimmed.slice(6);
|
|
130
|
+
if (payload === "[DONE]") return text;
|
|
131
|
+
try {
|
|
132
|
+
const event = JSON.parse(payload);
|
|
133
|
+
if (event.type === "content_block_delta" && event.delta?.type === "text_delta") {
|
|
134
|
+
text += event.delta.text;
|
|
135
|
+
}
|
|
136
|
+
} catch {/* skip malformed JSON */}
|
|
137
|
+
}
|
|
120
138
|
}
|
|
121
|
-
|
|
139
|
+
} finally {
|
|
140
|
+
reader.releaseLock();
|
|
141
|
+
}
|
|
142
|
+
return text;
|
|
122
143
|
}
|
|
144
|
+
|
|
123
145
|
/**
|
|
124
146
|
* Parse the classifier's JSON response into a RouteResult.
|
|
125
147
|
* Falls back to sonnet on any parse failure or low confidence.
|
|
126
148
|
*/
|
|
127
149
|
function parseClassifierResponse(text) {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
return DEFAULT_ROUTE;
|
|
137
|
-
}
|
|
138
|
-
const confidence = typeof parsed.confidence === "number" ? parsed.confidence : 0;
|
|
139
|
-
const reasoning = typeof parsed.reasoning === "string" ? parsed.reasoning : "";
|
|
140
|
-
// Low confidence defaults to sonnet (safe middle ground)
|
|
141
|
-
if (confidence < 0.3) {
|
|
142
|
-
return { model: "sonnet", reasoning: reasoning || "low confidence fallback", confidence };
|
|
143
|
-
}
|
|
144
|
-
return { model: model, reasoning, confidence };
|
|
150
|
+
try {
|
|
151
|
+
// Extract JSON from response (handle markdown fences or extra text)
|
|
152
|
+
const jsonMatch = text.match(/\{[\s\S]*\}/);
|
|
153
|
+
if (!jsonMatch) return DEFAULT_ROUTE;
|
|
154
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
155
|
+
const model = parsed.model;
|
|
156
|
+
if (model !== "haiku" && model !== "sonnet" && model !== "opus") {
|
|
157
|
+
return DEFAULT_ROUTE;
|
|
145
158
|
}
|
|
146
|
-
|
|
147
|
-
|
|
159
|
+
const confidence = typeof parsed.confidence === "number" ? parsed.confidence : 0;
|
|
160
|
+
const reasoning = typeof parsed.reasoning === "string" ? parsed.reasoning : "";
|
|
161
|
+
|
|
162
|
+
// Low confidence defaults to sonnet (safe middle ground)
|
|
163
|
+
if (confidence < 0.3) {
|
|
164
|
+
return {
|
|
165
|
+
model: "sonnet",
|
|
166
|
+
reasoning: reasoning || "low confidence fallback",
|
|
167
|
+
confidence
|
|
168
|
+
};
|
|
148
169
|
}
|
|
170
|
+
return {
|
|
171
|
+
model: model,
|
|
172
|
+
reasoning,
|
|
173
|
+
confidence
|
|
174
|
+
};
|
|
175
|
+
} catch {
|
|
176
|
+
return DEFAULT_ROUTE;
|
|
177
|
+
}
|
|
149
178
|
}
|
|
179
|
+
//# sourceMappingURL=model-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-router.js","names":["MODELS","callServerProxy","CLASSIFIER_MODEL","HAIKU","CLASSIFIER_PROMPT","MODEL_ID_MAP","haiku","sonnet","SONNET","opus","OPUS","DEFAULT_ROUTE","model","reasoning","confidence","classifyAndRoute","userMessage","serverUrl","authToken","prompt","replace","apiConfig","betas","contextManagement","edits","maxTokens","stream","proxyUrl","token","system","type","text","messages","role","content","tools","timeoutMs","collectText","parseClassifierResponse","isAutoModel","resolveAutoModel","result","body","reader","getReader","decoder","TextDecoder","buffer","done","value","read","decode","lines","split","pop","line","trimmed","trim","startsWith","payload","slice","event","JSON","parse","delta","releaseLock","jsonMatch","match","parsed"],"sources":["../../../src/cli/services/model-router.ts"],"sourcesContent":["/**\n * Model Router — auto-routing via Haiku classifier.\n *\n * When the user selects \"auto\" as their model, each user message is classified\n * by Haiku to determine the optimal model (haiku/sonnet/opus) based on task\n * complexity. Matches Gemini CLI's auto-routing feature.\n */\n\nimport { MODELS } from \"../../shared/constants.js\";\nimport { callServerProxy } from \"../../shared/api-client.js\";\nimport type { APIRequestConfig } from \"../../shared/types.js\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport type RoutedModel = \"haiku\" | \"sonnet\" | \"opus\";\n\nexport interface RouteResult {\n model: RoutedModel;\n reasoning: string;\n confidence: number; // 0-1\n}\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\nconst CLASSIFIER_MODEL = MODELS.HAIKU;\n\nconst CLASSIFIER_PROMPT = `Classify this user request by complexity. Respond with ONLY a JSON object.\n\nCategories:\n- \"haiku\": Simple lookups, single-step tasks, quick questions, status checks, simple edits (1-2 files)\n- \"sonnet\": Multi-step tasks, code refactoring, moderate analysis, 3-5 file changes, debugging\n- \"opus\": Complex architecture, large refactors, planning, creative problem solving, 5+ files, ambiguous requirements\n\nUser request: {message}\n\nRespond: {\"model\": \"haiku\"|\"sonnet\"|\"opus\", \"reasoning\": \"brief reason\", \"confidence\": 0.0-1.0}`;\n\nconst MODEL_ID_MAP: Record<RoutedModel, string> = {\n haiku: MODELS.HAIKU,\n sonnet: MODELS.SONNET,\n opus: MODELS.OPUS,\n};\n\nconst DEFAULT_ROUTE: RouteResult = {\n model: \"sonnet\",\n reasoning: \"default fallback\",\n confidence: 0.5,\n};\n\n// ============================================================================\n// CLASSIFIER\n// ============================================================================\n\n/**\n * Classify a user message to determine the best model.\n * Uses Haiku via server proxy for fast, cheap classification.\n */\nexport async function classifyAndRoute(\n userMessage: string,\n serverUrl: string,\n authToken: string,\n): Promise<RouteResult> {\n try {\n const prompt = CLASSIFIER_PROMPT.replace(\"{message}\", userMessage);\n\n const apiConfig: APIRequestConfig = {\n betas: [],\n contextManagement: { edits: [] },\n maxTokens: 256,\n };\n\n const stream = await callServerProxy({\n proxyUrl: `${serverUrl}/proxy`,\n token: authToken,\n model: CLASSIFIER_MODEL,\n system: [{ type: \"text\", text: \"You are a task complexity classifier. Respond with only valid JSON.\" }],\n messages: [{ role: \"user\", content: prompt }],\n tools: [],\n apiConfig,\n timeoutMs: 5000,\n });\n\n // Collect the full text response from the SSE stream\n const text = await collectText(stream);\n\n return parseClassifierResponse(text);\n } catch {\n // On any error (network, timeout, parse), fall back to sonnet\n return DEFAULT_ROUTE;\n }\n}\n\n/**\n * Check if auto-routing is enabled for this model string.\n */\nexport function isAutoModel(model: string): boolean {\n return model === \"auto\";\n}\n\n/**\n * Resolve \"auto\" to an actual model ID based on classification.\n */\nexport async function resolveAutoModel(\n userMessage: string,\n serverUrl: string,\n authToken: string,\n): Promise<string> {\n const result = await classifyAndRoute(userMessage, serverUrl, authToken);\n return MODEL_ID_MAP[result.model];\n}\n\n// ============================================================================\n// INTERNAL HELPERS\n// ============================================================================\n\n/**\n * Collect all text from an SSE stream body.\n * Lightweight extraction — only reads text_delta events.\n */\nasync function collectText(body: ReadableStream<Uint8Array>): Promise<string> {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n let text = \"\";\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() || \"\";\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || !trimmed.startsWith(\"data: \")) continue;\n const payload = trimmed.slice(6);\n if (payload === \"[DONE]\") return text;\n try {\n const event = JSON.parse(payload);\n if (event.type === \"content_block_delta\" && event.delta?.type === \"text_delta\") {\n text += event.delta.text;\n }\n } catch { /* skip malformed JSON */ }\n }\n }\n } finally {\n reader.releaseLock();\n }\n\n return text;\n}\n\n/**\n * Parse the classifier's JSON response into a RouteResult.\n * Falls back to sonnet on any parse failure or low confidence.\n */\nfunction parseClassifierResponse(text: string): RouteResult {\n try {\n // Extract JSON from response (handle markdown fences or extra text)\n const jsonMatch = text.match(/\\{[\\s\\S]*\\}/);\n if (!jsonMatch) return DEFAULT_ROUTE;\n\n const parsed = JSON.parse(jsonMatch[0]);\n\n const model = parsed.model as string;\n if (model !== \"haiku\" && model !== \"sonnet\" && model !== \"opus\") {\n return DEFAULT_ROUTE;\n }\n\n const confidence = typeof parsed.confidence === \"number\" ? parsed.confidence : 0;\n const reasoning = typeof parsed.reasoning === \"string\" ? parsed.reasoning : \"\";\n\n // Low confidence defaults to sonnet (safe middle ground)\n if (confidence < 0.3) {\n return { model: \"sonnet\", reasoning: reasoning || \"low confidence fallback\", confidence };\n }\n\n return { model: model as RoutedModel, reasoning, confidence };\n } catch {\n return DEFAULT_ROUTE;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized path constants for the Whale Code CLI.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for all filesystem paths. Every module that needs
|
|
5
|
+
* a path under the user's home directory imports from here instead of
|
|
6
|
+
* constructing join(homedir(), ".whale", ...) locally.
|
|
7
|
+
*
|
|
8
|
+
* Migration: The legacy directory was ~/.swagmanager. On first access,
|
|
9
|
+
* migrateDataDir() copies the old directory to ~/.whale if needed.
|
|
10
|
+
*/
|
|
11
|
+
/** Primary data directory — all CLI state lives here */
|
|
12
|
+
export declare const APP_DATA_DIR: string;
|
|
13
|
+
export declare const AGENTS_DIR: string;
|
|
14
|
+
export declare const COMMANDS_DIR: string;
|
|
15
|
+
export declare const DEBUG_DIR: string;
|
|
16
|
+
export declare const FILE_HISTORY_DIR: string;
|
|
17
|
+
export declare const HOOKS_PATH: string;
|
|
18
|
+
export declare const KEYBINDINGS_PATH: string;
|
|
19
|
+
export declare const MEMORY_DIR: string;
|
|
20
|
+
export declare const MEMORY_FILE: string;
|
|
21
|
+
export declare const SANDBOX_DIR: string;
|
|
22
|
+
export declare const SESSIONS_DIR: string;
|
|
23
|
+
export declare const TEAMS_DIR: string;
|
|
24
|
+
export declare const THEME_PATH: string;
|
|
25
|
+
export declare const TODOS_DIR: string;
|
|
26
|
+
/**
|
|
27
|
+
* Ensure data directory exists and migrate from legacy path if needed.
|
|
28
|
+
* Safe to call multiple times — migration runs at most once per process.
|
|
29
|
+
*/
|
|
30
|
+
export declare function ensureDataDir(): void;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized path constants for the Whale Code CLI.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for all filesystem paths. Every module that needs
|
|
5
|
+
* a path under the user's home directory imports from here instead of
|
|
6
|
+
* constructing join(homedir(), ".whale", ...) locally.
|
|
7
|
+
*
|
|
8
|
+
* Migration: The legacy directory was ~/.swagmanager. On first access,
|
|
9
|
+
* migrateDataDir() copies the old directory to ~/.whale if needed.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { existsSync, mkdirSync, cpSync } from "fs";
|
|
13
|
+
import { join } from "path";
|
|
14
|
+
import { homedir } from "os";
|
|
15
|
+
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// BASE DIRECTORIES
|
|
18
|
+
// ============================================================================
|
|
19
|
+
|
|
20
|
+
/** Primary data directory — all CLI state lives here */
|
|
21
|
+
export const APP_DATA_DIR = join(homedir(), ".whale");
|
|
22
|
+
|
|
23
|
+
/** Legacy directory — checked for migration only */
|
|
24
|
+
const LEGACY_DATA_DIR = join(homedir(), ".swagmanager");
|
|
25
|
+
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// SUB-PATHS (alphabetical)
|
|
28
|
+
// ============================================================================
|
|
29
|
+
|
|
30
|
+
export const AGENTS_DIR = join(APP_DATA_DIR, "agents");
|
|
31
|
+
export const COMMANDS_DIR = join(APP_DATA_DIR, "commands");
|
|
32
|
+
export const DEBUG_DIR = join(APP_DATA_DIR, "debug");
|
|
33
|
+
export const FILE_HISTORY_DIR = join(APP_DATA_DIR, "file-history");
|
|
34
|
+
export const HOOKS_PATH = join(APP_DATA_DIR, "hooks.json");
|
|
35
|
+
export const KEYBINDINGS_PATH = join(APP_DATA_DIR, "keybindings.json");
|
|
36
|
+
export const MEMORY_DIR = join(APP_DATA_DIR, "memory");
|
|
37
|
+
export const MEMORY_FILE = join(MEMORY_DIR, "MEMORY.md");
|
|
38
|
+
export const SANDBOX_DIR = join(APP_DATA_DIR, "sandbox");
|
|
39
|
+
export const SESSIONS_DIR = join(APP_DATA_DIR, "sessions");
|
|
40
|
+
export const TEAMS_DIR = join(APP_DATA_DIR, "teams");
|
|
41
|
+
export const THEME_PATH = join(APP_DATA_DIR, "theme.json");
|
|
42
|
+
export const TODOS_DIR = join(APP_DATA_DIR, "todos");
|
|
43
|
+
|
|
44
|
+
// ============================================================================
|
|
45
|
+
// MIGRATION — ~/.swagmanager → ~/.whale (one-time, idempotent)
|
|
46
|
+
// ============================================================================
|
|
47
|
+
|
|
48
|
+
let migrationDone = false;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Ensure data directory exists and migrate from legacy path if needed.
|
|
52
|
+
* Safe to call multiple times — migration runs at most once per process.
|
|
53
|
+
*/
|
|
54
|
+
export function ensureDataDir() {
|
|
55
|
+
if (migrationDone) return;
|
|
56
|
+
migrationDone = true;
|
|
57
|
+
|
|
58
|
+
// Already exists — nothing to do
|
|
59
|
+
if (existsSync(APP_DATA_DIR)) return;
|
|
60
|
+
|
|
61
|
+
// Migrate from legacy directory
|
|
62
|
+
if (existsSync(LEGACY_DATA_DIR)) {
|
|
63
|
+
try {
|
|
64
|
+
cpSync(LEGACY_DATA_DIR, APP_DATA_DIR, {
|
|
65
|
+
recursive: true
|
|
66
|
+
});
|
|
67
|
+
} catch {
|
|
68
|
+
// If copy fails (permissions, etc.), create fresh
|
|
69
|
+
mkdirSync(APP_DATA_DIR, {
|
|
70
|
+
recursive: true
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Fresh install
|
|
77
|
+
mkdirSync(APP_DATA_DIR, {
|
|
78
|
+
recursive: true
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","names":["existsSync","mkdirSync","cpSync","join","homedir","APP_DATA_DIR","LEGACY_DATA_DIR","AGENTS_DIR","COMMANDS_DIR","DEBUG_DIR","FILE_HISTORY_DIR","HOOKS_PATH","KEYBINDINGS_PATH","MEMORY_DIR","MEMORY_FILE","SANDBOX_DIR","SESSIONS_DIR","TEAMS_DIR","THEME_PATH","TODOS_DIR","migrationDone","ensureDataDir","recursive"],"sources":["../../../src/cli/services/paths.ts"],"sourcesContent":["/**\n * Centralized path constants for the Whale Code CLI.\n *\n * Single source of truth for all filesystem paths. Every module that needs\n * a path under the user's home directory imports from here instead of\n * constructing join(homedir(), \".whale\", ...) locally.\n *\n * Migration: The legacy directory was ~/.swagmanager. On first access,\n * migrateDataDir() copies the old directory to ~/.whale if needed.\n */\n\nimport { existsSync, mkdirSync, cpSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\n\n// ============================================================================\n// BASE DIRECTORIES\n// ============================================================================\n\n/** Primary data directory — all CLI state lives here */\nexport const APP_DATA_DIR = join(homedir(), \".whale\");\n\n/** Legacy directory — checked for migration only */\nconst LEGACY_DATA_DIR = join(homedir(), \".swagmanager\");\n\n// ============================================================================\n// SUB-PATHS (alphabetical)\n// ============================================================================\n\nexport const AGENTS_DIR = join(APP_DATA_DIR, \"agents\");\nexport const COMMANDS_DIR = join(APP_DATA_DIR, \"commands\");\nexport const DEBUG_DIR = join(APP_DATA_DIR, \"debug\");\nexport const FILE_HISTORY_DIR = join(APP_DATA_DIR, \"file-history\");\nexport const HOOKS_PATH = join(APP_DATA_DIR, \"hooks.json\");\nexport const KEYBINDINGS_PATH = join(APP_DATA_DIR, \"keybindings.json\");\nexport const MEMORY_DIR = join(APP_DATA_DIR, \"memory\");\nexport const MEMORY_FILE = join(MEMORY_DIR, \"MEMORY.md\");\nexport const SANDBOX_DIR = join(APP_DATA_DIR, \"sandbox\");\nexport const SESSIONS_DIR = join(APP_DATA_DIR, \"sessions\");\nexport const TEAMS_DIR = join(APP_DATA_DIR, \"teams\");\nexport const THEME_PATH = join(APP_DATA_DIR, \"theme.json\");\nexport const TODOS_DIR = join(APP_DATA_DIR, \"todos\");\n\n// ============================================================================\n// MIGRATION — ~/.swagmanager → ~/.whale (one-time, idempotent)\n// ============================================================================\n\nlet migrationDone = false;\n\n/**\n * Ensure data directory exists and migrate from legacy path if needed.\n * Safe to call multiple times — migration runs at most once per process.\n */\nexport function ensureDataDir(): void {\n if (migrationDone) return;\n migrationDone = true;\n\n // Already exists — nothing to do\n if (existsSync(APP_DATA_DIR)) return;\n\n // Migrate from legacy directory\n if (existsSync(LEGACY_DATA_DIR)) {\n try {\n cpSync(LEGACY_DATA_DIR, APP_DATA_DIR, { recursive: true });\n } catch {\n // If copy fails (permissions, etc.), create fresh\n mkdirSync(APP_DATA_DIR, { recursive: true });\n }\n return;\n }\n\n // Fresh install\n mkdirSync(APP_DATA_DIR, { recursive: true });\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,EAAEC,SAAS,EAAEC,MAAM,QAAQ,IAAI;AAClD,SAASC,IAAI,QAAQ,MAAM;AAC3B,SAASC,OAAO,QAAQ,IAAI;;AAE5B;AACA;AACA;;AAEA;AACA,OAAO,MAAMC,YAAY,GAAGF,IAAI,CAACC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC;;AAErD;AACA,MAAME,eAAe,GAAGH,IAAI,CAACC,OAAO,CAAC,CAAC,EAAE,cAAc,CAAC;;AAEvD;AACA;AACA;;AAEA,OAAO,MAAMG,UAAU,GAAQJ,IAAI,CAACE,YAAY,EAAE,QAAQ,CAAC;AAC3D,OAAO,MAAMG,YAAY,GAAML,IAAI,CAACE,YAAY,EAAE,UAAU,CAAC;AAC7D,OAAO,MAAMI,SAAS,GAASN,IAAI,CAACE,YAAY,EAAE,OAAO,CAAC;AAC1D,OAAO,MAAMK,gBAAgB,GAAGP,IAAI,CAACE,YAAY,EAAE,cAAc,CAAC;AAClE,OAAO,MAAMM,UAAU,GAAQR,IAAI,CAACE,YAAY,EAAE,YAAY,CAAC;AAC/D,OAAO,MAAMO,gBAAgB,GAAGT,IAAI,CAACE,YAAY,EAAE,kBAAkB,CAAC;AACtE,OAAO,MAAMQ,UAAU,GAAQV,IAAI,CAACE,YAAY,EAAE,QAAQ,CAAC;AAC3D,OAAO,MAAMS,WAAW,GAAOX,IAAI,CAACU,UAAU,EAAE,WAAW,CAAC;AAC5D,OAAO,MAAME,WAAW,GAAOZ,IAAI,CAACE,YAAY,EAAE,SAAS,CAAC;AAC5D,OAAO,MAAMW,YAAY,GAAMb,IAAI,CAACE,YAAY,EAAE,UAAU,CAAC;AAC7D,OAAO,MAAMY,SAAS,GAASd,IAAI,CAACE,YAAY,EAAE,OAAO,CAAC;AAC1D,OAAO,MAAMa,UAAU,GAAQf,IAAI,CAACE,YAAY,EAAE,YAAY,CAAC;AAC/D,OAAO,MAAMc,SAAS,GAAShB,IAAI,CAACE,YAAY,EAAE,OAAO,CAAC;;AAE1D;AACA;AACA;;AAEA,IAAIe,aAAa,GAAG,KAAK;;AAEzB;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAAA,EAAS;EACpC,IAAID,aAAa,EAAE;EACnBA,aAAa,GAAG,IAAI;;EAEpB;EACA,IAAIpB,UAAU,CAACK,YAAY,CAAC,EAAE;;EAE9B;EACA,IAAIL,UAAU,CAACM,eAAe,CAAC,EAAE;IAC/B,IAAI;MACFJ,MAAM,CAACI,eAAe,EAAED,YAAY,EAAE;QAAEiB,SAAS,EAAE;MAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,MAAM;MACN;MACArB,SAAS,CAACI,YAAY,EAAE;QAAEiB,SAAS,EAAE;MAAK,CAAC,CAAC;IAC9C;IACA;EACF;;EAEA;EACArB,SAAS,CAACI,YAAY,EAAE;IAAEiB,SAAS,EAAE;EAAK,CAAC,CAAC;AAC9C","ignoreList":[]}
|
|
@@ -4,40 +4,47 @@
|
|
|
4
4
|
* Extracted from agent-loop.ts for single-responsibility.
|
|
5
5
|
* All consumers should import from agent-loop.ts (re-export facade).
|
|
6
6
|
*/
|
|
7
|
+
|
|
7
8
|
import { loadConfig, updateConfig } from "./config-store.js";
|
|
8
9
|
/** CLI-only: current permission mode */
|
|
9
10
|
let activePermissionMode = "default";
|
|
11
|
+
|
|
10
12
|
// Load persisted permission mode on import
|
|
11
13
|
try {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
14
|
+
const cfg = loadConfig();
|
|
15
|
+
if (cfg.permission_mode && ["default", "plan", "yolo"].includes(cfg.permission_mode)) {
|
|
16
|
+
activePermissionMode = cfg.permission_mode;
|
|
17
|
+
}
|
|
18
|
+
} catch {/* use default */}
|
|
19
|
+
|
|
18
20
|
// Tools allowed in plan mode
|
|
19
|
-
const PLAN_MODE_TOOLS = new Set([
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"bash_output", "list_shells", "tasks", "config", "ask_user",
|
|
23
|
-
// Interactive tools (read-only by nature)
|
|
24
|
-
"ask_user_question", "enter_plan_mode", "exit_plan_mode",
|
|
25
|
-
]);
|
|
21
|
+
const PLAN_MODE_TOOLS = new Set(["read_file", "list_directory", "search_files", "search_content", "glob", "grep", "web_fetch", "web_search", "task", "task_output", "bash_output", "list_shells", "tasks", "config", "ask_user",
|
|
22
|
+
// Interactive tools (read-only by nature)
|
|
23
|
+
"ask_user_question", "enter_plan_mode", "exit_plan_mode"]);
|
|
26
24
|
export function setPermissionMode(mode) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
activePermissionMode = mode;
|
|
26
|
+
try {
|
|
27
|
+
updateConfig({
|
|
28
|
+
permission_mode: mode
|
|
29
|
+
});
|
|
30
|
+
} catch {/* best effort */}
|
|
31
|
+
return {
|
|
32
|
+
success: true,
|
|
33
|
+
message: `Permission mode: ${mode}`
|
|
34
|
+
};
|
|
33
35
|
}
|
|
34
36
|
export function getPermissionMode() {
|
|
35
|
-
|
|
37
|
+
return activePermissionMode;
|
|
36
38
|
}
|
|
37
39
|
export function isToolAllowedByPermission(toolName) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
switch (activePermissionMode) {
|
|
41
|
+
case "yolo":
|
|
42
|
+
return true;
|
|
43
|
+
case "plan":
|
|
44
|
+
return PLAN_MODE_TOOLS.has(toolName);
|
|
45
|
+
case "default":
|
|
46
|
+
return true;
|
|
47
|
+
// Default allows all — UI can prompt for confirmation
|
|
48
|
+
}
|
|
43
49
|
}
|
|
50
|
+
//# sourceMappingURL=permission-modes.js.map
|