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":"openai.js","names":["randomUUID","OpenAI","sanitizeError","isOpenAIReasoningModel","getCapabilities","registerProvider","jsonResponse","writeSSEHeaders","emitError","resolveProviderCredentials","DEFAULT_OUTPUT_TOKENS","MODEL_MAX_OUTPUT_TOKENS","anthropicToResponsesInput","messages","knownCallIds","Set","msg","role","Array","isArray","content","block","type","id","name","add","input","push","contentParts","tool_use_id","has","output","filter","c","map","text","join","call_id","source","data","image_url","media_type","length","textContent","slice","arguments","JSON","stringify","sanitizeSchemaForOpenAI","schema","result","key","value","Object","entries","props","propName","propSchema","items","required","properties","validProps","keys","r","anthropicToResponsesTools","tools","t","description","parameters","input_schema","strict","OpenAIAdapter","handleStream","res","config","corsHeaders","model","system","max_tokens","temperature","storeId","tool_choice","creds","openai","error","client","apiKey","isReasoning","openaiInput","openaiTools","undefined","instructions","s","params","stream","store","max_output_tokens","parallel_tool_calls","truncation","reasoning","effort","summary","function","totalInputTokens","totalOutputTokens","totalReasoningTokens","totalCacheReadTokens","heartbeat","responses","create","setInterval","writableEnded","write","message","stop_reason","usage","input_tokens","output_tokens","blockIndex","hasOpenTextBlock","hasOpenThinkingBlock","hasToolUse","hasEmittedContent","pendingFunctionCalls","Map","closeOpenBlocks","index","event","delta","content_block","thinking","item","set","callId","pending","get","item_id","delete","args","parsedInput","parse","toolUseId","partial_json","response","output_tokens_details","reasoning_tokens","input_tokens_details","cached_tokens","errMsg","console","warn","incomplete_details","stopReason","stop_sequence","thinking_tokens","cache_read_input_tokens","err","provider","inputTokens","outputTokens","thinkingTokens","cacheReadTokens","clearInterval","end","getThinkingConfig","enabled","beta","test","getMaxOutputTokens","agentMax","modelMax","Math","min","getContextManagement","_model","betas","edits","getCompactionConfig","triggerTokens","totalBudget","isNative"],"sources":["../../../src/server/providers/openai.ts"],"sourcesContent":["/**\n * OpenAI Provider Adapter — Responses API (2026) with format conversion to Anthropic SSE.\n *\n * Contains:\n * - anthropicToResponsesInput() — messages → Responses API format\n * - sanitizeSchemaForOpenAI() — schema cleanup\n * - anthropicToResponsesTools() — tool format conversion\n * - Streaming with 12 event type handlers\n * - pendingFunctionCalls tracking (per-request, not shared)\n *\n * Phase 7.1: Also encapsulates thinking config, context management,\n * output token limits, and compaction config for OpenAI models.\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport OpenAI from \"openai\";\nimport { sanitizeError } from \"../../shared/agent-core.js\";\nimport { isOpenAIReasoningModel } from \"../../shared/constants.js\";\nimport type {\n ProviderAdapter,\n ProviderStreamConfig,\n ProviderCapabilities,\n ThinkingConfigResult,\n ContextManagementConfig,\n CompactionConfig,\n} from \"./types.js\";\nimport { getCapabilities } from \"../lib/provider-capabilities.js\";\nimport { registerProvider } from \"./registry.js\";\nimport { jsonResponse, writeSSEHeaders, emitError, resolveProviderCredentials } from \"./shared.js\";\nimport type http from \"node:http\";\n\n// ============================================================================\n// CONSTANTS — OpenAI-specific model config\n// ============================================================================\n\nconst DEFAULT_OUTPUT_TOKENS = 16384;\n\nconst MODEL_MAX_OUTPUT_TOKENS: Record<string, number> = {\n \"gpt-5\": 128000,\n \"gpt-5-mini\": 128000,\n \"gpt-5-nano\": 128000,\n \"o3\": 100000,\n \"o4-mini\": 100000,\n \"gpt-4o\": 16384,\n};\n\n// ============================================================================\n// MESSAGE CONVERSION\n// ============================================================================\n\n/**\n * Convert Anthropic messages to OpenAI Responses API input format.\n *\n * Key differences from Chat Completions:\n * - System prompt goes to `instructions` param (not in input array)\n * - tool_use blocks become top-level `function_call` items\n * - tool_result blocks become top-level `function_call_output` items\n * - Images use `input_image` type with data URL in `image_url`\n * - call_id is used directly (no ID mapping needed)\n */\nfunction anthropicToResponsesInput(messages: any[]): Array<Record<string, unknown>> {\n // Pass 1: collect all tool_use call_ids so we can match function_call_output items\n const knownCallIds = new Set<string>();\n for (const msg of messages) {\n if (msg.role === \"assistant\" && Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (block.type === \"tool_use\" && block.id && block.name) {\n knownCallIds.add(block.id);\n }\n }\n }\n }\n\n // Pass 2: build input array\n const input: Array<Record<string, unknown>> = [];\n\n for (const msg of messages) {\n if (msg.role === \"user\") {\n if (typeof msg.content === \"string\") {\n input.push({ role: \"user\", content: msg.content });\n } else if (Array.isArray(msg.content)) {\n const contentParts: Array<Record<string, unknown>> = [];\n\n for (const block of msg.content) {\n if (block.type === \"tool_result\" && block.tool_use_id) {\n // Only emit if there's a matching function_call (prevents orphaned outputs after compaction)\n if (knownCallIds.has(block.tool_use_id)) {\n let output = \"\";\n if (typeof block.content === \"string\") {\n output = block.content;\n } else if (Array.isArray(block.content)) {\n output = block.content\n .filter((c: any) => c.type === \"text\")\n .map((c: any) => c.text)\n .join(\"\\n\");\n }\n input.push({\n type: \"function_call_output\",\n call_id: block.tool_use_id,\n output: output || \"(no output)\",\n });\n }\n } else if (block.type === \"text\" && block.text) {\n contentParts.push({ type: \"input_text\", text: block.text });\n } else if (block.type === \"image\" && block.source?.data) {\n contentParts.push({\n type: \"input_image\",\n image_url: `data:${block.source.media_type};base64,${block.source.data}`,\n });\n }\n }\n\n // Emit content parts as user message\n if (contentParts.length === 1 && contentParts[0].type === \"input_text\") {\n input.push({ role: \"user\", content: contentParts[0].text as string });\n } else if (contentParts.length > 0) {\n input.push({ role: \"user\", content: contentParts });\n }\n }\n } else if (msg.role === \"assistant\") {\n if (typeof msg.content === \"string\") {\n input.push({ role: \"assistant\", content: msg.content });\n } else if (Array.isArray(msg.content)) {\n let textContent = \"\";\n\n for (const block of msg.content) {\n if (block.type === \"text\" && block.text) {\n textContent += block.text;\n } else if (block.type === \"tool_use\" && block.name) {\n // Emit accumulated text as assistant message first\n if (textContent) {\n input.push({ role: \"assistant\", content: textContent });\n textContent = \"\";\n }\n // Emit function_call as top-level input item\n input.push({\n type: \"function_call\",\n call_id: block.id || `call_${randomUUID().slice(0, 12)}`,\n name: block.name,\n arguments: JSON.stringify(block.input || {}),\n });\n }\n // Skip thinking/compaction blocks — not relevant for OpenAI\n }\n\n if (textContent) {\n input.push({ role: \"assistant\", content: textContent });\n }\n }\n }\n }\n\n return input;\n}\n\n// ============================================================================\n// SCHEMA SANITIZATION\n// ============================================================================\n\n/** Sanitize JSON Schema for OpenAI — ensure arrays have items, objects have properties */\nfunction sanitizeSchemaForOpenAI(schema: any): any {\n if (!schema || typeof schema !== \"object\") return schema;\n if (Array.isArray(schema)) return schema.map(sanitizeSchemaForOpenAI);\n\n const result: any = {};\n for (const [key, value] of Object.entries(schema)) {\n if (key === \"properties\" && typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n const props: any = {};\n for (const [propName, propSchema] of Object.entries(value as Record<string, unknown>)) {\n props[propName] = sanitizeSchemaForOpenAI(propSchema);\n }\n result[key] = props;\n } else {\n result[key] = sanitizeSchemaForOpenAI(value);\n }\n }\n\n // OpenAI requires arrays to have items\n if (result.type === \"array\" && !result.items) {\n result.items = { type: \"string\" };\n }\n\n // Filter required to only include defined properties\n if (result.required && Array.isArray(result.required) && result.properties) {\n const validProps = new Set(Object.keys(result.properties));\n result.required = result.required.filter((r: string) => validProps.has(r));\n if (result.required.length === 0) delete result.required;\n }\n\n return result;\n}\n\n/** Convert Anthropic tools to OpenAI Responses API FunctionTool format */\nfunction anthropicToResponsesTools(tools: any[]): Array<Record<string, unknown>> {\n return tools.map((t: any) => ({\n type: \"function\",\n name: t.name,\n description: typeof t.description === \"string\" ? t.description.slice(0, 4096) : \"\",\n parameters: sanitizeSchemaForOpenAI(t.input_schema || {}),\n strict: false,\n }));\n}\n\n// ============================================================================\n// ADAPTER\n// ============================================================================\n\nexport class OpenAIAdapter implements ProviderAdapter {\n name = \"openai\";\n\n async handleStream(\n res: http.ServerResponse,\n config: ProviderStreamConfig,\n corsHeaders: Record<string, string>,\n ): Promise<void> {\n const { model, messages, system, tools, max_tokens, temperature, storeId, tool_choice } = config;\n\n const creds = await resolveProviderCredentials(\"openai\", storeId);\n if (!creds.openai) {\n jsonResponse(res, 422, { error: \"OpenAI credentials not configured. Add OPENAI_API_KEY to user_tool_secrets.\" }, corsHeaders);\n return;\n }\n\n const client = new OpenAI({ apiKey: creds.openai.apiKey });\n const isReasoning = isOpenAIReasoningModel(model);\n\n // Convert Anthropic format → Responses API format\n const openaiInput = anthropicToResponsesInput(messages);\n const openaiTools = tools?.length ? anthropicToResponsesTools(tools) : undefined;\n\n // Extract system prompt → instructions parameter\n let instructions = \"\";\n if (typeof system === \"string\") {\n instructions = system;\n } else if (Array.isArray(system)) {\n instructions = system.map((s: any) => s.text || \"\").join(\"\\n\");\n }\n\n // Build Responses API request\n const params: Record<string, unknown> = {\n model,\n input: openaiInput,\n stream: true,\n store: false,\n max_output_tokens: max_tokens,\n parallel_tool_calls: true,\n truncation: \"auto\",\n };\n\n if (instructions) params.instructions = instructions;\n if (openaiTools?.length) params.tools = openaiTools;\n\n if (isReasoning) {\n params.reasoning = { effort: \"high\", summary: \"detailed\" };\n } else {\n if (temperature !== undefined) params.temperature = temperature;\n }\n\n // Map tool_choice to OpenAI Responses API format\n if (tool_choice) {\n if (tool_choice === \"auto\") {\n // \"auto\" is default for OpenAI — no-op\n } else if (tool_choice === \"any\") {\n params.tool_choice = \"required\";\n } else if (tool_choice === \"none\") {\n params.tool_choice = \"none\";\n delete params.tools;\n } else if (typeof tool_choice === \"object\" && tool_choice.type === \"tool\") {\n params.tool_choice = { type: \"function\", function: { name: tool_choice.name } };\n }\n }\n\n // Defer SSE headers until stream is successfully created\n // so we can return proper HTTP errors if the initial API call fails.\n let totalInputTokens = 0;\n let totalOutputTokens = 0;\n let totalReasoningTokens = 0;\n let totalCacheReadTokens = 0;\n let heartbeat: ReturnType<typeof setInterval> | undefined;\n\n try {\n const stream = await (client.responses.create(params as any) as unknown as Promise<AsyncIterable<any>>);\n\n // Stream created successfully — now safe to commit to SSE\n writeSSEHeaders(res, corsHeaders);\n\n // Heartbeat keeps the connection alive and helps detect dead clients\n heartbeat = setInterval(() => {\n if (!res.writableEnded) res.write(\":ping\\n\\n\");\n }, 15_000);\n\n // Emit Anthropic-format message_start\n res.write(`data: ${JSON.stringify({\n type: \"message_start\",\n message: {\n id: `msg_openai_${randomUUID().slice(0, 8)}`,\n type: \"message\",\n role: \"assistant\",\n content: [],\n model,\n stop_reason: null,\n usage: { input_tokens: 0, output_tokens: 0 },\n },\n })}\\n\\n`);\n\n let blockIndex = 0;\n let hasOpenTextBlock = false;\n let hasOpenThinkingBlock = false;\n let hasToolUse = false;\n let hasEmittedContent = false;\n // Per-request function call tracking (not shared between concurrent requests)\n const pendingFunctionCalls = new Map<string, { name: string; callId: string }>();\n\n // Helper to close any open content blocks\n const closeOpenBlocks = () => {\n if (hasOpenThinkingBlock) {\n res.write(`data: ${JSON.stringify({ type: \"content_block_stop\", index: blockIndex })}\\n\\n`);\n blockIndex++;\n hasOpenThinkingBlock = false;\n }\n if (hasOpenTextBlock) {\n res.write(`data: ${JSON.stringify({ type: \"content_block_stop\", index: blockIndex })}\\n\\n`);\n blockIndex++;\n hasOpenTextBlock = false;\n }\n };\n\n for await (const event of stream as AsyncIterable<any>) {\n switch (event.type) {\n // ---- Reasoning summary → Anthropic thinking block ----\n case \"response.reasoning_summary_text.delta\": {\n const text = event.delta;\n if (!text) break;\n\n if (hasOpenTextBlock) {\n res.write(`data: ${JSON.stringify({ type: \"content_block_stop\", index: blockIndex })}\\n\\n`);\n blockIndex++;\n hasOpenTextBlock = false;\n }\n\n if (!hasOpenThinkingBlock) {\n res.write(`data: ${JSON.stringify({\n type: \"content_block_start\",\n index: blockIndex,\n content_block: { type: \"thinking\", thinking: \"\" },\n })}\\n\\n`);\n hasOpenThinkingBlock = true;\n hasEmittedContent = true;\n }\n\n res.write(`data: ${JSON.stringify({\n type: \"content_block_delta\",\n index: blockIndex,\n delta: { type: \"thinking_delta\", thinking: text },\n })}\\n\\n`);\n break;\n }\n\n case \"response.reasoning_summary_text.done\": {\n break;\n }\n\n // ---- Text content → Anthropic text block ----\n case \"response.output_text.delta\": {\n const text = event.delta;\n if (!text) break;\n\n if (hasOpenThinkingBlock) {\n res.write(`data: ${JSON.stringify({ type: \"content_block_stop\", index: blockIndex })}\\n\\n`);\n blockIndex++;\n hasOpenThinkingBlock = false;\n }\n\n if (!hasOpenTextBlock) {\n res.write(`data: ${JSON.stringify({\n type: \"content_block_start\",\n index: blockIndex,\n content_block: { type: \"text\", text: \"\" },\n })}\\n\\n`);\n hasOpenTextBlock = true;\n hasEmittedContent = true;\n }\n\n res.write(`data: ${JSON.stringify({\n type: \"content_block_delta\",\n index: blockIndex,\n delta: { type: \"text_delta\", text },\n })}\\n\\n`);\n break;\n }\n\n case \"response.output_text.done\": {\n break;\n }\n\n // ---- Function calls → Anthropic tool_use blocks ----\n case \"response.output_item.added\": {\n const item = event.item;\n if (item?.type === \"function_call\" && item.id && item.name) {\n pendingFunctionCalls.set(item.id, { name: item.name, callId: item.call_id || item.id });\n }\n break;\n }\n\n case \"response.function_call_arguments.done\": {\n closeOpenBlocks();\n\n hasToolUse = true;\n hasEmittedContent = true;\n\n const pending = pendingFunctionCalls.get(event.item_id);\n const name = pending?.name || event.name || \"unknown_tool\";\n const callId = pending?.callId || event.call_id || event.item_id;\n if (pending) pendingFunctionCalls.delete(event.item_id);\n\n const args = event.arguments;\n\n let parsedInput = {};\n try { parsedInput = JSON.parse(args || \"{}\"); } catch { /* use empty */ }\n\n const toolUseId = callId || `toolu_openai_${randomUUID().slice(0, 12)}`;\n\n res.write(`data: ${JSON.stringify({\n type: \"content_block_start\",\n index: blockIndex,\n content_block: {\n type: \"tool_use\",\n id: toolUseId,\n name,\n input: {},\n },\n })}\\n\\n`);\n\n res.write(`data: ${JSON.stringify({\n type: \"content_block_delta\",\n index: blockIndex,\n delta: {\n type: \"input_json_delta\",\n partial_json: JSON.stringify(parsedInput),\n },\n })}\\n\\n`);\n\n res.write(`data: ${JSON.stringify({ type: \"content_block_stop\", index: blockIndex })}\\n\\n`);\n blockIndex++;\n break;\n }\n\n // ---- Completion → usage + stop ----\n case \"response.completed\": {\n const response = event.response;\n if (response?.usage) {\n totalInputTokens = response.usage.input_tokens || 0;\n totalOutputTokens = response.usage.output_tokens || 0;\n if (response.usage.output_tokens_details?.reasoning_tokens) {\n totalReasoningTokens = response.usage.output_tokens_details.reasoning_tokens;\n }\n if (response.usage.input_tokens_details?.cached_tokens) {\n totalCacheReadTokens = response.usage.input_tokens_details.cached_tokens;\n }\n }\n break;\n }\n\n // ---- Error during streaming ----\n case \"response.failed\": {\n const error = event.response?.error;\n const errMsg = error?.message || \"Unknown OpenAI error\";\n console.error(\"[openai-proxy] Response failed:\", errMsg);\n closeOpenBlocks();\n if (!hasEmittedContent) {\n res.write(`data: ${JSON.stringify({\n type: \"content_block_start\",\n index: blockIndex,\n content_block: { type: \"text\", text: \"\" },\n })}\\n\\n`);\n res.write(`data: ${JSON.stringify({\n type: \"content_block_delta\",\n index: blockIndex,\n delta: { type: \"text_delta\", text: `[OpenAI error: ${errMsg}]` },\n })}\\n\\n`);\n res.write(`data: ${JSON.stringify({ type: \"content_block_stop\", index: blockIndex })}\\n\\n`);\n hasEmittedContent = true;\n }\n break;\n }\n\n case \"response.incomplete\": {\n console.warn(\"[openai-proxy] Response incomplete:\", event.response?.incomplete_details);\n break;\n }\n\n default:\n break;\n }\n }\n\n // Close any remaining open blocks\n closeOpenBlocks();\n\n // Handle empty response\n if (!hasEmittedContent) {\n res.write(`data: ${JSON.stringify({\n type: \"content_block_start\",\n index: 0,\n content_block: { type: \"text\", text: \"\" },\n })}\\n\\n`);\n res.write(`data: ${JSON.stringify({\n type: \"content_block_delta\",\n index: 0,\n delta: { type: \"text_delta\", text: \"[OpenAI returned an empty response. Please try again.]\" },\n })}\\n\\n`);\n res.write(`data: ${JSON.stringify({ type: \"content_block_stop\", index: 0 })}\\n\\n`);\n }\n\n // Determine stop reason\n const stopReason = hasToolUse ? \"tool_use\" : \"end_turn\";\n\n // Emit message_delta with usage\n res.write(`data: ${JSON.stringify({\n type: \"message_delta\",\n delta: { stop_reason: stopReason, stop_sequence: null },\n usage: {\n input_tokens: totalInputTokens,\n output_tokens: totalOutputTokens,\n ...(totalReasoningTokens > 0 ? { thinking_tokens: totalReasoningTokens } : {}),\n ...(totalCacheReadTokens > 0 ? { cache_read_input_tokens: totalCacheReadTokens } : {}),\n },\n })}\\n\\n`);\n\n res.write(`data: ${JSON.stringify({ type: \"message_stop\" })}\\n\\n`);\n res.write(\"data: [DONE]\\n\\n\");\n } catch (err: any) {\n emitError(res, err, corsHeaders, sanitizeError, {\n provider: \"openai\",\n inputTokens: totalInputTokens,\n outputTokens: totalOutputTokens,\n thinkingTokens: totalReasoningTokens,\n cacheReadTokens: totalCacheReadTokens,\n });\n } finally {\n if (heartbeat) clearInterval(heartbeat);\n }\n res.end();\n }\n\n // ---- Provider-specific config methods ----\n\n getThinkingConfig(model: string, enabled: boolean): ThinkingConfigResult {\n if (!enabled) {\n return { thinking: { type: \"disabled\" }, beta: \"\" };\n }\n // OpenAI reasoning models (o-series) have built-in reasoning, GPT models don't support thinking\n const isReasoning = /^o\\d/.test(model);\n return { thinking: { type: isReasoning ? \"enabled\" : \"disabled\" }, beta: \"\" };\n }\n\n getMaxOutputTokens(model: string, agentMax?: number): number {\n const modelMax = MODEL_MAX_OUTPUT_TOKENS[model] ?? DEFAULT_OUTPUT_TOKENS;\n if (agentMax) return Math.min(agentMax, modelMax);\n return Math.min(DEFAULT_OUTPUT_TOKENS, modelMax);\n }\n\n getContextManagement(_model: string): ContextManagementConfig {\n // OpenAI doesn't use Anthropic betas or context management\n return { betas: [], config: { edits: [] } };\n }\n\n getCompactionConfig(_model: string): CompactionConfig {\n return { triggerTokens: 120_000, totalBudget: 2_000_000, isNative: false };\n }\n\n getCapabilities(): ProviderCapabilities {\n return getCapabilities(\"openai\");\n }\n}\n\n// Auto-register on import\nregisterProvider(\"openai\", new OpenAIAdapter());\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,18 +5,22 @@
|
|
|
5
5
|
* Adapters self-register on import. External code calls getProviderAdapter()
|
|
6
6
|
* instead of maintaining its own switch/if-else chains.
|
|
7
7
|
*/
|
|
8
|
+
|
|
8
9
|
import { getProvider } from "../../shared/constants.js";
|
|
9
10
|
// ============================================================================
|
|
10
11
|
// REGISTRY
|
|
11
12
|
// ============================================================================
|
|
13
|
+
|
|
12
14
|
const providers = new Map();
|
|
15
|
+
|
|
13
16
|
/**
|
|
14
17
|
* Register a provider adapter. Called by each adapter module on import.
|
|
15
18
|
* Overwrites if a provider with the same name is already registered.
|
|
16
19
|
*/
|
|
17
20
|
export function registerProvider(name, adapter) {
|
|
18
|
-
|
|
21
|
+
providers.set(name, adapter);
|
|
19
22
|
}
|
|
23
|
+
|
|
20
24
|
/**
|
|
21
25
|
* Get the adapter for a provider name or model ID.
|
|
22
26
|
*
|
|
@@ -28,31 +32,32 @@ export function registerProvider(name, adapter) {
|
|
|
28
32
|
* Throws if no adapters are registered at all (indicates missing initialization).
|
|
29
33
|
*/
|
|
30
34
|
export function getProviderAdapter(modelOrProvider) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
throw new Error(`No provider adapter registered for "${modelOrProvider}" (resolved: "${providerName}"). ` +
|
|
45
|
-
`Registered providers: [${Array.from(providers.keys()).join(", ")}]`);
|
|
35
|
+
// Direct provider name match
|
|
36
|
+
const direct = providers.get(modelOrProvider);
|
|
37
|
+
if (direct) return direct;
|
|
38
|
+
|
|
39
|
+
// Resolve model ID → provider name
|
|
40
|
+
const providerName = getProvider(modelOrProvider);
|
|
41
|
+
const resolved = providers.get(providerName);
|
|
42
|
+
if (resolved) return resolved;
|
|
43
|
+
|
|
44
|
+
// Fallback to anthropic
|
|
45
|
+
const fallback = providers.get("anthropic");
|
|
46
|
+
if (fallback) return fallback;
|
|
47
|
+
throw new Error(`No provider adapter registered for "${modelOrProvider}" (resolved: "${providerName}"). ` + `Registered providers: [${Array.from(providers.keys()).join(", ")}]`);
|
|
46
48
|
}
|
|
49
|
+
|
|
47
50
|
/**
|
|
48
51
|
* Check if a provider is registered.
|
|
49
52
|
*/
|
|
50
53
|
export function hasProvider(name) {
|
|
51
|
-
|
|
54
|
+
return providers.has(name);
|
|
52
55
|
}
|
|
56
|
+
|
|
53
57
|
/**
|
|
54
58
|
* Get all registered provider names.
|
|
55
59
|
*/
|
|
56
60
|
export function getRegisteredProviders() {
|
|
57
|
-
|
|
61
|
+
return Array.from(providers.keys());
|
|
58
62
|
}
|
|
63
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","names":["getProvider","providers","Map","registerProvider","name","adapter","set","getProviderAdapter","modelOrProvider","direct","get","providerName","resolved","fallback","Error","Array","from","keys","join","hasProvider","has","getRegisteredProviders"],"sources":["../../../src/server/providers/registry.ts"],"sourcesContent":["/**\n * Provider Adapter Registry — central lookup for provider adapters.\n *\n * Phase 7.1: Replaces ad-hoc provider switching with a single registry.\n * Adapters self-register on import. External code calls getProviderAdapter()\n * instead of maintaining its own switch/if-else chains.\n */\n\nimport { getProvider } from \"../../shared/constants.js\";\nimport type { ProviderAdapter } from \"./types.js\";\n\n// ============================================================================\n// REGISTRY\n// ============================================================================\n\nconst providers = new Map<string, ProviderAdapter>();\n\n/**\n * Register a provider adapter. Called by each adapter module on import.\n * Overwrites if a provider with the same name is already registered.\n */\nexport function registerProvider(name: string, adapter: ProviderAdapter): void {\n providers.set(name, adapter);\n}\n\n/**\n * Get the adapter for a provider name or model ID.\n *\n * Accepts either:\n * - A provider name directly (\"anthropic\", \"gemini\", \"openai\", \"bedrock\")\n * - A full model ID (uses getProvider() to resolve the provider name)\n *\n * Falls back to \"anthropic\" if no adapter is found for the resolved provider.\n * Throws if no adapters are registered at all (indicates missing initialization).\n */\nexport function getProviderAdapter(modelOrProvider: string): ProviderAdapter {\n // Direct provider name match\n const direct = providers.get(modelOrProvider);\n if (direct) return direct;\n\n // Resolve model ID → provider name\n const providerName = getProvider(modelOrProvider);\n const resolved = providers.get(providerName);\n if (resolved) return resolved;\n\n // Fallback to anthropic\n const fallback = providers.get(\"anthropic\");\n if (fallback) return fallback;\n\n throw new Error(\n `No provider adapter registered for \"${modelOrProvider}\" (resolved: \"${providerName}\"). ` +\n `Registered providers: [${Array.from(providers.keys()).join(\", \")}]`\n );\n}\n\n/**\n * Check if a provider is registered.\n */\nexport function hasProvider(name: string): boolean {\n return providers.has(name);\n}\n\n/**\n * Get all registered provider names.\n */\nexport function getRegisteredProviders(): string[] {\n return Array.from(providers.keys());\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,WAAW,QAAQ,2BAA2B;AAGvD;AACA;AACA;;AAEA,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAA0B,CAAC;;AAEpD;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAACC,IAAY,EAAEC,OAAwB,EAAQ;EAC7EJ,SAAS,CAACK,GAAG,CAACF,IAAI,EAAEC,OAAO,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,kBAAkBA,CAACC,eAAuB,EAAmB;EAC3E;EACA,MAAMC,MAAM,GAAGR,SAAS,CAACS,GAAG,CAACF,eAAe,CAAC;EAC7C,IAAIC,MAAM,EAAE,OAAOA,MAAM;;EAEzB;EACA,MAAME,YAAY,GAAGX,WAAW,CAACQ,eAAe,CAAC;EACjD,MAAMI,QAAQ,GAAGX,SAAS,CAACS,GAAG,CAACC,YAAY,CAAC;EAC5C,IAAIC,QAAQ,EAAE,OAAOA,QAAQ;;EAE7B;EACA,MAAMC,QAAQ,GAAGZ,SAAS,CAACS,GAAG,CAAC,WAAW,CAAC;EAC3C,IAAIG,QAAQ,EAAE,OAAOA,QAAQ;EAE7B,MAAM,IAAIC,KAAK,CACb,uCAAuCN,eAAe,iBAAiBG,YAAY,MAAM,GACzF,0BAA0BI,KAAK,CAACC,IAAI,CAACf,SAAS,CAACgB,IAAI,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,GACnE,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAACf,IAAY,EAAW;EACjD,OAAOH,SAAS,CAACmB,GAAG,CAAChB,IAAI,CAAC;AAC5B;;AAEA;AACA;AACA;AACA,OAAO,SAASiB,sBAAsBA,CAAA,EAAa;EACjD,OAAON,KAAK,CAACC,IAAI,CAACf,SAAS,CAACgB,IAAI,CAAC,CAAC,CAAC;AACrC","ignoreList":[]}
|
|
@@ -3,122 +3,150 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Extracted from proxy-handlers.ts. Used by all provider adapters.
|
|
5
5
|
*/
|
|
6
|
+
|
|
6
7
|
import { createClient } from "@supabase/supabase-js";
|
|
8
|
+
|
|
7
9
|
// ============================================================================
|
|
8
10
|
// JSON + SSE HELPERS
|
|
9
11
|
// ============================================================================
|
|
12
|
+
|
|
10
13
|
export function jsonResponse(res, status, data, corsHeaders) {
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
res.writeHead(status, {
|
|
15
|
+
"Content-Type": "application/json",
|
|
16
|
+
...corsHeaders
|
|
17
|
+
});
|
|
18
|
+
res.end(JSON.stringify(data));
|
|
13
19
|
}
|
|
14
20
|
export function writeSSEHeaders(res, corsHeaders) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
res.writeHead(200, {
|
|
22
|
+
"Content-Type": "text/event-stream",
|
|
23
|
+
"Cache-Control": "no-cache",
|
|
24
|
+
Connection: "keep-alive",
|
|
25
|
+
"X-Accel-Buffering": "no",
|
|
26
|
+
...corsHeaders
|
|
27
|
+
});
|
|
28
|
+
res.flushHeaders();
|
|
23
29
|
}
|
|
30
|
+
|
|
24
31
|
/**
|
|
25
32
|
* Emit an error — as SSE if headers already sent, otherwise as JSON response.
|
|
26
33
|
* Always emits message_delta + message_stop so clients don't hang.
|
|
27
34
|
*/
|
|
28
35
|
export function emitError(res, err, corsHeaders, sanitize, opts) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
36
|
+
const errMsg = err?.message || String(err);
|
|
37
|
+
const provider = opts?.provider || "proxy";
|
|
38
|
+
console.error(`[${provider}-proxy] Error:`, errMsg);
|
|
39
|
+
if (res.headersSent) {
|
|
40
|
+
res.write(`data: ${JSON.stringify({
|
|
41
|
+
type: "error",
|
|
42
|
+
error: sanitize(err)
|
|
43
|
+
})}\n\n`);
|
|
44
|
+
const usage = {
|
|
45
|
+
input_tokens: opts?.inputTokens || 0,
|
|
46
|
+
output_tokens: opts?.outputTokens || 0
|
|
47
|
+
};
|
|
48
|
+
if (opts?.thinkingTokens && opts.thinkingTokens > 0) usage.thinking_tokens = opts.thinkingTokens;
|
|
49
|
+
if (opts?.cacheReadTokens && opts.cacheReadTokens > 0) usage.cache_read_input_tokens = opts.cacheReadTokens;
|
|
50
|
+
res.write(`data: ${JSON.stringify({
|
|
51
|
+
type: "message_delta",
|
|
52
|
+
delta: {
|
|
53
|
+
stop_reason: "error",
|
|
54
|
+
stop_sequence: null
|
|
55
|
+
},
|
|
56
|
+
usage
|
|
57
|
+
})}\n\n`);
|
|
58
|
+
res.write(`data: ${JSON.stringify({
|
|
59
|
+
type: "message_stop"
|
|
60
|
+
})}\n\n`);
|
|
61
|
+
res.write("data: [DONE]\n\n");
|
|
62
|
+
} else {
|
|
63
|
+
jsonResponse(res, 502, {
|
|
64
|
+
error: `${provider} error: ${sanitize(err)}`
|
|
65
|
+
}, corsHeaders);
|
|
66
|
+
}
|
|
53
67
|
}
|
|
68
|
+
|
|
54
69
|
// ============================================================================
|
|
55
70
|
// CREDENTIAL RESOLUTION
|
|
56
71
|
// ============================================================================
|
|
72
|
+
|
|
57
73
|
/** Credential cache — keyed by provider+store_id, 5-minute TTL, LRU capped at 50 */
|
|
58
74
|
const providerCredCacheMap = new Map();
|
|
59
75
|
export async function resolveProviderCredentials(provider, storeId) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
76
|
+
const cacheKey = `${provider}:${storeId || "__default__"}`;
|
|
77
|
+
const cached = providerCredCacheMap.get(cacheKey);
|
|
78
|
+
if (cached && Date.now() - cached.fetchedAt < 300_000) {
|
|
79
|
+
return cached;
|
|
80
|
+
}
|
|
81
|
+
const SUPABASE_URL = process.env.SUPABASE_URL;
|
|
82
|
+
const SUPABASE_SERVICE_ROLE_KEY = process.env.SUPABASE_SERVICE_ROLE_KEY;
|
|
83
|
+
const sb = createClient(SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY);
|
|
84
|
+
const result = {
|
|
85
|
+
fetchedAt: Date.now()
|
|
86
|
+
};
|
|
87
|
+
if (provider === "google") {
|
|
88
|
+
try {
|
|
89
|
+
const {
|
|
90
|
+
data,
|
|
91
|
+
error
|
|
92
|
+
} = await sb.rpc("decrypt_secret", {
|
|
93
|
+
p_name: "GOOGLE_AI_API_KEY",
|
|
94
|
+
p_store_id: storeId || null
|
|
95
|
+
});
|
|
96
|
+
if (error) console.error(`[cred-resolve] Google key lookup failed for store=${storeId}:`, error.message);
|
|
97
|
+
if (data) result.google = {
|
|
98
|
+
apiKey: data
|
|
99
|
+
};else console.error(`[cred-resolve] No Google key found for store=${storeId}`);
|
|
100
|
+
} catch (err) {
|
|
101
|
+
console.error(`[cred-resolve] Google key RPC error for store=${storeId}:`, err?.message);
|
|
64
102
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
sb.rpc("decrypt_secret", { p_name: "AWS_SECRET_ACCESS_KEY", p_store_id: storeId || null }),
|
|
88
|
-
sb.rpc("decrypt_secret", { p_name: "AWS_REGION", p_store_id: storeId || null }),
|
|
89
|
-
]);
|
|
90
|
-
if (akRes.data && skRes.data) {
|
|
91
|
-
result.bedrock = {
|
|
92
|
-
accessKeyId: akRes.data,
|
|
93
|
-
secretAccessKey: skRes.data,
|
|
94
|
-
region: rgRes.data || "us-east-1",
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
catch (err) {
|
|
99
|
-
console.error(`[cred-resolve] Bedrock key RPC error for store=${storeId}:`, err?.message);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
if (provider === "openai") {
|
|
103
|
-
try {
|
|
104
|
-
const { data, error } = await sb.rpc("decrypt_secret", { p_name: "OPENAI_API_KEY", p_store_id: storeId || null });
|
|
105
|
-
if (error)
|
|
106
|
-
console.error(`[cred-resolve] OpenAI key lookup failed for store=${storeId}:`, error.message);
|
|
107
|
-
if (data)
|
|
108
|
-
result.openai = { apiKey: data };
|
|
109
|
-
else
|
|
110
|
-
console.error(`[cred-resolve] No OpenAI key found for store=${storeId}`);
|
|
111
|
-
}
|
|
112
|
-
catch (err) {
|
|
113
|
-
console.error(`[cred-resolve] OpenAI key RPC error for store=${storeId}:`, err?.message);
|
|
114
|
-
}
|
|
103
|
+
}
|
|
104
|
+
if (provider === "bedrock") {
|
|
105
|
+
try {
|
|
106
|
+
const [akRes, skRes, rgRes] = await Promise.all([sb.rpc("decrypt_secret", {
|
|
107
|
+
p_name: "AWS_ACCESS_KEY_ID",
|
|
108
|
+
p_store_id: storeId || null
|
|
109
|
+
}), sb.rpc("decrypt_secret", {
|
|
110
|
+
p_name: "AWS_SECRET_ACCESS_KEY",
|
|
111
|
+
p_store_id: storeId || null
|
|
112
|
+
}), sb.rpc("decrypt_secret", {
|
|
113
|
+
p_name: "AWS_REGION",
|
|
114
|
+
p_store_id: storeId || null
|
|
115
|
+
})]);
|
|
116
|
+
if (akRes.data && skRes.data) {
|
|
117
|
+
result.bedrock = {
|
|
118
|
+
accessKeyId: akRes.data,
|
|
119
|
+
secretAccessKey: skRes.data,
|
|
120
|
+
region: rgRes.data || "us-east-1"
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
} catch (err) {
|
|
124
|
+
console.error(`[cred-resolve] Bedrock key RPC error for store=${storeId}:`, err?.message);
|
|
115
125
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
126
|
+
}
|
|
127
|
+
if (provider === "openai") {
|
|
128
|
+
try {
|
|
129
|
+
const {
|
|
130
|
+
data,
|
|
131
|
+
error
|
|
132
|
+
} = await sb.rpc("decrypt_secret", {
|
|
133
|
+
p_name: "OPENAI_API_KEY",
|
|
134
|
+
p_store_id: storeId || null
|
|
135
|
+
});
|
|
136
|
+
if (error) console.error(`[cred-resolve] OpenAI key lookup failed for store=${storeId}:`, error.message);
|
|
137
|
+
if (data) result.openai = {
|
|
138
|
+
apiKey: data
|
|
139
|
+
};else console.error(`[cred-resolve] No OpenAI key found for store=${storeId}`);
|
|
140
|
+
} catch (err) {
|
|
141
|
+
console.error(`[cred-resolve] OpenAI key RPC error for store=${storeId}:`, err?.message);
|
|
122
142
|
}
|
|
123
|
-
|
|
143
|
+
}
|
|
144
|
+
providerCredCacheMap.set(cacheKey, result);
|
|
145
|
+
// LRU: cap cache at 50 stores
|
|
146
|
+
if (providerCredCacheMap.size > 50) {
|
|
147
|
+
const firstKey = providerCredCacheMap.keys().next().value;
|
|
148
|
+
if (firstKey) providerCredCacheMap.delete(firstKey);
|
|
149
|
+
}
|
|
150
|
+
return result;
|
|
124
151
|
}
|
|
152
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","names":["createClient","jsonResponse","res","status","data","corsHeaders","writeHead","end","JSON","stringify","writeSSEHeaders","Connection","flushHeaders","emitError","err","sanitize","opts","errMsg","message","String","provider","console","error","headersSent","write","type","usage","input_tokens","inputTokens","output_tokens","outputTokens","thinkingTokens","thinking_tokens","cacheReadTokens","cache_read_input_tokens","delta","stop_reason","stop_sequence","providerCredCacheMap","Map","resolveProviderCredentials","storeId","cacheKey","cached","get","Date","now","fetchedAt","SUPABASE_URL","process","env","SUPABASE_SERVICE_ROLE_KEY","sb","result","rpc","p_name","p_store_id","google","apiKey","akRes","skRes","rgRes","Promise","all","bedrock","accessKeyId","secretAccessKey","region","openai","set","size","firstKey","keys","next","value","delete"],"sources":["../../../src/server/providers/shared.ts"],"sourcesContent":["/**\n * Provider Shared Utilities — credential resolution, SSE helpers, error emission.\n *\n * Extracted from proxy-handlers.ts. Used by all provider adapters.\n */\n\nimport http from \"node:http\";\nimport { createClient } from \"@supabase/supabase-js\";\n\n// ============================================================================\n// JSON + SSE HELPERS\n// ============================================================================\n\nexport function jsonResponse(\n res: http.ServerResponse,\n status: number,\n data: unknown,\n corsHeaders: Record<string, string>,\n): void {\n res.writeHead(status, { \"Content-Type\": \"application/json\", ...corsHeaders });\n res.end(JSON.stringify(data));\n}\n\nexport function writeSSEHeaders(\n res: http.ServerResponse,\n corsHeaders: Record<string, string>,\n): void {\n res.writeHead(200, {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n \"X-Accel-Buffering\": \"no\",\n ...corsHeaders,\n });\n res.flushHeaders();\n}\n\n/**\n * Emit an error — as SSE if headers already sent, otherwise as JSON response.\n * Always emits message_delta + message_stop so clients don't hang.\n */\nexport function emitError(\n res: http.ServerResponse,\n err: unknown,\n corsHeaders: Record<string, string>,\n sanitize: (e: unknown) => string,\n opts?: {\n provider?: string;\n inputTokens?: number;\n outputTokens?: number;\n thinkingTokens?: number;\n cacheReadTokens?: number;\n },\n): void {\n const errMsg = (err as any)?.message || String(err);\n const provider = opts?.provider || \"proxy\";\n console.error(`[${provider}-proxy] Error:`, errMsg);\n\n if (res.headersSent) {\n res.write(`data: ${JSON.stringify({ type: \"error\", error: sanitize(err) })}\\n\\n`);\n const usage: Record<string, number> = {\n input_tokens: opts?.inputTokens || 0,\n output_tokens: opts?.outputTokens || 0,\n };\n if (opts?.thinkingTokens && opts.thinkingTokens > 0) usage.thinking_tokens = opts.thinkingTokens;\n if (opts?.cacheReadTokens && opts.cacheReadTokens > 0) usage.cache_read_input_tokens = opts.cacheReadTokens;\n\n res.write(`data: ${JSON.stringify({\n type: \"message_delta\",\n delta: { stop_reason: \"error\", stop_sequence: null },\n usage,\n })}\\n\\n`);\n res.write(`data: ${JSON.stringify({ type: \"message_stop\" })}\\n\\n`);\n res.write(\"data: [DONE]\\n\\n\");\n } else {\n jsonResponse(res, 502, { error: `${provider} error: ${sanitize(err)}` }, corsHeaders);\n }\n}\n\n// ============================================================================\n// CREDENTIAL RESOLUTION\n// ============================================================================\n\n/** Credential cache — keyed by provider+store_id, 5-minute TTL, LRU capped at 50 */\nconst providerCredCacheMap = new Map<string, {\n google?: { apiKey: string };\n bedrock?: { accessKeyId: string; secretAccessKey: string; region: string };\n openai?: { apiKey: string };\n fetchedAt: number;\n}>();\n\nexport async function resolveProviderCredentials(\n provider: \"google\" | \"bedrock\" | \"openai\",\n storeId: string | undefined,\n): Promise<{\n google?: { apiKey: string };\n bedrock?: { accessKeyId: string; secretAccessKey: string; region: string };\n openai?: { apiKey: string };\n}> {\n const cacheKey = `${provider}:${storeId || \"__default__\"}`;\n const cached = providerCredCacheMap.get(cacheKey);\n if (cached && Date.now() - cached.fetchedAt < 300_000) {\n return cached;\n }\n\n const SUPABASE_URL = process.env.SUPABASE_URL!;\n const SUPABASE_SERVICE_ROLE_KEY = process.env.SUPABASE_SERVICE_ROLE_KEY!;\n const sb = createClient(SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY);\n const result: typeof cached = { fetchedAt: Date.now() };\n\n if (provider === \"google\") {\n try {\n const { data, error } = await sb.rpc(\"decrypt_secret\", { p_name: \"GOOGLE_AI_API_KEY\", p_store_id: storeId || null });\n if (error) console.error(`[cred-resolve] Google key lookup failed for store=${storeId}:`, error.message);\n if (data) result.google = { apiKey: data as string };\n else console.error(`[cred-resolve] No Google key found for store=${storeId}`);\n } catch (err: any) {\n console.error(`[cred-resolve] Google key RPC error for store=${storeId}:`, err?.message);\n }\n }\n\n if (provider === \"bedrock\") {\n try {\n const [akRes, skRes, rgRes] = await Promise.all([\n sb.rpc(\"decrypt_secret\", { p_name: \"AWS_ACCESS_KEY_ID\", p_store_id: storeId || null }),\n sb.rpc(\"decrypt_secret\", { p_name: \"AWS_SECRET_ACCESS_KEY\", p_store_id: storeId || null }),\n sb.rpc(\"decrypt_secret\", { p_name: \"AWS_REGION\", p_store_id: storeId || null }),\n ]);\n if (akRes.data && skRes.data) {\n result.bedrock = {\n accessKeyId: akRes.data as string,\n secretAccessKey: skRes.data as string,\n region: (rgRes.data as string) || \"us-east-1\",\n };\n }\n } catch (err: any) {\n console.error(`[cred-resolve] Bedrock key RPC error for store=${storeId}:`, err?.message);\n }\n }\n\n if (provider === \"openai\") {\n try {\n const { data, error } = await sb.rpc(\"decrypt_secret\", { p_name: \"OPENAI_API_KEY\", p_store_id: storeId || null });\n if (error) console.error(`[cred-resolve] OpenAI key lookup failed for store=${storeId}:`, error.message);\n if (data) result.openai = { apiKey: data as string };\n else console.error(`[cred-resolve] No OpenAI key found for store=${storeId}`);\n } catch (err: any) {\n console.error(`[cred-resolve] OpenAI key RPC error for store=${storeId}:`, err?.message);\n }\n }\n\n providerCredCacheMap.set(cacheKey, result);\n // LRU: cap cache at 50 stores\n if (providerCredCacheMap.size > 50) {\n const firstKey = providerCredCacheMap.keys().next().value;\n if (firstKey) providerCredCacheMap.delete(firstKey);\n }\n return result;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,12 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Provider Adapter Pattern — shared types for multi-provider proxy handlers.
|
|
3
|
-
*
|
|
4
|
-
* Phase 7.1: Unified ProviderAdapter interface so each provider encapsulates
|
|
5
|
-
* its own message formatting, streaming normalization, tool schema adaptation,
|
|
6
|
-
* thinking config, context management, and output token limits.
|
|
7
|
-
*
|
|
8
|
-
* Config types (ThinkingConfig, ContextManagementConfig, CompactionConfig) are
|
|
9
|
-
* defined in shared/agent-core.ts and re-exported here so adapters can import
|
|
10
|
-
* from a single location without creating shared→server circular dependencies.
|
|
11
|
-
*/
|
|
12
1
|
export {};
|
|
2
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../src/server/providers/types.ts"],"sourcesContent":["/**\n * Provider Adapter Pattern — shared types for multi-provider proxy handlers.\n *\n * Phase 7.1: Unified ProviderAdapter interface so each provider encapsulates\n * its own message formatting, streaming normalization, tool schema adaptation,\n * thinking config, context management, and output token limits.\n *\n * Config types (ThinkingConfig, ContextManagementConfig, CompactionConfig) are\n * defined in shared/agent-core.ts and re-exported here so adapters can import\n * from a single location without creating shared→server circular dependencies.\n */\n\nimport type http from \"node:http\";\nimport type { ProviderCapabilities } from \"../lib/provider-capabilities.js\";\n\n// Re-export config types from shared layer (single source of truth)\nexport type {\n ThinkingConfig,\n ContextManagementConfig,\n CompactionConfig,\n ToolChoice,\n} from \"../../shared/agent-core.js\";\n\n// Re-export ProviderCapabilities for convenience\nexport type { ProviderCapabilities } from \"../lib/provider-capabilities.js\";\n\n// ============================================================================\n// NORMALIZED STREAM EVENT (for future normalized streaming pipeline)\n// ============================================================================\n\nexport interface NormalizedStreamEvent {\n type:\n | \"text\"\n | \"tool_use_start\"\n | \"tool_use_delta\"\n | \"tool_use_end\"\n | \"thinking\"\n | \"usage\"\n | \"done\"\n | \"error\";\n /** Text delta content */\n text?: string;\n /** Tool use fields */\n toolId?: string;\n toolName?: string;\n toolInput?: string;\n /** Usage data */\n usage?: {\n inputTokens: number;\n outputTokens: number;\n cacheReadTokens: number;\n cacheCreationTokens: number;\n };\n /** Error message */\n error?: string;\n}\n\n// ============================================================================\n// PROVIDER STREAM CONFIG (request body → adapter)\n// ============================================================================\n\nexport interface ProviderStreamConfig {\n model: string;\n messages: any[];\n system: any;\n tools?: any[];\n max_tokens: number;\n temperature?: number;\n stream?: boolean;\n betas?: string[];\n context_management?: any;\n thinking?: any;\n tool_choice?: import(\"../../shared/agent-core.js\").ToolChoice;\n storeId?: string;\n /** Source documents for Anthropic Citations API — enables cite content blocks in responses */\n documents?: any[];\n}\n\n// ============================================================================\n// THINKING CONFIG RESULT (returned by adapter getThinkingConfig)\n// ============================================================================\n\nexport interface ThinkingConfigResult {\n thinking: import(\"../../shared/agent-core.js\").ThinkingConfig;\n beta: string;\n}\n\n// ============================================================================\n// PROVIDER ADAPTER INTERFACE\n// ============================================================================\n\nexport interface ProviderAdapter {\n /** Provider identifier: \"anthropic\" | \"bedrock\" | \"gemini\" | \"openai\" */\n name: string;\n\n /**\n * Handle streaming (or non-streaming) proxy request.\n * Writes SSE events to res, converting from native provider format\n * to Anthropic-compatible SSE where applicable.\n */\n handleStream(\n res: http.ServerResponse,\n config: ProviderStreamConfig,\n corsHeaders: Record<string, string>,\n ): Promise<void>;\n\n /**\n * Returns thinking configuration for the given model.\n * Each provider handles thinking differently:\n * - Anthropic: adaptive/enabled with beta strings\n * - Gemini: always-on for 2.5+/3.x\n * - OpenAI: reasoning models have built-in reasoning\n * - Bedrock: same as Anthropic\n */\n getThinkingConfig(model: string, enabled: boolean): ThinkingConfigResult;\n\n /**\n * Returns max output tokens for the given model.\n * If agentMax is provided, it's capped at the model's maximum.\n */\n getMaxOutputTokens(model: string, agentMax?: number): number;\n\n /**\n * Returns context management configuration (betas + edits) for the given model.\n * Non-Anthropic providers return empty config.\n */\n getContextManagement(model: string): import(\"../../shared/agent-core.js\").ContextManagementConfig;\n\n /**\n * Returns compaction configuration for the provider.\n * Controls when/how context compaction is triggered.\n */\n getCompactionConfig(model: string): import(\"../../shared/agent-core.js\").CompactionConfig;\n\n /**\n * Returns the static capability matrix for this provider.\n * Used for pre-flight checks and capability-aware routing/failover.\n */\n getCapabilities(): ProviderCapabilities;\n}\n"],"mappings":"","ignoreList":[]}
|