whale-code 6.5.11 → 6.6.0
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/dist/cli/chat/ChatApp.js +7 -11
- package/dist/cli/chat/ChatApp.js.map +1 -1
- package/dist/cli/chat/ChatInput.js +7 -3
- package/dist/cli/chat/ChatInput.js.map +1 -1
- package/dist/cli/chat/MessageList.js +5 -6
- package/dist/cli/chat/MessageList.js.map +1 -1
- package/dist/cli/chat/StatusBar.d.ts +2 -2
- package/dist/cli/chat/StatusBar.js +90 -160
- package/dist/cli/chat/StatusBar.js.map +1 -1
- package/dist/cli/chat/components/LiveArea.js +78 -115
- package/dist/cli/chat/components/LiveArea.js.map +1 -1
- package/dist/cli/chat/components/StaticMessages.js +60 -79
- package/dist/cli/chat/components/StaticMessages.js.map +1 -1
- package/dist/cli/chat/hooks/useAgentLoop.js +45 -37
- package/dist/cli/chat/hooks/useAgentLoop.js.map +1 -1
- package/dist/cli/chat/store.d.ts +12 -0
- package/dist/cli/chat/store.js +19 -0
- package/dist/cli/chat/store.js.map +1 -1
- package/dist/cli/services/agent-loop-tools.js +10 -1
- package/dist/cli/services/agent-loop-tools.js.map +1 -1
- package/dist/cli/services/cli-agent-loop.js +3 -2
- package/dist/cli/services/cli-agent-loop.js.map +1 -1
- package/dist/cli/services/config-store.js +4 -3
- package/dist/cli/services/config-store.js.map +1 -1
- package/dist/cli/services/memory-manager.js +2 -2
- package/dist/cli/services/memory-manager.js.map +1 -1
- package/dist/cli/services/permission-modes.js +14 -10
- package/dist/cli/services/permission-modes.js.map +1 -1
- package/dist/cli/services/session-client.js +2 -1
- package/dist/cli/services/session-client.js.map +1 -1
- package/dist/cli/services/session-persistence.js +14 -6
- package/dist/cli/services/session-persistence.js.map +1 -1
- package/dist/cli/shared/SpinnerSlot.js +4 -1
- package/dist/cli/shared/SpinnerSlot.js.map +1 -1
- package/dist/server/handlers/browser-lifecycle.js +10 -0
- package/dist/server/handlers/browser-lifecycle.js.map +1 -1
- package/dist/server/handlers/browser.js +16 -1
- package/dist/server/handlers/browser.js.map +1 -1
- package/dist/server/handlers/campaigns.js +11 -0
- package/dist/server/handlers/campaigns.js.map +1 -1
- package/dist/server/handlers/catalog-products.js +19 -5
- package/dist/server/handlers/catalog-products.js.map +1 -1
- package/dist/server/handlers/catalog.js +42 -8
- package/dist/server/handlers/catalog.js.map +1 -1
- package/dist/server/handlers/clickhouse.js +4 -4
- package/dist/server/handlers/clickhouse.js.map +1 -1
- package/dist/server/handlers/comms-email.js +70 -8
- package/dist/server/handlers/comms-email.js.map +1 -1
- package/dist/server/handlers/comms.js +63 -21
- package/dist/server/handlers/comms.js.map +1 -1
- package/dist/server/handlers/coupons.js +141 -77
- package/dist/server/handlers/coupons.js.map +1 -1
- package/dist/server/handlers/google-ads.js +280 -8
- package/dist/server/handlers/google-ads.js.map +1 -1
- package/dist/server/handlers/remove-bg.d.ts +33 -0
- package/dist/server/handlers/remove-bg.js +698 -44
- package/dist/server/handlers/remove-bg.js.map +1 -1
- package/dist/server/handlers/supply-chain.js +93 -1
- package/dist/server/handlers/supply-chain.js.map +1 -1
- package/dist/server/handlers/workflow-steps-types.d.ts +1 -1
- package/dist/server/handlers/workflow-steps-types.js +7 -1
- package/dist/server/handlers/workflow-steps-types.js.map +1 -1
- package/dist/server/handlers/workflow-steps.js +1 -1
- package/dist/server/handlers/workflow-steps.js.map +1 -1
- package/dist/server/index.js +122 -29
- package/dist/server/index.js.map +1 -1
- package/dist/server/lib/agent-loop-turn.js +33 -3
- package/dist/server/lib/agent-loop-turn.js.map +1 -1
- package/dist/server/lib/agent-loop-types.d.ts +6 -2
- package/dist/server/lib/agent-loop-types.js +14 -2
- package/dist/server/lib/agent-loop-types.js.map +1 -1
- package/dist/server/lib/clickhouse-client.js +4 -2
- package/dist/server/lib/clickhouse-client.js.map +1 -1
- package/dist/server/lib/code-worker.js +4 -1
- package/dist/server/lib/code-worker.js.map +1 -1
- package/dist/server/providers/anthropic.js +103 -33
- package/dist/server/providers/anthropic.js.map +1 -1
- package/dist/server/server-chat.js +2 -2
- package/dist/server/server-chat.js.map +1 -1
- package/dist/server/server-helpers.d.ts +8 -1
- package/dist/server/server-helpers.js +17 -3
- package/dist/server/server-helpers.js.map +1 -1
- package/dist/server/server-persist.js +34 -21
- package/dist/server/server-persist.js.map +1 -1
- package/dist/server/server-rate-limit.d.ts +0 -1
- package/dist/server/server-rate-limit.js +5 -5
- package/dist/server/server-rate-limit.js.map +1 -1
- package/dist/server/server-routes-approvals.js +2 -2
- package/dist/server/server-routes-approvals.js.map +1 -1
- package/dist/server/server-routes-auth.js +2 -2
- package/dist/server/server-routes-auth.js.map +1 -1
- package/dist/server/server-routes-events.js +2 -2
- package/dist/server/server-routes-events.js.map +1 -1
- package/dist/server/server-routes-public.js +4 -4
- package/dist/server/server-routes-public.js.map +1 -1
- package/dist/server/server-routes-webchat.js +3 -3
- package/dist/server/server-routes-webchat.js.map +1 -1
- package/dist/server/server-store-circuit-breaker.js +1 -1
- package/dist/server/server-store-circuit-breaker.js.map +1 -1
- package/dist/server/tool-router.js +7 -4
- package/dist/server/tool-router.js.map +1 -1
- package/dist/server/validation.js +11 -0
- package/dist/server/validation.js.map +1 -1
- package/dist/shared/api-client.js +38 -11
- package/dist/shared/api-client.js.map +1 -1
- package/package.json +12 -10
- package/vendor/ink/build/ink.js +68 -24
- package/vendor/ink/node_modules/react-devtools-core/README.md +152 -0
- package/vendor/ink/node_modules/react-devtools-core/backend.js +1 -0
- package/vendor/ink/node_modules/react-devtools-core/dist/648.chunk.js +2 -0
- package/vendor/ink/node_modules/react-devtools-core/dist/648.chunk.js.map +1 -0
- package/vendor/ink/node_modules/react-devtools-core/dist/backend.js +15691 -0
- package/vendor/ink/node_modules/react-devtools-core/dist/backend.js.map +1 -0
- package/vendor/ink/node_modules/react-devtools-core/dist/importFile.worker.worker.js +2 -0
- package/vendor/ink/node_modules/react-devtools-core/dist/importFile.worker.worker.js.map +1 -0
- package/vendor/ink/node_modules/react-devtools-core/dist/parseSourceAndMetadata.worker.worker.js +14 -0
- package/vendor/ink/node_modules/react-devtools-core/dist/parseSourceAndMetadata.worker.worker.js.map +1 -0
- package/vendor/ink/node_modules/react-devtools-core/dist/standalone.js +2 -0
- package/vendor/ink/node_modules/react-devtools-core/dist/standalone.js.map +1 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/LICENSE +21 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/README.md +495 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/browser.js +8 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/index.js +10 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/buffer-util.js +129 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/constants.js +10 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/event-target.js +184 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/extension.js +223 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/limiter.js +55 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/permessage-deflate.js +518 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/receiver.js +607 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/sender.js +409 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/stream.js +180 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/validation.js +104 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/websocket-server.js +449 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/websocket.js +1197 -0
- package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/package.json +56 -0
- package/vendor/ink/node_modules/react-devtools-core/package.json +38 -0
- package/vendor/ink/node_modules/react-devtools-core/standalone.js +1 -0
- package/dist/cli/__tests__/print-mode-streaming.test.js +0 -270
- package/dist/cli/__tests__/print-mode.basic-output.test.js +0 -230
- package/dist/cli/__tests__/print-mode.session-errors.test.js +0 -252
- package/dist/cli/__tests__/print-mode.test.js +0 -273
- package/dist/cli/__tests__/serve-mode-messages.test.js +0 -338
- package/dist/cli/__tests__/serve-mode.messages.part2.test.js +0 -266
- package/dist/cli/__tests__/serve-mode.messages.test.js +0 -277
- package/dist/cli/__tests__/serve-mode.startup-http.test.js +0 -279
- package/dist/cli/__tests__/serve-mode.test.js +0 -345
- package/dist/cli/chat/NodeManager.d.ts +0 -30
- package/dist/cli/chat/NodeManager.js +0 -66
- package/dist/cli/chat/NodeManager.js.map +0 -1
- package/dist/cli/chat/chat-input-menu-handler.d.ts +0 -32
- package/dist/cli/chat/hooks/slash-imsg-handlers.js +0 -148
- package/dist/cli/chat/hooks/slash-imsg-handlers.js.map +0 -1
- package/dist/cli/chat/hooks/useStreamingReducer.d.ts +0 -66
- package/dist/cli/commands/__tests__/config-cmd.test.js +0 -270
- package/dist/cli/commands/__tests__/doctor.test.js +0 -257
- package/dist/cli/commands/__tests__/imsg-node-bridge.test.js +0 -99
- package/dist/cli/commands/__tests__/imsg-utils.test.js +0 -73
- package/dist/cli/commands/__tests__/init.test.js +0 -214
- package/dist/cli/commands/__tests__/mcp.test.js +0 -287
- package/dist/cli/commands/imsg-watcher-helpers.d.ts +0 -40
- package/dist/cli/commands/imsg-watcher-helpers.js +0 -184
- package/dist/cli/commands/imsg-watcher-helpers.js.map +0 -1
- package/dist/cli/commands/imsg-watcher.d.ts +0 -11
- package/dist/cli/commands/imsg-watcher.js +0 -230
- package/dist/cli/commands/imsg-watcher.js.map +0 -1
- package/dist/cli/services/__tests__/agent-definitions.test.js +0 -153
- package/dist/cli/services/__tests__/agent-events-global.test.js +0 -39
- package/dist/cli/services/__tests__/agent-events.part2.test.js +0 -113
- package/dist/cli/services/__tests__/agent-events.test.js +0 -157
- package/dist/cli/services/__tests__/agent-loop-auth.test.js +0 -392
- package/dist/cli/services/__tests__/agent-loop-budget.test.js +0 -389
- package/dist/cli/services/__tests__/agent-loop-tools-lifecycle.test.js +0 -430
- package/dist/cli/services/__tests__/agent-loop-tools-maxturns.test.js +0 -486
- package/dist/cli/services/__tests__/agent-loop-utils-execution.test.js +0 -528
- package/dist/cli/services/__tests__/agent-loop-utils-helpers.test.js +0 -466
- package/dist/cli/services/__tests__/agent-worker-base-execute.test.js +0 -257
- package/dist/cli/services/__tests__/agent-worker-base-helpers.test.js +0 -198
- package/dist/cli/services/__tests__/agent-worker-base.test.js +0 -278
- package/dist/cli/services/__tests__/auth-service-exports.test.js +0 -41
- package/dist/cli/services/__tests__/auth-service.part2.test.js +0 -169
- package/dist/cli/services/__tests__/auth-service.test.js +0 -242
- package/dist/cli/services/__tests__/background-processes.test.js +0 -282
- package/dist/cli/services/__tests__/claude-md-loader.test.js +0 -134
- package/dist/cli/services/__tests__/config-store.test.js +0 -247
- package/dist/cli/services/__tests__/debug-log.test.js +0 -199
- package/dist/cli/services/__tests__/edge-cases-caching.test.js +0 -174
- package/dist/cli/services/__tests__/edge-cases-compaction-core.test.js +0 -226
- package/dist/cli/services/__tests__/edge-cases-compaction-openai.test.js +0 -152
- package/dist/cli/services/__tests__/edge-cases-compaction-shapes.test.js +0 -53
- package/dist/cli/services/__tests__/edge-cases-compaction-thinking.test.js +0 -226
- package/dist/cli/services/__tests__/edge-cases-compaction.test.js +0 -131
- package/dist/cli/services/__tests__/edge-cases-paths.test.js +0 -86
- package/dist/cli/services/__tests__/error-logger-messages.test.js +0 -81
- package/dist/cli/services/__tests__/error-logger-transport.test.js +0 -119
- package/dist/cli/services/__tests__/error-logger.test.js +0 -264
- package/dist/cli/services/__tests__/file-history.test.js +0 -136
- package/dist/cli/services/__tests__/git-context-cache-reset.test.js +0 -223
- package/dist/cli/services/__tests__/git-context.test.js +0 -241
- package/dist/cli/services/__tests__/interactive-tools-execute.test.js +0 -166
- package/dist/cli/services/__tests__/interactive-tools-plan.test.js +0 -197
- package/dist/cli/services/__tests__/interactive-tools.part2.test.js +0 -168
- package/dist/cli/services/__tests__/interactive-tools.test.js +0 -179
- package/dist/cli/services/__tests__/keybinding-manager.test.js +0 -205
- package/dist/cli/services/__tests__/local-tools-dispatch.test.js +0 -404
- package/dist/cli/services/__tests__/local-tools.test.js +0 -238
- package/dist/cli/services/__tests__/lsp-manager.test.js +0 -364
- package/dist/cli/services/__tests__/mcp-client-connect-disconnect.test.js +0 -310
- package/dist/cli/services/__tests__/mcp-client.test.js +0 -93
- package/dist/cli/services/__tests__/memory-manager.test.js +0 -154
- package/dist/cli/services/__tests__/model-manager-utils.test.js +0 -154
- package/dist/cli/services/__tests__/model-manager.test.js +0 -175
- package/dist/cli/services/__tests__/permission-modes.test.js +0 -222
- package/dist/cli/services/__tests__/ripgrep.test.js +0 -328
- package/dist/cli/services/__tests__/server-tools-execute.test.js +0 -317
- package/dist/cli/services/__tests__/server-tools.test.js +0 -272
- package/dist/cli/services/__tests__/session-persistence.test.js +0 -245
- package/dist/cli/services/__tests__/subagent-basic.test.js +0 -489
- package/dist/cli/services/__tests__/subagent-edge.test.js +0 -545
- package/dist/cli/services/__tests__/subagent-prompts.test.js +0 -558
- package/dist/cli/services/__tests__/subagent-worker-errors.test.js +0 -255
- package/dist/cli/services/__tests__/subagent-worker.test.js +0 -242
- package/dist/cli/services/__tests__/system-prompt.test.js +0 -210
- package/dist/cli/services/__tests__/team-lead-comms-messaging.test.js +0 -250
- package/dist/cli/services/__tests__/team-lead-comms-result.test.js +0 -232
- package/dist/cli/services/__tests__/team-lead-comms-stop.test.js +0 -344
- package/dist/cli/services/__tests__/team-lead-comms.test.js +0 -285
- package/dist/cli/services/__tests__/team-lead-create.test.js +0 -327
- package/dist/cli/services/__tests__/team-lead-run.test.js +0 -318
- package/dist/cli/services/__tests__/team-lead-stop.test.js +0 -199
- package/dist/cli/services/__tests__/team-state-comms.test.js +0 -240
- package/dist/cli/services/__tests__/team-state-core.test.js +0 -230
- package/dist/cli/services/__tests__/team-state-tasks-complete-fail-available.test.js +0 -224
- package/dist/cli/services/__tests__/team-state-tasks.test.js +0 -184
- package/dist/cli/services/__tests__/telemetry-ai-metadata.test.js +0 -116
- package/dist/cli/services/__tests__/telemetry.part2.test.js +0 -195
- package/dist/cli/services/__tests__/telemetry.test.js +0 -176
- package/dist/cli/services/agent-loop-iteration.d.ts +0 -13
- package/dist/cli/services/agent-loop-setup.d.ts +0 -32
- package/dist/cli/services/agent-worker-base-api.d.ts +0 -19
- package/dist/cli/services/agent-worker-base-helpers.d.ts +0 -27
- package/dist/cli/services/agent-worker-base-tools.d.ts +0 -16
- package/dist/cli/services/agent-worker-base-types.d.ts +0 -81
- package/dist/cli/services/background-agents.d.ts +0 -26
- package/dist/cli/services/background-processes-ops.d.ts +0 -24
- package/dist/cli/services/background-tool-defs.d.ts +0 -50
- package/dist/cli/services/config-modules-model.test.js +0 -133
- package/dist/cli/services/config-modules-permission.test.js +0 -85
- package/dist/cli/services/config-modules-permissions.test.js +0 -85
- package/dist/cli/services/config-modules-session.test.js +0 -297
- package/dist/cli/services/format-server-response-columns.test.js +0 -265
- package/dist/cli/services/format-server-response-fallback.test.js +0 -65
- package/dist/cli/services/format-server-response-primitives-basic.test.js +0 -261
- package/dist/cli/services/format-server-response-primitives-nested.test.js +0 -188
- package/dist/cli/services/format-server-response-primitives.test.js +0 -300
- package/dist/cli/services/format-server-response-realworld.test.js +0 -248
- package/dist/cli/services/format-server-response-values.test.js +0 -247
- package/dist/cli/services/hooks-runners.test.js +0 -184
- package/dist/cli/services/hooks.glob-load.test.js +0 -233
- package/dist/cli/services/hooks.run-hooks.test.js +0 -184
- package/dist/cli/services/hooks.test.js +0 -233
- package/dist/cli/services/ink-incremental.d.ts +0 -19
- package/dist/cli/services/ink-incremental.js +0 -59
- package/dist/cli/services/ink-incremental.js.map +0 -1
- package/dist/cli/services/ink-resize-fix.d.ts +0 -18
- package/dist/cli/services/ink-resize-fix.js +0 -76
- package/dist/cli/services/ink-resize-fix.js.map +0 -1
- package/dist/cli/services/ink-sync-output.d.ts +0 -12
- package/dist/cli/services/ink-sync-output.js +0 -16
- package/dist/cli/services/ink-sync-output.js.map +0 -1
- package/dist/cli/services/interactive-tool-defs.d.ts +0 -80
- package/dist/cli/services/local-tools-definitions.d.ts +0 -6
- package/dist/cli/services/local-tools-files.test.js +0 -256
- package/dist/cli/services/local-tools-read-many.d.ts +0 -6
- package/dist/cli/services/model-router.test.js +0 -245
- package/dist/cli/services/rewind-rewindTo.test.js +0 -202
- package/dist/cli/services/rewind.test.js +0 -175
- package/dist/cli/services/sandbox.test.js +0 -198
- package/dist/cli/services/subagent-execution.d.ts +0 -12
- package/dist/cli/services/team-lead-auto.d.ts +0 -11
- package/dist/cli/services/team-lead-execution.d.ts +0 -28
- package/dist/cli/services/teammate-loop.js +0 -557
- package/dist/cli/services/teammate-loop.js.map +0 -1
- package/dist/cli/services/tools/__tests__/agent-tools-tasks-teams.test.js +0 -250
- package/dist/cli/services/tools/__tests__/agent-tools-teams.test.js +0 -200
- package/dist/cli/services/tools/__tests__/agent-tools.test.js +0 -340
- package/dist/cli/services/tools/__tests__/file-ops-cache.test.js +0 -152
- package/dist/cli/services/tools/__tests__/file-ops-notebook.test.js +0 -249
- package/dist/cli/services/tools/__tests__/file-ops-read.test.js +0 -261
- package/dist/cli/services/tools/__tests__/file-ops-write.test.js +0 -292
- package/dist/cli/services/tools/__tests__/search-tools-rg.test.js +0 -92
- package/dist/cli/services/tools/__tests__/search-tools.part2.test.js +0 -174
- package/dist/cli/services/tools/__tests__/search-tools.test.js +0 -227
- package/dist/cli/services/tools/__tests__/shell-exec-allowed-core.test.js +0 -163
- package/dist/cli/services/tools/__tests__/shell-exec-allowed-extended.test.js +0 -220
- package/dist/cli/services/tools/__tests__/shell-exec-allowed.part2.test.js +0 -215
- package/dist/cli/services/tools/__tests__/shell-exec-allowed.test.js +0 -154
- package/dist/cli/services/tools/__tests__/shell-exec-blocked.test.js +0 -132
- package/dist/cli/services/tools/__tests__/shell-exec-execution.test.js +0 -245
- package/dist/cli/services/tools/__tests__/task-manager-create.test.js +0 -110
- package/dist/cli/services/tools/__tests__/task-manager-crud.test.js +0 -339
- package/dist/cli/services/tools/__tests__/task-manager-list-get.test.js +0 -343
- package/dist/cli/services/tools/__tests__/task-manager-query.test.js +0 -346
- package/dist/cli/services/tools/__tests__/task-manager-routing.test.js +0 -58
- package/dist/cli/services/tools/__tests__/task-manager-update.test.js +0 -224
- package/dist/cli/services/tools/__tests__/task-manager.test.js +0 -159
- package/dist/cli/services/tools/__tests__/web-tools-html-search.test.js +0 -227
- package/dist/cli/services/tools/__tests__/web-tools.test.js +0 -285
- package/dist/cli/services/tools/shell-exec.test.js +0 -148
- package/dist/cli/shared/SharedTick.d.ts +0 -10
- package/dist/cli/shared/__tests__/markdown.test.js +0 -188
- package/dist/local-agent/__tests__/connection-disconnect.test.js +0 -201
- package/dist/local-agent/__tests__/connection-lifecycle.test.js +0 -289
- package/dist/local-agent/__tests__/connection-msghandling.test.js +0 -311
- package/dist/local-agent/__tests__/connection-reconnect.test.js +0 -230
- package/dist/local-agent/__tests__/connection-toolexec.test.js +0 -253
- package/dist/local-agent/__tests__/discovery.test.js +0 -328
- package/dist/local-agent/__tests__/executor-background.test.js +0 -219
- package/dist/local-agent/__tests__/executor-exec.test.js +0 -221
- package/dist/local-agent/__tests__/executor-jobs-sessions.test.js +0 -220
- package/dist/local-agent/__tests__/executor-system-info.test.js +0 -133
- package/dist/local-agent/__tests__/executor-systeminfo.test.js +0 -109
- package/dist/local-agent/__tests__/executor.test.js +0 -235
- package/dist/local-agent/__tests__/index.test.js +0 -139
- package/dist/node/__tests__/cli-channels.test.js +0 -293
- package/dist/node/__tests__/cli-config-edge.test.js +0 -154
- package/dist/node/__tests__/cli-config.test.js +0 -215
- package/dist/node/__tests__/config.test.js +0 -292
- package/dist/node/__tests__/runtime-heartbeat.test.js +0 -153
- package/dist/node/__tests__/runtime-lifecycle-init.test.js +0 -263
- package/dist/node/__tests__/runtime-lifecycle-stats.test.js +0 -180
- package/dist/node/__tests__/runtime-lifecycle.test.js +0 -305
- package/dist/node/__tests__/runtime-relay.test.js +0 -341
- package/dist/node/adapters/__tests__/base.test.js +0 -286
- package/dist/node/adapters/__tests__/discord.test.js +0 -284
- package/dist/node/adapters/__tests__/email-send.test.js +0 -295
- package/dist/node/adapters/__tests__/email.inbound-send.test.js +0 -217
- package/dist/node/adapters/__tests__/email.lifecycle.test.js +0 -211
- package/dist/node/adapters/__tests__/email.test.js +0 -290
- package/dist/node/adapters/__tests__/email.webhook-send.test.js +0 -251
- package/dist/node/adapters/__tests__/imessage-filter.test.js +0 -183
- package/dist/node/adapters/__tests__/imessage-lifecycle.test.js +0 -215
- package/dist/node/adapters/__tests__/imessage-send-restart.test.js +0 -227
- package/dist/node/adapters/__tests__/slack.part2.test.js +0 -135
- package/dist/node/adapters/__tests__/slack.test.js +0 -241
- package/dist/node/adapters/__tests__/sms-extras.test.js +0 -108
- package/dist/node/adapters/__tests__/sms-lifecycle.test.js +0 -203
- package/dist/node/adapters/__tests__/sms-messaging.test.js +0 -266
- package/dist/node/adapters/__tests__/sms.part2.test.js +0 -174
- package/dist/node/adapters/__tests__/sms.test.js +0 -253
- package/dist/node/adapters/__tests__/telegram-polling.test.js +0 -256
- package/dist/node/adapters/__tests__/telegram-send.test.js +0 -166
- package/dist/node/adapters/__tests__/webchat-inbound.test.js +0 -188
- package/dist/node/adapters/__tests__/webchat-outbound.test.js +0 -178
- package/dist/node/adapters/__tests__/whatsapp-inbound.test.js +0 -200
- package/dist/node/adapters/__tests__/whatsapp-send.test.js +0 -212
- package/dist/node/adapters/__tests__/whatsapp.test.js +0 -280
- package/dist/server/__tests__/gateway-fast-fail.test.js +0 -160
- package/dist/server/__tests__/local-agent-gateway.test.js +0 -186
- package/dist/server/__tests__/proxy-handlers-delegation.test.js +0 -240
- package/dist/server/__tests__/proxy-handlers-validation.test.js +0 -211
- package/dist/server/__tests__/proxy-handlers.part2.test.js +0 -240
- package/dist/server/__tests__/proxy-handlers.test.js +0 -213
- package/dist/server/__tests__/strip-base64-e2e.test.js +0 -303
- package/dist/server/__tests__/strip-base64.test.js +0 -256
- package/dist/server/__tests__/tool-router-agent-tools.test.js +0 -324
- package/dist/server/__tests__/tool-router-execute-core.test.js +0 -357
- package/dist/server/__tests__/tool-router-execute-permissions.test.js +0 -332
- package/dist/server/__tests__/tool-router-execute.test.js +0 -348
- package/dist/server/__tests__/tool-router-load.test.js +0 -432
- package/dist/server/__tests__/tool-router-permissions.test.js +0 -359
- package/dist/server/__tests__/tool-router-registry-cache.test.js +0 -383
- package/dist/server/__tests__/tool-router-registry-handlers.test.js +0 -272
- package/dist/server/__tests__/tool-router-registry.test.js +0 -331
- package/dist/server/__tests__/validation-inventory.test.js +0 -250
- package/dist/server/__tests__/validation-misc.test.js +0 -243
- package/dist/server/__tests__/validation-supply-chain.test.js +0 -188
- package/dist/server/__tests__/worker.test.js +0 -265
- package/dist/server/handlers/__tests__/conversation-lock.test.js +0 -117
- package/dist/server/handlers/__tests__/e2e/auth-cross-platform-login.e2e.test.js +0 -268
- package/dist/server/handlers/__tests__/e2e/auth-cross-platform-tokens.e2e.test.js +0 -264
- package/dist/server/handlers/__tests__/e2e/email-pipeline-send.e2e.test.js +0 -214
- package/dist/server/handlers/__tests__/e2e/email-pipeline-threads.e2e.test.js +0 -168
- package/dist/server/handlers/__tests__/e2e/error-logging-pipeline-dedup.e2e.test.js +0 -229
- package/dist/server/handlers/__tests__/e2e/error-logging-pipeline.e2e.test.js +0 -239
- package/dist/server/handlers/__tests__/e2e/error-logging-rate-limit.e2e.test.js +0 -150
- package/dist/server/handlers/__tests__/e2e/inventory-sync-guards.e2e.test.js +0 -177
- package/dist/server/handlers/__tests__/e2e/inventory-sync.e2e.test.js +0 -228
- package/dist/server/handlers/__tests__/e2e/inventory-sync.part2.e2e.test.js +0 -188
- package/dist/server/handlers/__tests__/e2e/order-lifecycle-fulfillment.e2e.test.js +0 -295
- package/dist/server/handlers/__tests__/e2e/order-lifecycle.e2e.test.js +0 -277
- package/dist/server/handlers/__tests__/e2e/order-lifecycle.fulfillment.e2e.test.js +0 -307
- package/dist/server/handlers/__tests__/e2e/order-lifecycle.setup.e2e.test.js +0 -177
- package/dist/server/handlers/__tests__/e2e/storefront-checkout-cart.e2e.test.js +0 -255
- package/dist/server/handlers/__tests__/e2e/storefront-checkout-webhook.e2e.test.js +0 -231
- package/dist/server/handlers/__tests__/e2e/workflow-execution-failures.e2e.test.js +0 -235
- package/dist/server/handlers/__tests__/e2e/workflow-execution.e2e.test.js +0 -294
- package/dist/server/handlers/__tests__/e2e/workflow-security.e2e.test.js +0 -311
- package/dist/server/handlers/__tests__/e2e/workflow-security.part2.e2e.test.js +0 -267
- package/dist/server/handlers/__tests__/workflow-cache.test.js +0 -237
- package/dist/server/handlers/analytics-errors-edge.test.js +0 -173
- package/dist/server/handlers/analytics.test.js +0 -280
- package/dist/server/handlers/api-docs-examples-ext.d.ts +0 -9
- package/dist/server/handlers/api-docs-examples-ext.js +0 -278
- package/dist/server/handlers/api-docs-examples-ext.js.map +0 -1
- package/dist/server/handlers/api-docs-examples.d.ts +0 -8
- package/dist/server/handlers/api-docs-examples.js +0 -221
- package/dist/server/handlers/api-docs-examples.js.map +0 -1
- package/dist/server/handlers/api-docs-sections-ext.d.ts +0 -2
- package/dist/server/handlers/api-docs-sections-ext.js +0 -497
- package/dist/server/handlers/api-docs-sections-ext.js.map +0 -1
- package/dist/server/handlers/api-docs-sections.d.ts +0 -21
- package/dist/server/handlers/api-docs-sections.js +0 -293
- package/dist/server/handlers/api-docs-sections.js.map +0 -1
- package/dist/server/handlers/api-keys.part2.test.js +0 -157
- package/dist/server/handlers/api-keys.test.js +0 -161
- package/dist/server/handlers/billing-routes.test.js +0 -123
- package/dist/server/handlers/billing.test.js +0 -215
- package/dist/server/handlers/browser-actions-errors.test.js +0 -94
- package/dist/server/handlers/browser-actions.part2.test.js +0 -190
- package/dist/server/handlers/browser-actions.test.js +0 -190
- package/dist/server/handlers/browser-validation.test.js +0 -257
- package/dist/server/handlers/catalog.test.js +0 -297
- package/dist/server/handlers/comms.test.js +0 -289
- package/dist/server/handlers/creations-advanced-collections.test.js +0 -214
- package/dist/server/handlers/creations-advanced-generate.test.js +0 -142
- package/dist/server/handlers/creations-advanced.test.js +0 -171
- package/dist/server/handlers/creations-collections-preview.test.js +0 -214
- package/dist/server/handlers/creations-crud.test.js +0 -260
- package/dist/server/handlers/creations-mutations.test.js +0 -197
- package/dist/server/handlers/crm.test.js +0 -179
- package/dist/server/handlers/discovery-advertise.test.js +0 -185
- package/dist/server/handlers/discovery-scan.test.js +0 -233
- package/dist/server/handlers/embeddings-embed-search.test.js +0 -196
- package/dist/server/handlers/embeddings-index-delete-stats.test.js +0 -140
- package/dist/server/handlers/embeddings-search.test.js +0 -221
- package/dist/server/handlers/embeddings.test.js +0 -137
- package/dist/server/handlers/enrichment-breach.d.ts +0 -8
- package/dist/server/handlers/enrichment-breach.js +0 -266
- package/dist/server/handlers/enrichment-breach.js.map +0 -1
- package/dist/server/handlers/enrichment-data.d.ts +0 -13
- package/dist/server/handlers/enrichment-data.js +0 -145
- package/dist/server/handlers/enrichment-data.js.map +0 -1
- package/dist/server/handlers/enrichment-mutations.test.js +0 -240
- package/dist/server/handlers/enrichment-queries.test.js +0 -181
- package/dist/server/handlers/enrichment-validation.test.js +0 -177
- package/dist/server/handlers/enrichment-writes.d.ts +0 -16
- package/dist/server/handlers/enrichment-writes.js +0 -226
- package/dist/server/handlers/enrichment-writes.js.map +0 -1
- package/dist/server/handlers/image-gen.test.js +0 -205
- package/dist/server/handlers/inventory.test.js +0 -380
- package/dist/server/handlers/kali-background.test.js +0 -222
- package/dist/server/handlers/kali-errors.test.js +0 -92
- package/dist/server/handlers/kali-validation.test.js +0 -234
- package/dist/server/handlers/llm-providers-actions.test.js +0 -220
- package/dist/server/handlers/llm-providers-anthropic.test.js +0 -239
- package/dist/server/handlers/llm-providers-failover.test.js +0 -232
- package/dist/server/handlers/llm-providers-providers.test.js +0 -300
- package/dist/server/handlers/llm-providers-validation.test.js +0 -239
- package/dist/server/handlers/local-agent-tools.test.js +0 -224
- package/dist/server/handlers/local-agent.test.js +0 -198
- package/dist/server/handlers/local-agent.tools-status.test.js +0 -204
- package/dist/server/handlers/local-agent.validation-exec.test.js +0 -182
- package/dist/server/handlers/meta-ads-audience-rules.test.js +0 -243
- package/dist/server/handlers/meta-ads-audience-targeting.test.js +0 -205
- package/dist/server/handlers/meta-ads-audiences-targeting.test.js +0 -383
- package/dist/server/handlers/meta-ads-crud-ads.test.js +0 -136
- package/dist/server/handlers/meta-ads-crud-campaigns.test.js +0 -189
- package/dist/server/handlers/meta-ads-crud-create.test.js +0 -303
- package/dist/server/handlers/meta-ads-crud-list-update.test.js +0 -259
- package/dist/server/handlers/meta-ads-delete-publish-sync.test.js +0 -282
- package/dist/server/handlers/meta-ads-insights.test.js +0 -80
- package/dist/server/handlers/meta-ads-list-get.test.js +0 -237
- package/dist/server/handlers/meta-ads-publish-delete.test.js +0 -254
- package/dist/server/handlers/meta-ads-publish-helpers.js +0 -117
- package/dist/server/handlers/meta-ads-publish-helpers.js.map +0 -1
- package/dist/server/handlers/meta-ads-publish-sync.test.js +0 -205
- package/dist/server/handlers/meta-ads-publish.test.js +0 -254
- package/dist/server/handlers/meta-ads-sync-insights.test.js +0 -184
- package/dist/server/handlers/meta-ads-update.test.js +0 -117
- package/dist/server/handlers/nodes-channels.test.js +0 -413
- package/dist/server/handlers/nodes-events.test.js +0 -131
- package/dist/server/handlers/nodes-list-delete.test.js +0 -171
- package/dist/server/handlers/nodes-messages-delivery.test.js +0 -208
- package/dist/server/handlers/nodes-messages.test.js +0 -211
- package/dist/server/handlers/nodes-register.test.js +0 -277
- package/dist/server/handlers/nodes.test.js +0 -353
- package/dist/server/handlers/operations.test.js +0 -136
- package/dist/server/handlers/platform-telemetry.test.js +0 -200
- package/dist/server/handlers/platform-websearch.test.js +0 -160
- package/dist/server/handlers/storefront.test.js +0 -329
- package/dist/server/handlers/supply-chain.test.js +0 -347
- package/dist/server/handlers/transcription.test.js +0 -118
- package/dist/server/handlers/video-gen-veo.js +0 -114
- package/dist/server/handlers/video-gen-veo.js.map +0 -1
- package/dist/server/handlers/video-gen.test.js +0 -146
- package/dist/server/handlers/voice.test.js +0 -153
- package/dist/server/handlers/workflow-steps.test.js +0 -330
- package/dist/server/handlers/workflows-extras.test.js +0 -65
- package/dist/server/handlers/workflows.part2.test.js +0 -170
- package/dist/server/handlers/workflows.test.js +0 -281
- package/dist/server/lib/__tests__/batch-client-conversion-jsonl.test.js +0 -171
- package/dist/server/lib/__tests__/batch-client-polling.test.js +0 -292
- package/dist/server/lib/__tests__/batch-client-queue.test.js +0 -270
- package/dist/server/lib/__tests__/clickhouse-buffer.test.js +0 -236
- package/dist/server/lib/__tests__/code-worker-edge-cases.test.js +0 -118
- package/dist/server/lib/__tests__/code-worker-pool-execute.test.js +0 -193
- package/dist/server/lib/__tests__/code-worker-pool-execution.test.js +0 -165
- package/dist/server/lib/__tests__/code-worker-pool-init.test.js +0 -131
- package/dist/server/lib/__tests__/code-worker-pool.test.js +0 -194
- package/dist/server/lib/__tests__/code-worker-sandbox-ops.test.js +0 -123
- package/dist/server/lib/__tests__/code-worker-sandbox.test.js +0 -217
- package/dist/server/lib/__tests__/code-worker.test.js +0 -179
- package/dist/server/lib/__tests__/compaction-service-generate.test.js +0 -229
- package/dist/server/lib/__tests__/compaction-service.test.js +0 -319
- package/dist/server/lib/__tests__/otel.test.js +0 -146
- package/dist/server/lib/__tests__/prompt-sanitizer-validation.test.js +0 -165
- package/dist/server/lib/__tests__/prompt-sanitizer.sanitize.test.js +0 -343
- package/dist/server/lib/__tests__/prompt-sanitizer.test.js +0 -328
- package/dist/server/lib/__tests__/prompt-sanitizer.validate-tool.test.js +0 -145
- package/dist/server/lib/__tests__/provider-capabilities.test.js +0 -263
- package/dist/server/lib/__tests__/provider-failover-routing.test.js +0 -145
- package/dist/server/lib/__tests__/provider-failover-state.test.js +0 -131
- package/dist/server/lib/__tests__/rate-limiter-budgets.test.js +0 -216
- package/dist/server/lib/__tests__/rate-limiter.budgets-tools.test.js +0 -113
- package/dist/server/lib/__tests__/rate-limiter.check-request.test.js +0 -141
- package/dist/server/lib/__tests__/rate-limiter.stats-lifecycle.test.js +0 -135
- package/dist/server/lib/__tests__/rate-limiter.test.js +0 -207
- package/dist/server/lib/__tests__/server-agent-loop-abort-conditions.test.js +0 -544
- package/dist/server/lib/__tests__/server-agent-loop-abort.part2.test.js +0 -504
- package/dist/server/lib/__tests__/server-agent-loop-abort.test.js +0 -396
- package/dist/server/lib/__tests__/server-agent-loop-compaction.test.js +0 -397
- package/dist/server/lib/__tests__/server-agent-loop-failover.test.js +0 -356
- package/dist/server/lib/__tests__/server-agent-loop-features-caching.test.js +0 -519
- package/dist/server/lib/__tests__/server-agent-loop-features-edges.test.js +0 -512
- package/dist/server/lib/__tests__/server-subagent-bailout.test.js +0 -194
- package/dist/server/lib/__tests__/server-subagent-basics.test.js +0 -348
- package/dist/server/lib/__tests__/server-subagent-errors-abort.test.js +0 -319
- package/dist/server/lib/__tests__/server-subagent-errors-progress.test.js +0 -253
- package/dist/server/lib/__tests__/server-subagent-errors.part2.test.js +0 -253
- package/dist/server/lib/__tests__/server-subagent-errors.test.js +0 -319
- package/dist/server/lib/__tests__/session-checkpoint-load.test.js +0 -275
- package/dist/server/lib/__tests__/session-checkpoint-save.test.js +0 -159
- package/dist/server/lib/__tests__/ssrf-guard.test.js +0 -93
- package/dist/server/lib/__tests__/supabase-client.test.js +0 -111
- package/dist/server/lib/__tests__/template-resolver.test.js +0 -317
- package/dist/server/lib/__tests__/utils-timeout.test.js +0 -49
- package/dist/server/lib/__tests__/utils.test.js +0 -322
- package/dist/server/providers/__tests__/anthropic-adapter.test.js +0 -228
- package/dist/server/providers/__tests__/anthropic-betas-toolchoice.test.js +0 -257
- package/dist/server/providers/__tests__/anthropic-errors.test.js +0 -262
- package/dist/server/providers/__tests__/anthropic-stream-core.test.js +0 -275
- package/dist/server/providers/__tests__/anthropic-streaming-betas.test.js +0 -247
- package/dist/server/providers/__tests__/anthropic-streaming-core.test.js +0 -275
- package/dist/server/providers/__tests__/bedrock-config.test.js +0 -177
- package/dist/server/providers/__tests__/bedrock-stream-behavior-streaming.test.js +0 -272
- package/dist/server/providers/__tests__/bedrock-stream-behavior-toolchoice.test.js +0 -214
- package/dist/server/providers/__tests__/bedrock-stream-behavior.part2.test.js +0 -165
- package/dist/server/providers/__tests__/bedrock-stream-behavior.test.js +0 -309
- package/dist/server/providers/__tests__/bedrock-stream-body-credentials.test.js +0 -170
- package/dist/server/providers/__tests__/bedrock-stream-body-extras.test.js +0 -183
- package/dist/server/providers/__tests__/bedrock-stream-body-request.test.js +0 -305
- package/dist/server/providers/__tests__/bedrock-stream-body.part2.test.js +0 -305
- package/dist/server/providers/__tests__/bedrock-stream-body.test.js +0 -175
- package/dist/server/providers/__tests__/bedrock-stream-errors.test.js +0 -165
- package/dist/server/providers/__tests__/gemini-config-methods.test.js +0 -182
- package/dist/server/providers/__tests__/gemini-config-streaming.test.js +0 -257
- package/dist/server/providers/__tests__/gemini-conversion-messages.test.js +0 -247
- package/dist/server/providers/__tests__/gemini-conversion-schema.test.js +0 -365
- package/dist/server/providers/__tests__/gemini-tools-choice.test.js +0 -221
- package/dist/server/providers/__tests__/gemini-tools-fn.test.js +0 -252
- package/dist/server/providers/__tests__/openai-config.test.js +0 -194
- package/dist/server/providers/__tests__/openai-conversion.test.js +0 -276
- package/dist/server/providers/__tests__/openai-messages.test.js +0 -261
- package/dist/server/providers/__tests__/openai-streaming.test.js +0 -394
- package/dist/server/providers/__tests__/openai-tools-cache.test.js +0 -227
- package/dist/server/providers/__tests__/registry.test.js +0 -183
- package/dist/server/providers/__tests__/shared.test.js +0 -297
- package/dist/shared/agent-core-config.test.js +0 -132
- package/dist/shared/agent-core-context-thinking.test.js +0 -293
- package/dist/shared/agent-core-loop-calls.test.js +0 -174
- package/dist/shared/agent-core-loop-detector-bail.test.js +0 -201
- package/dist/shared/agent-core-loop-detector.test.js +0 -195
- package/dist/shared/agent-core-loop-errors.test.js +0 -258
- package/dist/shared/agent-core-pricing.test.js +0 -191
- package/dist/shared/agent-core-sanitize-retry.test.js +0 -129
- package/dist/shared/api-client-build-request.test.js +0 -228
- package/dist/shared/api-client-build-system-caching.test.js +0 -107
- package/dist/shared/api-client-build.test.js +0 -223
- package/dist/shared/api-client-config.d.ts +0 -21
- package/dist/shared/api-client-helpers.d.ts +0 -57
- package/dist/shared/api-client-helpers.test.js +0 -261
- package/dist/shared/api-client-proxy-happy.test.js +0 -255
- package/dist/shared/api-client-proxy-retry.test.js +0 -307
- package/dist/shared/api-client-proxy.d.ts +0 -26
- package/dist/shared/api-client-proxy.test.js +0 -255
- package/dist/shared/api-client-retry.test.js +0 -307
- package/dist/shared/api-client-system-trimming.test.js +0 -261
- package/dist/shared/api-client-trimming.d.ts +0 -36
- package/dist/shared/api-client.test.js +0 -228
- package/dist/shared/compaction-thinking.test.js +0 -315
- package/dist/shared/compaction-trimming.test.js +0 -223
- package/dist/shared/sse-parser-callbacks.test.js +0 -422
- package/dist/shared/sse-parser-collect.test.js +0 -252
- package/dist/shared/sse-parser-e2e.test.js +0 -558
- package/dist/shared/sse-parser-parse.test.js +0 -253
- package/dist/shared/tool-dispatch-advanced-batch-build.test.js +0 -405
- package/dist/shared/tool-dispatch-advanced.test.js +0 -320
- package/dist/shared/tool-dispatch-basic.test.js +0 -278
- package/dist/shared/tool-dispatch-content.d.ts +0 -14
- package/dist/shared/tool-dispatch-parallel.test.js +0 -378
- package/dist/webchat/__tests__/widget-messaging.test.js +0 -323
- package/dist/webchat/__tests__/widget.test.js +0 -273
|
@@ -1,345 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for serve-mode.ts — server startup, HTTP handler, and connection handling
|
|
3
|
-
*/
|
|
4
|
-
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
5
|
-
import { EventEmitter } from "events";
|
|
6
|
-
|
|
7
|
-
// ── Track created servers/sockets for assertions ──
|
|
8
|
-
|
|
9
|
-
let lastHttpHandler = null;
|
|
10
|
-
let lastWssConnectionHandler = null;
|
|
11
|
-
const mockServerListen = vi.fn((_port, _host, cb) => cb());
|
|
12
|
-
const mockServerOn = vi.fn((event, handler) => {
|
|
13
|
-
if (event === "error") {/* store */}
|
|
14
|
-
});
|
|
15
|
-
const mockServerClose = vi.fn(cb => cb?.());
|
|
16
|
-
const mockHttpServer = {
|
|
17
|
-
listen: mockServerListen,
|
|
18
|
-
on: mockServerOn,
|
|
19
|
-
close: mockServerClose
|
|
20
|
-
};
|
|
21
|
-
vi.mock("http", () => ({
|
|
22
|
-
createServer: vi.fn(handler => {
|
|
23
|
-
lastHttpHandler = handler;
|
|
24
|
-
return mockHttpServer;
|
|
25
|
-
})
|
|
26
|
-
}));
|
|
27
|
-
const mockWssClients = new Set();
|
|
28
|
-
const mockWssOn = vi.fn((event, handler) => {
|
|
29
|
-
if (event === "connection") lastWssConnectionHandler = handler;
|
|
30
|
-
});
|
|
31
|
-
vi.mock("ws", () => {
|
|
32
|
-
const OPEN = 1;
|
|
33
|
-
// Must be a real class so `new WebSocketServer(...)` works
|
|
34
|
-
class MockWebSocketServer {
|
|
35
|
-
constructor(_opts) {}
|
|
36
|
-
on = mockWssOn;
|
|
37
|
-
clients = mockWssClients;
|
|
38
|
-
}
|
|
39
|
-
return {
|
|
40
|
-
WebSocketServer: MockWebSocketServer,
|
|
41
|
-
WebSocket: {
|
|
42
|
-
OPEN
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
});
|
|
46
|
-
vi.mock("../services/agent-loop.js", () => ({
|
|
47
|
-
runAgentLoop: vi.fn(async opts => {
|
|
48
|
-
if (opts.callbacks?.onText) opts.callbacks.onText("Hello from agent");
|
|
49
|
-
if (opts.callbacks?.onDone) opts.callbacks.onDone([]);
|
|
50
|
-
if (opts.callbacks?.onUsage) opts.callbacks.onUsage(100, 50, 0, "claude-sonnet", 0.01);
|
|
51
|
-
}),
|
|
52
|
-
setModel: vi.fn(),
|
|
53
|
-
setPermissionMode: vi.fn(),
|
|
54
|
-
resetSessionState: vi.fn(),
|
|
55
|
-
getModel: vi.fn(() => "claude-sonnet-4-20250514"),
|
|
56
|
-
estimateCostUsd: vi.fn(() => 0.01),
|
|
57
|
-
AgentEventEmitter: class extends EventEmitter {
|
|
58
|
-
emitText(t) {
|
|
59
|
-
this.emit("event", {
|
|
60
|
-
type: "text",
|
|
61
|
-
text: t
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
emitToolOutput(n, d) {
|
|
65
|
-
this.emit("event", {
|
|
66
|
-
type: "tool_output",
|
|
67
|
-
name: n,
|
|
68
|
-
data: d
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}));
|
|
73
|
-
vi.mock("../services/config-store.js", () => ({
|
|
74
|
-
resolveConfig: vi.fn(() => ({
|
|
75
|
-
supabaseUrl: "https://test.supabase.co",
|
|
76
|
-
supabaseKey: "test-key",
|
|
77
|
-
storeId: "store-1"
|
|
78
|
-
}))
|
|
79
|
-
}));
|
|
80
|
-
vi.mock("@supabase/supabase-js", () => ({
|
|
81
|
-
createClient: vi.fn(() => ({
|
|
82
|
-
from: vi.fn(() => ({
|
|
83
|
-
insert: vi.fn().mockReturnValue({
|
|
84
|
-
select: vi.fn().mockReturnValue({
|
|
85
|
-
single: vi.fn().mockResolvedValue({
|
|
86
|
-
data: {
|
|
87
|
-
id: "conv-abc"
|
|
88
|
-
},
|
|
89
|
-
error: null
|
|
90
|
-
})
|
|
91
|
-
})
|
|
92
|
-
}),
|
|
93
|
-
select: vi.fn().mockReturnValue({
|
|
94
|
-
eq: vi.fn().mockReturnValue({
|
|
95
|
-
single: vi.fn().mockResolvedValue({
|
|
96
|
-
data: {
|
|
97
|
-
id: "conv-abc",
|
|
98
|
-
title: "Test",
|
|
99
|
-
metadata: {}
|
|
100
|
-
},
|
|
101
|
-
error: null
|
|
102
|
-
}),
|
|
103
|
-
order: vi.fn().mockReturnValue({
|
|
104
|
-
limit: vi.fn().mockResolvedValue({
|
|
105
|
-
data: [],
|
|
106
|
-
error: null
|
|
107
|
-
})
|
|
108
|
-
})
|
|
109
|
-
})
|
|
110
|
-
}),
|
|
111
|
-
update: vi.fn().mockReturnValue({
|
|
112
|
-
eq: vi.fn().mockResolvedValue({
|
|
113
|
-
error: null
|
|
114
|
-
})
|
|
115
|
-
})
|
|
116
|
-
}))
|
|
117
|
-
}))
|
|
118
|
-
}));
|
|
119
|
-
vi.mock("../services/auth-service.js", () => ({
|
|
120
|
-
getValidToken: vi.fn(async () => "jwt-token"),
|
|
121
|
-
createAuthenticatedClient: vi.fn(() => ({}))
|
|
122
|
-
}));
|
|
123
|
-
vi.mock("../services/server-tools.js", () => ({
|
|
124
|
-
loadServerToolDefinitions: vi.fn(async () => [{
|
|
125
|
-
name: "voice",
|
|
126
|
-
description: "Voice tool",
|
|
127
|
-
input_schema: {
|
|
128
|
-
type: "object",
|
|
129
|
-
properties: {}
|
|
130
|
-
}
|
|
131
|
-
}])
|
|
132
|
-
}));
|
|
133
|
-
vi.mock("../services/local-tools.js", () => ({
|
|
134
|
-
LOCAL_TOOL_DEFINITIONS: [{
|
|
135
|
-
name: "read_file",
|
|
136
|
-
description: "Read file",
|
|
137
|
-
input_schema: {
|
|
138
|
-
type: "object",
|
|
139
|
-
properties: {},
|
|
140
|
-
required: []
|
|
141
|
-
}
|
|
142
|
-
}, {
|
|
143
|
-
name: "write_file",
|
|
144
|
-
description: "Write file",
|
|
145
|
-
input_schema: {
|
|
146
|
-
type: "object",
|
|
147
|
-
properties: {},
|
|
148
|
-
required: []
|
|
149
|
-
}
|
|
150
|
-
}]
|
|
151
|
-
}));
|
|
152
|
-
vi.mock("module", () => ({
|
|
153
|
-
createRequire: vi.fn(() => vi.fn(() => ({
|
|
154
|
-
version: "1.0.0-test"
|
|
155
|
-
})))
|
|
156
|
-
}));
|
|
157
|
-
import { runServeMode } from "../serve-mode.js";
|
|
158
|
-
// Helper: create a fake WebSocket
|
|
159
|
-
function createMockWs() {
|
|
160
|
-
const handlers = {};
|
|
161
|
-
const sent = [];
|
|
162
|
-
return {
|
|
163
|
-
readyState: 1,
|
|
164
|
-
// OPEN
|
|
165
|
-
send: vi.fn(data => sent.push(data)),
|
|
166
|
-
on: vi.fn((event, handler) => {
|
|
167
|
-
if (!handlers[event]) handlers[event] = [];
|
|
168
|
-
handlers[event].push(handler);
|
|
169
|
-
}),
|
|
170
|
-
close: vi.fn(),
|
|
171
|
-
_handlers: handlers,
|
|
172
|
-
_sent: sent,
|
|
173
|
-
// Helper to fire an event
|
|
174
|
-
_emit(event, ...args) {
|
|
175
|
-
for (const h of handlers[event] || []) h(...args);
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
describe("serve-mode — startup and HTTP", () => {
|
|
180
|
-
const defaultOpts = {
|
|
181
|
-
port: 0,
|
|
182
|
-
host: "127.0.0.1",
|
|
183
|
-
model: "claude-sonnet-4-20250514",
|
|
184
|
-
permissionMode: "yolo",
|
|
185
|
-
verbose: false,
|
|
186
|
-
debug: false
|
|
187
|
-
};
|
|
188
|
-
beforeEach(() => {
|
|
189
|
-
vi.clearAllMocks();
|
|
190
|
-
lastHttpHandler = null;
|
|
191
|
-
lastWssConnectionHandler = null;
|
|
192
|
-
mockWssClients.clear();
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
196
|
-
// runServeMode — server startup
|
|
197
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
198
|
-
|
|
199
|
-
describe("runServeMode", () => {
|
|
200
|
-
it("starts an HTTP server and WebSocket server", async () => {
|
|
201
|
-
await runServeMode(defaultOpts);
|
|
202
|
-
expect(mockServerListen).toHaveBeenCalledWith(0, "127.0.0.1", expect.any(Function));
|
|
203
|
-
expect(mockWssOn).toHaveBeenCalledWith("connection", expect.any(Function));
|
|
204
|
-
});
|
|
205
|
-
it("sets model and permission mode", async () => {
|
|
206
|
-
const {
|
|
207
|
-
setModel,
|
|
208
|
-
setPermissionMode
|
|
209
|
-
} = await import("../services/agent-loop.js");
|
|
210
|
-
await runServeMode({
|
|
211
|
-
...defaultOpts,
|
|
212
|
-
model: "opus",
|
|
213
|
-
permissionMode: "plan"
|
|
214
|
-
});
|
|
215
|
-
expect(setModel).toHaveBeenCalledWith("opus");
|
|
216
|
-
expect(setPermissionMode).toHaveBeenCalledWith("plan");
|
|
217
|
-
});
|
|
218
|
-
it("defaults permission mode to yolo when not specified", async () => {
|
|
219
|
-
const {
|
|
220
|
-
setPermissionMode
|
|
221
|
-
} = await import("../services/agent-loop.js");
|
|
222
|
-
await runServeMode({
|
|
223
|
-
...defaultOpts,
|
|
224
|
-
permissionMode: undefined
|
|
225
|
-
});
|
|
226
|
-
expect(setPermissionMode).toHaveBeenCalledWith("yolo");
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
|
|
230
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
231
|
-
// HTTP health check
|
|
232
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
233
|
-
|
|
234
|
-
describe("HTTP handler", () => {
|
|
235
|
-
it("returns health check for GET /health", async () => {
|
|
236
|
-
await runServeMode(defaultOpts);
|
|
237
|
-
expect(lastHttpHandler).not.toBeNull();
|
|
238
|
-
const res = {
|
|
239
|
-
writeHead: vi.fn(),
|
|
240
|
-
end: vi.fn()
|
|
241
|
-
};
|
|
242
|
-
lastHttpHandler({
|
|
243
|
-
method: "GET",
|
|
244
|
-
url: "/health"
|
|
245
|
-
}, res);
|
|
246
|
-
expect(res.writeHead).toHaveBeenCalledWith(200, {
|
|
247
|
-
"Content-Type": "application/json"
|
|
248
|
-
});
|
|
249
|
-
const body = JSON.parse(res.end.mock.calls[0][0]);
|
|
250
|
-
expect(body.status).toBe("ok");
|
|
251
|
-
expect(body.version).toBe("1.0.0-test");
|
|
252
|
-
});
|
|
253
|
-
it("returns health check for GET /", async () => {
|
|
254
|
-
await runServeMode(defaultOpts);
|
|
255
|
-
const res = {
|
|
256
|
-
writeHead: vi.fn(),
|
|
257
|
-
end: vi.fn()
|
|
258
|
-
};
|
|
259
|
-
lastHttpHandler({
|
|
260
|
-
method: "GET",
|
|
261
|
-
url: "/"
|
|
262
|
-
}, res);
|
|
263
|
-
expect(res.writeHead).toHaveBeenCalledWith(200, expect.any(Object));
|
|
264
|
-
});
|
|
265
|
-
it("returns 404 for other routes", async () => {
|
|
266
|
-
await runServeMode(defaultOpts);
|
|
267
|
-
const res = {
|
|
268
|
-
writeHead: vi.fn(),
|
|
269
|
-
end: vi.fn()
|
|
270
|
-
};
|
|
271
|
-
lastHttpHandler({
|
|
272
|
-
method: "GET",
|
|
273
|
-
url: "/unknown"
|
|
274
|
-
}, res);
|
|
275
|
-
expect(res.writeHead).toHaveBeenCalledWith(404, expect.any(Object));
|
|
276
|
-
});
|
|
277
|
-
});
|
|
278
|
-
|
|
279
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
280
|
-
// WebSocket connection handling
|
|
281
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
282
|
-
|
|
283
|
-
describe("handleConnection", () => {
|
|
284
|
-
it("sends ready message with tools on connect", async () => {
|
|
285
|
-
await runServeMode(defaultOpts);
|
|
286
|
-
const ws = createMockWs();
|
|
287
|
-
await lastWssConnectionHandler(ws);
|
|
288
|
-
// Wait for async getToolList
|
|
289
|
-
await new Promise(r => setTimeout(r, 50));
|
|
290
|
-
expect(ws.send).toHaveBeenCalled();
|
|
291
|
-
const firstMsg = JSON.parse(ws._sent[0]);
|
|
292
|
-
expect(firstMsg.type).toBe("ready");
|
|
293
|
-
expect(firstMsg.version).toBe("1.0.0-test");
|
|
294
|
-
expect(Array.isArray(firstMsg.tools)).toBe(true);
|
|
295
|
-
});
|
|
296
|
-
});
|
|
297
|
-
|
|
298
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
299
|
-
// Message handling — ping
|
|
300
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
301
|
-
|
|
302
|
-
describe("ping message", () => {
|
|
303
|
-
it("responds with pong", async () => {
|
|
304
|
-
await runServeMode(defaultOpts);
|
|
305
|
-
const ws = createMockWs();
|
|
306
|
-
await lastWssConnectionHandler(ws);
|
|
307
|
-
await new Promise(r => setTimeout(r, 50));
|
|
308
|
-
ws._emit("message", JSON.stringify({
|
|
309
|
-
type: "ping"
|
|
310
|
-
}));
|
|
311
|
-
await new Promise(r => setTimeout(r, 20));
|
|
312
|
-
const pongMsg = ws._sent.find(s => JSON.parse(s).type === "pong");
|
|
313
|
-
expect(pongMsg).toBeDefined();
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
|
-
|
|
317
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
318
|
-
// Message handling — invalid messages
|
|
319
|
-
// ═══════════════════════════════════════════════════════════════════
|
|
320
|
-
|
|
321
|
-
describe("invalid messages", () => {
|
|
322
|
-
it("sends error for invalid JSON", async () => {
|
|
323
|
-
await runServeMode(defaultOpts);
|
|
324
|
-
const ws = createMockWs();
|
|
325
|
-
await lastWssConnectionHandler(ws);
|
|
326
|
-
await new Promise(r => setTimeout(r, 50));
|
|
327
|
-
ws._emit("message", "not json {{{");
|
|
328
|
-
await new Promise(r => setTimeout(r, 20));
|
|
329
|
-
const errMsg = ws._sent.find(s => JSON.parse(s).type === "error" && JSON.parse(s).error === "Invalid JSON");
|
|
330
|
-
expect(errMsg).toBeDefined();
|
|
331
|
-
});
|
|
332
|
-
it("sends error for missing type field", async () => {
|
|
333
|
-
await runServeMode(defaultOpts);
|
|
334
|
-
const ws = createMockWs();
|
|
335
|
-
await lastWssConnectionHandler(ws);
|
|
336
|
-
await new Promise(r => setTimeout(r, 50));
|
|
337
|
-
ws._emit("message", JSON.stringify({
|
|
338
|
-
foo: "bar"
|
|
339
|
-
}));
|
|
340
|
-
await new Promise(r => setTimeout(r, 20));
|
|
341
|
-
const errMsg = ws._sent.find(s => JSON.parse(s).type === "error" && JSON.parse(s).error === "Missing 'type' field");
|
|
342
|
-
expect(errMsg).toBeDefined();
|
|
343
|
-
});
|
|
344
|
-
});
|
|
345
|
-
});
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NodeManager — animated interactive node status panel
|
|
3
|
-
*
|
|
4
|
-
* Stays open during operations, shows spinners in-place,
|
|
5
|
-
* and updates the status display after each action.
|
|
6
|
-
*
|
|
7
|
-
* Phases:
|
|
8
|
-
* idle → status + action button
|
|
9
|
-
* busy → spinner with action label
|
|
10
|
-
* result → updated status + success/failure flash
|
|
11
|
-
*/
|
|
12
|
-
export interface NodeStatus {
|
|
13
|
-
registered: boolean;
|
|
14
|
-
running: boolean;
|
|
15
|
-
nodeId?: string;
|
|
16
|
-
port?: number;
|
|
17
|
-
}
|
|
18
|
-
export interface NodeActionResult {
|
|
19
|
-
success: boolean;
|
|
20
|
-
message: string;
|
|
21
|
-
newStatus: NodeStatus;
|
|
22
|
-
}
|
|
23
|
-
interface NodeManagerProps {
|
|
24
|
-
initialStatus: NodeStatus;
|
|
25
|
-
onToggle: () => Promise<NodeActionResult>;
|
|
26
|
-
onRegister: () => Promise<NodeActionResult>;
|
|
27
|
-
onClose: (resultMessage?: string) => void;
|
|
28
|
-
}
|
|
29
|
-
export declare function NodeManager({ initialStatus, onToggle, onRegister, onClose }: NodeManagerProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
-
export {};
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NodeManager — message-based node management (no overlay)
|
|
3
|
-
*
|
|
4
|
-
* Overlays break Ink's live-area rendering on terminal resize.
|
|
5
|
-
* /nodes pushes colored status as a static message,
|
|
6
|
-
* /nodes start|stop|register handle actions inline.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import chalk from "chalk";
|
|
10
|
-
import { checkPort, readNodeConfig, handleNodeToggle, handleNodeRegister } from "./hooks/slash-node-handlers.js";
|
|
11
|
-
import { colors, symbols } from "../shared/Theme.js";
|
|
12
|
-
const green = chalk.hex(colors.success);
|
|
13
|
-
const red = chalk.hex(colors.error);
|
|
14
|
-
const dim = chalk.hex(colors.tertiary);
|
|
15
|
-
const blue = chalk.hex(colors.brand);
|
|
16
|
-
const sec = chalk.hex(colors.secondary);
|
|
17
|
-
function formatStatus(status) {
|
|
18
|
-
const title = blue.bold(" Node");
|
|
19
|
-
if (!status.registered) {
|
|
20
|
-
return `${title}\n ${dim("Not registered.")} Run ${sec("/nodes register")} to set up.`;
|
|
21
|
-
}
|
|
22
|
-
const state = status.running ? green("● running") + dim(` port ${status.port || 7890}`) : red("○ stopped");
|
|
23
|
-
const id = status.nodeId ? `\n ${dim("Node ID")} ${sec(status.nodeId.length > 28 ? status.nodeId.slice(0, 27) + "…" : status.nodeId)}` : "";
|
|
24
|
-
return `${title}\n ${dim("Status")} ${state}${id}`;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Handle /nodes [subcommand]. Returns a colored message string.
|
|
29
|
-
*/
|
|
30
|
-
export async function handleNodesCommand(subcommand) {
|
|
31
|
-
const {
|
|
32
|
-
registered,
|
|
33
|
-
nodeId
|
|
34
|
-
} = readNodeConfig();
|
|
35
|
-
if (subcommand === "start") {
|
|
36
|
-
if (!registered) return ` ${red(symbols.cross)} Node not registered. Run ${sec("/nodes register")} first.`;
|
|
37
|
-
const running = await checkPort(7890);
|
|
38
|
-
if (running) return ` Node already running on port 7890.`;
|
|
39
|
-
const result = await handleNodeToggle();
|
|
40
|
-
return result.success ? ` ${green(symbols.check)} ${result.message}` : ` ${red(symbols.cross)} ${result.message}`;
|
|
41
|
-
}
|
|
42
|
-
if (subcommand === "stop") {
|
|
43
|
-
if (!registered) return ` ${red(symbols.cross)} Node not registered.`;
|
|
44
|
-
const running = await checkPort(7890);
|
|
45
|
-
if (!running) return ` Node is not running.`;
|
|
46
|
-
const result = await handleNodeToggle();
|
|
47
|
-
return result.success ? ` ${green(symbols.check)} ${result.message}` : ` ${red(symbols.cross)} ${result.message}`;
|
|
48
|
-
}
|
|
49
|
-
if (subcommand === "register") {
|
|
50
|
-
if (registered) return ` Node already registered: ${sec(nodeId || "")}`;
|
|
51
|
-
const result = await handleNodeRegister();
|
|
52
|
-
return result.success ? ` ${green(symbols.check)} ${result.message}` : ` ${red(symbols.cross)} ${result.message}`;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Default: show status
|
|
56
|
-
const running = registered ? await checkPort(7890) : false;
|
|
57
|
-
const status = {
|
|
58
|
-
registered,
|
|
59
|
-
running,
|
|
60
|
-
nodeId,
|
|
61
|
-
port: 7890
|
|
62
|
-
};
|
|
63
|
-
const hint = registered ? running ? `\n ${dim("/nodes stop")} to stop` : `\n ${dim("/nodes start")} to start` : `\n ${dim("/nodes register")} to set up`;
|
|
64
|
-
return formatStatus(status) + hint;
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=NodeManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NodeManager.js","names":["chalk","checkPort","readNodeConfig","handleNodeToggle","handleNodeRegister","colors","symbols","green","hex","success","red","error","dim","tertiary","blue","brand","sec","secondary","formatStatus","status","title","bold","registered","state","running","port","id","nodeId","length","slice","handleNodesCommand","subcommand","cross","result","check","message","hint"],"sources":["../../../src/cli/chat/NodeManager.tsx"],"sourcesContent":["/**\n * NodeManager — message-based node management (no overlay)\n *\n * Overlays break Ink's live-area rendering on terminal resize.\n * /nodes pushes colored status as a static message,\n * /nodes start|stop|register handle actions inline.\n */\n\nimport chalk from \"chalk\";\nimport { checkPort, readNodeConfig, handleNodeToggle, handleNodeRegister } from \"./hooks/slash-node-handlers.js\";\nimport { colors, symbols } from \"../shared/Theme.js\";\n\nexport interface NodeStatus {\n registered: boolean;\n running: boolean;\n nodeId?: string;\n port?: number;\n}\n\nexport interface NodeActionResult {\n success: boolean;\n message: string;\n newStatus: NodeStatus;\n}\n\nconst green = chalk.hex(colors.success);\nconst red = chalk.hex(colors.error);\nconst dim = chalk.hex(colors.tertiary);\nconst blue = chalk.hex(colors.brand);\nconst sec = chalk.hex(colors.secondary);\n\nfunction formatStatus(status: NodeStatus): string {\n const title = blue.bold(\" Node\");\n\n if (!status.registered) {\n return `${title}\\n ${dim(\"Not registered.\")} Run ${sec(\"/nodes register\")} to set up.`;\n }\n\n const state = status.running\n ? green(\"● running\") + dim(` port ${status.port || 7890}`)\n : red(\"○ stopped\");\n\n const id = status.nodeId\n ? `\\n ${dim(\"Node ID\")} ${sec(status.nodeId.length > 28 ? status.nodeId.slice(0, 27) + \"…\" : status.nodeId)}`\n : \"\";\n\n return `${title}\\n ${dim(\"Status\")} ${state}${id}`;\n}\n\n/**\n * Handle /nodes [subcommand]. Returns a colored message string.\n */\nexport async function handleNodesCommand(subcommand?: string): Promise<string> {\n const { registered, nodeId } = readNodeConfig();\n\n if (subcommand === \"start\") {\n if (!registered) return ` ${red(symbols.cross)} Node not registered. Run ${sec(\"/nodes register\")} first.`;\n const running = await checkPort(7890);\n if (running) return ` Node already running on port 7890.`;\n const result = await handleNodeToggle();\n return result.success\n ? ` ${green(symbols.check)} ${result.message}`\n : ` ${red(symbols.cross)} ${result.message}`;\n }\n\n if (subcommand === \"stop\") {\n if (!registered) return ` ${red(symbols.cross)} Node not registered.`;\n const running = await checkPort(7890);\n if (!running) return ` Node is not running.`;\n const result = await handleNodeToggle();\n return result.success\n ? ` ${green(symbols.check)} ${result.message}`\n : ` ${red(symbols.cross)} ${result.message}`;\n }\n\n if (subcommand === \"register\") {\n if (registered) return ` Node already registered: ${sec(nodeId || \"\")}`;\n const result = await handleNodeRegister();\n return result.success\n ? ` ${green(symbols.check)} ${result.message}`\n : ` ${red(symbols.cross)} ${result.message}`;\n }\n\n // Default: show status\n const running = registered ? await checkPort(7890) : false;\n const status: NodeStatus = { registered, running, nodeId, port: 7890 };\n const hint = registered\n ? (running ? `\\n ${dim(\"/nodes stop\")} to stop` : `\\n ${dim(\"/nodes start\")} to start`)\n : `\\n ${dim(\"/nodes register\")} to set up`;\n return formatStatus(status) + hint;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ChatInput — Menu mode stdin handler.
|
|
3
|
-
* Extracted from ChatInput.tsx to reduce file size.
|
|
4
|
-
*/
|
|
5
|
-
export interface MenuHandlerRefs {
|
|
6
|
-
menuModeRef: {
|
|
7
|
-
current: boolean;
|
|
8
|
-
};
|
|
9
|
-
menuFilterRef: {
|
|
10
|
-
current: string;
|
|
11
|
-
};
|
|
12
|
-
menuIndexRef: {
|
|
13
|
-
current: number;
|
|
14
|
-
};
|
|
15
|
-
selectedCategoryRef: {
|
|
16
|
-
current: number | null;
|
|
17
|
-
};
|
|
18
|
-
onCommandRef: {
|
|
19
|
-
current: (cmd: string) => void;
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
export interface MenuHandlerActions {
|
|
23
|
-
setMenuModeSync: (val: boolean) => void;
|
|
24
|
-
setMenuFilterSync: (val: string) => void;
|
|
25
|
-
setMenuIndexSync: (val: number) => void;
|
|
26
|
-
setSelectedCategorySync: (val: number | null) => void;
|
|
27
|
-
update: (value: string, cursor: number) => void;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Handle stdin input while in menu mode. Returns true if the input was consumed.
|
|
31
|
-
*/
|
|
32
|
-
export declare function handleMenuInput(str: string, refs: MenuHandlerRefs, actions: MenuHandlerActions): boolean;
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* slash-imsg-handlers — /imsg slash command for iMessage config inside whale code
|
|
3
|
-
*
|
|
4
|
-
* Message-based (no overlay). Returns colored strings for the chat.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import chalk from "chalk";
|
|
8
|
-
import { loadImsgConfig, allowContact, blockContact, setPrompt, setAgent, setDefaultAgent, getConfigPath } from "../../commands/imsg-config.js";
|
|
9
|
-
import { colors, symbols } from "../../shared/Theme.js";
|
|
10
|
-
const green = chalk.hex(colors.success);
|
|
11
|
-
const red = chalk.hex(colors.error);
|
|
12
|
-
const dim = chalk.hex(colors.tertiary);
|
|
13
|
-
const sec = chalk.hex(colors.secondary);
|
|
14
|
-
const blue = chalk.hex(colors.brand);
|
|
15
|
-
export async function handleImsgCommand(args) {
|
|
16
|
-
const sub = args[0];
|
|
17
|
-
|
|
18
|
-
// /imsg — show status overview
|
|
19
|
-
if (!sub) {
|
|
20
|
-
return showStatus();
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// /imsg allow <contact> [prompt text...]
|
|
24
|
-
if (sub === "allow") {
|
|
25
|
-
const contact = args[1];
|
|
26
|
-
if (!contact) return ` ${red(symbols.cross)} Usage: /imsg allow <phone_or_email>`;
|
|
27
|
-
const promptText = args.length > 2 ? args.slice(2).join(" ") : undefined;
|
|
28
|
-
allowContact(contact, {
|
|
29
|
-
system_prompt: promptText
|
|
30
|
-
});
|
|
31
|
-
let msg = ` ${green(symbols.check)} Allowed: ${sec(contact)}`;
|
|
32
|
-
if (promptText) msg += `\n Prompt: ${dim(promptText)}`;
|
|
33
|
-
return msg;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// /imsg block <contact>
|
|
37
|
-
if (sub === "block") {
|
|
38
|
-
const contact = args[1];
|
|
39
|
-
if (!contact) return ` ${red(symbols.cross)} Usage: /imsg block <phone_or_email>`;
|
|
40
|
-
blockContact(contact);
|
|
41
|
-
return ` ${green(symbols.check)} Blocked: ${sec(contact)}`;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// /imsg prompt <contact> <text...>
|
|
45
|
-
if (sub === "prompt") {
|
|
46
|
-
const contact = args[1];
|
|
47
|
-
const text = args.slice(2).join(" ");
|
|
48
|
-
if (!contact || !text) return ` ${red(symbols.cross)} Usage: /imsg prompt <contact> <text>`;
|
|
49
|
-
setPrompt(contact, text);
|
|
50
|
-
return ` ${green(symbols.check)} Prompt for ${sec(contact)}: ${dim(text)}`;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// /imsg agent <contact> <agent-id>
|
|
54
|
-
if (sub === "agent") {
|
|
55
|
-
const contact = args[1];
|
|
56
|
-
const agentId = args[2];
|
|
57
|
-
if (!contact || !agentId) return ` ${red(symbols.cross)} Usage: /imsg agent <contact> <agent-id>`;
|
|
58
|
-
setAgent(contact, agentId);
|
|
59
|
-
return ` ${green(symbols.check)} Agent for ${sec(contact)}: ${dim(agentId)}`;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// /imsg default-agent [agent-id]
|
|
63
|
-
if (sub === "default-agent") {
|
|
64
|
-
const agentId = args[1];
|
|
65
|
-
if (!agentId) {
|
|
66
|
-
const config = loadImsgConfig();
|
|
67
|
-
return config.default_agent ? ` Default agent: ${sec(config.default_agent)}` : ` No default agent set. Usage: /imsg default-agent <agent-id>`;
|
|
68
|
-
}
|
|
69
|
-
setDefaultAgent(agentId);
|
|
70
|
-
return ` ${green(symbols.check)} Default agent: ${sec(agentId)}`;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// /imsg list — list contacts
|
|
74
|
-
if (sub === "list" || sub === "contacts") {
|
|
75
|
-
return showContacts();
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// /imsg start — start daemon
|
|
79
|
-
if (sub === "start" || sub === "watch") {
|
|
80
|
-
return ` Run ${sec("whale imsg watch")} in a separate terminal to start the auto-responder daemon.`;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// /imsg stop — stop daemon
|
|
84
|
-
if (sub === "stop") {
|
|
85
|
-
try {
|
|
86
|
-
const {
|
|
87
|
-
stopImsgNode
|
|
88
|
-
} = await import("../../commands/imsg-node-bridge.js");
|
|
89
|
-
return stopImsgNode() ? ` ${green(symbols.check)} Daemon stopped` : ` No daemon running.`;
|
|
90
|
-
} catch {
|
|
91
|
-
return ` ${red(symbols.cross)} Failed to stop daemon.`;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// /imsg status
|
|
96
|
-
if (sub === "status") {
|
|
97
|
-
return showStatus();
|
|
98
|
-
}
|
|
99
|
-
return ` Unknown: /imsg ${sub}\n${showHelp()}`;
|
|
100
|
-
}
|
|
101
|
-
function showStatus() {
|
|
102
|
-
const config = loadImsgConfig();
|
|
103
|
-
const total = Object.keys(config.conversations).length;
|
|
104
|
-
const allowed = Object.values(config.conversations).filter(c => c.allowed).length;
|
|
105
|
-
const blocked = total - allowed;
|
|
106
|
-
let daemonStatus = dim("not running");
|
|
107
|
-
try {
|
|
108
|
-
// Dynamic import to avoid pulling in node-bridge at load time
|
|
109
|
-
const bridge = require("../../commands/imsg-node-bridge.js");
|
|
110
|
-
const status = bridge.getImsgNodeStatus?.();
|
|
111
|
-
if (status) daemonStatus = green(`running (PID ${status.pid})`);
|
|
112
|
-
} catch {/* not available */}
|
|
113
|
-
const lines = [blue.bold(" iMessage"), ` Daemon ${daemonStatus}`, ` Contacts ${green(String(allowed) + " allowed")}${blocked > 0 ? ` ${red(String(blocked) + " blocked")}` : ""}${total === 0 ? dim(" none configured") : ""}`];
|
|
114
|
-
if (config.default_agent) {
|
|
115
|
-
lines.push(` Agent ${sec(config.default_agent)}`);
|
|
116
|
-
}
|
|
117
|
-
lines.push(` Config ${dim(getConfigPath())}`);
|
|
118
|
-
lines.push("");
|
|
119
|
-
lines.push(showHelp());
|
|
120
|
-
return lines.join("\n");
|
|
121
|
-
}
|
|
122
|
-
function showContacts() {
|
|
123
|
-
const config = loadImsgConfig();
|
|
124
|
-
const entries = Object.entries(config.conversations);
|
|
125
|
-
if (entries.length === 0) {
|
|
126
|
-
return ` No contacts configured. Use ${sec("/imsg allow <phone>")} to add one.`;
|
|
127
|
-
}
|
|
128
|
-
const lines = [blue.bold(" Contacts")];
|
|
129
|
-
for (const [contact, cfg] of entries) {
|
|
130
|
-
const status = cfg.allowed ? green("● allowed") : red("○ blocked");
|
|
131
|
-
let detail = ` ${status} ${sec(contact)}`;
|
|
132
|
-
if (cfg.agent_id) detail += ` ${dim("agent:" + cfg.agent_id)}`;
|
|
133
|
-
if (cfg.system_prompt) detail += `\n ${dim(cfg.system_prompt.slice(0, 60))}${cfg.system_prompt.length > 60 ? "…" : ""}`;
|
|
134
|
-
lines.push(detail);
|
|
135
|
-
}
|
|
136
|
-
return lines.join("\n");
|
|
137
|
-
}
|
|
138
|
-
function showHelp() {
|
|
139
|
-
return dim(` /imsg Status overview
|
|
140
|
-
/imsg allow <contact> Allow auto-replies
|
|
141
|
-
/imsg block <contact> Block auto-replies
|
|
142
|
-
/imsg prompt <contact> ... Set system prompt
|
|
143
|
-
/imsg agent <contact> <id> Set agent per contact
|
|
144
|
-
/imsg default-agent [<id>] Get/set default agent
|
|
145
|
-
/imsg list Show all contacts
|
|
146
|
-
/imsg stop Stop daemon`);
|
|
147
|
-
}
|
|
148
|
-
//# sourceMappingURL=slash-imsg-handlers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"slash-imsg-handlers.js","names":["chalk","loadImsgConfig","allowContact","blockContact","setPrompt","setAgent","setDefaultAgent","getConfigPath","colors","symbols","green","hex","success","red","error","dim","tertiary","sec","secondary","blue","brand","handleImsgCommand","args","sub","showStatus","contact","cross","promptText","length","slice","join","undefined","system_prompt","msg","check","text","agentId","config","default_agent","showContacts","stopImsgNode","showHelp","total","Object","keys","conversations","allowed","values","filter","c","blocked","daemonStatus","bridge","require","status","getImsgNodeStatus","pid","lines","bold","String","push","entries","cfg","detail","agent_id"],"sources":["../../../../src/cli/chat/hooks/slash-imsg-handlers.ts"],"sourcesContent":["/**\n * slash-imsg-handlers — /imsg slash command for iMessage config inside whale code\n *\n * Message-based (no overlay). Returns colored strings for the chat.\n */\n\nimport chalk from \"chalk\";\nimport {\n loadImsgConfig,\n allowContact,\n blockContact,\n setPrompt,\n setAgent,\n setDefaultAgent,\n getConfigPath,\n} from \"../../commands/imsg-config.js\";\nimport { colors, symbols } from \"../../shared/Theme.js\";\n\nconst green = chalk.hex(colors.success);\nconst red = chalk.hex(colors.error);\nconst dim = chalk.hex(colors.tertiary);\nconst sec = chalk.hex(colors.secondary);\nconst blue = chalk.hex(colors.brand);\n\nexport async function handleImsgCommand(args: string[]): Promise<string> {\n const sub = args[0];\n\n // /imsg — show status overview\n if (!sub) {\n return showStatus();\n }\n\n // /imsg allow <contact> [prompt text...]\n if (sub === \"allow\") {\n const contact = args[1];\n if (!contact) return ` ${red(symbols.cross)} Usage: /imsg allow <phone_or_email>`;\n const promptText = args.length > 2 ? args.slice(2).join(\" \") : undefined;\n allowContact(contact, { system_prompt: promptText });\n let msg = ` ${green(symbols.check)} Allowed: ${sec(contact)}`;\n if (promptText) msg += `\\n Prompt: ${dim(promptText)}`;\n return msg;\n }\n\n // /imsg block <contact>\n if (sub === \"block\") {\n const contact = args[1];\n if (!contact) return ` ${red(symbols.cross)} Usage: /imsg block <phone_or_email>`;\n blockContact(contact);\n return ` ${green(symbols.check)} Blocked: ${sec(contact)}`;\n }\n\n // /imsg prompt <contact> <text...>\n if (sub === \"prompt\") {\n const contact = args[1];\n const text = args.slice(2).join(\" \");\n if (!contact || !text) return ` ${red(symbols.cross)} Usage: /imsg prompt <contact> <text>`;\n setPrompt(contact, text);\n return ` ${green(symbols.check)} Prompt for ${sec(contact)}: ${dim(text)}`;\n }\n\n // /imsg agent <contact> <agent-id>\n if (sub === \"agent\") {\n const contact = args[1];\n const agentId = args[2];\n if (!contact || !agentId) return ` ${red(symbols.cross)} Usage: /imsg agent <contact> <agent-id>`;\n setAgent(contact, agentId);\n return ` ${green(symbols.check)} Agent for ${sec(contact)}: ${dim(agentId)}`;\n }\n\n // /imsg default-agent [agent-id]\n if (sub === \"default-agent\") {\n const agentId = args[1];\n if (!agentId) {\n const config = loadImsgConfig();\n return config.default_agent\n ? ` Default agent: ${sec(config.default_agent)}`\n : ` No default agent set. Usage: /imsg default-agent <agent-id>`;\n }\n setDefaultAgent(agentId);\n return ` ${green(symbols.check)} Default agent: ${sec(agentId)}`;\n }\n\n // /imsg list — list contacts\n if (sub === \"list\" || sub === \"contacts\") {\n return showContacts();\n }\n\n // /imsg start — start daemon\n if (sub === \"start\" || sub === \"watch\") {\n return ` Run ${sec(\"whale imsg watch\")} in a separate terminal to start the auto-responder daemon.`;\n }\n\n // /imsg stop — stop daemon\n if (sub === \"stop\") {\n try {\n const { stopImsgNode } = await import(\"../../commands/imsg-node-bridge.js\");\n return stopImsgNode()\n ? ` ${green(symbols.check)} Daemon stopped`\n : ` No daemon running.`;\n } catch {\n return ` ${red(symbols.cross)} Failed to stop daemon.`;\n }\n }\n\n // /imsg status\n if (sub === \"status\") {\n return showStatus();\n }\n\n return ` Unknown: /imsg ${sub}\\n${showHelp()}`;\n}\n\nfunction showStatus(): string {\n const config = loadImsgConfig();\n const total = Object.keys(config.conversations).length;\n const allowed = Object.values(config.conversations).filter((c) => c.allowed).length;\n const blocked = total - allowed;\n\n let daemonStatus = dim(\"not running\");\n try {\n // Dynamic import to avoid pulling in node-bridge at load time\n const bridge = require(\"../../commands/imsg-node-bridge.js\");\n const status = bridge.getImsgNodeStatus?.();\n if (status) daemonStatus = green(`running (PID ${status.pid})`);\n } catch { /* not available */ }\n\n const lines = [\n blue.bold(\" iMessage\"),\n ` Daemon ${daemonStatus}`,\n ` Contacts ${green(String(allowed) + \" allowed\")}${blocked > 0 ? ` ${red(String(blocked) + \" blocked\")}` : \"\"}${total === 0 ? dim(\" none configured\") : \"\"}`,\n ];\n\n if (config.default_agent) {\n lines.push(` Agent ${sec(config.default_agent)}`);\n }\n\n lines.push(` Config ${dim(getConfigPath())}`);\n lines.push(\"\");\n lines.push(showHelp());\n\n return lines.join(\"\\n\");\n}\n\nfunction showContacts(): string {\n const config = loadImsgConfig();\n const entries = Object.entries(config.conversations);\n if (entries.length === 0) {\n return ` No contacts configured. Use ${sec(\"/imsg allow <phone>\")} to add one.`;\n }\n\n const lines = [blue.bold(\" Contacts\")];\n for (const [contact, cfg] of entries) {\n const status = cfg.allowed ? green(\"● allowed\") : red(\"○ blocked\");\n let detail = ` ${status} ${sec(contact)}`;\n if (cfg.agent_id) detail += ` ${dim(\"agent:\" + cfg.agent_id)}`;\n if (cfg.system_prompt) detail += `\\n ${dim(cfg.system_prompt.slice(0, 60))}${cfg.system_prompt.length > 60 ? \"…\" : \"\"}`;\n lines.push(detail);\n }\n return lines.join(\"\\n\");\n}\n\nfunction showHelp(): string {\n return dim(` /imsg Status overview\n /imsg allow <contact> Allow auto-replies\n /imsg block <contact> Block auto-replies\n /imsg prompt <contact> ... Set system prompt\n /imsg agent <contact> <id> Set agent per contact\n /imsg default-agent [<id>] Get/set default agent\n /imsg list Show all contacts\n /imsg stop Stop daemon`);\n}\n"],"mappings":"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","ignoreList":[]}
|