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
|
@@ -4,202 +4,263 @@
|
|
|
4
4
|
* Handles: loop detection, parallel execution, result truncation, bail-out.
|
|
5
5
|
* Used by agent-loop, subagent, teammate, and server-agent-loop.
|
|
6
6
|
*/
|
|
7
|
+
|
|
8
|
+
import { AGENT_DEFAULTS } from "./agent-core.js";
|
|
7
9
|
// ============================================================================
|
|
8
10
|
// TYPES
|
|
9
11
|
// ============================================================================
|
|
12
|
+
|
|
10
13
|
/** Hard cap on tool result size — matches Claude Code's 30K char limit.
|
|
11
14
|
* Prevents single tool outputs from blowing up context. Anthropic's
|
|
12
15
|
* context_management (clear_tool_uses + compact) handles multi-turn growth;
|
|
13
16
|
* this cap prevents any ONE result from being catastrophic. */
|
|
14
17
|
const SAFETY_MAX_CHARS = 30_000;
|
|
18
|
+
|
|
15
19
|
/** Tools that spawn workers/subprocesses and need much longer than 2 min */
|
|
16
20
|
const LONG_RUNNING_TOOL_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes
|
|
17
|
-
const LONG_RUNNING_TOOLS = new Set(["team_create", "task", "kali", "delegate_task", "exit_plan_mode", "ask_user_question"]);
|
|
21
|
+
const LONG_RUNNING_TOOLS = new Set(["team_create", "task", "task_output", "kali", "delegate_task", "exit_plan_mode", "ask_user_question"]);
|
|
18
22
|
// ============================================================================
|
|
19
23
|
// DISPATCH
|
|
20
24
|
// ============================================================================
|
|
25
|
+
|
|
21
26
|
/**
|
|
22
27
|
* Execute tool calls with loop detection, parallel batching, and truncation.
|
|
23
28
|
* Returns tool result messages in original order.
|
|
24
29
|
*/
|
|
25
30
|
export async function dispatchTools(toolCalls, executor, opts) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
onResult?.(tu.name, false, readCheck.reason, 0);
|
|
54
|
-
resultMap.set(tu.id, {
|
|
55
|
-
type: "tool_result",
|
|
56
|
-
tool_use_id: tu.id,
|
|
57
|
-
content: JSON.stringify({ error: readCheck.reason }),
|
|
58
|
-
});
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
onStart?.(tu.name, tu.input);
|
|
63
|
-
const toolStart = Date.now();
|
|
64
|
-
let result;
|
|
65
|
-
try {
|
|
66
|
-
const toolPromise = executor(tu.name, tu.input);
|
|
67
|
-
const effectiveTimeout = LONG_RUNNING_TOOLS.has(tu.name)
|
|
68
|
-
? Math.max(toolTimeoutMs, LONG_RUNNING_TOOL_TIMEOUT_MS)
|
|
69
|
-
: toolTimeoutMs;
|
|
70
|
-
const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Tool "${tu.name}" timed out after ${effectiveTimeout}ms`)), effectiveTimeout));
|
|
71
|
-
result = await Promise.race([toolPromise, timeoutPromise]);
|
|
72
|
-
}
|
|
73
|
-
catch (err) {
|
|
74
|
-
result = {
|
|
75
|
-
success: false,
|
|
76
|
-
output: `Tool execution error: ${err.message || String(err)}`,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
const durationMs = Date.now() - toolStart;
|
|
80
|
-
loopDetector.recordResult(tu.name, result.success, tu.input);
|
|
81
|
-
onResult?.(tu.name, result.success, result.output, durationMs);
|
|
82
|
-
// Check for media markers — convert to appropriate content blocks
|
|
83
|
-
const mediaMatch = result.success && typeof result.output === "string"
|
|
84
|
-
? result.output.match(/^__(IMAGE|AUDIO)__(.+?)__(.+)$/)
|
|
85
|
-
: null;
|
|
86
|
-
let resultBlock;
|
|
87
|
-
if (mediaMatch && mediaMatch[1] === "IMAGE") {
|
|
88
|
-
// Image → multimodal image content block
|
|
89
|
-
resultBlock = {
|
|
90
|
-
type: "tool_result",
|
|
91
|
-
tool_use_id: tu.id,
|
|
92
|
-
content: [
|
|
93
|
-
{
|
|
94
|
-
type: "image",
|
|
95
|
-
source: {
|
|
96
|
-
type: "base64",
|
|
97
|
-
media_type: mediaMatch[2],
|
|
98
|
-
data: mediaMatch[3],
|
|
99
|
-
},
|
|
100
|
-
},
|
|
101
|
-
],
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
else if (mediaMatch && mediaMatch[1] === "AUDIO") {
|
|
105
|
-
// Audio → transcribe via Whisper, return transcript as text
|
|
106
|
-
let transcript;
|
|
107
|
-
if (transcribeAudio) {
|
|
108
|
-
try {
|
|
109
|
-
transcript = await transcribeAudio(mediaMatch[3], mediaMatch[2]);
|
|
110
|
-
}
|
|
111
|
-
catch (err) {
|
|
112
|
-
transcript = `Audio transcription failed: ${err.message}. The audio file was read successfully but could not be transcribed.`;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
transcript = "Audio file detected but transcription is not available. Configure an OpenAI API key for audio transcription via Whisper.";
|
|
117
|
-
}
|
|
118
|
-
resultBlock = {
|
|
119
|
-
type: "tool_result",
|
|
120
|
-
tool_use_id: tu.id,
|
|
121
|
-
content: transcript,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
const rawContent = result.success
|
|
126
|
-
? result.output
|
|
127
|
-
: JSON.stringify({ error: result.output });
|
|
128
|
-
let contentStr = typeof rawContent === "string"
|
|
129
|
-
? rawContent
|
|
130
|
-
: JSON.stringify(rawContent);
|
|
131
|
-
// Safety-only cap — prevents OOM from pathological tool outputs.
|
|
132
|
-
// Normal results flow through unmodified; Anthropic's context_management
|
|
133
|
-
// API clears old tool uses when context grows (clear_tool_uses_20250919).
|
|
134
|
-
if (contentStr.length > SAFETY_MAX_CHARS) {
|
|
135
|
-
contentStr =
|
|
136
|
-
contentStr.slice(0, SAFETY_MAX_CHARS) +
|
|
137
|
-
`\n\n... (safety truncated — ${contentStr.length.toLocaleString()} chars total)`;
|
|
138
|
-
}
|
|
139
|
-
resultBlock = {
|
|
140
|
-
type: "tool_result",
|
|
141
|
-
tool_use_id: tu.id,
|
|
142
|
-
content: contentStr,
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
resultMap.set(tu.id, resultBlock);
|
|
31
|
+
const {
|
|
32
|
+
loopDetector,
|
|
33
|
+
maxConcurrent = 7,
|
|
34
|
+
toolTimeoutMs = 120_000,
|
|
35
|
+
batchErrorLimit = AGENT_DEFAULTS.loopBatchErrorLimit,
|
|
36
|
+
onStart,
|
|
37
|
+
onResult,
|
|
38
|
+
signal,
|
|
39
|
+
transcribeAudio
|
|
40
|
+
} = opts;
|
|
41
|
+
const resultMap = new Map();
|
|
42
|
+
|
|
43
|
+
/** Shared state for each parallel batch — tracks how many tools failed so we
|
|
44
|
+
* can abort remaining calls and avoid inflating LoopDetector error counts.
|
|
45
|
+
* JavaScript is single-threaded, so between `await` yields this is atomic. */
|
|
46
|
+
|
|
47
|
+
async function executeSingle(tu, batch) {
|
|
48
|
+
// Early exit if batch already aborted or signal fired
|
|
49
|
+
if (batch.aborted || signal?.aborted) {
|
|
50
|
+
resultMap.set(tu.id, {
|
|
51
|
+
type: "tool_result",
|
|
52
|
+
tool_use_id: tu.id,
|
|
53
|
+
content: JSON.stringify({
|
|
54
|
+
error: batch.aborted ? "Batch aborted — too many sibling tool calls failed in this parallel batch. Re-assess your approach." : "Aborted"
|
|
55
|
+
})
|
|
56
|
+
});
|
|
57
|
+
return;
|
|
146
58
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
59
|
+
|
|
60
|
+
// Loop detection check
|
|
61
|
+
const loopCheck = loopDetector.recordCall(tu.name, tu.input);
|
|
62
|
+
if (loopCheck.blocked) {
|
|
63
|
+
onResult?.(tu.name, false, loopCheck.reason, 0);
|
|
64
|
+
resultMap.set(tu.id, {
|
|
65
|
+
type: "tool_result",
|
|
66
|
+
tool_use_id: tu.id,
|
|
67
|
+
content: JSON.stringify({
|
|
68
|
+
error: loopCheck.reason
|
|
69
|
+
})
|
|
70
|
+
});
|
|
71
|
+
return;
|
|
153
72
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
73
|
+
|
|
74
|
+
// File read frequency tracking — tool-dispatch knows about read_file,
|
|
75
|
+
// LoopDetector.trackRead() stays tool-name-agnostic.
|
|
76
|
+
if (tu.name === "read_file" && typeof tu.input.path === "string") {
|
|
77
|
+
const readCheck = loopDetector.trackRead(tu.input.path);
|
|
78
|
+
if (readCheck.blocked) {
|
|
79
|
+
onResult?.(tu.name, false, readCheck.reason, 0);
|
|
80
|
+
resultMap.set(tu.id, {
|
|
81
|
+
type: "tool_result",
|
|
82
|
+
tool_use_id: tu.id,
|
|
83
|
+
content: JSON.stringify({
|
|
84
|
+
error: readCheck.reason
|
|
85
|
+
})
|
|
86
|
+
});
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
160
89
|
}
|
|
161
|
-
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
90
|
+
onStart?.(tu.name, tu.input);
|
|
91
|
+
const toolStart = Date.now();
|
|
92
|
+
let result;
|
|
93
|
+
let isTransient = false;
|
|
94
|
+
try {
|
|
95
|
+
const toolPromise = executor(tu.name, tu.input);
|
|
96
|
+
const effectiveTimeout = LONG_RUNNING_TOOLS.has(tu.name) ? Math.max(toolTimeoutMs, LONG_RUNNING_TOOL_TIMEOUT_MS) : toolTimeoutMs;
|
|
97
|
+
const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Tool "${tu.name}" timed out after ${effectiveTimeout}ms`)), effectiveTimeout));
|
|
98
|
+
result = await Promise.race([toolPromise, timeoutPromise]);
|
|
99
|
+
} catch (err) {
|
|
100
|
+
const msg = err.message || String(err);
|
|
101
|
+
isTransient = /timed?\s*out/i.test(msg) || /rate.?limit/i.test(msg) || /429/i.test(msg);
|
|
102
|
+
result = {
|
|
103
|
+
success: false,
|
|
104
|
+
output: `Tool execution error: ${msg}`
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
const durationMs = Date.now() - toolStart;
|
|
108
|
+
|
|
109
|
+
// If the batch was aborted while this tool was executing, skip recording
|
|
110
|
+
// the failure in LoopDetector to avoid inflating error counts from a single
|
|
111
|
+
// bad parallel batch. This is the key fix for the TOCTOU race condition:
|
|
112
|
+
// all N calls pass recordCall() before any recordResult() runs, so without
|
|
113
|
+
// this guard, N parallel failures push consecutiveErrors to N.
|
|
114
|
+
if (!result.success && batch.aborted) {
|
|
115
|
+
onResult?.(tu.name, false, "Batch aborted — error not recorded in loop detector", durationMs);
|
|
116
|
+
resultMap.set(tu.id, {
|
|
117
|
+
type: "tool_result",
|
|
118
|
+
tool_use_id: tu.id,
|
|
119
|
+
content: JSON.stringify({
|
|
120
|
+
error: "Batch aborted — too many sibling tool calls failed. Re-assess your approach."
|
|
121
|
+
})
|
|
122
|
+
});
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
loopDetector.recordResult(tu.name, result.success, tu.input, isTransient);
|
|
126
|
+
|
|
127
|
+
// Track batch-level failures — after batchErrorLimit, abort remaining
|
|
128
|
+
if (!result.success) {
|
|
129
|
+
batch.errors++;
|
|
130
|
+
if (batch.errors >= batchErrorLimit) {
|
|
131
|
+
batch.aborted = true;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
onResult?.(tu.name, result.success, result.output, durationMs);
|
|
135
|
+
|
|
136
|
+
// Check for media markers — convert to appropriate content blocks
|
|
137
|
+
const mediaMatch = result.success && typeof result.output === "string" ? result.output.match(/^__(IMAGE|AUDIO)__(.+?)__(.+)$/) : null;
|
|
138
|
+
let resultBlock;
|
|
139
|
+
if (mediaMatch && mediaMatch[1] === "IMAGE") {
|
|
140
|
+
// Image → multimodal image content block
|
|
141
|
+
resultBlock = {
|
|
142
|
+
type: "tool_result",
|
|
143
|
+
tool_use_id: tu.id,
|
|
144
|
+
content: [{
|
|
145
|
+
type: "image",
|
|
146
|
+
source: {
|
|
147
|
+
type: "base64",
|
|
148
|
+
media_type: mediaMatch[2],
|
|
149
|
+
data: mediaMatch[3]
|
|
150
|
+
}
|
|
151
|
+
}]
|
|
152
|
+
};
|
|
153
|
+
} else if (mediaMatch && mediaMatch[1] === "AUDIO") {
|
|
154
|
+
// Audio → transcribe via Whisper, return transcript as text
|
|
155
|
+
let transcript;
|
|
156
|
+
if (transcribeAudio) {
|
|
157
|
+
try {
|
|
158
|
+
transcript = await transcribeAudio(mediaMatch[3], mediaMatch[2]);
|
|
159
|
+
} catch (err) {
|
|
160
|
+
transcript = `Audio transcription failed: ${err.message}. The audio file was read successfully but could not be transcribed.`;
|
|
167
161
|
}
|
|
162
|
+
} else {
|
|
163
|
+
transcript = "Audio file detected but transcription is not available. Configure an OpenAI API key for audio transcription via Whisper.";
|
|
164
|
+
}
|
|
165
|
+
resultBlock = {
|
|
166
|
+
type: "tool_result",
|
|
167
|
+
tool_use_id: tu.id,
|
|
168
|
+
content: transcript
|
|
169
|
+
};
|
|
170
|
+
} else {
|
|
171
|
+
const rawContent = result.success ? result.output : JSON.stringify({
|
|
172
|
+
error: result.output
|
|
173
|
+
});
|
|
174
|
+
let contentStr = typeof rawContent === "string" ? rawContent : JSON.stringify(rawContent);
|
|
175
|
+
// Safety-only cap — prevents OOM from pathological tool outputs.
|
|
176
|
+
// Normal results flow through unmodified; Anthropic's context_management
|
|
177
|
+
// API clears old tool uses when context grows (clear_tool_uses_20250919).
|
|
178
|
+
if (contentStr.length > SAFETY_MAX_CHARS) {
|
|
179
|
+
contentStr = contentStr.slice(0, SAFETY_MAX_CHARS) + `\n\n... (safety truncated — ${contentStr.length.toLocaleString()} chars total)`;
|
|
180
|
+
}
|
|
181
|
+
resultBlock = {
|
|
182
|
+
type: "tool_result",
|
|
183
|
+
tool_use_id: tu.id,
|
|
184
|
+
content: contentStr
|
|
185
|
+
};
|
|
168
186
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
187
|
+
resultMap.set(tu.id, resultBlock);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// Execute in parallel batches — each batch gets its own error state
|
|
191
|
+
// so failures in one batch can't cascade into the next
|
|
192
|
+
for (let i = 0; i < toolCalls.length; i += maxConcurrent) {
|
|
193
|
+
if (signal?.aborted) break;
|
|
194
|
+
const calls = toolCalls.slice(i, i + maxConcurrent);
|
|
195
|
+
const batchState = {
|
|
196
|
+
errors: 0,
|
|
197
|
+
aborted: false
|
|
173
198
|
};
|
|
199
|
+
await Promise.all(calls.map(tu => executeSingle(tu, batchState)));
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// Collect results in original order
|
|
203
|
+
const results = [];
|
|
204
|
+
for (const tu of toolCalls) {
|
|
205
|
+
const r = resultMap.get(tu.id);
|
|
206
|
+
if (r) results.push(r);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// Bail-out detection
|
|
210
|
+
const bailCheck = loopDetector.endTurn();
|
|
211
|
+
if (bailCheck.shouldBail && results.length > 0) {
|
|
212
|
+
const lastResult = results[results.length - 1];
|
|
213
|
+
if (typeof lastResult.content === "string") {
|
|
214
|
+
lastResult.content = `[SYSTEM WARNING] ${bailCheck.message}\n\n${lastResult.content}`;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
results,
|
|
219
|
+
bailOut: bailCheck.shouldBail,
|
|
220
|
+
bailMessage: bailCheck.message
|
|
221
|
+
};
|
|
174
222
|
}
|
|
223
|
+
|
|
175
224
|
// ============================================================================
|
|
176
225
|
// ASSISTANT CONTENT BUILDER — builds message content for next turn
|
|
177
226
|
// ============================================================================
|
|
227
|
+
|
|
178
228
|
/**
|
|
179
229
|
* Build assistant content array from stream result for the next conversation turn.
|
|
180
230
|
*/
|
|
181
231
|
export function buildAssistantContent(opts) {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
232
|
+
const content = [];
|
|
233
|
+
|
|
234
|
+
// Compaction block must come first
|
|
235
|
+
if (opts.compactionContent !== null && opts.compactionContent !== undefined) {
|
|
236
|
+
content.push({
|
|
237
|
+
type: "compaction",
|
|
238
|
+
content: opts.compactionContent
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// Thinking blocks before text/tool_use
|
|
243
|
+
if (opts.thinkingBlocks) {
|
|
244
|
+
for (const tb of opts.thinkingBlocks) {
|
|
245
|
+
content.push(tb);
|
|
195
246
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
247
|
+
}
|
|
248
|
+
if (opts.text) {
|
|
249
|
+
content.push({
|
|
250
|
+
type: "text",
|
|
251
|
+
text: opts.text
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
content.push(...opts.toolUseBlocks.map(t => ({
|
|
255
|
+
type: "tool_use",
|
|
256
|
+
id: t.id,
|
|
257
|
+
name: t.name,
|
|
258
|
+
input: t.input,
|
|
259
|
+
// Preserve Gemini thought signatures through function call round-trips
|
|
260
|
+
...(t.thoughtSignature ? {
|
|
261
|
+
thought_signature: t.thoughtSignature
|
|
262
|
+
} : {})
|
|
263
|
+
})));
|
|
264
|
+
return content;
|
|
205
265
|
}
|
|
266
|
+
//# sourceMappingURL=tool-dispatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-dispatch.js","names":["AGENT_DEFAULTS","SAFETY_MAX_CHARS","LONG_RUNNING_TOOL_TIMEOUT_MS","LONG_RUNNING_TOOLS","Set","dispatchTools","toolCalls","executor","opts","loopDetector","maxConcurrent","toolTimeoutMs","batchErrorLimit","loopBatchErrorLimit","onStart","onResult","signal","transcribeAudio","resultMap","Map","executeSingle","tu","batch","aborted","set","id","type","tool_use_id","content","JSON","stringify","error","loopCheck","recordCall","name","input","blocked","reason","path","readCheck","trackRead","toolStart","Date","now","result","isTransient","toolPromise","effectiveTimeout","has","Math","max","timeoutPromise","Promise","_","reject","setTimeout","Error","race","err","msg","message","String","test","success","output","durationMs","recordResult","errors","mediaMatch","match","resultBlock","source","media_type","data","transcript","rawContent","contentStr","length","slice","toLocaleString","i","calls","batchState","all","map","results","r","get","push","bailCheck","endTurn","shouldBail","lastResult","bailOut","bailMessage","buildAssistantContent","compactionContent","undefined","thinkingBlocks","tb","text","toolUseBlocks","t","thoughtSignature","thought_signature"],"sources":["../../src/shared/tool-dispatch.ts"],"sourcesContent":["/**\n * Unified Tool Dispatch — ONE implementation replacing 4 duplicates.\n *\n * Handles: loop detection, parallel execution, result truncation, bail-out.\n * Used by agent-loop, subagent, teammate, and server-agent-loop.\n */\n\nimport { LoopDetector, AGENT_DEFAULTS } from \"./agent-core.js\";\nimport type { ToolUseBlock, ToolResultMessage } from \"./types.js\";\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\n/** Hard cap on tool result size — matches Claude Code's 30K char limit.\n * Prevents single tool outputs from blowing up context. Anthropic's\n * context_management (clear_tool_uses + compact) handles multi-turn growth;\n * this cap prevents any ONE result from being catastrophic. */\nconst SAFETY_MAX_CHARS = 30_000;\n\n/** Tools that spawn workers/subprocesses and need much longer than 2 min */\nconst LONG_RUNNING_TOOL_TIMEOUT_MS = 10 * 60 * 1000; // 10 minutes\nconst LONG_RUNNING_TOOLS = new Set([\"team_create\", \"task\", \"task_output\", \"kali\", \"delegate_task\", \"exit_plan_mode\", \"ask_user_question\"]);\n\nexport interface ToolDispatchOptions {\n /** Loop detector instance (shared across turns) */\n loopDetector: LoopDetector;\n /** Max concurrent tool executions (7 for main, 1 for sequential) */\n maxConcurrent?: number;\n /** Per-tool execution timeout in ms (default 120000 = 2 minutes) */\n toolTimeoutMs?: number;\n /** Max errors from a single parallel batch before aborting remaining calls.\n * Prevents Promise.all() from cascading N failures into the LoopDetector,\n * which can permanently brick tools. Default: AGENT_DEFAULTS.loopBatchErrorLimit */\n batchErrorLimit?: number;\n /** Called when a tool starts executing */\n onStart?: (name: string, input: Record<string, unknown>) => void;\n /** Called when a tool finishes */\n onResult?: (name: string, success: boolean, result: string, durationMs: number) => void;\n /** Abort signal */\n signal?: AbortSignal;\n /** Transcribe audio data — called when __AUDIO__ marker detected in tool result */\n transcribeAudio?: (base64: string, mediaType: string) => Promise<string>;\n}\n\nexport type ToolExecutor = (\n name: string,\n input: Record<string, unknown>,\n) => Promise<{ success: boolean; output: string }>;\n\n// ============================================================================\n// DISPATCH\n// ============================================================================\n\n/**\n * Execute tool calls with loop detection, parallel batching, and truncation.\n * Returns tool result messages in original order.\n */\nexport async function dispatchTools(\n toolCalls: ToolUseBlock[],\n executor: ToolExecutor,\n opts: ToolDispatchOptions,\n): Promise<{ results: ToolResultMessage[]; bailOut: boolean; bailMessage?: string }> {\n const {\n loopDetector,\n maxConcurrent = 7,\n toolTimeoutMs = 120_000,\n batchErrorLimit = AGENT_DEFAULTS.loopBatchErrorLimit,\n onStart,\n onResult,\n signal,\n transcribeAudio,\n } = opts;\n\n const resultMap = new Map<string, ToolResultMessage>();\n\n /** Shared state for each parallel batch — tracks how many tools failed so we\n * can abort remaining calls and avoid inflating LoopDetector error counts.\n * JavaScript is single-threaded, so between `await` yields this is atomic. */\n interface BatchState {\n errors: number;\n aborted: boolean;\n }\n\n async function executeSingle(tu: ToolUseBlock, batch: BatchState): Promise<void> {\n // Early exit if batch already aborted or signal fired\n if (batch.aborted || signal?.aborted) {\n resultMap.set(tu.id, {\n type: \"tool_result\",\n tool_use_id: tu.id,\n content: JSON.stringify({ error: batch.aborted\n ? \"Batch aborted — too many sibling tool calls failed in this parallel batch. Re-assess your approach.\"\n : \"Aborted\" }),\n });\n return;\n }\n\n // Loop detection check\n const loopCheck = loopDetector.recordCall(tu.name, tu.input);\n if (loopCheck.blocked) {\n onResult?.(tu.name, false, loopCheck.reason!, 0);\n resultMap.set(tu.id, {\n type: \"tool_result\",\n tool_use_id: tu.id,\n content: JSON.stringify({ error: loopCheck.reason }),\n });\n return;\n }\n\n // File read frequency tracking — tool-dispatch knows about read_file,\n // LoopDetector.trackRead() stays tool-name-agnostic.\n if (tu.name === \"read_file\" && typeof tu.input.path === \"string\") {\n const readCheck = loopDetector.trackRead(tu.input.path as string);\n if (readCheck.blocked) {\n onResult?.(tu.name, false, readCheck.reason!, 0);\n resultMap.set(tu.id, {\n type: \"tool_result\",\n tool_use_id: tu.id,\n content: JSON.stringify({ error: readCheck.reason }),\n });\n return;\n }\n }\n\n onStart?.(tu.name, tu.input);\n const toolStart = Date.now();\n let result: { success: boolean; output: string };\n\n let isTransient = false;\n try {\n const toolPromise = executor(tu.name, tu.input);\n const effectiveTimeout = LONG_RUNNING_TOOLS.has(tu.name)\n ? Math.max(toolTimeoutMs, LONG_RUNNING_TOOL_TIMEOUT_MS)\n : toolTimeoutMs;\n const timeoutPromise = new Promise<never>((_, reject) =>\n setTimeout(() => reject(new Error(`Tool \"${tu.name}\" timed out after ${effectiveTimeout}ms`)), effectiveTimeout)\n );\n result = await Promise.race([toolPromise, timeoutPromise]);\n } catch (err: unknown) {\n const msg = (err as Error).message || String(err);\n isTransient = /timed?\\s*out/i.test(msg) || /rate.?limit/i.test(msg) || /429/i.test(msg);\n result = {\n success: false,\n output: `Tool execution error: ${msg}`,\n };\n }\n\n const durationMs = Date.now() - toolStart;\n\n // If the batch was aborted while this tool was executing, skip recording\n // the failure in LoopDetector to avoid inflating error counts from a single\n // bad parallel batch. This is the key fix for the TOCTOU race condition:\n // all N calls pass recordCall() before any recordResult() runs, so without\n // this guard, N parallel failures push consecutiveErrors to N.\n if (!result.success && batch.aborted) {\n onResult?.(tu.name, false, \"Batch aborted — error not recorded in loop detector\", durationMs);\n resultMap.set(tu.id, {\n type: \"tool_result\",\n tool_use_id: tu.id,\n content: JSON.stringify({ error: \"Batch aborted — too many sibling tool calls failed. Re-assess your approach.\" }),\n });\n return;\n }\n\n loopDetector.recordResult(tu.name, result.success, tu.input, isTransient);\n\n // Track batch-level failures — after batchErrorLimit, abort remaining\n if (!result.success) {\n batch.errors++;\n if (batch.errors >= batchErrorLimit) {\n batch.aborted = true;\n }\n }\n\n onResult?.(tu.name, result.success, result.output, durationMs);\n\n // Check for media markers — convert to appropriate content blocks\n const mediaMatch = result.success && typeof result.output === \"string\"\n ? result.output.match(/^__(IMAGE|AUDIO)__(.+?)__(.+)$/)\n : null;\n\n let resultBlock: ToolResultMessage;\n if (mediaMatch && mediaMatch[1] === \"IMAGE\") {\n // Image → multimodal image content block\n resultBlock = {\n type: \"tool_result\",\n tool_use_id: tu.id,\n content: [\n {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: mediaMatch[2],\n data: mediaMatch[3],\n },\n },\n ],\n };\n } else if (mediaMatch && mediaMatch[1] === \"AUDIO\") {\n // Audio → transcribe via Whisper, return transcript as text\n let transcript: string;\n if (transcribeAudio) {\n try {\n transcript = await transcribeAudio(mediaMatch[3], mediaMatch[2]);\n } catch (err) {\n transcript = `Audio transcription failed: ${(err as Error).message}. The audio file was read successfully but could not be transcribed.`;\n }\n } else {\n transcript = \"Audio file detected but transcription is not available. Configure an OpenAI API key for audio transcription via Whisper.\";\n }\n resultBlock = {\n type: \"tool_result\",\n tool_use_id: tu.id,\n content: transcript,\n };\n } else {\n const rawContent = result.success\n ? result.output\n : JSON.stringify({ error: result.output });\n let contentStr = typeof rawContent === \"string\"\n ? rawContent\n : JSON.stringify(rawContent);\n // Safety-only cap — prevents OOM from pathological tool outputs.\n // Normal results flow through unmodified; Anthropic's context_management\n // API clears old tool uses when context grows (clear_tool_uses_20250919).\n if (contentStr.length > SAFETY_MAX_CHARS) {\n contentStr =\n contentStr.slice(0, SAFETY_MAX_CHARS) +\n `\\n\\n... (safety truncated — ${contentStr.length.toLocaleString()} chars total)`;\n }\n resultBlock = {\n type: \"tool_result\",\n tool_use_id: tu.id,\n content: contentStr,\n };\n }\n\n resultMap.set(tu.id, resultBlock);\n }\n\n // Execute in parallel batches — each batch gets its own error state\n // so failures in one batch can't cascade into the next\n for (let i = 0; i < toolCalls.length; i += maxConcurrent) {\n if (signal?.aborted) break;\n const calls = toolCalls.slice(i, i + maxConcurrent);\n const batchState: BatchState = { errors: 0, aborted: false };\n await Promise.all(calls.map((tu) => executeSingle(tu, batchState)));\n }\n\n // Collect results in original order\n const results: ToolResultMessage[] = [];\n for (const tu of toolCalls) {\n const r = resultMap.get(tu.id);\n if (r) results.push(r);\n }\n\n // Bail-out detection\n const bailCheck = loopDetector.endTurn();\n if (bailCheck.shouldBail && results.length > 0) {\n const lastResult = results[results.length - 1];\n if (typeof lastResult.content === \"string\") {\n lastResult.content = `[SYSTEM WARNING] ${bailCheck.message}\\n\\n${lastResult.content}`;\n }\n }\n\n return {\n results,\n bailOut: bailCheck.shouldBail,\n bailMessage: bailCheck.message,\n };\n}\n\n// ============================================================================\n// ASSISTANT CONTENT BUILDER — builds message content for next turn\n// ============================================================================\n\n/**\n * Build assistant content array from stream result for the next conversation turn.\n */\nexport function buildAssistantContent(opts: {\n text: string;\n toolUseBlocks: ToolUseBlock[];\n thinkingBlocks?: Array<{ type: \"thinking\"; thinking: string; signature: string }>;\n compactionContent?: string | null;\n}): Array<Record<string, unknown>> {\n const content: Array<Record<string, unknown>> = [];\n\n // Compaction block must come first\n if (opts.compactionContent !== null && opts.compactionContent !== undefined) {\n content.push({ type: \"compaction\", content: opts.compactionContent });\n }\n\n // Thinking blocks before text/tool_use\n if (opts.thinkingBlocks) {\n for (const tb of opts.thinkingBlocks) {\n content.push(tb);\n }\n }\n\n if (opts.text) {\n content.push({ type: \"text\" as const, text: opts.text });\n }\n\n content.push(\n ...opts.toolUseBlocks.map((t) => ({\n type: \"tool_use\" as const,\n id: t.id,\n name: t.name,\n input: t.input,\n // Preserve Gemini thought signatures through function call round-trips\n ...(t.thoughtSignature ? { thought_signature: t.thoughtSignature } : {}),\n })),\n );\n\n return content;\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/shared/types.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../src/shared/types.ts"],"sourcesContent":["/**\n * Shared Types — unified interfaces used by both CLI and server.\n *\n * Replaces 3 separate ToolResult definitions and provides typed SSE events.\n * Pure TypeScript, no runtime dependencies.\n */\n\n// ============================================================================\n// TOOL RESULT — canonical format (server uses this)\n// ============================================================================\n\n/** Canonical tool result format — CLI tools return { success, output } */\nexport interface ToolResult {\n success: boolean;\n output: string;\n}\n\n// ============================================================================\n// SSE STREAM TYPES — typed events from Anthropic API streaming\n// ============================================================================\n\nexport interface ToolUseBlock {\n id: string;\n name: string;\n input: Record<string, unknown>;\n /** Gemini thought signature — must be preserved through function call round-trips */\n thoughtSignature?: string;\n}\n\nexport interface ThinkingBlock {\n type: \"thinking\";\n thinking: string;\n signature: string;\n}\n\nexport interface CitationBlock {\n type: \"cite\";\n cited_text: string;\n document_index: number;\n document_title?: string;\n start_char_index: number;\n end_char_index: number;\n}\n\n/** Result of processing a complete SSE stream */\nexport interface StreamResult {\n text: string;\n toolUseBlocks: ToolUseBlock[];\n thinkingBlocks: ThinkingBlock[];\n thinkingTokens: number;\n citations: CitationBlock[];\n usage: {\n inputTokens: number;\n outputTokens: number;\n cacheCreationTokens: number;\n cacheReadTokens: number;\n };\n compactionContent: string | null;\n contextManagementApplied: boolean;\n stopReason: string;\n}\n\n/** Callbacks for real-time stream processing (used by agent-loop for UI) */\nexport interface StreamCallbacks {\n onText?: (text: string) => void;\n onToolStart?: (name: string, input?: Record<string, unknown>) => void;\n onThinking?: (text: string) => void;\n onCitation?: (citation: CitationBlock) => void;\n}\n\n// ============================================================================\n// API REQUEST CONFIG — profiles for different agent types\n// ============================================================================\n\nexport type ContextProfile = \"main\" | \"subagent\" | \"teammate\";\n\nexport interface APIRequestConfig {\n betas: string[];\n contextManagement: { edits: Array<Record<string, unknown>> };\n thinking?: { type: string; budget_tokens?: number };\n maxTokens: number;\n}\n\n// ============================================================================\n// TOOL DISPATCH — shared result message format\n// ============================================================================\n\nexport interface ToolResultMessage {\n type: \"tool_result\";\n tool_use_id: string;\n content: string | Array<Record<string, unknown>>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-highlight.d.js","names":[],"sources":["../../src/types/cli-highlight.d.ts"],"sourcesContent":["declare module \"cli-highlight\" {\n export function highlight(code: string, options?: {\n language?: string;\n ignoreIllegals?: boolean;\n theme?: any;\n }): string;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.js","names":[],"sources":["../../src/types/diff.d.ts"],"sourcesContent":["declare module \"diff\" {\n interface Change {\n count?: number;\n added?: boolean;\n removed?: boolean;\n value: string;\n }\n\n export function diffWords(oldStr: string, newStr: string): Change[];\n export function diffChars(oldStr: string, newStr: string): Change[];\n export function diffLines(oldStr: string, newStr: string): Change[];\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-parse.d.js","names":[],"sources":["../../src/types/pdf-parse.d.ts"],"sourcesContent":["declare module \"pdf-parse\" {\n interface PDFData {\n numpages: number;\n numrender: number;\n info: Record<string, unknown>;\n metadata: unknown;\n text: string;\n version: string;\n }\n\n function pdfParse(dataBuffer: Buffer): Promise<PDFData>;\n export default pdfParse;\n}\n"],"mappings":"","ignoreList":[]}
|
package/dist/updater.d.ts
CHANGED