whale-code 6.5.10 → 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/commands/doctor.js +1 -6
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/services/agent-loop-tools.js +11 -2
- package/dist/cli/services/agent-loop-tools.js.map +1 -1
- package/dist/cli/services/agent-loop.js +1 -1
- package/dist/cli/services/agent-loop.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.d.ts +8 -10
- package/dist/cli/services/config-store.js +14 -13
- 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/setup/SetupApp.d.ts +2 -2
- package/dist/cli/setup/SetupApp.js +91 -254
- package/dist/cli/setup/SetupApp.js.map +1 -1
- package/dist/cli/shared/SpinnerSlot.js +4 -1
- package/dist/cli/shared/SpinnerSlot.js.map +1 -1
- package/dist/cli/status/StatusApp.js +3 -3
- package/dist/cli/status/StatusApp.js.map +1 -1
- package/dist/index.js +13 -3
- package/dist/index.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/setup.js +5 -25
- package/dist/setup.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,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ink Incremental Rendering Patch
|
|
3
|
-
*
|
|
4
|
-
* Replaces Ink's standard log-update instance (erase everything, rewrite everything)
|
|
5
|
-
* with its built-in incremental variant (only rewrite changed lines).
|
|
6
|
-
*
|
|
7
|
-
* This dramatically reduces flicker for updates that change few lines (spinners,
|
|
8
|
-
* streaming text, tool status changes) because unchanged lines are never touched.
|
|
9
|
-
*
|
|
10
|
-
* How it works:
|
|
11
|
-
* - Ink's log-update has two modes: standard (erase+rewrite all) and incremental
|
|
12
|
-
* (line-level diff — skip unchanged lines, rewrite only changed ones)
|
|
13
|
-
* - Ink defaults to standard mode. This patch swaps in incremental mode.
|
|
14
|
-
* - The throttledLog arrow function accesses this.log dynamically (not via closure),
|
|
15
|
-
* so replacing ink.log is picked up automatically. No autoBind issues.
|
|
16
|
-
*
|
|
17
|
-
* Call after render() — the Ink instance must exist in the registry.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
import { pathToFileURL } from "url";
|
|
21
|
-
import { resolve, dirname } from "path";
|
|
22
|
-
import { fileURLToPath } from "url";
|
|
23
|
-
export async function patchInkIncremental() {
|
|
24
|
-
try {
|
|
25
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
26
|
-
const inkBuildDir = resolve(__dirname, "..", "..", "..", "node_modules", "ink", "build");
|
|
27
|
-
const [{
|
|
28
|
-
default: instances
|
|
29
|
-
}, {
|
|
30
|
-
default: logUpdate
|
|
31
|
-
}] = await Promise.all([import(/* @vite-ignore */pathToFileURL(resolve(inkBuildDir, "instances.js")).href), import(/* @vite-ignore */pathToFileURL(resolve(inkBuildDir, "log-update.js")).href)]);
|
|
32
|
-
const ink = instances.get(process.stdout);
|
|
33
|
-
if (!ink) return;
|
|
34
|
-
const oldLog = ink.log;
|
|
35
|
-
const incrementalLog = logUpdate.create(ink.options.stdout, {
|
|
36
|
-
incremental: true
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
// Sync the new log's internal state with what's currently on screen
|
|
40
|
-
if (ink.lastOutputToRender) {
|
|
41
|
-
incrementalLog.sync(ink.lastOutputToRender);
|
|
42
|
-
}
|
|
43
|
-
if (ink.cursorPosition) {
|
|
44
|
-
incrementalLog.setCursorPosition(ink.cursorPosition);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// Replace the log instance
|
|
48
|
-
ink.log = incrementalLog;
|
|
49
|
-
|
|
50
|
-
// In unthrottled mode (debug/screenReader), throttledLog === oldLog (direct ref).
|
|
51
|
-
// Replace it too so all paths use the incremental renderer.
|
|
52
|
-
if (ink.throttledLog === oldLog) {
|
|
53
|
-
ink.throttledLog = incrementalLog;
|
|
54
|
-
}
|
|
55
|
-
} catch {
|
|
56
|
-
// Silent fail — incremental rendering is best-effort
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=ink-incremental.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ink-incremental.js","names":["pathToFileURL","resolve","dirname","fileURLToPath","patchInkIncremental","__dirname","import","meta","url","inkBuildDir","default","instances","logUpdate","Promise","all","href","ink","get","process","stdout","oldLog","log","incrementalLog","create","options","incremental","lastOutputToRender","sync","cursorPosition","setCursorPosition","throttledLog"],"sources":["../../../src/cli/services/ink-incremental.ts"],"sourcesContent":["/**\n * Ink Incremental Rendering Patch\n *\n * Replaces Ink's standard log-update instance (erase everything, rewrite everything)\n * with its built-in incremental variant (only rewrite changed lines).\n *\n * This dramatically reduces flicker for updates that change few lines (spinners,\n * streaming text, tool status changes) because unchanged lines are never touched.\n *\n * How it works:\n * - Ink's log-update has two modes: standard (erase+rewrite all) and incremental\n * (line-level diff — skip unchanged lines, rewrite only changed ones)\n * - Ink defaults to standard mode. This patch swaps in incremental mode.\n * - The throttledLog arrow function accesses this.log dynamically (not via closure),\n * so replacing ink.log is picked up automatically. No autoBind issues.\n *\n * Call after render() — the Ink instance must exist in the registry.\n */\n\nimport { pathToFileURL } from \"url\";\nimport { resolve, dirname } from \"path\";\nimport { fileURLToPath } from \"url\";\n\ninterface InkLog {\n (output: string): boolean | void;\n clear: () => void;\n done: () => void;\n sync: (str: string) => void;\n setCursorPosition: (pos: unknown) => void;\n isCursorDirty: () => boolean;\n willRender: (str: string) => boolean;\n}\n\ninterface InkInstance {\n log: InkLog;\n throttledLog: InkLog | ((output: string) => void);\n lastOutputToRender: string;\n cursorPosition: unknown;\n options: { stdout: NodeJS.WriteStream };\n}\n\nexport async function patchInkIncremental(): Promise<void> {\n try {\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const inkBuildDir = resolve(__dirname, \"..\", \"..\", \"..\", \"node_modules\", \"ink\", \"build\");\n\n const [{ default: instances }, { default: logUpdate }] = await Promise.all([\n import(/* @vite-ignore */ pathToFileURL(resolve(inkBuildDir, \"instances.js\")).href) as Promise<{\n default: WeakMap<NodeJS.WriteStream, InkInstance>;\n }>,\n import(/* @vite-ignore */ pathToFileURL(resolve(inkBuildDir, \"log-update.js\")).href) as Promise<{\n default: {\n create: (\n stream: NodeJS.WriteStream,\n opts?: { incremental?: boolean; showCursor?: boolean },\n ) => InkLog;\n };\n }>,\n ]);\n\n const ink = instances.get(process.stdout);\n if (!ink) return;\n\n const oldLog = ink.log;\n const incrementalLog = logUpdate.create(ink.options.stdout, { incremental: true });\n\n // Sync the new log's internal state with what's currently on screen\n if (ink.lastOutputToRender) {\n incrementalLog.sync(ink.lastOutputToRender);\n }\n if (ink.cursorPosition) {\n incrementalLog.setCursorPosition(ink.cursorPosition);\n }\n\n // Replace the log instance\n ink.log = incrementalLog;\n\n // In unthrottled mode (debug/screenReader), throttledLog === oldLog (direct ref).\n // Replace it too so all paths use the incremental renderer.\n if (ink.throttledLog === (oldLog as unknown)) {\n ink.throttledLog = incrementalLog;\n }\n } catch {\n // Silent fail — incremental rendering is best-effort\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,aAAa,QAAQ,KAAK;AACnC,SAASC,OAAO,EAAEC,OAAO,QAAQ,MAAM;AACvC,SAASC,aAAa,QAAQ,KAAK;AAoBnC,OAAO,eAAeC,mBAAmBA,CAAA,EAAkB;EACzD,IAAI;IACF,MAAMC,SAAS,GAAGH,OAAO,CAACC,aAAa,CAACG,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;IACzD,MAAMC,WAAW,GAAGR,OAAO,CAACI,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,CAAC;IAExF,MAAM,CAAC;MAAEK,OAAO,EAAEC;IAAU,CAAC,EAAE;MAAED,OAAO,EAAEE;IAAU,CAAC,CAAC,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC,CACzE,MAAM,CAAC,kBAAmBd,aAAa,CAACC,OAAO,CAACQ,WAAW,EAAE,cAAc,CAAC,CAAC,CAACM,IAAI,CAAC,EAGnF,MAAM,CAAC,kBAAmBf,aAAa,CAACC,OAAO,CAACQ,WAAW,EAAE,eAAe,CAAC,CAAC,CAACM,IAAI,CAAC,CAQrF,CAAC;IAEF,MAAMC,GAAG,GAAGL,SAAS,CAACM,GAAG,CAACC,OAAO,CAACC,MAAM,CAAC;IACzC,IAAI,CAACH,GAAG,EAAE;IAEV,MAAMI,MAAM,GAAGJ,GAAG,CAACK,GAAG;IACtB,MAAMC,cAAc,GAAGV,SAAS,CAACW,MAAM,CAACP,GAAG,CAACQ,OAAO,CAACL,MAAM,EAAE;MAAEM,WAAW,EAAE;IAAK,CAAC,CAAC;;IAElF;IACA,IAAIT,GAAG,CAACU,kBAAkB,EAAE;MAC1BJ,cAAc,CAACK,IAAI,CAACX,GAAG,CAACU,kBAAkB,CAAC;IAC7C;IACA,IAAIV,GAAG,CAACY,cAAc,EAAE;MACtBN,cAAc,CAACO,iBAAiB,CAACb,GAAG,CAACY,cAAc,CAAC;IACtD;;IAEA;IACAZ,GAAG,CAACK,GAAG,GAAGC,cAAc;;IAExB;IACA;IACA,IAAIN,GAAG,CAACc,YAAY,KAAMV,MAAkB,EAAE;MAC5CJ,GAAG,CAACc,YAAY,GAAGR,cAAc;IACnC;EACF,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ","ignoreList":[]}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ink Resize Ghost Fix
|
|
3
|
-
*
|
|
4
|
-
* Patches Ink 6's resize handler to prevent ghost artifacts from text reflow.
|
|
5
|
-
*
|
|
6
|
-
* Problem: Ink's resized() clears the dynamic area using eraseLines(N) where N
|
|
7
|
-
* is the string line count. But when the terminal shrinks, already-painted text
|
|
8
|
-
* reflows to more visual lines than N, so eraseLines(N) doesn't erase enough,
|
|
9
|
-
* leaving "ghost" lines above the new render.
|
|
10
|
-
*
|
|
11
|
-
* Fix: After Ink's standard clear, calculate the extra visual lines caused by
|
|
12
|
-
* reflow at the new width and erase them with cursor-up + erase-to-end-of-screen.
|
|
13
|
-
*/
|
|
14
|
-
/**
|
|
15
|
-
* Patches the Ink instance's resize handler to account for visual line reflow.
|
|
16
|
-
* Call this AFTER render() — the Ink instance must exist in the registry.
|
|
17
|
-
*/
|
|
18
|
-
export declare function patchInkResize(): Promise<void>;
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ink Resize Ghost Fix
|
|
3
|
-
*
|
|
4
|
-
* Patches Ink 6's resize handler to prevent ghost artifacts from text reflow.
|
|
5
|
-
*
|
|
6
|
-
* Problem: Ink's resized() clears the dynamic area using eraseLines(N) where N
|
|
7
|
-
* is the string line count. But when the terminal shrinks, already-painted text
|
|
8
|
-
* reflows to more visual lines than N, so eraseLines(N) doesn't erase enough,
|
|
9
|
-
* leaving "ghost" lines above the new render.
|
|
10
|
-
*
|
|
11
|
-
* Fix: After Ink's standard clear, calculate the extra visual lines caused by
|
|
12
|
-
* reflow at the new width and erase them with cursor-up + erase-to-end-of-screen.
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
import { pathToFileURL } from "url";
|
|
16
|
-
import { resolve, dirname } from "path";
|
|
17
|
-
import { fileURLToPath } from "url";
|
|
18
|
-
|
|
19
|
-
// ── Types for Ink internals (not exported by Ink) ──
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Patches the Ink instance's resize handler to account for visual line reflow.
|
|
23
|
-
* Call this AFTER render() — the Ink instance must exist in the registry.
|
|
24
|
-
*/
|
|
25
|
-
export async function patchInkResize() {
|
|
26
|
-
try {
|
|
27
|
-
// Dynamically import Ink's internal instance registry and wrap-ansi
|
|
28
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
29
|
-
const instancesPath = pathToFileURL(resolve(__dirname, "..", "..", "..", "node_modules", "ink", "build", "instances.js")).href;
|
|
30
|
-
const [{
|
|
31
|
-
default: instances
|
|
32
|
-
}, {
|
|
33
|
-
default: wrapAnsi
|
|
34
|
-
}] = await Promise.all([import(/* @vite-ignore */instancesPath), import("wrap-ansi")]);
|
|
35
|
-
const ink = instances.get(process.stdout);
|
|
36
|
-
if (!ink) return;
|
|
37
|
-
|
|
38
|
-
// Replace Ink's resized handler with our visual-line-aware version
|
|
39
|
-
ink.resized = () => {
|
|
40
|
-
const currentWidth = ink.getTerminalWidth();
|
|
41
|
-
if (currentWidth < ink.lastTerminalWidth) {
|
|
42
|
-
// Calculate how many visual lines the old output occupies at the NEW width.
|
|
43
|
-
// wrapAnsi handles ANSI escape codes, wide chars (CJK), and emoji correctly.
|
|
44
|
-
const oldOutput = ink.lastOutput || "";
|
|
45
|
-
const stringLineCount = oldOutput === "" ? 0 : oldOutput.split("\n").length;
|
|
46
|
-
let visualLineCount = stringLineCount;
|
|
47
|
-
if (oldOutput && currentWidth > 0) {
|
|
48
|
-
const wrapped = wrapAnsi(oldOutput, currentWidth, {
|
|
49
|
-
trim: false,
|
|
50
|
-
hard: true
|
|
51
|
-
});
|
|
52
|
-
visualLineCount = wrapped === "" ? 0 : wrapped.split("\n").length;
|
|
53
|
-
}
|
|
54
|
-
const extraLines = Math.max(0, visualLineCount - stringLineCount);
|
|
55
|
-
|
|
56
|
-
// Standard clear — erases stringLineCount lines, resets log's internal state
|
|
57
|
-
ink.log.clear();
|
|
58
|
-
|
|
59
|
-
// Erase additional ghost lines caused by text reflow.
|
|
60
|
-
// After log.clear(), cursor is stringLineCount lines above bottom.
|
|
61
|
-
// Ghost lines are above that — move up extraLines more and erase to end of screen.
|
|
62
|
-
if (extraLines > 0) {
|
|
63
|
-
ink.options.stdout.write(`\x1b[${extraLines}A\x1b[J`);
|
|
64
|
-
}
|
|
65
|
-
ink.lastOutput = "";
|
|
66
|
-
ink.lastOutputToRender = "";
|
|
67
|
-
}
|
|
68
|
-
ink.calculateLayout();
|
|
69
|
-
ink.onRender();
|
|
70
|
-
ink.lastTerminalWidth = currentWidth;
|
|
71
|
-
};
|
|
72
|
-
} catch {
|
|
73
|
-
// Silent fail — resize fix is best-effort, app still works without it
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=ink-resize-fix.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ink-resize-fix.js","names":["pathToFileURL","resolve","dirname","fileURLToPath","patchInkResize","__dirname","import","meta","url","instancesPath","href","default","instances","wrapAnsi","Promise","all","ink","get","process","stdout","resized","currentWidth","getTerminalWidth","lastTerminalWidth","oldOutput","lastOutput","stringLineCount","split","length","visualLineCount","wrapped","trim","hard","extraLines","Math","max","log","clear","options","write","lastOutputToRender","calculateLayout","onRender"],"sources":["../../../src/cli/services/ink-resize-fix.ts"],"sourcesContent":["/**\n * Ink Resize Ghost Fix\n *\n * Patches Ink 6's resize handler to prevent ghost artifacts from text reflow.\n *\n * Problem: Ink's resized() clears the dynamic area using eraseLines(N) where N\n * is the string line count. But when the terminal shrinks, already-painted text\n * reflows to more visual lines than N, so eraseLines(N) doesn't erase enough,\n * leaving \"ghost\" lines above the new render.\n *\n * Fix: After Ink's standard clear, calculate the extra visual lines caused by\n * reflow at the new width and erase them with cursor-up + erase-to-end-of-screen.\n */\n\nimport { pathToFileURL } from \"url\";\nimport { resolve, dirname } from \"path\";\nimport { fileURLToPath } from \"url\";\n\n// ── Types for Ink internals (not exported by Ink) ──\n\ninterface InkLog {\n clear: () => void;\n (output: string): void;\n done: () => void;\n sync: (str: string) => void;\n setCursorPosition: (pos: unknown) => void;\n isCursorDirty: () => boolean;\n willRender: (str: string) => boolean;\n}\n\ninterface InkInstance {\n lastOutput: string;\n lastOutputToRender: string;\n lastTerminalWidth: number;\n lastOutputHeight: number;\n log: InkLog;\n options: { stdout: NodeJS.WriteStream };\n getTerminalWidth: () => number;\n calculateLayout: () => void;\n onRender: () => void;\n resized: () => void;\n}\n\n/**\n * Patches the Ink instance's resize handler to account for visual line reflow.\n * Call this AFTER render() — the Ink instance must exist in the registry.\n */\nexport async function patchInkResize(): Promise<void> {\n try {\n // Dynamically import Ink's internal instance registry and wrap-ansi\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const instancesPath = pathToFileURL(\n resolve(__dirname, \"..\", \"..\", \"..\", \"node_modules\", \"ink\", \"build\", \"instances.js\"),\n ).href;\n\n const [{ default: instances }, { default: wrapAnsi }] = await Promise.all([\n import(/* @vite-ignore */ instancesPath) as Promise<{ default: WeakMap<NodeJS.WriteStream, InkInstance> }>,\n import(\"wrap-ansi\") as Promise<{ default: typeof import(\"wrap-ansi\").default }>,\n ]);\n\n const ink = instances.get(process.stdout);\n if (!ink) return;\n\n // Replace Ink's resized handler with our visual-line-aware version\n ink.resized = () => {\n const currentWidth = ink.getTerminalWidth();\n\n if (currentWidth < ink.lastTerminalWidth) {\n // Calculate how many visual lines the old output occupies at the NEW width.\n // wrapAnsi handles ANSI escape codes, wide chars (CJK), and emoji correctly.\n const oldOutput = ink.lastOutput || \"\";\n const stringLineCount = oldOutput === \"\" ? 0 : oldOutput.split(\"\\n\").length;\n\n let visualLineCount = stringLineCount;\n if (oldOutput && currentWidth > 0) {\n const wrapped = wrapAnsi(oldOutput, currentWidth, { trim: false, hard: true });\n visualLineCount = wrapped === \"\" ? 0 : wrapped.split(\"\\n\").length;\n }\n\n const extraLines = Math.max(0, visualLineCount - stringLineCount);\n\n // Standard clear — erases stringLineCount lines, resets log's internal state\n ink.log.clear();\n\n // Erase additional ghost lines caused by text reflow.\n // After log.clear(), cursor is stringLineCount lines above bottom.\n // Ghost lines are above that — move up extraLines more and erase to end of screen.\n if (extraLines > 0) {\n ink.options.stdout.write(`\\x1b[${extraLines}A\\x1b[J`);\n }\n\n ink.lastOutput = \"\";\n ink.lastOutputToRender = \"\";\n }\n\n ink.calculateLayout();\n ink.onRender();\n ink.lastTerminalWidth = currentWidth;\n };\n } catch {\n // Silent fail — resize fix is best-effort, app still works without it\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,aAAa,QAAQ,KAAK;AACnC,SAASC,OAAO,EAAEC,OAAO,QAAQ,MAAM;AACvC,SAASC,aAAa,QAAQ,KAAK;;AAEnC;;AAyBA;AACA;AACA;AACA;AACA,OAAO,eAAeC,cAAcA,CAAA,EAAkB;EACpD,IAAI;IACF;IACA,MAAMC,SAAS,GAAGH,OAAO,CAACC,aAAa,CAACG,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC;IACzD,MAAMC,aAAa,GAAGT,aAAa,CACjCC,OAAO,CAACI,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,CACrF,CAAC,CAACK,IAAI;IAEN,MAAM,CAAC;MAAEC,OAAO,EAAEC;IAAU,CAAC,EAAE;MAAED,OAAO,EAAEE;IAAS,CAAC,CAAC,GAAG,MAAMC,OAAO,CAACC,GAAG,CAAC,CACxE,MAAM,CAAC,kBAAmBN,aAAa,CAAC,EACxC,MAAM,CAAC,WAAW,CAAC,CACpB,CAAC;IAEF,MAAMO,GAAG,GAAGJ,SAAS,CAACK,GAAG,CAACC,OAAO,CAACC,MAAM,CAAC;IACzC,IAAI,CAACH,GAAG,EAAE;;IAEV;IACAA,GAAG,CAACI,OAAO,GAAG,MAAM;MAClB,MAAMC,YAAY,GAAGL,GAAG,CAACM,gBAAgB,CAAC,CAAC;MAE3C,IAAID,YAAY,GAAGL,GAAG,CAACO,iBAAiB,EAAE;QACxC;QACA;QACA,MAAMC,SAAS,GAAGR,GAAG,CAACS,UAAU,IAAI,EAAE;QACtC,MAAMC,eAAe,GAAGF,SAAS,KAAK,EAAE,GAAG,CAAC,GAAGA,SAAS,CAACG,KAAK,CAAC,IAAI,CAAC,CAACC,MAAM;QAE3E,IAAIC,eAAe,GAAGH,eAAe;QACrC,IAAIF,SAAS,IAAIH,YAAY,GAAG,CAAC,EAAE;UACjC,MAAMS,OAAO,GAAGjB,QAAQ,CAACW,SAAS,EAAEH,YAAY,EAAE;YAAEU,IAAI,EAAE,KAAK;YAAEC,IAAI,EAAE;UAAK,CAAC,CAAC;UAC9EH,eAAe,GAAGC,OAAO,KAAK,EAAE,GAAG,CAAC,GAAGA,OAAO,CAACH,KAAK,CAAC,IAAI,CAAC,CAACC,MAAM;QACnE;QAEA,MAAMK,UAAU,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEN,eAAe,GAAGH,eAAe,CAAC;;QAEjE;QACAV,GAAG,CAACoB,GAAG,CAACC,KAAK,CAAC,CAAC;;QAEf;QACA;QACA;QACA,IAAIJ,UAAU,GAAG,CAAC,EAAE;UAClBjB,GAAG,CAACsB,OAAO,CAACnB,MAAM,CAACoB,KAAK,CAAC,QAAQN,UAAU,SAAS,CAAC;QACvD;QAEAjB,GAAG,CAACS,UAAU,GAAG,EAAE;QACnBT,GAAG,CAACwB,kBAAkB,GAAG,EAAE;MAC7B;MAEAxB,GAAG,CAACyB,eAAe,CAAC,CAAC;MACrBzB,GAAG,CAAC0B,QAAQ,CAAC,CAAC;MACd1B,GAAG,CAACO,iBAAiB,GAAGF,YAAY;IACtC,CAAC;EACH,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ","ignoreList":[]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ink Synchronized Output — DEC 2026 sync markers (DISABLED)
|
|
3
|
-
*
|
|
4
|
-
* This patch is currently a no-op. DEC 2026 sync markers wrap cursor movement,
|
|
5
|
-
* line clears, and content writes into one atomic update — but Ink's internal
|
|
6
|
-
* rendering pipeline (cursor-up → erase → write) conflicts with sync buffering
|
|
7
|
-
* in practice, causing content to vanish or render in the wrong position.
|
|
8
|
-
*
|
|
9
|
-
* The export is kept so app.tsx doesn't need a code change.
|
|
10
|
-
* Re-enable after Ink-level testing confirms compatibility.
|
|
11
|
-
*/
|
|
12
|
-
export declare function patchInkSyncOutput(): Promise<void>;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ink Synchronized Output — DEC 2026 sync markers (DISABLED)
|
|
3
|
-
*
|
|
4
|
-
* This patch is currently a no-op. DEC 2026 sync markers wrap cursor movement,
|
|
5
|
-
* line clears, and content writes into one atomic update — but Ink's internal
|
|
6
|
-
* rendering pipeline (cursor-up → erase → write) conflicts with sync buffering
|
|
7
|
-
* in practice, causing content to vanish or render in the wrong position.
|
|
8
|
-
*
|
|
9
|
-
* The export is kept so app.tsx doesn't need a code change.
|
|
10
|
-
* Re-enable after Ink-level testing confirms compatibility.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
export async function patchInkSyncOutput() {
|
|
14
|
-
// No-op — sync output disabled pending terminal compatibility testing
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=ink-sync-output.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ink-sync-output.js","names":["patchInkSyncOutput"],"sources":["../../../src/cli/services/ink-sync-output.ts"],"sourcesContent":["/**\n * Ink Synchronized Output — DEC 2026 sync markers (DISABLED)\n *\n * This patch is currently a no-op. DEC 2026 sync markers wrap cursor movement,\n * line clears, and content writes into one atomic update — but Ink's internal\n * rendering pipeline (cursor-up → erase → write) conflicts with sync buffering\n * in practice, causing content to vanish or render in the wrong position.\n *\n * The export is kept so app.tsx doesn't need a code change.\n * Re-enable after Ink-level testing confirms compatibility.\n */\n\nexport async function patchInkSyncOutput(): Promise<void> {\n // No-op — sync output disabled pending terminal compatibility testing\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,eAAeA,kBAAkBA,CAAA,EAAkB;EACxD;AAAA","ignoreList":[]}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Interactive tool definitions — ask_user_question, enter_plan_mode, exit_plan_mode.
|
|
3
|
-
* Extracted from interactive-tools.ts for file size management.
|
|
4
|
-
*/
|
|
5
|
-
export declare const INTERACTIVE_TOOL_DEFINITIONS: ({
|
|
6
|
-
name: string;
|
|
7
|
-
description: string;
|
|
8
|
-
input_schema: {
|
|
9
|
-
type: string;
|
|
10
|
-
properties: {
|
|
11
|
-
questions: {
|
|
12
|
-
type: string;
|
|
13
|
-
description: string;
|
|
14
|
-
items: {
|
|
15
|
-
type: string;
|
|
16
|
-
properties: {
|
|
17
|
-
question: {
|
|
18
|
-
type: string;
|
|
19
|
-
description: string;
|
|
20
|
-
};
|
|
21
|
-
header: {
|
|
22
|
-
type: string;
|
|
23
|
-
description: string;
|
|
24
|
-
};
|
|
25
|
-
options: {
|
|
26
|
-
type: string;
|
|
27
|
-
description: string;
|
|
28
|
-
items: {
|
|
29
|
-
type: string;
|
|
30
|
-
properties: {
|
|
31
|
-
label: {
|
|
32
|
-
type: string;
|
|
33
|
-
description: string;
|
|
34
|
-
};
|
|
35
|
-
description: {
|
|
36
|
-
type: string;
|
|
37
|
-
description: string;
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
required: string[];
|
|
41
|
-
};
|
|
42
|
-
};
|
|
43
|
-
multiSelect: {
|
|
44
|
-
type: string;
|
|
45
|
-
description: string;
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
required: string[];
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
plan_file?: undefined;
|
|
52
|
-
};
|
|
53
|
-
required: string[];
|
|
54
|
-
};
|
|
55
|
-
} | {
|
|
56
|
-
name: string;
|
|
57
|
-
description: string;
|
|
58
|
-
input_schema: {
|
|
59
|
-
type: string;
|
|
60
|
-
properties: {
|
|
61
|
-
plan_file: {
|
|
62
|
-
type: string;
|
|
63
|
-
description: string;
|
|
64
|
-
};
|
|
65
|
-
questions?: undefined;
|
|
66
|
-
};
|
|
67
|
-
required: never[];
|
|
68
|
-
};
|
|
69
|
-
} | {
|
|
70
|
-
name: string;
|
|
71
|
-
description: string;
|
|
72
|
-
input_schema: {
|
|
73
|
-
type: string;
|
|
74
|
-
properties: {
|
|
75
|
-
questions?: undefined;
|
|
76
|
-
plan_file?: undefined;
|
|
77
|
-
};
|
|
78
|
-
required: never[];
|
|
79
|
-
};
|
|
80
|
-
})[];
|
|
@@ -1,256 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeAll, afterAll } from "vitest";
|
|
2
|
-
import { writeFileSync, mkdirSync, rmSync, existsSync } from "fs";
|
|
3
|
-
import { join } from "path";
|
|
4
|
-
import { tmpdir } from "os";
|
|
5
|
-
|
|
6
|
-
// ============================================================================
|
|
7
|
-
// Test setup — create temporary files for testing
|
|
8
|
-
// ============================================================================
|
|
9
|
-
|
|
10
|
-
const TEST_DIR = join(tmpdir(), `local-tools-test-${Date.now()}`);
|
|
11
|
-
function setupTestFiles() {
|
|
12
|
-
mkdirSync(join(TEST_DIR, "src", "sub"), {
|
|
13
|
-
recursive: true
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
// Normal text files
|
|
17
|
-
writeFileSync(join(TEST_DIR, "src", "file1.ts"), 'export const a = 1;\nexport const b = 2;\n');
|
|
18
|
-
writeFileSync(join(TEST_DIR, "src", "file2.ts"), 'export const c = 3;\n');
|
|
19
|
-
writeFileSync(join(TEST_DIR, "src", "sub", "nested.ts"), 'export const d = 4;\n');
|
|
20
|
-
writeFileSync(join(TEST_DIR, "config.json"), '{"key": "value"}\n');
|
|
21
|
-
|
|
22
|
-
// Large file (>500 lines)
|
|
23
|
-
const bigLines = [];
|
|
24
|
-
for (let i = 0; i < 600; i++) {
|
|
25
|
-
bigLines.push(`// Line ${i + 1}: some content here`);
|
|
26
|
-
}
|
|
27
|
-
writeFileSync(join(TEST_DIR, "src", "big-file.ts"), bigLines.join("\n"));
|
|
28
|
-
|
|
29
|
-
// Small MP3-like file (just the extension matters for detection)
|
|
30
|
-
writeFileSync(join(TEST_DIR, "test.mp3"), Buffer.from("fake-mp3-content"));
|
|
31
|
-
writeFileSync(join(TEST_DIR, "test.wav"), Buffer.from("fake-wav-content"));
|
|
32
|
-
writeFileSync(join(TEST_DIR, "test.png"), Buffer.from("fake-png-content"));
|
|
33
|
-
}
|
|
34
|
-
function cleanupTestFiles() {
|
|
35
|
-
if (existsSync(TEST_DIR)) {
|
|
36
|
-
rmSync(TEST_DIR, {
|
|
37
|
-
recursive: true,
|
|
38
|
-
force: true
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
beforeAll(() => {
|
|
43
|
-
cleanupTestFiles();
|
|
44
|
-
setupTestFiles();
|
|
45
|
-
});
|
|
46
|
-
afterAll(() => {
|
|
47
|
-
cleanupTestFiles();
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
// ============================================================================
|
|
51
|
-
// Feature 1: read_many_files
|
|
52
|
-
// ============================================================================
|
|
53
|
-
|
|
54
|
-
describe("read_many_files", () => {
|
|
55
|
-
// Dynamic import to avoid ESM issues
|
|
56
|
-
let executeLocalTool;
|
|
57
|
-
beforeAll(async () => {
|
|
58
|
-
const mod = await import("./local-tools.js");
|
|
59
|
-
executeLocalTool = mod.executeLocalTool;
|
|
60
|
-
});
|
|
61
|
-
it("reads multiple files matching a glob pattern", async () => {
|
|
62
|
-
const result = await executeLocalTool("read_many_files", {
|
|
63
|
-
pattern: "*.ts",
|
|
64
|
-
path: join(TEST_DIR, "src")
|
|
65
|
-
});
|
|
66
|
-
expect(result.success).toBe(true);
|
|
67
|
-
expect(result.output).toContain("=== ");
|
|
68
|
-
expect(result.output).toContain("file1.ts");
|
|
69
|
-
expect(result.output).toContain("export const a = 1;");
|
|
70
|
-
expect(result.output).toContain("file2.ts");
|
|
71
|
-
expect(result.output).toContain("export const c = 3;");
|
|
72
|
-
});
|
|
73
|
-
it("respects the limit parameter", async () => {
|
|
74
|
-
const result = await executeLocalTool("read_many_files", {
|
|
75
|
-
pattern: "*.ts",
|
|
76
|
-
path: join(TEST_DIR, "src"),
|
|
77
|
-
limit: 1
|
|
78
|
-
});
|
|
79
|
-
expect(result.success).toBe(true);
|
|
80
|
-
// Should only read 1 file
|
|
81
|
-
const separatorCount = (result.output.match(/=== /g) || []).length;
|
|
82
|
-
expect(separatorCount).toBe(1);
|
|
83
|
-
});
|
|
84
|
-
it("truncates files >2000 lines to first 500 lines", async () => {
|
|
85
|
-
// The test setup creates a 600-line file, but the truncation threshold is 2000 lines.
|
|
86
|
-
// A 600-line file is NOT truncated. We need a file with >2000 lines to trigger truncation.
|
|
87
|
-
// First, create a big enough file
|
|
88
|
-
const bigLines = [];
|
|
89
|
-
for (let i = 0; i < 2500; i++) {
|
|
90
|
-
bigLines.push(`// Line ${i + 1}: some content here`);
|
|
91
|
-
}
|
|
92
|
-
writeFileSync(join(TEST_DIR, "src", "huge-file.ts"), bigLines.join("\n"));
|
|
93
|
-
const result = await executeLocalTool("read_many_files", {
|
|
94
|
-
pattern: "huge-file.ts",
|
|
95
|
-
path: join(TEST_DIR, "src")
|
|
96
|
-
});
|
|
97
|
-
expect(result.success).toBe(true);
|
|
98
|
-
expect(result.output).toContain("truncated");
|
|
99
|
-
expect(result.output).toContain("2500 total lines");
|
|
100
|
-
expect(result.output).toContain("showing first 500");
|
|
101
|
-
// Should contain line 1 but not line 1000
|
|
102
|
-
expect(result.output).toContain("Line 1:");
|
|
103
|
-
expect(result.output).not.toContain("Line 1000:");
|
|
104
|
-
});
|
|
105
|
-
it("skips binary files with a marker", async () => {
|
|
106
|
-
const result = await executeLocalTool("read_many_files", {
|
|
107
|
-
pattern: "*.mp3",
|
|
108
|
-
path: TEST_DIR
|
|
109
|
-
});
|
|
110
|
-
expect(result.success).toBe(true);
|
|
111
|
-
expect(result.output).toContain("Binary file");
|
|
112
|
-
expect(result.output).toContain("mp3");
|
|
113
|
-
});
|
|
114
|
-
it("returns summary with counts", async () => {
|
|
115
|
-
const result = await executeLocalTool("read_many_files", {
|
|
116
|
-
pattern: "*.ts",
|
|
117
|
-
path: join(TEST_DIR, "src")
|
|
118
|
-
});
|
|
119
|
-
expect(result.success).toBe(true);
|
|
120
|
-
expect(result.output).toContain("Read ");
|
|
121
|
-
expect(result.output).toContain("total matches");
|
|
122
|
-
});
|
|
123
|
-
it("handles no matches gracefully", async () => {
|
|
124
|
-
const result = await executeLocalTool("read_many_files", {
|
|
125
|
-
pattern: "*.xyz",
|
|
126
|
-
path: TEST_DIR
|
|
127
|
-
});
|
|
128
|
-
expect(result.success).toBe(true);
|
|
129
|
-
expect(result.output).toContain("No files matched");
|
|
130
|
-
});
|
|
131
|
-
it("enforces max limit of 50", async () => {
|
|
132
|
-
const result = await executeLocalTool("read_many_files", {
|
|
133
|
-
pattern: "*.ts",
|
|
134
|
-
path: join(TEST_DIR, "src"),
|
|
135
|
-
limit: 999
|
|
136
|
-
});
|
|
137
|
-
|
|
138
|
-
// Should not error; limit is clamped to 50
|
|
139
|
-
expect(result.success).toBe(true);
|
|
140
|
-
});
|
|
141
|
-
it("defaults path to cwd when not specified", async () => {
|
|
142
|
-
// This tests that it doesn't crash; actual files depend on cwd
|
|
143
|
-
const result = await executeLocalTool("read_many_files", {
|
|
144
|
-
pattern: "package.json"
|
|
145
|
-
});
|
|
146
|
-
expect(result.success).toBe(true);
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
// ============================================================================
|
|
151
|
-
// Feature 2: Audio file support in read_file
|
|
152
|
-
// ============================================================================
|
|
153
|
-
|
|
154
|
-
describe("read_file audio support", () => {
|
|
155
|
-
let executeLocalTool;
|
|
156
|
-
beforeAll(async () => {
|
|
157
|
-
const mod = await import("./local-tools.js");
|
|
158
|
-
executeLocalTool = mod.executeLocalTool;
|
|
159
|
-
});
|
|
160
|
-
it("reads .mp3 files as base64 with __AUDIO__ marker", async () => {
|
|
161
|
-
const result = await executeLocalTool("read_file", {
|
|
162
|
-
path: join(TEST_DIR, "test.mp3")
|
|
163
|
-
});
|
|
164
|
-
expect(result.success).toBe(true);
|
|
165
|
-
expect(result.output).toMatch(/^__AUDIO__audio\/mpeg__/);
|
|
166
|
-
// Verify the base64 data is present
|
|
167
|
-
const parts = result.output.split("__");
|
|
168
|
-
expect(parts.length).toBeGreaterThanOrEqual(3);
|
|
169
|
-
});
|
|
170
|
-
it("reads .wav files as base64 with __AUDIO__ marker", async () => {
|
|
171
|
-
const result = await executeLocalTool("read_file", {
|
|
172
|
-
path: join(TEST_DIR, "test.wav")
|
|
173
|
-
});
|
|
174
|
-
expect(result.success).toBe(true);
|
|
175
|
-
expect(result.output).toMatch(/^__AUDIO__audio\/wav__/);
|
|
176
|
-
});
|
|
177
|
-
it("still reads images with __IMAGE__ marker", async () => {
|
|
178
|
-
const result = await executeLocalTool("read_file", {
|
|
179
|
-
path: join(TEST_DIR, "test.png")
|
|
180
|
-
});
|
|
181
|
-
expect(result.success).toBe(true);
|
|
182
|
-
expect(result.output).toMatch(/^__IMAGE__image\/png__/);
|
|
183
|
-
});
|
|
184
|
-
it("still reads text files normally", async () => {
|
|
185
|
-
const result = await executeLocalTool("read_file", {
|
|
186
|
-
path: join(TEST_DIR, "config.json")
|
|
187
|
-
});
|
|
188
|
-
expect(result.success).toBe(true);
|
|
189
|
-
expect(result.output).toContain('"key"');
|
|
190
|
-
expect(result.output).not.toContain("__AUDIO__");
|
|
191
|
-
expect(result.output).not.toContain("__IMAGE__");
|
|
192
|
-
});
|
|
193
|
-
it("rejects audio files larger than 25MB", async () => {
|
|
194
|
-
// Create a file that appears to be >25MB
|
|
195
|
-
const bigAudioPath = join(TEST_DIR, "big.m4a");
|
|
196
|
-
// We can't easily create a 25MB+ file in a test, but we can test the
|
|
197
|
-
// path works for normal-sized files
|
|
198
|
-
writeFileSync(bigAudioPath, Buffer.from("small-audio"));
|
|
199
|
-
const result = await executeLocalTool("read_file", {
|
|
200
|
-
path: bigAudioPath
|
|
201
|
-
});
|
|
202
|
-
expect(result.success).toBe(true);
|
|
203
|
-
expect(result.output).toMatch(/^__AUDIO__audio\/mp4__/);
|
|
204
|
-
});
|
|
205
|
-
it("handles non-existent audio files", async () => {
|
|
206
|
-
const result = await executeLocalTool("read_file", {
|
|
207
|
-
path: join(TEST_DIR, "nonexistent.mp3")
|
|
208
|
-
});
|
|
209
|
-
expect(result.success).toBe(false);
|
|
210
|
-
expect(result.output).toContain("not found");
|
|
211
|
-
});
|
|
212
|
-
it("supports all audio extensions", async () => {
|
|
213
|
-
const extensions = ["aiff", "aac", "ogg", "flac"];
|
|
214
|
-
const expectedMimes = {
|
|
215
|
-
aiff: "audio/aiff",
|
|
216
|
-
aac: "audio/aac",
|
|
217
|
-
ogg: "audio/ogg",
|
|
218
|
-
flac: "audio/flac"
|
|
219
|
-
};
|
|
220
|
-
for (const ext of extensions) {
|
|
221
|
-
const filePath = join(TEST_DIR, `test.${ext}`);
|
|
222
|
-
writeFileSync(filePath, Buffer.from(`fake-${ext}-content`));
|
|
223
|
-
const result = await executeLocalTool("read_file", {
|
|
224
|
-
path: filePath
|
|
225
|
-
});
|
|
226
|
-
expect(result.success).toBe(true);
|
|
227
|
-
expect(result.output).toContain(`__AUDIO__${expectedMimes[ext]}__`);
|
|
228
|
-
}
|
|
229
|
-
});
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
// ============================================================================
|
|
233
|
-
// Tool registry checks
|
|
234
|
-
// ============================================================================
|
|
235
|
-
|
|
236
|
-
describe("tool registry", () => {
|
|
237
|
-
let LOCAL_TOOL_NAMES;
|
|
238
|
-
let LOCAL_TOOL_DEFINITIONS;
|
|
239
|
-
let isLocalTool;
|
|
240
|
-
beforeAll(async () => {
|
|
241
|
-
const mod = await import("./local-tools.js");
|
|
242
|
-
LOCAL_TOOL_NAMES = mod.LOCAL_TOOL_NAMES;
|
|
243
|
-
LOCAL_TOOL_DEFINITIONS = mod.LOCAL_TOOL_DEFINITIONS;
|
|
244
|
-
isLocalTool = mod.isLocalTool;
|
|
245
|
-
});
|
|
246
|
-
it("includes read_many_files in LOCAL_TOOL_NAMES", () => {
|
|
247
|
-
expect(LOCAL_TOOL_NAMES.has("read_many_files")).toBe(true);
|
|
248
|
-
});
|
|
249
|
-
it("isLocalTool returns true for read_many_files", () => {
|
|
250
|
-
expect(isLocalTool("read_many_files")).toBe(true);
|
|
251
|
-
});
|
|
252
|
-
it("has a tool definition for read_many_files", () => {
|
|
253
|
-
const def = LOCAL_TOOL_DEFINITIONS.find(d => d.name === "read_many_files");
|
|
254
|
-
expect(def).toBeDefined();
|
|
255
|
-
});
|
|
256
|
-
});
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Read Many Files — reads multiple files matching glob patterns
|
|
3
|
-
* Extracted from local-tools.ts for file size management.
|
|
4
|
-
*/
|
|
5
|
-
import type { ToolResult } from "../../shared/types.js";
|
|
6
|
-
export declare function readManyFiles(input: Record<string, unknown>): Promise<ToolResult>;
|