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":"ChatInput.js","names":["useState","useEffect","useRef","Box","Text","useStdin","readFileSync","existsSync","statSync","basename","extname","colors","loadKeybindings","bindingToControlChar","SlashMenu","SLASH_COMMANDS","_SLASH_COMMANDS","getFilteredSelectableCount","getCommandAtIndex","getCategoryCount","getCategoryCommandCount","getCategoryCommand","getCategoryLabel","getCategoryColor","jsx","_jsx","jsxs","_jsxs","IMAGE_EXTENSIONS","MAX_IMAGE_SIZE","MAX_DISPLAY_LINES","CONTEXT_TYPES","CONTEXT_COLORS","product","customer","order","inventory","media","document","location","parseWhaleContext","text","trimmed","trim","startsWith","endsWith","obj","JSON","parse","id","type","includes","title","sourceApp","contextToBlock","ctx","lines","push","subtitle","data","key","value","Object","entries","sort","a","b","localeCompare","join","isImagePath","p","normalizePath","ext","toLowerCase","raw","decodeURIComponent","replace","isFilePath","isFile","loadImage","filePath","mediaType","stat","size","path","name","base64","toString","getCursorLineCol","cursor","pos","split","i","length","line","col","ChatInput","onSubmit","onCommand","disabled","agentName","onInterrupt","stdin","inputRef","displayValue","setDisplayValue","displayCursor","setDisplayCursor","onSubmitRef","onCommandRef","onInterruptRef","disabledRef","current","queued","setQueued","queuedRef","prevDisabledRef","handleSubmit","menuMode","setMenuMode","menuModeRef","menuFilter","setMenuFilter","menuFilterRef","menuIndex","setMenuIndex","menuIndexRef","images","setImages","imagesRef","files","setFiles","filesRef","contextItems","setContextItems","contextItemsRef","selectedCategory","setSelectedCategory","selectedCategoryRef","setSelectedCategorySync","val","historyRef","historyIndexRef","savedInputRef","MAX_HISTORY","isPasting","pasteBuffer","pastedText","setPastedText","pastedTextRef","setMenuModeSync","setMenuFilterSync","setMenuIndexSync","process","stdout","write","update","processPaste","clean","some","c","prev","map","l","filter","Boolean","every","newImages","img","newFiles","pasteLines","cur","newValue","slice","typed","paste","imgs","fls","ctxs","contextPrefix","filePrefix","f","body","fullText","shift","undefined","onData","str","_kb","exitChar","exit","expandChar","toggle_expand","thinkingChar","toggle_thinking","Math","min","max","curLine","curCol","targetLine","targetCol","newCursor","charCodeAt","codePoints","hasFilter","inCategory","cmd","count","catIdx","clear_line","delete_word","before","match","len","home","newIdx","hist","on","off","disabledLines","dCursorLine","dCursorCol","flexDirection","children","color","quaternary","bold","wrap","dim","inverse","warning","isCursorOnLine","marginLeft","promptLine","brand","catLabel","catColor","tertiary","hint","selectedIndex","cursorLine","cursorCol","isTruncated","visibleLines","secondary","indigo","purple","isRealLine"],"sources":["../../../src/cli/chat/ChatInput.tsx"],"sourcesContent":["/**\n * ChatInput — Custom input with bracketed paste + image attachments\n *\n * Replaces ink-text-input with raw stdin handling to fix:\n * - Paste losing content on enter (newlines in paste triggered submit)\n * - Multi-line paste mangled/unformatted\n * - No drag-drop image support\n *\n * Features:\n * - Bracketed paste mode — clean multi-line paste\n * - Drag-drop images — detects image file paths, attaches as chips\n * - Image chips above input like Claude Code: [image1.png] [image2.jpg]\n * - Backspace on empty input removes last image\n * - Slash command menu preserved\n * - Multi-line input with ⎸ continuation markers\n */\n\nimport { useState, useEffect, useRef } from \"react\";\nimport { Box, Text, useStdin } from \"ink\";\nimport { readFileSync, existsSync, statSync } from \"fs\";\nimport { basename, extname } from \"path\";\nimport { colors } from \"../shared/Theme.js\";\nimport { loadKeybindings, bindingToControlChar } from \"../services/keybinding-manager.js\";\nimport { SlashMenu, SLASH_COMMANDS as _SLASH_COMMANDS, getFilteredSelectableCount, getCommandAtIndex, getCategoryCount, getCategoryCommandCount, getCategoryCommand, getCategoryLabel, getCategoryColor } from \"./SlashMenu.js\";\n\n// ── Types ──\n\nexport interface ImageAttachment {\n path: string;\n name: string;\n base64: string;\n mediaType: string;\n}\n\nexport interface FileAttachment {\n path: string;\n name: string;\n}\n\nexport interface ContextAttachment {\n id: string;\n type: string;\n title: string;\n subtitle?: string;\n icon: string;\n sourceApp: string;\n data: Record<string, unknown>;\n timestamp: string;\n}\n\n// Re-export for consumers (e.g. useSlashCommands)\nexport type { SlashCommand } from \"./SlashMenu.js\";\nexport const SLASH_COMMANDS = _SLASH_COMMANDS;\n\n// ── Constants ──\n\nconst IMAGE_EXTENSIONS: Record<string, string> = {\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".gif\": \"image/gif\",\n \".webp\": \"image/webp\",\n};\n\nconst MAX_IMAGE_SIZE = 20 * 1024 * 1024; // 20MB\nconst MAX_DISPLAY_LINES = 8;\n\n// ── Helpers ──\n\nconst CONTEXT_TYPES = [\"product\", \"customer\", \"order\", \"inventory\", \"media\", \"document\", \"location\"];\nconst CONTEXT_COLORS: Record<string, string> = {\n product: \"blue\", customer: \"#a855f7\", order: \"green\",\n inventory: \"#f97316\", media: \"#ec4899\", document: \"cyan\", location: \"yellow\",\n};\n\n/** Detect if pasted text is a valid WhaleContextItem JSON object */\nfunction parseWhaleContext(text: string): ContextAttachment | null {\n const trimmed = text.trim();\n if (!trimmed.startsWith(\"{\") || !trimmed.endsWith(\"}\")) return null;\n try {\n const obj = JSON.parse(trimmed);\n if (obj && typeof obj.id === \"string\" && typeof obj.type === \"string\" &&\n CONTEXT_TYPES.includes(obj.type) && typeof obj.title === \"string\" &&\n typeof obj.sourceApp === \"string\") {\n return obj as ContextAttachment;\n }\n } catch { /* not JSON */ }\n return null;\n}\n\n/** Format a context attachment into an XML context block for AI prompt */\nfunction contextToBlock(ctx: ContextAttachment): string {\n const lines: string[] = [];\n lines.push(`<context type=\"${ctx.type}\" source=\"${ctx.sourceApp}\">`);\n lines.push(` ${ctx.title}`);\n if (ctx.subtitle) lines.push(` ${ctx.subtitle}`);\n if (ctx.data) {\n for (const [key, value] of Object.entries(ctx.data).sort(([a], [b]) => a.localeCompare(b))) {\n lines.push(` ${key}: ${value}`);\n }\n }\n lines.push(\"</context>\");\n return lines.join(\"\\n\");\n}\n\nfunction isImagePath(text: string): boolean {\n const p = normalizePath(text);\n if (!p || p.includes(\"\\n\")) return false;\n const ext = extname(p).toLowerCase();\n return ext in IMAGE_EXTENSIONS && existsSync(p);\n}\n\n/** Normalize a terminal-pasted path (handles escapes, file:// URLs, quotes) */\nfunction normalizePath(raw: string): string {\n let p = raw.trim();\n // Strip file:// URL prefix + percent-decode\n if (p.startsWith(\"file://\")) {\n p = decodeURIComponent(p.replace(/^file:\\/\\//, \"\"));\n }\n // Strip surrounding quotes\n p = p.replace(/^['\"]|['\"]$/g, \"\");\n // Unescape backslash-escaped characters (spaces, parens, etc.)\n p = p.replace(/\\\\(.)/g, \"$1\");\n return p;\n}\n\nfunction isFilePath(text: string): boolean {\n const p = normalizePath(text);\n if (!p || p.includes(\"\\n\")) return false;\n // Skip image paths — handled separately\n const ext = extname(p).toLowerCase();\n if (ext in IMAGE_EXTENSIONS) return false;\n try { return existsSync(p) && statSync(p).isFile(); } catch { return false; }\n}\n\nfunction loadImage(filePath: string): ImageAttachment | null {\n try {\n const p = normalizePath(filePath);\n const ext = extname(p).toLowerCase();\n const mediaType = IMAGE_EXTENSIONS[ext];\n if (!mediaType) return null;\n const stat = statSync(p);\n if (stat.size > MAX_IMAGE_SIZE) return null;\n const data = readFileSync(p);\n return { path: p, name: basename(p), base64: data.toString(\"base64\"), mediaType };\n } catch {\n return null;\n }\n}\n\nfunction getCursorLineCol(text: string, cursor: number): { line: number; col: number } {\n let pos = 0;\n const lines = text.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n if (cursor <= pos + lines[i].length) {\n return { line: i, col: cursor - pos };\n }\n pos += lines[i].length + 1;\n }\n return { line: lines.length - 1, col: lines[lines.length - 1].length };\n}\n\n// ── Props ──\n\ninterface ChatInputProps {\n onSubmit: (message: string, images?: ImageAttachment[]) => void;\n onCommand: (command: string) => void;\n disabled: boolean;\n agentName?: string;\n onInterrupt?: () => void;\n}\n\n// ── Component ──\n\nexport function ChatInput({ onSubmit, onCommand, disabled, agentName, onInterrupt }: ChatInputProps) {\n const { stdin } = useStdin();\n\n // Input state — ref for synchronous handler access, state for render\n const inputRef = useRef({ value: \"\", cursor: 0 });\n const [displayValue, setDisplayValue] = useState(\"\");\n const [displayCursor, setDisplayCursor] = useState(0);\n\n // Stable refs for callbacks — prevents stale closures in stdin handler\n const onSubmitRef = useRef(onSubmit);\n const onCommandRef = useRef(onCommand);\n const onInterruptRef = useRef(onInterrupt);\n const disabledRef = useRef(disabled);\n useEffect(() => { onSubmitRef.current = onSubmit; }, [onSubmit]);\n useEffect(() => { onCommandRef.current = onCommand; }, [onCommand]);\n useEffect(() => { onInterruptRef.current = onInterrupt; }, [onInterrupt]);\n useEffect(() => { disabledRef.current = disabled; }, [disabled]);\n\n // Queued message — typed during streaming, auto-submitted when streaming ends\n const [queued, setQueued] = useState(false);\n const queuedRef = useRef(false);\n\n // Auto-submit queued input when streaming ends (disabled goes from true → false)\n const prevDisabledRef = useRef(disabled);\n useEffect(() => {\n if (prevDisabledRef.current && !disabled && queuedRef.current) {\n // Streaming just ended and we have queued input — submit it\n queuedRef.current = false;\n setQueued(false);\n handleSubmit();\n }\n prevDisabledRef.current = disabled;\n }, [disabled]);\n\n // Mode & attachments\n const [menuMode, setMenuMode] = useState(false);\n const menuModeRef = useRef(false);\n const [menuFilter, setMenuFilter] = useState(\"\");\n const menuFilterRef = useRef(\"\");\n const [menuIndex, setMenuIndex] = useState(0);\n const menuIndexRef = useRef(0);\n const [images, setImages] = useState<ImageAttachment[]>([]);\n const imagesRef = useRef<ImageAttachment[]>([]);\n const [files, setFiles] = useState<FileAttachment[]>([]);\n const filesRef = useRef<FileAttachment[]>([]);\n const [contextItems, setContextItems] = useState<ContextAttachment[]>([]);\n const contextItemsRef = useRef<ContextAttachment[]>([]);\n\n // Two-level menu: null = Level 1 (categories), number = Level 2 (drilled into that category)\n const [selectedCategory, setSelectedCategory] = useState<number | null>(null);\n const selectedCategoryRef = useRef<number | null>(null);\n function setSelectedCategorySync(val: number | null) {\n selectedCategoryRef.current = val;\n setSelectedCategory(val);\n }\n\n // Input history (up/down arrow recall)\n const historyRef = useRef<string[]>([]);\n const historyIndexRef = useRef(-1);\n const savedInputRef = useRef(\"\");\n const MAX_HISTORY = 50;\n\n // Paste tracking\n const isPasting = useRef(false);\n const pasteBuffer = useRef(\"\");\n\n // Multi-line paste — stored separately, displayed as chip\n const [pastedText, setPastedText] = useState<string | null>(null);\n const pastedTextRef = useRef<string | null>(null);\n\n // Sync refs\n useEffect(() => { imagesRef.current = images; }, [images]);\n useEffect(() => { filesRef.current = files; }, [files]);\n useEffect(() => { contextItemsRef.current = contextItems; }, [contextItems]);\n useEffect(() => { pastedTextRef.current = pastedText; }, [pastedText]);\n // ── Sync helpers: update ref THEN state (fixes race conditions) ──\n function setMenuModeSync(val: boolean) {\n menuModeRef.current = val;\n setMenuMode(val);\n }\n function setMenuFilterSync(val: string) {\n menuFilterRef.current = val;\n setMenuFilter(val);\n }\n function setMenuIndexSync(val: number) {\n menuIndexRef.current = val;\n setMenuIndex(val);\n }\n\n // ── Enable bracketed paste mode ──\n useEffect(() => {\n process.stdout.write(\"\\x1b[?2004h\");\n return () => { process.stdout.write(\"\\x1b[?2004l\"); };\n }, []);\n\n // ── Update helper ──\n function update(value: string, cursor: number) {\n inputRef.current = { value, cursor };\n setDisplayValue(value);\n setDisplayCursor(cursor);\n }\n\n // ── Process paste content ──\n function processPaste(text: string) {\n const clean = text.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n\n // Check for WhaleContext JSON → attach as context chip\n const ctx = parseWhaleContext(clean);\n if (ctx) {\n // Avoid duplicates\n if (!contextItemsRef.current.some(c => c.id === ctx.id)) {\n setContextItems(prev => [...prev, ctx]);\n }\n return;\n }\n\n // Check if ALL non-empty lines are image paths → attach them\n const lines = clean.split(\"\\n\").map(l => l.trim()).filter(Boolean);\n if (lines.length > 0 && lines.every(l => isImagePath(l))) {\n const newImages: ImageAttachment[] = [];\n for (const line of lines) {\n const img = loadImage(line);\n if (img) newImages.push(img);\n }\n if (newImages.length > 0) {\n setImages(prev => [...prev, ...newImages]);\n return;\n }\n }\n\n // Check for non-image file paths → attach as file chips\n if (lines.length > 0 && lines.length <= 4 && lines.every(l => isFilePath(l))) {\n const newFiles: FileAttachment[] = lines.map(l => {\n const p = normalizePath(l);\n return { path: p, name: basename(p) };\n });\n setFiles(prev => [...prev, ...newFiles]);\n return;\n }\n\n // Slash command pasted directly (must look like /word, not an absolute path)\n if (clean.startsWith(\"/\") && !clean.includes(\"\\n\") && !clean.includes(\"/\", 1) && inputRef.current.value === \"\") {\n onCommandRef.current(clean.trim());\n update(\"\", 0);\n return;\n }\n\n // Multi-line paste → store as chip, don't spam input\n const pasteLines = clean.split(\"\\n\");\n if (pasteLines.length >= 4) {\n setPastedText(clean);\n return;\n }\n\n // Short paste — insert inline as before\n const { value: val, cursor: cur } = inputRef.current;\n const newValue = val.slice(0, cur) + clean + val.slice(cur);\n update(newValue, cur + clean.length);\n }\n\n // ── Handle submit ──\n function handleSubmit() {\n const typed = inputRef.current.value.trim();\n const paste = pastedTextRef.current;\n const imgs = imagesRef.current;\n const fls = filesRef.current;\n const ctxs = contextItemsRef.current;\n\n if (!typed && !paste && imgs.length === 0 && fls.length === 0 && ctxs.length === 0) return;\n\n // Slash command — must start with / and NOT contain a second /\n // (prevents file paths like /Users/whale/file.txt from being misidentified)\n if (typed.startsWith(\"/\") && !typed.includes(\"/\", 1) && !paste && imgs.length === 0 && fls.length === 0 && ctxs.length === 0) {\n update(\"\", 0);\n onCommandRef.current(typed);\n return;\n }\n\n // Build context blocks prefix\n const contextPrefix = ctxs.length > 0\n ? ctxs.map(c => contextToBlock(c)).join(\"\\n\\n\") + \"\\n\\n\"\n : \"\";\n\n // Build file context prefix\n const filePrefix = fls.length > 0\n ? fls.map(f => f.path).join(\"\\n\") + \"\\n\\n\"\n : \"\";\n\n // Combine context + file prefix + typed text + pasted content\n const body = paste\n ? (typed ? `${typed}\\n\\n${paste}` : paste)\n : (typed || (ctxs.length > 0 ? \"Tell me about this\" : \"\"));\n const fullText = contextPrefix + filePrefix + body;\n\n // Record in history\n if (fullText.trim()) {\n historyRef.current.push(fullText.trim());\n if (historyRef.current.length > MAX_HISTORY) historyRef.current.shift();\n }\n historyIndexRef.current = -1;\n\n onSubmitRef.current(fullText, imgs.length > 0 ? imgs : undefined);\n update(\"\", 0);\n setImages([]);\n setFiles([]);\n setContextItems([]);\n setPastedText(null);\n }\n\n // ── Raw stdin handler (handles both normal input and menu mode) ──\n useEffect(() => {\n if (!stdin) return;\n\n const onData = (data: Buffer) => {\n const str = data.toString(\"utf-8\");\n\n // ══════════════════════════════════════════════\n // DISABLED MODE — accept typing, block commands, handle Esc\n // ══════════════════════════════════════════════\n if (disabledRef.current) {\n // Escape → interrupt streaming\n if (str === \"\\x1b\") {\n onInterruptRef.current?.();\n return;\n }\n\n // Control chars handled by ChatApp (exit, expand, thinking toggle)\n const _kb = loadKeybindings();\n const exitChar = bindingToControlChar(_kb.exit);\n const expandChar = bindingToControlChar(_kb.toggle_expand);\n const thinkingChar = bindingToControlChar(_kb.toggle_thinking);\n if (str === exitChar || str === expandChar || str === thinkingChar) return;\n\n // Arrow keys — cursor movement within buffer while disabled\n if (str.startsWith(\"\\x1b[\")) {\n const { value: val, cursor: cur } = inputRef.current;\n if (str === \"\\x1b[C\") { // Right\n update(val, Math.min(cur + 1, val.length));\n } else if (str === \"\\x1b[D\") { // Left\n update(val, Math.max(cur - 1, 0));\n } else if (str === \"\\x1b[A\" || str === \"\\x1b[B\") { // Up/Down\n const lines = val.split(\"\\n\");\n if (lines.length > 1) {\n const { line: curLine, col: curCol } = getCursorLineCol(val, cur);\n const targetLine = str === \"\\x1b[A\"\n ? Math.max(0, curLine - 1)\n : Math.min(lines.length - 1, curLine + 1);\n if (targetLine !== curLine) {\n const targetCol = Math.min(curCol, lines[targetLine].length);\n let newCursor = 0;\n for (let i = 0; i < targetLine; i++) newCursor += lines[i].length + 1;\n newCursor += targetCol;\n update(val, newCursor);\n }\n }\n } else if (str === \"\\x1b[H\" || str === \"\\x1b[1~\") { // Home\n update(val, 0);\n } else if (str === \"\\x1b[F\" || str === \"\\x1b[4~\") { // End\n update(val, val.length);\n }\n return;\n }\n\n // Bracketed paste while disabled — accept into buffer\n if (str.includes(\"\\x1b[200~\")) {\n isPasting.current = true;\n let text = str.replace(/\\x1b\\[200~/g, \"\").replace(/\\x1b\\[201~/g, \"\");\n pasteBuffer.current += text;\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n }\n return;\n }\n if (isPasting.current) {\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n pasteBuffer.current += str.replace(/\\x1b\\[201~/g, \"\");\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n } else {\n pasteBuffer.current += str;\n }\n return;\n }\n\n // Enter → queue the current input for auto-submit\n if (str === \"\\r\" || str === \"\\n\") {\n const typed = inputRef.current.value.trim();\n if (typed) {\n queuedRef.current = true;\n setQueued(true);\n }\n return;\n }\n\n // Backspace\n if (str === \"\\x7f\" || str === \"\\b\") {\n const { value: val, cursor: cur } = inputRef.current;\n if (cur > 0) {\n update(val.slice(0, cur - 1) + val.slice(cur), cur - 1);\n // Un-queue if editing\n if (queuedRef.current) { queuedRef.current = false; setQueued(false); }\n }\n return;\n }\n\n // Slash — block menu mode while streaming\n if (str === \"/\" && inputRef.current.value === \"\") return;\n\n // Printable char — type into buffer\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n const { value: val, cursor: cur } = inputRef.current;\n update(val.slice(0, cur) + str + val.slice(cur), cur + 1);\n // Un-queue if editing after queuing\n if (queuedRef.current) { queuedRef.current = false; setQueued(false); }\n return;\n }\n\n // Multi-character non-escape (unbracketted paste)\n if (str.length > 1 && !str.startsWith(\"\\x1b\")) {\n const codePoints = [...str];\n if (codePoints.length === 1) {\n const { value: val, cursor: cur } = inputRef.current;\n update(val.slice(0, cur) + str + val.slice(cur), cur + str.length);\n } else {\n processPaste(str);\n }\n if (queuedRef.current) { queuedRef.current = false; setQueued(false); }\n return;\n }\n\n return;\n }\n\n // ══════════════════════════════════════════════\n // MENU MODE — two-level navigation\n // ══════════════════════════════════════════════\n if (menuModeRef.current) {\n const hasFilter = menuFilterRef.current.length > 0;\n const inCategory = selectedCategoryRef.current !== null;\n\n // Escape or Ctrl+C → dismiss menu entirely\n if (str === \"\\x1b\" || str === \"\\x03\") {\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n return;\n }\n\n // Tab → no-op\n if (str === \"\\t\") return;\n\n // ── Filter mode (has filter text) ──\n if (hasFilter) {\n if (str === \"\\r\" || str === \"\\n\") {\n const cmd = getCommandAtIndex(menuFilterRef.current, menuIndexRef.current);\n if (cmd) {\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n onCommandRef.current(cmd.name);\n }\n return;\n }\n if (str === \"\\x1b[A\") {\n setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));\n return;\n }\n if (str === \"\\x1b[B\") {\n const count = getFilteredSelectableCount(menuFilterRef.current);\n setMenuIndexSync(Math.min(count - 1, menuIndexRef.current + 1));\n return;\n }\n if (str === \"\\x7f\" || str === \"\\b\") {\n const f = menuFilterRef.current;\n if (f.length > 1) {\n setMenuFilterSync(f.slice(0, -1));\n setMenuIndexSync(0);\n } else {\n // Clearing filter → back to Level 1\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n }\n return;\n }\n if (str.startsWith(\"\\x1b\")) return;\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n setMenuFilterSync(menuFilterRef.current + str);\n setMenuIndexSync(0);\n return;\n }\n return;\n }\n\n // ── Level 2: inside a category ──\n if (inCategory) {\n const catIdx = selectedCategoryRef.current!;\n if (str === \"\\r\" || str === \"\\n\") {\n const cmd = getCategoryCommand(catIdx, menuIndexRef.current);\n if (cmd) {\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n onCommandRef.current(cmd.name);\n }\n return;\n }\n if (str === \"\\x1b[A\") {\n setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));\n return;\n }\n if (str === \"\\x1b[B\") {\n const count = getCategoryCommandCount(catIdx);\n setMenuIndexSync(Math.min(count - 1, menuIndexRef.current + 1));\n return;\n }\n // Left arrow or Backspace → back to Level 1\n if (str === \"\\x1b[D\" || str === \"\\x7f\" || str === \"\\b\") {\n setMenuIndexSync(catIdx); // restore highlight to the category we were in\n setSelectedCategorySync(null);\n return;\n }\n if (str.startsWith(\"\\x1b\")) return;\n // Printable → switch to filter mode\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n setSelectedCategorySync(null);\n setMenuFilterSync(str);\n setMenuIndexSync(0);\n return;\n }\n return;\n }\n\n // ── Level 1: category list ──\n if (str === \"\\r\" || str === \"\\n\" || str === \"\\x1b[C\") {\n // Enter or Right → drill into selected category\n const catIdx = menuIndexRef.current;\n if (catIdx >= 0 && catIdx < getCategoryCount()) {\n setSelectedCategorySync(catIdx);\n setMenuIndexSync(0);\n }\n return;\n }\n if (str === \"\\x1b[A\") {\n setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));\n return;\n }\n if (str === \"\\x1b[B\") {\n setMenuIndexSync(Math.min(getCategoryCount() - 1, menuIndexRef.current + 1));\n return;\n }\n if (str === \"\\x7f\" || str === \"\\b\") {\n // Backspace on Level 1 → dismiss menu\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n return;\n }\n if (str.startsWith(\"\\x1b\")) return;\n // Printable → switch to filter mode\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n setMenuFilterSync(str);\n setMenuIndexSync(0);\n return;\n }\n\n return;\n }\n\n // ══════════════════════════════════════════════\n // NORMAL INPUT MODE\n // ══════════════════════════════════════════════\n\n // ── Bracketed paste detection ──\n if (str.includes(\"\\x1b[200~\")) {\n isPasting.current = true;\n let text = str.replace(/\\x1b\\[200~/g, \"\").replace(/\\x1b\\[201~/g, \"\");\n pasteBuffer.current += text;\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n }\n return;\n }\n\n if (isPasting.current) {\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n pasteBuffer.current += str.replace(/\\x1b\\[201~/g, \"\");\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n } else {\n pasteBuffer.current += str;\n }\n return;\n }\n\n // ── Control chars handled by ChatApp (keybinding-aware) ──\n const _kb = loadKeybindings();\n const exitChar = bindingToControlChar(_kb.exit);\n const expandChar = bindingToControlChar(_kb.toggle_expand);\n const thinkingChar = bindingToControlChar(_kb.toggle_thinking);\n if (str === exitChar || str === expandChar || str === thinkingChar) return;\n\n // ── Enter ──\n if (str === \"\\r\" || str === \"\\n\") {\n handleSubmit();\n return;\n }\n\n // ── Tab ── (no-op in input)\n if (str === \"\\t\") return;\n\n // ── Backspace ──\n if (str === \"\\x7f\" || str === \"\\b\") {\n const { value: val, cursor: cur } = inputRef.current;\n if (cur > 0) {\n update(val.slice(0, cur - 1) + val.slice(cur), cur - 1);\n } else if (val === \"\") {\n // Empty input + backspace → remove paste chip, then context, then files, then images\n if (pastedTextRef.current) {\n setPastedText(null);\n } else if (contextItemsRef.current.length > 0) {\n setContextItems(prev => prev.slice(0, -1));\n } else if (filesRef.current.length > 0) {\n setFiles(prev => prev.slice(0, -1));\n } else if (imagesRef.current.length > 0) {\n setImages(prev => prev.slice(0, -1));\n }\n }\n return;\n }\n\n // ── Clear line (default: Ctrl+U) ──\n if (str === bindingToControlChar(_kb.clear_line)) {\n update(\"\", 0);\n setImages([]);\n setFiles([]);\n setPastedText(null);\n return;\n }\n\n // ── Delete word (default: Ctrl+W) ──\n if (str === bindingToControlChar(_kb.delete_word)) {\n const { value: val, cursor: cur } = inputRef.current;\n const before = val.slice(0, cur);\n const match = before.match(/\\S+\\s*$/);\n if (match) {\n const len = match[0].length;\n update(val.slice(0, cur - len) + val.slice(cur), cur - len);\n }\n return;\n }\n\n // ── Home (default: Ctrl+A) ──\n if (str === bindingToControlChar(_kb.home)) {\n update(inputRef.current.value, 0);\n return;\n }\n\n // ── Escape sequences ──\n if (str.startsWith(\"\\x1b[\")) {\n const { value: val, cursor: cur } = inputRef.current;\n\n if (str === \"\\x1b[C\") { // Right\n update(val, Math.min(cur + 1, val.length));\n } else if (str === \"\\x1b[D\") { // Left\n update(val, Math.max(cur - 1, 0));\n } else if (str === \"\\x1b[H\" || str === \"\\x1b[1~\") { // Home\n update(val, 0);\n } else if (str === \"\\x1b[F\" || str === \"\\x1b[4~\") { // End\n update(val, val.length);\n } else if (str === \"\\x1b[3~\") { // Delete\n if (cur < val.length) {\n update(val.slice(0, cur) + val.slice(cur + 1), cur);\n }\n } else if (str === \"\\x1b[A\" || str === \"\\x1b[B\") { // Up/Down\n const lines = val.split(\"\\n\");\n if (lines.length > 1) {\n // Multi-line: navigate lines\n const { line: curLine, col: curCol } = getCursorLineCol(val, cur);\n const targetLine = str === \"\\x1b[A\"\n ? Math.max(0, curLine - 1)\n : Math.min(lines.length - 1, curLine + 1);\n if (targetLine !== curLine) {\n const targetCol = Math.min(curCol, lines[targetLine].length);\n let newCursor = 0;\n for (let i = 0; i < targetLine; i++) newCursor += lines[i].length + 1;\n newCursor += targetCol;\n update(val, newCursor);\n }\n } else if (str === \"\\x1b[A\") {\n // Up arrow — history recall\n if (historyRef.current.length === 0) { /* no history */ }\n else {\n if (historyIndexRef.current === -1) savedInputRef.current = val;\n const newIdx = Math.min(historyIndexRef.current + 1, historyRef.current.length - 1);\n historyIndexRef.current = newIdx;\n const hist = historyRef.current[historyRef.current.length - 1 - newIdx];\n update(hist, hist.length);\n }\n } else {\n // Down arrow — forward in history\n if (historyIndexRef.current <= -1) { /* already at current */ }\n else {\n const newIdx = historyIndexRef.current - 1;\n historyIndexRef.current = newIdx;\n if (newIdx < 0) {\n update(savedInputRef.current, savedInputRef.current.length);\n } else {\n const hist = historyRef.current[historyRef.current.length - 1 - newIdx];\n update(hist, hist.length);\n }\n }\n }\n }\n // Ignore unrecognized escape sequences\n return;\n }\n\n // ── Standalone escape — clear input if non-empty ──\n if (str === \"\\x1b\") {\n const { value } = inputRef.current;\n if (value || filesRef.current.length > 0) {\n update(\"\", 0);\n setImages([]);\n setFiles([]);\n setPastedText(null);\n }\n return;\n }\n\n // ── Multi-character non-escape = paste without brackets ──\n if (str.length > 1 && !str.startsWith(\"\\x1b\")) {\n const codePoints = [...str];\n if (codePoints.length === 1) {\n // Single code point (emoji etc.)\n const { value: val, cursor: cur } = inputRef.current;\n update(val.slice(0, cur) + str + val.slice(cur), cur + str.length);\n } else {\n processPaste(str);\n }\n return;\n }\n\n // ── Single printable character ──\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n const { value: val, cursor: cur } = inputRef.current;\n\n // Slash menu trigger\n if (str === \"/\" && val === \"\") {\n setMenuModeSync(true);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n return;\n }\n\n update(val.slice(0, cur) + str + val.slice(cur), cur + 1);\n }\n };\n\n stdin.on(\"data\", onData);\n return () => { stdin.off(\"data\", onData); };\n }, [stdin]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // ── Render ──\n\n // Disabled — dimmed but visible input (accept typing to queue)\n if (disabled) {\n const disabledLines = displayValue.split(\"\\n\");\n const { line: dCursorLine, col: dCursorCol } = displayValue\n ? getCursorLineCol(displayValue, displayCursor)\n : { line: 0, col: 0 };\n\n return (\n <Box flexDirection=\"column\">\n\n {/* Single-line disabled */}\n {disabledLines.length <= 1 ? (\n <Box>\n <Text color={colors.quaternary} bold>{\"❯ \"}</Text>\n {!displayValue ? (\n <Text color={colors.quaternary} wrap=\"truncate\">\n {queued ? \"queued — will send when done\" : \"type to queue a message...\"}\n </Text>\n ) : (\n <Box>\n <Text color={colors.dim}>\n {displayValue.slice(0, displayCursor)}\n <Text inverse>{displayCursor < displayValue.length ? displayValue[displayCursor] : \" \"}</Text>\n {displayCursor < displayValue.length ? displayValue.slice(displayCursor + 1) : \"\"}\n </Text>\n {queued && <Text color={colors.warning}> [queued]</Text>}\n </Box>\n )}\n </Box>\n ) : (\n /* Multi-line disabled */\n <Box flexDirection=\"column\">\n {disabledLines.map((line, i) => {\n const isCursorOnLine = i === dCursorLine;\n return (\n <Box key={i}>\n <Text color={colors.quaternary} bold>{i === 0 ? \"❯ \" : \"⎸ \"}</Text>\n {isCursorOnLine ? (\n <Text color={colors.dim}>\n {line.slice(0, dCursorCol)}\n <Text inverse>{dCursorCol < line.length ? line[dCursorCol] : \" \"}</Text>\n {dCursorCol < line.length ? line.slice(dCursorCol + 1) : \"\"}\n </Text>\n ) : (\n <Text color={colors.dim}>{line}</Text>\n )}\n </Box>\n );\n })}\n {queued && (\n <Box marginLeft={2}>\n <Text color={colors.warning}>[queued]</Text>\n </Box>\n )}\n </Box>\n )}\n </Box>\n );\n }\n\n // Slash command menu — two-level categorized via SlashMenu component\n if (menuMode) {\n // Prompt line varies by level\n let promptLine: React.ReactNode;\n if (menuFilter) {\n // Filter mode\n promptLine = (\n <Box>\n <Text color={colors.brand} bold>{\"/ \"}</Text>\n <Text>\n {menuFilter}\n <Text inverse>{\" \"}</Text>\n </Text>\n </Box>\n );\n } else if (selectedCategory !== null) {\n // Level 2: show category name\n const catLabel = getCategoryLabel(selectedCategory);\n const catColor = getCategoryColor(selectedCategory);\n promptLine = (\n <Box>\n <Text color={colors.brand} bold>{\"/ \"}</Text>\n <Text color={catColor} bold>{catLabel}</Text>\n <Text color={colors.tertiary}>{\" > \"}</Text>\n <Text inverse>{\" \"}</Text>\n </Box>\n );\n } else {\n // Level 1\n promptLine = (\n <Box>\n <Text color={colors.brand} bold>{\"/ \"}</Text>\n <Text>\n <Text inverse>{\" \"}</Text>\n <Text color={colors.dim}> type to filter</Text>\n </Text>\n </Box>\n );\n }\n\n // Hint line varies by level\n const hint = selectedCategory !== null && !menuFilter\n ? \" \\u2190 back esc dismiss\"\n : \" esc to dismiss\";\n\n return (\n <Box flexDirection=\"column\">\n\n {promptLine}\n <SlashMenu filter={menuFilter} selectedIndex={menuIndex} selectedCategory={selectedCategory} />\n <Text color={colors.quaternary}>{hint}</Text>\n </Box>\n );\n }\n\n // ── Normal input rendering ──\n\n const lines = displayValue.split(\"\\n\");\n const { line: cursorLine, col: cursorCol } = displayValue\n ? getCursorLineCol(displayValue, displayCursor)\n : { line: 0, col: 0 };\n\n // Truncate display for very long pastes\n const isTruncated = lines.length > MAX_DISPLAY_LINES;\n const visibleLines = isTruncated\n ? [...lines.slice(0, MAX_DISPLAY_LINES - 1), `… ${lines.length - MAX_DISPLAY_LINES + 1} more lines`]\n : lines;\n\n return (\n <Box flexDirection=\"column\">\n {/* Attachment chips — context + images + files + pasted text */}\n {(images.length > 0 || files.length > 0 || contextItems.length > 0 || pastedText) && (\n <Box>\n <Text> </Text>\n {contextItems.map((ctx, i) => (\n <Text key={`ctx-${i}`}>\n <Text color={CONTEXT_COLORS[ctx.type] || \"cyan\"}>[</Text>\n <Text color={colors.secondary}>{ctx.type}: {ctx.title}</Text>\n <Text color={CONTEXT_COLORS[ctx.type] || \"cyan\"}>]</Text>\n <Text> </Text>\n </Text>\n ))}\n {images.map((img, i) => (\n <Text key={`img-${i}`}>\n <Text color={colors.indigo}>[</Text>\n <Text color={colors.secondary}>{img.name}</Text>\n <Text color={colors.indigo}>]</Text>\n <Text> </Text>\n </Text>\n ))}\n {files.map((f, i) => (\n <Text key={`file-${i}`}>\n <Text color={colors.purple}>[</Text>\n <Text color={colors.secondary}>{f.name}</Text>\n <Text color={colors.purple}>]</Text>\n <Text> </Text>\n </Text>\n ))}\n {pastedText && (\n <Text>\n <Text color={colors.indigo}>[</Text>\n <Text color={colors.secondary}>pasted {pastedText.split(\"\\n\").length} lines</Text>\n <Text color={colors.indigo}>]</Text>\n </Text>\n )}\n </Box>\n )}\n\n {/* Single-line input */}\n {lines.length <= 1 ? (\n <Box>\n <Text color={colors.brand} bold>{\"❯ \"}</Text>\n {!displayValue ? (\n <Text wrap=\"truncate\">\n <Text inverse> </Text>\n <Text color={colors.dim}>{`Message ${agentName || \"whale\"}, or type / for commands`}</Text>\n </Text>\n ) : (\n <Text>\n {displayValue.slice(0, displayCursor)}\n <Text inverse>{displayCursor < displayValue.length ? displayValue[displayCursor] : \" \"}</Text>\n {displayCursor < displayValue.length ? displayValue.slice(displayCursor + 1) : \"\"}\n </Text>\n )}\n </Box>\n ) : (\n /* Multi-line input */\n <Box flexDirection=\"column\">\n {visibleLines.map((line, i) => {\n const isRealLine = !isTruncated || i < MAX_DISPLAY_LINES - 1;\n const isCursorOnLine = isRealLine && i === cursorLine;\n\n return (\n <Box key={i}>\n <Text color={colors.brand} bold>{i === 0 ? \"❯ \" : \"⎸ \"}</Text>\n {isCursorOnLine ? (\n <Text>\n {line.slice(0, cursorCol)}\n <Text inverse>{cursorCol < line.length ? line[cursorCol] : \" \"}</Text>\n {cursorCol < line.length ? line.slice(cursorCol + 1) : \"\"}\n </Text>\n ) : (\n <Text color={isRealLine ? undefined : colors.tertiary}>{line}</Text>\n )}\n </Box>\n );\n })}\n </Box>\n )}\n </Box>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,20 +1,45 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { c as _c } from "react/compiler-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* MarkdownText — renders markdown as ANSI-styled terminal output
|
|
4
4
|
*/
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
import { Text } from "ink";
|
|
7
7
|
import { renderMarkdown } from "../shared/markdown.js";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
export function MarkdownText(t0) {
|
|
10
|
+
const $ = _c(5);
|
|
11
|
+
const {
|
|
12
|
+
text,
|
|
13
|
+
streaming: t1
|
|
14
|
+
} = t0;
|
|
15
|
+
const streaming = t1 === undefined ? false : t1;
|
|
16
|
+
let rendered = "";
|
|
17
|
+
if (text) {
|
|
18
|
+
try {
|
|
19
|
+
let t2;
|
|
20
|
+
if ($[0] !== streaming || $[1] !== text) {
|
|
21
|
+
t2 = renderMarkdown(text, streaming);
|
|
22
|
+
$[0] = streaming;
|
|
23
|
+
$[1] = text;
|
|
24
|
+
$[2] = t2;
|
|
25
|
+
} else {
|
|
26
|
+
t2 = $[2];
|
|
27
|
+
}
|
|
28
|
+
rendered = t2;
|
|
29
|
+
} catch {
|
|
30
|
+
rendered = text;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
let t2;
|
|
34
|
+
if ($[3] !== rendered) {
|
|
35
|
+
t2 = /*#__PURE__*/_jsx(Text, {
|
|
36
|
+
children: rendered
|
|
37
|
+
});
|
|
38
|
+
$[3] = rendered;
|
|
39
|
+
$[4] = t2;
|
|
40
|
+
} else {
|
|
41
|
+
t2 = $[4];
|
|
42
|
+
}
|
|
43
|
+
return t2;
|
|
20
44
|
}
|
|
45
|
+
//# sourceMappingURL=MarkdownText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownText.js","names":["Text","renderMarkdown","jsx","_jsx","MarkdownText","t0","$","_c","text","streaming","t1","undefined","rendered","t2","children"],"sources":["../../../src/cli/chat/MarkdownText.tsx"],"sourcesContent":["/**\n * MarkdownText — renders markdown as ANSI-styled terminal output\n */\n\nimport { Text } from \"ink\";\nimport { renderMarkdown } from \"../shared/markdown.js\";\n\ninterface MarkdownTextProps {\n text: string;\n /** When true, closes incomplete fences for safe mid-stream display. Default: false. */\n streaming?: boolean;\n}\n\nexport function MarkdownText({ text, streaming = false }: MarkdownTextProps) {\n let rendered = \"\";\n if (text) {\n try {\n rendered = renderMarkdown(text, streaming);\n } catch {\n rendered = text;\n }\n }\n\n return <Text>{rendered}</Text>;\n}\n"],"mappings":";AAAA;AACA;AACA;;AAEA,SAASA,IAAI,QAAQ,KAAK;AAC1B,SAASC,cAAc,QAAQ,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQvD,OAAO,SAAAC,aAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAC,EAAA;EAAsB;IAAAC,IAAA;IAAAC,SAAA,EAAAC;EAAA,IAAAL,EAA8C;EAAtC,MAAAI,SAAA,GAAAC,EAAiB,KAAjBC,SAAiB,GAAjB,KAAiB,GAAjBD,EAAiB;EACpD,IAAAE,QAAA,GAAe,EAAE;EACjB,IAAIJ,IAAI;IACN;MAAA,IAAAK,EAAA;MAAA,IAAAP,CAAA,QAAAG,SAAA,IAAAH,CAAA,QAAAE,IAAA;QACaK,EAAA,GAAAZ,cAAc,CAACO,IAAI,EAAEC,SAAS,CAAC;QAAAH,CAAA,MAAAG,SAAA;QAAAH,CAAA,MAAAE,IAAA;QAAAF,CAAA,MAAAO,EAAA;MAAA;QAAAA,EAAA,GAAAP,CAAA;MAAA;MAA1CM,QAAA,CAAAA,CAAA,CAAWA,EAA+B;IAAlC;MAERA,QAAA,CAAAA,CAAA,CAAWJ,IAAI;IAAP;EACT;EACF,IAAAK,EAAA;EAAA,IAAAP,CAAA,QAAAM,QAAA;IAEMC,EAAA,gBAAAV,IAAA,CAACH,IAAI;MAAAc,QAAA,EAAEF;IAAQ,CAAO,CAAC;IAAAN,CAAA,MAAAM,QAAA;IAAAN,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAAA,OAAvBO,EAAuB;AAAA","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { c as _c } from "react/compiler-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* MemoryManager — interactive memory list with delete
|
|
4
4
|
*
|
|
@@ -7,55 +7,190 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
7
7
|
*
|
|
8
8
|
* Follows StoreSelector pattern (useInput + manual index).
|
|
9
9
|
*/
|
|
10
|
+
|
|
10
11
|
import { useState } from "react";
|
|
11
12
|
import { Box, Text, useInput } from "ink";
|
|
12
13
|
import { colors, symbols } from "../shared/Theme.js";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
if (key.upArrow) {
|
|
37
|
-
setSelectedIndex((prev) => Math.max(0, prev - 1));
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
if (key.downArrow) {
|
|
41
|
-
setSelectedIndex((prev) => Math.min(memories.length - 1, prev + 1));
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
if (input === "d" || input === "D") {
|
|
45
|
-
setConfirmDelete(true);
|
|
46
|
-
return;
|
|
14
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
|
+
export function MemoryManager(t0) {
|
|
16
|
+
const $ = _c(22);
|
|
17
|
+
const {
|
|
18
|
+
memories,
|
|
19
|
+
onDelete,
|
|
20
|
+
onCancel
|
|
21
|
+
} = t0;
|
|
22
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
23
|
+
const [confirmDelete, setConfirmDelete] = useState(false);
|
|
24
|
+
let t1;
|
|
25
|
+
if ($[0] !== confirmDelete || $[1] !== memories.length || $[2] !== onCancel || $[3] !== onDelete || $[4] !== selectedIndex) {
|
|
26
|
+
t1 = (input, key) => {
|
|
27
|
+
if (confirmDelete) {
|
|
28
|
+
if (input === "y" || input === "Y") {
|
|
29
|
+
setConfirmDelete(false);
|
|
30
|
+
onDelete(selectedIndex);
|
|
31
|
+
if (selectedIndex >= memories.length - 1 && selectedIndex > 0) {
|
|
32
|
+
setSelectedIndex(selectedIndex - 1);
|
|
33
|
+
}
|
|
34
|
+
return;
|
|
47
35
|
}
|
|
36
|
+
setConfirmDelete(false);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (key.escape) {
|
|
40
|
+
onCancel();
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (key.upArrow) {
|
|
44
|
+
setSelectedIndex(_temp);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (key.downArrow) {
|
|
48
|
+
setSelectedIndex(prev_0 => Math.min(memories.length - 1, prev_0 + 1));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (input === "d" || input === "D") {
|
|
52
|
+
setConfirmDelete(true);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
$[0] = confirmDelete;
|
|
57
|
+
$[1] = memories.length;
|
|
58
|
+
$[2] = onCancel;
|
|
59
|
+
$[3] = onDelete;
|
|
60
|
+
$[4] = selectedIndex;
|
|
61
|
+
$[5] = t1;
|
|
62
|
+
} else {
|
|
63
|
+
t1 = $[5];
|
|
64
|
+
}
|
|
65
|
+
useInput(t1);
|
|
66
|
+
const termWidth = process.stdout.columns || 80;
|
|
67
|
+
const boxWidth = Math.min(termWidth - 2, 64);
|
|
68
|
+
if (memories.length === 0) {
|
|
69
|
+
let t2;
|
|
70
|
+
if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
|
|
71
|
+
t2 = /*#__PURE__*/_jsxs(Box, {
|
|
72
|
+
flexDirection: "column",
|
|
73
|
+
borderStyle: "round",
|
|
74
|
+
borderColor: colors.border,
|
|
75
|
+
paddingX: 1,
|
|
76
|
+
paddingY: 1,
|
|
77
|
+
width: boxWidth,
|
|
78
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
79
|
+
bold: true,
|
|
80
|
+
color: colors.brand,
|
|
81
|
+
children: "Memories"
|
|
82
|
+
}), /*#__PURE__*/_jsx(Box, {
|
|
83
|
+
height: 1
|
|
84
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
85
|
+
dimColor: true,
|
|
86
|
+
children: "No memories left."
|
|
87
|
+
}), /*#__PURE__*/_jsx(Box, {
|
|
88
|
+
height: 1
|
|
89
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
90
|
+
dimColor: true,
|
|
91
|
+
children: "esc to close"
|
|
92
|
+
})]
|
|
93
|
+
});
|
|
94
|
+
$[6] = t2;
|
|
95
|
+
} else {
|
|
96
|
+
t2 = $[6];
|
|
97
|
+
}
|
|
98
|
+
return t2;
|
|
99
|
+
}
|
|
100
|
+
let t2;
|
|
101
|
+
if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
|
|
102
|
+
t2 = /*#__PURE__*/_jsx(Box, {
|
|
103
|
+
marginBottom: 1,
|
|
104
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
105
|
+
bold: true,
|
|
106
|
+
color: colors.brand,
|
|
107
|
+
children: "Memories"
|
|
108
|
+
})
|
|
48
109
|
});
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
110
|
+
$[7] = t2;
|
|
111
|
+
} else {
|
|
112
|
+
t2 = $[7];
|
|
113
|
+
}
|
|
114
|
+
let t3;
|
|
115
|
+
if ($[8] !== memories || $[9] !== selectedIndex) {
|
|
116
|
+
let t4;
|
|
117
|
+
if ($[11] !== selectedIndex) {
|
|
118
|
+
t4 = (memory, i) => {
|
|
119
|
+
const isSelected = i === selectedIndex;
|
|
120
|
+
const display = memory.length > 50 ? memory.slice(0, 49) + "\u2026" : memory;
|
|
121
|
+
return /*#__PURE__*/_jsxs(Box, {
|
|
122
|
+
children: [/*#__PURE__*/_jsxs(Text, {
|
|
123
|
+
color: isSelected ? colors.brand : colors.quaternary,
|
|
124
|
+
children: [isSelected ? symbols.arrowRight : " ", " "]
|
|
125
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
126
|
+
color: isSelected ? colors.text : colors.secondary,
|
|
127
|
+
bold: isSelected,
|
|
128
|
+
children: display
|
|
129
|
+
})]
|
|
130
|
+
}, `${i}-${memory.slice(0, 20)}`);
|
|
131
|
+
};
|
|
132
|
+
$[11] = selectedIndex;
|
|
133
|
+
$[12] = t4;
|
|
134
|
+
} else {
|
|
135
|
+
t4 = $[12];
|
|
53
136
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
137
|
+
t3 = memories.map(t4);
|
|
138
|
+
$[8] = memories;
|
|
139
|
+
$[9] = selectedIndex;
|
|
140
|
+
$[10] = t3;
|
|
141
|
+
} else {
|
|
142
|
+
t3 = $[10];
|
|
143
|
+
}
|
|
144
|
+
let t4;
|
|
145
|
+
if ($[13] !== t3) {
|
|
146
|
+
t4 = /*#__PURE__*/_jsx(Box, {
|
|
147
|
+
flexDirection: "column",
|
|
148
|
+
children: t3
|
|
149
|
+
});
|
|
150
|
+
$[13] = t3;
|
|
151
|
+
$[14] = t4;
|
|
152
|
+
} else {
|
|
153
|
+
t4 = $[14];
|
|
154
|
+
}
|
|
155
|
+
let t5;
|
|
156
|
+
if ($[15] !== confirmDelete || $[16] !== memories || $[17] !== selectedIndex) {
|
|
157
|
+
t5 = /*#__PURE__*/_jsx(Box, {
|
|
158
|
+
marginTop: 1,
|
|
159
|
+
children: confirmDelete ? /*#__PURE__*/_jsxs(Text, {
|
|
160
|
+
color: colors.warning,
|
|
161
|
+
children: ["Delete \"", memories[selectedIndex]?.slice(0, 30), "\u2026\"? y/n"]
|
|
162
|
+
}) : /*#__PURE__*/_jsxs(Text, {
|
|
163
|
+
dimColor: true,
|
|
164
|
+
children: [symbols.arrowRight, " d delete esc cancel"]
|
|
165
|
+
})
|
|
166
|
+
});
|
|
167
|
+
$[15] = confirmDelete;
|
|
168
|
+
$[16] = memories;
|
|
169
|
+
$[17] = selectedIndex;
|
|
170
|
+
$[18] = t5;
|
|
171
|
+
} else {
|
|
172
|
+
t5 = $[18];
|
|
173
|
+
}
|
|
174
|
+
let t6;
|
|
175
|
+
if ($[19] !== t4 || $[20] !== t5) {
|
|
176
|
+
t6 = /*#__PURE__*/_jsxs(Box, {
|
|
177
|
+
flexDirection: "column",
|
|
178
|
+
borderStyle: "round",
|
|
179
|
+
borderColor: colors.border,
|
|
180
|
+
paddingX: 1,
|
|
181
|
+
paddingY: 1,
|
|
182
|
+
width: boxWidth,
|
|
183
|
+
children: [t2, t4, t5]
|
|
184
|
+
});
|
|
185
|
+
$[19] = t4;
|
|
186
|
+
$[20] = t5;
|
|
187
|
+
$[21] = t6;
|
|
188
|
+
} else {
|
|
189
|
+
t6 = $[21];
|
|
190
|
+
}
|
|
191
|
+
return t6;
|
|
192
|
+
}
|
|
193
|
+
function _temp(prev) {
|
|
194
|
+
return Math.max(0, prev - 1);
|
|
61
195
|
}
|
|
196
|
+
//# sourceMappingURL=MemoryManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryManager.js","names":["useState","Box","Text","useInput","colors","symbols","jsx","_jsx","jsxs","_jsxs","MemoryManager","t0","$","_c","memories","onDelete","onCancel","selectedIndex","setSelectedIndex","confirmDelete","setConfirmDelete","t1","length","input","key","escape","upArrow","_temp","downArrow","prev_0","Math","min","prev","termWidth","process","stdout","columns","boxWidth","t2","Symbol","for","flexDirection","borderStyle","borderColor","border","paddingX","paddingY","children","bold","color","brand","height","dimColor","marginBottom","t3","t4","memory","i","isSelected","display","slice","quaternary","arrowRight","text","secondary","map","t5","marginTop","warning","t6","max"],"sources":["../../../src/cli/chat/MemoryManager.tsx"],"sourcesContent":["/**\n * MemoryManager — interactive memory list with delete\n *\n * Renders a navigable list of remembered facts.\n * Press `d` to delete the selected memory, Esc to cancel.\n *\n * Follows StoreSelector pattern (useInput + manual index).\n */\n\nimport { useState } from \"react\";\nimport { Box, Text, useInput } from \"ink\";\nimport { colors, symbols } from \"../shared/Theme.js\";\n\ninterface MemoryManagerProps {\n memories: string[];\n onDelete: (index: number) => void;\n onCancel: () => void;\n}\n\nexport function MemoryManager({ memories, onDelete, onCancel }: MemoryManagerProps) {\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [confirmDelete, setConfirmDelete] = useState(false);\n\n useInput((input, key) => {\n // Delete confirmation\n if (confirmDelete) {\n if (input === \"y\" || input === \"Y\") {\n setConfirmDelete(false);\n onDelete(selectedIndex);\n // Adjust selection if we deleted the last item\n if (selectedIndex >= memories.length - 1 && selectedIndex > 0) {\n setSelectedIndex(selectedIndex - 1);\n }\n return;\n }\n // Any other key cancels the confirmation\n setConfirmDelete(false);\n return;\n }\n\n if (key.escape) {\n onCancel();\n return;\n }\n if (key.upArrow) {\n setSelectedIndex((prev) => Math.max(0, prev - 1));\n return;\n }\n if (key.downArrow) {\n setSelectedIndex((prev) => Math.min(memories.length - 1, prev + 1));\n return;\n }\n if (input === \"d\" || input === \"D\") {\n setConfirmDelete(true);\n return;\n }\n });\n\n const termWidth = process.stdout.columns || 80;\n const boxWidth = Math.min(termWidth - 2, 64);\n\n if (memories.length === 0) {\n return (\n <Box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={colors.border}\n paddingX={1}\n paddingY={1}\n width={boxWidth}\n >\n <Text bold color={colors.brand}>Memories</Text>\n <Box height={1} />\n <Text dimColor>No memories left.</Text>\n <Box height={1} />\n <Text dimColor>esc to close</Text>\n </Box>\n );\n }\n\n return (\n <Box\n flexDirection=\"column\"\n borderStyle=\"round\"\n borderColor={colors.border}\n paddingX={1}\n paddingY={1}\n width={boxWidth}\n >\n <Box marginBottom={1}>\n <Text bold color={colors.brand}>Memories</Text>\n </Box>\n\n <Box flexDirection=\"column\">\n {memories.map((memory, i) => {\n const isSelected = i === selectedIndex;\n const display = memory.length > 50\n ? memory.slice(0, 49) + \"…\"\n : memory;\n\n return (\n <Box key={`${i}-${memory.slice(0, 20)}`}>\n <Text color={isSelected ? colors.brand : colors.quaternary}>\n {isSelected ? symbols.arrowRight : \" \"}{\" \"}\n </Text>\n <Text\n color={isSelected ? colors.text : colors.secondary}\n bold={isSelected}\n >\n {display}\n </Text>\n </Box>\n );\n })}\n </Box>\n\n <Box marginTop={1}>\n {confirmDelete ? (\n <Text color={colors.warning}>\n Delete \"{memories[selectedIndex]?.slice(0, 30)}…\"? y/n\n </Text>\n ) : (\n <Text dimColor>{symbols.arrowRight} d delete esc cancel</Text>\n )}\n </Box>\n </Box>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* Telemetry footer: tokens, cost estimate, tool count.
|
|
6
6
|
* Minimal Box usage — Text-first for reliable rendering.
|
|
7
7
|
*/
|
|
8
|
-
import React from "react";
|
|
9
8
|
import { type CompletedSubagentInfo } from "./SubagentPanel.js";
|
|
10
9
|
export interface ToolCall {
|
|
11
10
|
name: string;
|
|
@@ -38,8 +37,8 @@ export interface ChatMessage {
|
|
|
38
37
|
cache_creation_tokens?: number;
|
|
39
38
|
};
|
|
40
39
|
}
|
|
41
|
-
export declare
|
|
40
|
+
export declare function CompletedMessage({ msg, index, toolsExpanded }: {
|
|
42
41
|
msg: ChatMessage;
|
|
43
42
|
index: number;
|
|
44
43
|
toolsExpanded: boolean;
|
|
45
|
-
}
|
|
44
|
+
}): import("react/jsx-runtime").JSX.Element;
|