whale-code 6.5.6 → 6.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/whale-code.js +23 -0
- package/dist/cli/__tests__/print-mode-streaming.test.js +270 -0
- package/dist/cli/__tests__/print-mode.basic-output.test.js +230 -0
- package/dist/cli/__tests__/print-mode.session-errors.test.js +252 -0
- package/dist/cli/__tests__/print-mode.test.js +273 -0
- package/dist/cli/__tests__/serve-mode-messages.test.js +338 -0
- package/dist/cli/__tests__/serve-mode.messages.part2.test.js +266 -0
- package/dist/cli/__tests__/serve-mode.messages.test.js +277 -0
- package/dist/cli/__tests__/serve-mode.startup-http.test.js +279 -0
- package/dist/cli/__tests__/serve-mode.test.js +345 -0
- package/dist/cli/app.d.ts +1 -0
- package/dist/cli/app.js +8 -2
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/chat/ChatApp.d.ts +8 -36
- package/dist/cli/chat/ChatApp.js +135 -450
- package/dist/cli/chat/ChatApp.js.map +1 -1
- package/dist/cli/chat/ChatInput.d.ts +3 -2
- package/dist/cli/chat/ChatInput.js +37 -14
- package/dist/cli/chat/ChatInput.js.map +1 -1
- package/dist/cli/chat/ImsgManager.d.ts +20 -0
- package/dist/cli/chat/ImsgManager.js +341 -0
- package/dist/cli/chat/ImsgManager.js.map +1 -0
- package/dist/cli/chat/MarkdownText.d.ts +2 -1
- package/dist/cli/chat/MarkdownText.js +12 -8
- package/dist/cli/chat/MarkdownText.js.map +1 -1
- package/dist/cli/chat/MemoryManager.js +3 -2
- package/dist/cli/chat/MemoryManager.js.map +1 -1
- package/dist/cli/chat/MessageList.d.ts +1 -1
- package/dist/cli/chat/MessageList.js +119 -114
- package/dist/cli/chat/MessageList.js.map +1 -1
- package/dist/cli/chat/NodeManager.js +57 -170
- package/dist/cli/chat/NodeManager.js.map +1 -1
- package/dist/cli/chat/OverlayContext.d.ts +27 -0
- package/dist/cli/chat/OverlayContext.js +2 -0
- package/dist/cli/chat/OverlayContext.js.map +1 -0
- package/dist/cli/chat/PlanApproval.js +3 -2
- package/dist/cli/chat/PlanApproval.js.map +1 -1
- package/dist/cli/chat/RewindConfirmation.d.ts +12 -0
- package/dist/cli/chat/RewindConfirmation.js +243 -0
- package/dist/cli/chat/RewindConfirmation.js.map +1 -0
- package/dist/cli/chat/RewindViewer.js +5 -4
- package/dist/cli/chat/RewindViewer.js.map +1 -1
- package/dist/cli/chat/SessionManager.js +3 -2
- package/dist/cli/chat/SessionManager.js.map +1 -1
- package/dist/cli/chat/SlashMenu.d.ts +7 -24
- package/dist/cli/chat/SlashMenu.js +14 -183
- package/dist/cli/chat/SlashMenu.js.map +1 -1
- package/dist/cli/chat/StatusBar.d.ts +5 -2
- package/dist/cli/chat/StatusBar.js +80 -65
- package/dist/cli/chat/StatusBar.js.map +1 -1
- package/dist/cli/chat/StreamingText.d.ts +2 -1
- package/dist/cli/chat/StreamingText.js +2 -2
- package/dist/cli/chat/StreamingText.js.map +1 -1
- package/dist/cli/chat/SubagentPanel.d.ts +6 -6
- package/dist/cli/chat/SubagentPanel.js +159 -537
- package/dist/cli/chat/SubagentPanel.js.map +1 -1
- package/dist/cli/chat/TeamPanel.js +2 -30
- package/dist/cli/chat/TeamPanel.js.map +1 -1
- package/dist/cli/chat/ToolIndicator.d.ts +7 -23
- package/dist/cli/chat/ToolIndicator.js +543 -1443
- package/dist/cli/chat/ToolIndicator.js.map +1 -1
- package/dist/cli/chat/chat-input-menu-handler.d.ts +32 -0
- package/dist/cli/chat/components/LiveArea.d.ts +12 -0
- package/dist/cli/chat/components/LiveArea.js +252 -0
- package/dist/cli/chat/components/LiveArea.js.map +1 -0
- package/dist/cli/chat/components/OverlayRouter.d.ts +13 -0
- package/dist/cli/chat/components/OverlayRouter.js +257 -0
- package/dist/cli/chat/components/OverlayRouter.js.map +1 -0
- package/dist/cli/chat/components/StaticMessages.d.ts +9 -0
- package/dist/cli/chat/components/StaticMessages.js +132 -0
- package/dist/cli/chat/components/StaticMessages.js.map +1 -0
- package/dist/cli/chat/hooks/agent-loop-events.d.ts +77 -0
- package/dist/cli/chat/hooks/agent-loop-events.js +171 -0
- package/dist/cli/chat/hooks/agent-loop-events.js.map +1 -0
- package/dist/cli/chat/hooks/slash-command-config-system.d.ts +11 -0
- package/dist/cli/chat/hooks/slash-command-config-system.js +177 -0
- package/dist/cli/chat/hooks/slash-command-config-system.js.map +1 -0
- package/dist/cli/chat/hooks/slash-command-handlers-system.d.ts +12 -0
- package/dist/cli/chat/hooks/slash-command-handlers-system.js +127 -0
- package/dist/cli/chat/hooks/slash-command-handlers-system.js.map +1 -0
- package/dist/cli/chat/hooks/slash-command-handlers.d.ts +21 -0
- package/dist/cli/chat/hooks/slash-command-handlers.js +222 -0
- package/dist/cli/chat/hooks/slash-command-handlers.js.map +1 -0
- package/dist/cli/chat/hooks/slash-imsg-handlers.js +148 -0
- package/dist/cli/chat/hooks/slash-imsg-handlers.js.map +1 -0
- package/dist/cli/chat/hooks/slash-node-handlers.d.ts +26 -0
- package/dist/cli/chat/hooks/slash-node-handlers.js +226 -0
- package/dist/cli/chat/hooks/slash-node-handlers.js.map +1 -0
- package/dist/cli/chat/hooks/useAgentLoop.d.ts +2 -21
- package/dist/cli/chat/hooks/useAgentLoop.js +258 -401
- package/dist/cli/chat/hooks/useAgentLoop.js.map +1 -1
- package/dist/cli/chat/hooks/useElapsedClock.d.ts +19 -0
- package/dist/cli/chat/hooks/useElapsedClock.js +80 -0
- package/dist/cli/chat/hooks/useElapsedClock.js.map +1 -0
- package/dist/cli/chat/hooks/useOverlayHandlers.d.ts +23 -0
- package/dist/cli/chat/hooks/useOverlayHandlers.js +125 -0
- package/dist/cli/chat/hooks/useOverlayHandlers.js.map +1 -0
- package/dist/cli/chat/hooks/useSlashCommands.d.ts +14 -22
- package/dist/cli/chat/hooks/useSlashCommands.js +99 -720
- package/dist/cli/chat/hooks/useSlashCommands.js.map +1 -1
- package/dist/cli/chat/hooks/useStreamingReducer.d.ts +66 -0
- package/dist/cli/chat/imsg-manager-render.d.ts +29 -0
- package/dist/cli/chat/imsg-manager-render.js +294 -0
- package/dist/cli/chat/imsg-manager-render.js.map +1 -0
- package/dist/cli/chat/slash-commands.d.ts +37 -0
- package/dist/cli/chat/slash-commands.js +194 -0
- package/dist/cli/chat/slash-commands.js.map +1 -0
- package/dist/cli/chat/store.d.ts +115 -0
- package/dist/cli/chat/store.js +177 -0
- package/dist/cli/chat/store.js.map +1 -0
- package/dist/cli/chat/tool-indicator-helpers.d.ts +14 -0
- package/dist/cli/chat/tool-indicator-helpers.js +167 -0
- package/dist/cli/chat/tool-indicator-helpers.js.map +1 -0
- package/dist/cli/chat/tool-indicator-summary.d.ts +6 -0
- package/dist/cli/chat/tool-indicator-summary.js +103 -0
- package/dist/cli/chat/tool-indicator-summary.js.map +1 -0
- package/dist/cli/chat/tool-indicator-types.d.ts +66 -0
- package/dist/cli/chat/tool-indicator-types.js +177 -0
- package/dist/cli/chat/tool-indicator-types.js.map +1 -0
- package/dist/cli/commands/__tests__/config-cmd.test.js +270 -0
- package/dist/cli/commands/__tests__/doctor.test.js +257 -0
- package/dist/cli/commands/__tests__/imsg-node-bridge.test.js +99 -0
- package/dist/cli/commands/__tests__/imsg-utils.test.js +73 -0
- package/dist/cli/commands/__tests__/init.test.js +214 -0
- package/dist/cli/commands/__tests__/mcp.test.js +287 -0
- package/dist/cli/commands/imsg-config.d.ts +31 -0
- package/dist/cli/commands/imsg-config.js +104 -0
- package/dist/cli/commands/imsg-config.js.map +1 -0
- package/dist/cli/commands/imsg-node-bridge.d.ts +25 -0
- package/dist/cli/commands/imsg-node-bridge.js +229 -0
- package/dist/cli/commands/imsg-node-bridge.js.map +1 -0
- package/dist/cli/commands/imsg-utils.d.ts +14 -0
- package/dist/cli/commands/imsg-utils.js +42 -0
- package/dist/cli/commands/imsg-utils.js.map +1 -0
- package/dist/cli/commands/imsg-watcher-helpers.d.ts +40 -0
- package/dist/cli/commands/imsg-watcher-helpers.js +184 -0
- package/dist/cli/commands/imsg-watcher-helpers.js.map +1 -0
- package/dist/cli/commands/imsg-watcher.d.ts +11 -0
- package/dist/cli/commands/imsg-watcher.js +230 -0
- package/dist/cli/commands/imsg-watcher.js.map +1 -0
- package/dist/cli/commands/imsg.d.ts +14 -0
- package/dist/cli/commands/imsg.js +181 -0
- package/dist/cli/commands/imsg.js.map +1 -0
- package/dist/cli/commands/sessions.d.ts +9 -0
- package/dist/cli/commands/sessions.js +93 -0
- package/dist/cli/commands/sessions.js.map +1 -0
- package/dist/cli/login/LoginApp.js +3 -0
- package/dist/cli/login/LoginApp.js.map +1 -1
- package/dist/cli/serve-mode-persistence.d.ts +18 -0
- package/dist/cli/serve-mode-persistence.js +157 -0
- package/dist/cli/serve-mode-persistence.js.map +1 -0
- package/dist/cli/serve-mode-query.d.ts +9 -0
- package/dist/cli/serve-mode-query.js +247 -0
- package/dist/cli/serve-mode-query.js.map +1 -0
- package/dist/cli/serve-mode-types.d.ts +29 -0
- package/dist/cli/serve-mode-types.js +56 -0
- package/dist/cli/serve-mode-types.js.map +1 -0
- package/dist/cli/services/__tests__/agent-definitions.test.js +153 -0
- package/dist/cli/services/__tests__/agent-events-global.test.js +39 -0
- package/dist/cli/services/__tests__/agent-events.part2.test.js +113 -0
- package/dist/cli/services/__tests__/agent-events.test.js +157 -0
- package/dist/cli/services/__tests__/agent-loop-auth.test.js +392 -0
- package/dist/cli/services/__tests__/agent-loop-budget.test.js +389 -0
- package/dist/cli/services/__tests__/agent-loop-tools-lifecycle.test.js +430 -0
- package/dist/cli/services/__tests__/agent-loop-tools-maxturns.test.js +486 -0
- package/dist/cli/services/__tests__/agent-loop-utils-execution.test.js +528 -0
- package/dist/cli/services/__tests__/agent-loop-utils-helpers.test.js +466 -0
- package/dist/cli/services/__tests__/agent-worker-base-execute.test.js +257 -0
- package/dist/cli/services/__tests__/agent-worker-base-helpers.test.js +198 -0
- package/dist/cli/services/__tests__/agent-worker-base.test.js +278 -0
- package/dist/cli/services/__tests__/auth-service-exports.test.js +41 -0
- package/dist/cli/services/__tests__/auth-service.part2.test.js +169 -0
- package/dist/cli/services/__tests__/auth-service.test.js +242 -0
- package/dist/cli/services/__tests__/background-processes.test.js +282 -0
- package/dist/cli/services/__tests__/claude-md-loader.test.js +134 -0
- package/dist/cli/services/__tests__/config-store.test.js +247 -0
- package/dist/cli/services/__tests__/debug-log.test.js +199 -0
- package/dist/cli/services/__tests__/edge-cases-caching.test.js +174 -0
- package/dist/cli/services/__tests__/edge-cases-compaction-core.test.js +226 -0
- package/dist/cli/services/__tests__/edge-cases-compaction-openai.test.js +152 -0
- package/dist/cli/services/__tests__/edge-cases-compaction-shapes.test.js +53 -0
- package/dist/cli/services/__tests__/edge-cases-compaction-thinking.test.js +226 -0
- package/dist/cli/services/__tests__/edge-cases-compaction.test.js +131 -0
- package/dist/cli/services/__tests__/edge-cases-paths.test.js +86 -0
- package/dist/cli/services/__tests__/error-logger-messages.test.js +81 -0
- package/dist/cli/services/__tests__/error-logger-transport.test.js +119 -0
- package/dist/cli/services/__tests__/error-logger.test.js +264 -0
- package/dist/cli/services/__tests__/file-history.test.js +136 -0
- package/dist/cli/services/__tests__/git-context-cache-reset.test.js +223 -0
- package/dist/cli/services/__tests__/git-context.test.js +241 -0
- package/dist/cli/services/__tests__/interactive-tools-execute.test.js +166 -0
- package/dist/cli/services/__tests__/interactive-tools-plan.test.js +197 -0
- package/dist/cli/services/__tests__/interactive-tools.part2.test.js +168 -0
- package/dist/cli/services/__tests__/interactive-tools.test.js +179 -0
- package/dist/cli/services/__tests__/keybinding-manager.test.js +205 -0
- package/dist/cli/services/__tests__/local-tools-dispatch.test.js +404 -0
- package/dist/cli/services/__tests__/local-tools.test.js +238 -0
- package/dist/cli/services/__tests__/lsp-manager.test.js +364 -0
- package/dist/cli/services/__tests__/mcp-client-connect-disconnect.test.js +310 -0
- package/dist/cli/services/__tests__/mcp-client.test.js +93 -0
- package/dist/cli/services/__tests__/memory-manager.test.js +154 -0
- package/dist/cli/services/__tests__/model-manager-utils.test.js +154 -0
- package/dist/cli/services/__tests__/model-manager.test.js +175 -0
- package/dist/cli/services/__tests__/permission-modes.test.js +222 -0
- package/dist/cli/services/__tests__/ripgrep.test.js +328 -0
- package/dist/cli/services/__tests__/server-tools-execute.test.js +317 -0
- package/dist/cli/services/__tests__/server-tools.test.js +272 -0
- package/dist/cli/services/__tests__/session-persistence.test.js +245 -0
- package/dist/cli/services/__tests__/subagent-basic.test.js +489 -0
- package/dist/cli/services/__tests__/subagent-edge.test.js +545 -0
- package/dist/cli/services/__tests__/subagent-prompts.test.js +558 -0
- package/dist/cli/services/__tests__/subagent-worker-errors.test.js +255 -0
- package/dist/cli/services/__tests__/subagent-worker.test.js +242 -0
- package/dist/cli/services/__tests__/system-prompt.test.js +210 -0
- package/dist/cli/services/__tests__/team-lead-comms-messaging.test.js +250 -0
- package/dist/cli/services/__tests__/team-lead-comms-result.test.js +232 -0
- package/dist/cli/services/__tests__/team-lead-comms-stop.test.js +344 -0
- package/dist/cli/services/__tests__/team-lead-comms.test.js +285 -0
- package/dist/cli/services/__tests__/team-lead-create.test.js +327 -0
- package/dist/cli/services/__tests__/team-lead-run.test.js +318 -0
- package/dist/cli/services/__tests__/team-lead-stop.test.js +199 -0
- package/dist/cli/services/__tests__/team-state-comms.test.js +240 -0
- package/dist/cli/services/__tests__/team-state-core.test.js +230 -0
- package/dist/cli/services/__tests__/team-state-tasks-complete-fail-available.test.js +224 -0
- package/dist/cli/services/__tests__/team-state-tasks.test.js +184 -0
- package/dist/cli/services/__tests__/telemetry-ai-metadata.test.js +116 -0
- package/dist/cli/services/__tests__/telemetry.part2.test.js +195 -0
- package/dist/cli/services/__tests__/telemetry.test.js +176 -0
- package/dist/cli/services/agent-event-types.d.ts +148 -0
- package/dist/cli/services/agent-event-types.js +2 -0
- package/dist/cli/services/agent-event-types.js.map +1 -0
- package/dist/cli/services/agent-loop-iteration.d.ts +13 -0
- package/dist/cli/services/agent-loop-setup.d.ts +32 -0
- package/dist/cli/services/agent-loop-shell-summarize.d.ts +11 -0
- package/dist/cli/services/agent-loop-shell-summarize.js +94 -0
- package/dist/cli/services/agent-loop-shell-summarize.js.map +1 -0
- package/dist/cli/services/agent-loop-tools.d.ts +37 -0
- package/dist/cli/services/agent-loop-tools.js +243 -0
- package/dist/cli/services/agent-loop-tools.js.map +1 -0
- package/dist/cli/services/agent-loop-types.d.ts +52 -0
- package/dist/cli/services/agent-loop-types.js +25 -0
- package/dist/cli/services/agent-loop-types.js.map +1 -0
- package/dist/cli/services/agent-loop.d.ts +2 -2
- package/dist/cli/services/agent-loop.js +162 -17
- package/dist/cli/services/agent-loop.js.map +1 -1
- package/dist/cli/services/agent-worker-base-api.d.ts +19 -0
- package/dist/cli/services/agent-worker-base-helpers.d.ts +27 -0
- package/dist/cli/services/agent-worker-base-tools.d.ts +16 -0
- package/dist/cli/services/agent-worker-base-types.d.ts +81 -0
- package/dist/cli/services/agent-worker-base.js +1 -1
- package/dist/cli/services/agent-worker-base.js.map +1 -1
- package/dist/cli/services/auth-service.js +19 -19
- package/dist/cli/services/auth-service.js.map +1 -1
- package/dist/cli/services/background-agents.d.ts +26 -0
- package/dist/cli/services/background-processes-ops.d.ts +24 -0
- package/dist/cli/services/background-processes.d.ts +2 -1
- package/dist/cli/services/background-processes.js +7 -3
- package/dist/cli/services/background-processes.js.map +1 -1
- package/dist/cli/services/background-tool-defs.d.ts +50 -0
- package/dist/cli/services/cli-agent-loop.d.ts +41 -0
- package/dist/cli/services/cli-agent-loop.js +104 -0
- package/dist/cli/services/cli-agent-loop.js.map +1 -0
- package/dist/cli/services/config-modules-model.test.js +133 -0
- package/dist/cli/services/config-modules-permission.test.js +85 -0
- package/dist/cli/services/config-modules-permissions.test.js +85 -0
- package/dist/cli/services/config-modules-session.test.js +297 -0
- package/dist/cli/services/config-store.d.ts +5 -0
- package/dist/cli/services/config-store.js +90 -5
- package/dist/cli/services/config-store.js.map +1 -1
- package/dist/cli/services/error-logger-internals.d.ts +25 -0
- package/dist/cli/services/error-logger-internals.js +111 -0
- package/dist/cli/services/error-logger-internals.js.map +1 -0
- package/dist/cli/services/format-server-response-columns.test.js +265 -0
- package/dist/cli/services/format-server-response-fallback.test.js +65 -0
- package/dist/cli/services/format-server-response-formatters.d.ts +18 -0
- package/dist/cli/services/format-server-response-formatters.js +195 -0
- package/dist/cli/services/format-server-response-formatters.js.map +1 -0
- package/dist/cli/services/format-server-response-primitives-basic.test.js +261 -0
- package/dist/cli/services/format-server-response-primitives-nested.test.js +188 -0
- package/dist/cli/services/format-server-response-primitives.test.js +300 -0
- package/dist/cli/services/format-server-response-realworld.test.js +248 -0
- package/dist/cli/services/format-server-response-values.test.js +247 -0
- package/dist/cli/services/format-server-response.js +5 -3
- package/dist/cli/services/format-server-response.js.map +1 -1
- package/dist/cli/services/hooks-execute.d.ts +47 -0
- package/dist/cli/services/hooks-execute.js +181 -0
- package/dist/cli/services/hooks-execute.js.map +1 -0
- package/dist/cli/services/hooks-runners.test.js +184 -0
- package/dist/cli/services/hooks.glob-load.test.js +233 -0
- package/dist/cli/services/hooks.run-hooks.test.js +184 -0
- package/dist/cli/services/hooks.test.js +233 -0
- package/dist/cli/services/interactive-tool-defs.d.ts +80 -0
- package/dist/cli/services/interactive-tools.d.ts +5 -2
- package/dist/cli/services/interactive-tools.js +47 -33
- package/dist/cli/services/interactive-tools.js.map +1 -1
- package/dist/cli/services/keybinding-manager.d.ts +2 -0
- package/dist/cli/services/keybinding-manager.js +5 -0
- package/dist/cli/services/keybinding-manager.js.map +1 -1
- package/dist/cli/services/local-tools-agent-defs-tasks.d.ts +6 -0
- package/dist/cli/services/local-tools-agent-defs-tasks.js +245 -0
- package/dist/cli/services/local-tools-agent-defs-tasks.js.map +1 -0
- package/dist/cli/services/local-tools-agent-defs-utils.d.ts +6 -0
- package/dist/cli/services/local-tools-agent-defs-utils.js +198 -0
- package/dist/cli/services/local-tools-agent-defs-utils.js.map +1 -0
- package/dist/cli/services/local-tools-agent-defs.d.ts +10 -0
- package/dist/cli/services/local-tools-agent-defs.js +13 -0
- package/dist/cli/services/local-tools-agent-defs.js.map +1 -0
- package/dist/cli/services/local-tools-definitions.d.ts +6 -0
- package/dist/cli/services/local-tools-files.test.js +256 -0
- package/dist/cli/services/local-tools-read-many.d.ts +6 -0
- package/dist/cli/services/local-tools.js +7 -9
- package/dist/cli/services/local-tools.js.map +1 -1
- package/dist/cli/services/lsp-config.d.ts +13 -0
- package/dist/cli/services/lsp-config.js +72 -0
- package/dist/cli/services/lsp-config.js.map +1 -0
- package/dist/cli/services/lsp-formatters.d.ts +11 -0
- package/dist/cli/services/lsp-formatters.js +209 -0
- package/dist/cli/services/lsp-formatters.js.map +1 -0
- package/dist/cli/services/lsp-protocol.d.ts +9 -0
- package/dist/cli/services/lsp-protocol.js +40 -0
- package/dist/cli/services/lsp-protocol.js.map +1 -0
- package/dist/cli/services/lsp-server-docs.d.ts +8 -0
- package/dist/cli/services/lsp-server-docs.js +132 -0
- package/dist/cli/services/lsp-server-docs.js.map +1 -0
- package/dist/cli/services/lsp-server-documents.d.ts +8 -0
- package/dist/cli/services/lsp-server-documents.js +132 -0
- package/dist/cli/services/lsp-server-documents.js.map +1 -0
- package/dist/cli/services/lsp-server.d.ts +40 -0
- package/dist/cli/services/lsp-server.js +270 -0
- package/dist/cli/services/lsp-server.js.map +1 -0
- package/dist/cli/services/model-router.test.js +245 -0
- package/dist/cli/services/permission-modes.js +16 -3
- package/dist/cli/services/permission-modes.js.map +1 -1
- package/dist/cli/services/project-index.d.ts +41 -0
- package/dist/cli/services/project-index.js +286 -0
- package/dist/cli/services/project-index.js.map +1 -0
- package/dist/cli/services/rewind-rewindTo.test.js +202 -0
- package/dist/cli/services/rewind.test.js +175 -0
- package/dist/cli/services/sandbox.test.js +198 -0
- package/dist/cli/services/server-tools-client.d.ts +46 -0
- package/dist/cli/services/server-tools-client.js +211 -0
- package/dist/cli/services/server-tools-client.js.map +1 -0
- package/dist/cli/services/server-tools-media.d.ts +21 -0
- package/dist/cli/services/server-tools-media.js +163 -0
- package/dist/cli/services/server-tools-media.js.map +1 -0
- package/dist/cli/services/server-tools-preprocess.d.ts +23 -0
- package/dist/cli/services/server-tools-preprocess.js +386 -0
- package/dist/cli/services/server-tools-preprocess.js.map +1 -0
- package/dist/cli/services/server-tools.d.ts +2 -0
- package/dist/cli/services/server-tools.js +40 -15
- package/dist/cli/services/server-tools.js.map +1 -1
- package/dist/cli/services/session-client.d.ts +78 -0
- package/dist/cli/services/session-client.js +197 -0
- package/dist/cli/services/session-client.js.map +1 -0
- package/dist/cli/services/session-persistence.d.ts +3 -0
- package/dist/cli/services/session-persistence.js +12 -0
- package/dist/cli/services/session-persistence.js.map +1 -1
- package/dist/cli/services/subagent-execution.d.ts +12 -0
- package/dist/cli/services/subagent-loop-v2.d.ts +36 -0
- package/dist/cli/services/subagent-loop-v2.js +238 -0
- package/dist/cli/services/subagent-loop-v2.js.map +1 -0
- package/dist/cli/services/subagent-tools.d.ts +10 -0
- package/dist/cli/services/subagent-tools.js +96 -0
- package/dist/cli/services/subagent-tools.js.map +1 -0
- package/dist/cli/services/subagent-types.d.ts +57 -0
- package/dist/cli/services/subagent-types.js +218 -0
- package/dist/cli/services/subagent-types.js.map +1 -0
- package/dist/cli/services/subagent.js +3 -2
- package/dist/cli/services/subagent.js.map +1 -1
- package/dist/cli/services/system-prompt.js +26 -3
- package/dist/cli/services/system-prompt.js.map +1 -1
- package/dist/cli/services/team-lead-auto.d.ts +11 -0
- package/dist/cli/services/team-lead-execution.d.ts +28 -0
- package/dist/cli/services/team-lead-types.d.ts +37 -0
- package/dist/cli/services/team-lead-types.js +2 -0
- package/dist/cli/services/team-lead-types.js.map +1 -0
- package/dist/cli/services/team-lead.d.ts +60 -0
- package/dist/cli/services/team-lead.js +148 -11
- package/dist/cli/services/team-lead.js.map +1 -1
- package/dist/cli/services/team-state-members.d.ts +11 -0
- package/dist/cli/services/team-state-members.js +185 -0
- package/dist/cli/services/team-state-members.js.map +1 -0
- package/dist/cli/services/team-state-messaging.d.ts +16 -0
- package/dist/cli/services/team-state-messaging.js +90 -0
- package/dist/cli/services/team-state-messaging.js.map +1 -0
- package/dist/cli/services/team-state-tasks.d.ts +12 -0
- package/dist/cli/services/team-state-tasks.js +23 -0
- package/dist/cli/services/team-state-tasks.js.map +1 -0
- package/dist/cli/services/team-state-types.d.ts +54 -0
- package/dist/cli/services/team-state-types.js +129 -0
- package/dist/cli/services/team-state-types.js.map +1 -0
- package/dist/cli/services/team-state.d.ts +5 -0
- package/dist/cli/services/team-state.js +29 -0
- package/dist/cli/services/team-state.js.map +1 -1
- package/dist/cli/services/teammate-loop.js +557 -0
- package/dist/cli/services/teammate-loop.js.map +1 -0
- package/dist/cli/services/teammate-prompt.d.ts +2 -0
- package/dist/cli/services/teammate-prompt.js +68 -0
- package/dist/cli/services/teammate-prompt.js.map +1 -0
- package/dist/cli/services/teammate-tools.d.ts +6 -0
- package/dist/cli/services/teammate-tools.js +158 -0
- package/dist/cli/services/teammate-tools.js.map +1 -0
- package/dist/cli/services/teammate-types.d.ts +36 -0
- package/dist/cli/services/teammate-types.js +43 -0
- package/dist/cli/services/teammate-types.js.map +1 -0
- package/dist/cli/services/teammate-worker-helpers.d.ts +71 -0
- package/dist/cli/services/teammate-worker-helpers.js +183 -0
- package/dist/cli/services/teammate-worker-helpers.js.map +1 -0
- package/dist/cli/services/teammate-worker-task-cleanup.d.ts +27 -0
- package/dist/cli/services/teammate-worker-task-cleanup.js +91 -0
- package/dist/cli/services/teammate-worker-task-cleanup.js.map +1 -0
- package/dist/cli/services/teammate-worker-task-loop.d.ts +35 -0
- package/dist/cli/services/teammate-worker-task-loop.js +273 -0
- package/dist/cli/services/teammate-worker-task-loop.js.map +1 -0
- package/dist/cli/services/teammate-worker.d.ts +13 -0
- package/dist/cli/services/teammate-worker.js +294 -0
- package/dist/cli/services/teammate-worker.js.map +1 -0
- package/dist/cli/services/telemetry-spans.d.ts +17 -0
- package/dist/cli/services/telemetry-spans.js +172 -0
- package/dist/cli/services/telemetry-spans.js.map +1 -0
- package/dist/cli/services/tools/__tests__/agent-tools-tasks-teams.test.js +250 -0
- package/dist/cli/services/tools/__tests__/agent-tools-teams.test.js +200 -0
- package/dist/cli/services/tools/__tests__/agent-tools.test.js +340 -0
- package/dist/cli/services/tools/__tests__/file-ops-cache.test.js +152 -0
- package/dist/cli/services/tools/__tests__/file-ops-notebook.test.js +249 -0
- package/dist/cli/services/tools/__tests__/file-ops-read.test.js +261 -0
- package/dist/cli/services/tools/__tests__/file-ops-write.test.js +292 -0
- package/dist/cli/services/tools/__tests__/search-tools-rg.test.js +92 -0
- package/dist/cli/services/tools/__tests__/search-tools.part2.test.js +174 -0
- package/dist/cli/services/tools/__tests__/search-tools.test.js +227 -0
- package/dist/cli/services/tools/__tests__/shell-exec-allowed-core.test.js +163 -0
- package/dist/cli/services/tools/__tests__/shell-exec-allowed-extended.test.js +220 -0
- package/dist/cli/services/tools/__tests__/shell-exec-allowed.part2.test.js +215 -0
- package/dist/cli/services/tools/__tests__/shell-exec-allowed.test.js +154 -0
- package/dist/cli/services/tools/__tests__/shell-exec-blocked.test.js +132 -0
- package/dist/cli/services/tools/__tests__/shell-exec-execution.test.js +245 -0
- package/dist/cli/services/tools/__tests__/task-manager-create.test.js +110 -0
- package/dist/cli/services/tools/__tests__/task-manager-crud.test.js +339 -0
- package/dist/cli/services/tools/__tests__/task-manager-list-get.test.js +343 -0
- package/dist/cli/services/tools/__tests__/task-manager-query.test.js +346 -0
- package/dist/cli/services/tools/__tests__/task-manager-routing.test.js +58 -0
- package/dist/cli/services/tools/__tests__/task-manager-update.test.js +224 -0
- package/dist/cli/services/tools/__tests__/task-manager.test.js +159 -0
- package/dist/cli/services/tools/__tests__/web-tools-html-search.test.js +227 -0
- package/dist/cli/services/tools/__tests__/web-tools.test.js +285 -0
- package/dist/cli/services/tools/agent-tools-tasks.d.ts +10 -0
- package/dist/cli/services/tools/agent-tools-tasks.js +216 -0
- package/dist/cli/services/tools/agent-tools-tasks.js.map +1 -0
- package/dist/cli/services/tools/agent-tools-team.d.ts +8 -0
- package/dist/cli/services/tools/agent-tools-team.js +101 -0
- package/dist/cli/services/tools/agent-tools-team.js.map +1 -0
- package/dist/cli/services/tools/agent-tools.js +115 -42
- package/dist/cli/services/tools/agent-tools.js.map +1 -1
- package/dist/cli/services/tools/file-ops-notebook.d.ts +9 -0
- package/dist/cli/services/tools/file-ops-notebook.js +186 -0
- package/dist/cli/services/tools/file-ops-notebook.js.map +1 -0
- package/dist/cli/services/tools/file-ops-read.d.ts +11 -0
- package/dist/cli/services/tools/file-ops-read.js +237 -0
- package/dist/cli/services/tools/file-ops-read.js.map +1 -0
- package/dist/cli/services/tools/file-ops-write.d.ts +8 -0
- package/dist/cli/services/tools/file-ops-write.js +260 -0
- package/dist/cli/services/tools/file-ops-write.js.map +1 -0
- package/dist/cli/services/tools/file-ops.d.ts +1 -0
- package/dist/cli/services/tools/file-ops.js +167 -0
- package/dist/cli/services/tools/file-ops.js.map +1 -1
- package/dist/cli/services/tools/html-to-text.d.ts +6 -0
- package/dist/cli/services/tools/html-to-text.js +118 -0
- package/dist/cli/services/tools/html-to-text.js.map +1 -0
- package/dist/cli/services/tools/shell-exec.test.js +148 -0
- package/dist/cli/services/tools/ssrf-guard.d.ts +6 -0
- package/dist/cli/services/tools/ssrf-guard.js +80 -0
- package/dist/cli/services/tools/ssrf-guard.js.map +1 -0
- package/dist/cli/setup/SetupComponents.d.ts +10 -0
- package/dist/cli/setup/SetupComponents.js +144 -0
- package/dist/cli/setup/SetupComponents.js.map +1 -0
- package/dist/cli/setup/setup-cli-targets.d.ts +9 -0
- package/dist/cli/setup/setup-cli-targets.js +49 -0
- package/dist/cli/setup/setup-cli-targets.js.map +1 -0
- package/dist/cli/shared/InlineErrorBoundary.d.ts +22 -0
- package/dist/cli/shared/InlineErrorBoundary.js +35 -0
- package/dist/cli/shared/InlineErrorBoundary.js.map +1 -0
- package/dist/cli/shared/MatrixIntro.js +2 -1
- package/dist/cli/shared/MatrixIntro.js.map +1 -1
- package/dist/cli/shared/SharedTick.d.ts +10 -0
- package/dist/cli/shared/SpinnerSlot.d.ts +16 -8
- package/dist/cli/shared/SpinnerSlot.js +122 -29
- package/dist/cli/shared/SpinnerSlot.js.map +1 -1
- package/dist/cli/shared/WhaleBanner.js +3 -2
- package/dist/cli/shared/WhaleBanner.js.map +1 -1
- package/dist/cli/shared/__tests__/markdown.test.js +188 -0
- package/dist/cli/shared/format-utils.d.ts +16 -0
- package/dist/cli/shared/format-utils.js +121 -0
- package/dist/cli/shared/format-utils.js.map +1 -0
- package/dist/cli/shared/markdown-chart.d.ts +8 -0
- package/dist/cli/shared/markdown-chart.js +92 -0
- package/dist/cli/shared/markdown-chart.js.map +1 -0
- package/dist/cli/shared/markdown-diff.d.ts +15 -0
- package/dist/cli/shared/markdown-diff.js +205 -0
- package/dist/cli/shared/markdown-diff.js.map +1 -0
- package/dist/cli/shared/markdown-helpers.d.ts +33 -0
- package/dist/cli/shared/markdown-helpers.js +129 -0
- package/dist/cli/shared/markdown-helpers.js.map +1 -0
- package/dist/cli/shared/markdown-table.d.ts +10 -0
- package/dist/cli/shared/markdown-table.js +227 -0
- package/dist/cli/shared/markdown-table.js.map +1 -0
- package/dist/cli/shared/markdown.d.ts +2 -6
- package/dist/cli/shared/markdown.js +8 -115
- package/dist/cli/shared/markdown.js.map +1 -1
- package/dist/cli/shared/useLatestRef.d.ts +11 -0
- package/dist/cli/shared/useLatestRef.js +34 -0
- package/dist/cli/shared/useLatestRef.js.map +1 -0
- package/dist/cli/shared/useSyncState.d.ts +11 -0
- package/dist/cli/shared/useSyncState.js +39 -0
- package/dist/cli/shared/useSyncState.js.map +1 -0
- package/dist/cli/stores/StoreApp.js +3 -1
- package/dist/cli/stores/StoreApp.js.map +1 -1
- package/dist/index-agent.d.ts +11 -0
- package/dist/index-agent.js +83 -0
- package/dist/index-agent.js.map +1 -0
- package/dist/index-auth.d.ts +22 -0
- package/dist/index-auth.js +114 -0
- package/dist/index-auth.js.map +1 -0
- package/dist/index-handlers.d.ts +25 -0
- package/dist/index-handlers.js +164 -0
- package/dist/index-handlers.js.map +1 -0
- package/dist/index-tools.d.ts +22 -0
- package/dist/index-tools.js +115 -0
- package/dist/index-tools.js.map +1 -0
- package/dist/local-agent/__tests__/connection-disconnect.test.js +201 -0
- package/dist/local-agent/__tests__/connection-lifecycle.test.js +289 -0
- package/dist/local-agent/__tests__/connection-msghandling.test.js +311 -0
- package/dist/local-agent/__tests__/connection-reconnect.test.js +230 -0
- package/dist/local-agent/__tests__/connection-toolexec.test.js +253 -0
- package/dist/local-agent/__tests__/discovery.test.js +328 -0
- package/dist/local-agent/__tests__/executor-background.test.js +219 -0
- package/dist/local-agent/__tests__/executor-exec.test.js +221 -0
- package/dist/local-agent/__tests__/executor-jobs-sessions.test.js +220 -0
- package/dist/local-agent/__tests__/executor-system-info.test.js +133 -0
- package/dist/local-agent/__tests__/executor-systeminfo.test.js +109 -0
- package/dist/local-agent/__tests__/executor.test.js +235 -0
- package/dist/local-agent/__tests__/index.test.js +139 -0
- package/dist/local-agent/connection-handlers.d.ts +8 -0
- package/dist/local-agent/connection-handlers.js +112 -0
- package/dist/local-agent/connection-handlers.js.map +1 -0
- package/dist/local-agent/connection-tools.d.ts +8 -0
- package/dist/local-agent/connection-tools.js +111 -0
- package/dist/local-agent/connection-tools.js.map +1 -0
- package/dist/local-agent/executor-jobs.d.ts +12 -0
- package/dist/local-agent/executor-jobs.js +143 -0
- package/dist/local-agent/executor-jobs.js.map +1 -0
- package/dist/local-agent/executor.d.ts +3 -0
- package/dist/local-agent/executor.js +2 -2
- package/dist/local-agent/executor.js.map +1 -1
- package/dist/node/__tests__/cli-channels.test.js +293 -0
- package/dist/node/__tests__/cli-config-edge.test.js +154 -0
- package/dist/node/__tests__/cli-config.test.js +215 -0
- package/dist/node/__tests__/config.test.js +292 -0
- package/dist/node/__tests__/runtime-heartbeat.test.js +153 -0
- package/dist/node/__tests__/runtime-lifecycle-init.test.js +263 -0
- package/dist/node/__tests__/runtime-lifecycle-stats.test.js +180 -0
- package/dist/node/__tests__/runtime-lifecycle.test.js +305 -0
- package/dist/node/__tests__/runtime-relay.test.js +341 -0
- package/dist/node/adapters/__tests__/base.test.js +286 -0
- package/dist/node/adapters/__tests__/discord.test.js +284 -0
- package/dist/node/adapters/__tests__/email-send.test.js +295 -0
- package/dist/node/adapters/__tests__/email.inbound-send.test.js +217 -0
- package/dist/node/adapters/__tests__/email.lifecycle.test.js +211 -0
- package/dist/node/adapters/__tests__/email.test.js +290 -0
- package/dist/node/adapters/__tests__/email.webhook-send.test.js +251 -0
- package/dist/node/adapters/__tests__/imessage-filter.test.js +183 -0
- package/dist/node/adapters/__tests__/imessage-lifecycle.test.js +215 -0
- package/dist/node/adapters/__tests__/imessage-send-restart.test.js +227 -0
- package/dist/node/adapters/__tests__/slack.part2.test.js +135 -0
- package/dist/node/adapters/__tests__/slack.test.js +241 -0
- package/dist/node/adapters/__tests__/sms-extras.test.js +108 -0
- package/dist/node/adapters/__tests__/sms-lifecycle.test.js +203 -0
- package/dist/node/adapters/__tests__/sms-messaging.test.js +266 -0
- package/dist/node/adapters/__tests__/sms.part2.test.js +174 -0
- package/dist/node/adapters/__tests__/sms.test.js +253 -0
- package/dist/node/adapters/__tests__/telegram-polling.test.js +256 -0
- package/dist/node/adapters/__tests__/telegram-send.test.js +166 -0
- package/dist/node/adapters/__tests__/webchat-inbound.test.js +188 -0
- package/dist/node/adapters/__tests__/webchat-outbound.test.js +178 -0
- package/dist/node/adapters/__tests__/whatsapp-inbound.test.js +200 -0
- package/dist/node/adapters/__tests__/whatsapp-send.test.js +212 -0
- package/dist/node/adapters/__tests__/whatsapp.test.js +280 -0
- package/dist/node/adapters/discord-gateway.d.ts +42 -0
- package/dist/node/adapters/discord-gateway.js +169 -0
- package/dist/node/adapters/discord-gateway.js.map +1 -0
- package/dist/node/adapters/imessage.d.ts +11 -0
- package/dist/node/adapters/imessage.js +23 -6
- package/dist/node/adapters/imessage.js.map +1 -1
- package/dist/node/cli-channels.d.ts +6 -0
- package/dist/node/cli-channels.js +229 -0
- package/dist/node/cli-channels.js.map +1 -0
- package/dist/node/cli-node.d.ts +9 -0
- package/dist/node/cli-node.js +186 -0
- package/dist/node/cli-node.js.map +1 -0
- package/dist/node/cli-portal.d.ts +11 -0
- package/dist/node/cli-portal.js +503 -0
- package/dist/node/cli-portal.js.map +1 -0
- package/dist/node/portal/portal-target.d.ts +16 -0
- package/dist/node/portal/portal-target.js +102 -0
- package/dist/node/portal/portal-target.js.map +1 -0
- package/dist/node/portal/protocol-frames.d.ts +33 -0
- package/dist/node/portal/protocol-frames.js +170 -0
- package/dist/node/portal/protocol-frames.js.map +1 -0
- package/dist/node/runtime-network.d.ts +25 -0
- package/dist/node/runtime-network.js +226 -0
- package/dist/node/runtime-network.js.map +1 -0
- package/dist/node/runtime-utils.d.ts +27 -0
- package/dist/node/runtime-utils.js +99 -0
- package/dist/node/runtime-utils.js.map +1 -0
- package/dist/node/runtime.d.ts +1 -0
- package/dist/node/runtime.js +71 -1
- package/dist/node/runtime.js.map +1 -1
- package/dist/node/task-runner.d.ts +33 -0
- package/dist/node/task-runner.js +276 -0
- package/dist/node/task-runner.js.map +1 -0
- package/dist/server/__tests__/gateway-fast-fail.test.js +160 -0
- package/dist/server/__tests__/local-agent-gateway.test.js +186 -0
- package/dist/server/__tests__/proxy-handlers-delegation.test.js +240 -0
- package/dist/server/__tests__/proxy-handlers-validation.test.js +211 -0
- package/dist/server/__tests__/proxy-handlers.part2.test.js +240 -0
- package/dist/server/__tests__/proxy-handlers.test.js +213 -0
- package/dist/server/__tests__/strip-base64-e2e.test.js +303 -0
- package/dist/server/__tests__/strip-base64.test.js +256 -0
- package/dist/server/__tests__/tool-router-agent-tools.test.js +324 -0
- package/dist/server/__tests__/tool-router-execute-core.test.js +357 -0
- package/dist/server/__tests__/tool-router-execute-permissions.test.js +332 -0
- package/dist/server/__tests__/tool-router-execute.test.js +348 -0
- package/dist/server/__tests__/tool-router-load.test.js +432 -0
- package/dist/server/__tests__/tool-router-permissions.test.js +359 -0
- package/dist/server/__tests__/tool-router-registry-cache.test.js +383 -0
- package/dist/server/__tests__/tool-router-registry-handlers.test.js +272 -0
- package/dist/server/__tests__/tool-router-registry.test.js +331 -0
- package/dist/server/__tests__/validation-inventory.test.js +250 -0
- package/dist/server/__tests__/validation-misc.test.js +243 -0
- package/dist/server/__tests__/validation-supply-chain.test.js +188 -0
- package/dist/server/__tests__/worker.test.js +265 -0
- package/dist/server/handlers/__test-utils__/test-db.d.ts +2 -0
- package/dist/server/handlers/__test-utils__/test-db.js +14 -1
- package/dist/server/handlers/__test-utils__/test-db.js.map +1 -1
- package/dist/server/handlers/__tests__/conversation-lock.test.js +117 -0
- package/dist/server/handlers/__tests__/e2e/auth-cross-platform-login.e2e.test.js +268 -0
- package/dist/server/handlers/__tests__/e2e/auth-cross-platform-tokens.e2e.test.js +264 -0
- package/dist/server/handlers/__tests__/e2e/email-pipeline-send.e2e.test.js +214 -0
- package/dist/server/handlers/__tests__/e2e/email-pipeline-threads.e2e.test.js +168 -0
- package/dist/server/handlers/__tests__/e2e/error-logging-pipeline-dedup.e2e.test.js +229 -0
- package/dist/server/handlers/__tests__/e2e/error-logging-pipeline.e2e.test.js +239 -0
- package/dist/server/handlers/__tests__/e2e/error-logging-rate-limit.e2e.test.js +150 -0
- package/dist/server/handlers/__tests__/e2e/inventory-sync-guards.e2e.test.js +177 -0
- package/dist/server/handlers/__tests__/e2e/inventory-sync.e2e.test.js +228 -0
- package/dist/server/handlers/__tests__/e2e/inventory-sync.part2.e2e.test.js +188 -0
- package/dist/server/handlers/__tests__/e2e/order-lifecycle-fulfillment.e2e.test.js +295 -0
- package/dist/server/handlers/__tests__/e2e/order-lifecycle.e2e.test.js +277 -0
- package/dist/server/handlers/__tests__/e2e/order-lifecycle.fulfillment.e2e.test.js +307 -0
- package/dist/server/handlers/__tests__/e2e/order-lifecycle.setup.e2e.test.js +177 -0
- package/dist/server/handlers/__tests__/e2e/storefront-checkout-cart.e2e.test.js +255 -0
- package/dist/server/handlers/__tests__/e2e/storefront-checkout-webhook.e2e.test.js +231 -0
- package/dist/server/handlers/__tests__/e2e/workflow-execution-failures.e2e.test.js +235 -0
- package/dist/server/handlers/__tests__/e2e/workflow-execution.e2e.test.js +294 -0
- package/dist/server/handlers/__tests__/e2e/workflow-security.e2e.test.js +311 -0
- package/dist/server/handlers/__tests__/e2e/workflow-security.part2.e2e.test.js +267 -0
- package/dist/server/handlers/__tests__/workflow-cache.test.js +237 -0
- package/dist/server/handlers/analytics-errors-edge.test.js +173 -0
- package/dist/server/handlers/analytics.js +88 -1
- package/dist/server/handlers/analytics.js.map +1 -1
- package/dist/server/handlers/analytics.test.js +280 -0
- package/dist/server/handlers/api-docs-examples-ext.d.ts +9 -0
- package/dist/server/handlers/api-docs-examples-ext.js +278 -0
- package/dist/server/handlers/api-docs-examples-ext.js.map +1 -0
- package/dist/server/handlers/api-docs-examples.d.ts +8 -0
- package/dist/server/handlers/api-docs-examples.js +221 -0
- package/dist/server/handlers/api-docs-examples.js.map +1 -0
- package/dist/server/handlers/api-docs-sections-ext.d.ts +2 -0
- package/dist/server/handlers/api-docs-sections-ext.js +497 -0
- package/dist/server/handlers/api-docs-sections-ext.js.map +1 -0
- package/dist/server/handlers/api-docs-sections.d.ts +21 -0
- package/dist/server/handlers/api-docs-sections.js +293 -0
- package/dist/server/handlers/api-docs-sections.js.map +1 -0
- package/dist/server/handlers/api-docs.d.ts +2 -0
- package/dist/server/handlers/api-docs.js +177 -0
- package/dist/server/handlers/api-docs.js.map +1 -1
- package/dist/server/handlers/api-keys.part2.test.js +157 -0
- package/dist/server/handlers/api-keys.test.js +161 -0
- package/dist/server/handlers/billing-core.d.ts +28 -0
- package/dist/server/handlers/billing-core.js +126 -0
- package/dist/server/handlers/billing-core.js.map +1 -0
- package/dist/server/handlers/billing-routes.d.ts +9 -0
- package/dist/server/handlers/billing-routes.js +243 -0
- package/dist/server/handlers/billing-routes.js.map +1 -0
- package/dist/server/handlers/billing-routes.test.js +123 -0
- package/dist/server/handlers/billing.test.js +215 -0
- package/dist/server/handlers/browser-actions-errors.test.js +94 -0
- package/dist/server/handlers/browser-actions.d.ts +35 -0
- package/dist/server/handlers/browser-actions.js +171 -0
- package/dist/server/handlers/browser-actions.js.map +1 -0
- package/dist/server/handlers/browser-actions.part2.test.js +190 -0
- package/dist/server/handlers/browser-actions.test.js +190 -0
- package/dist/server/handlers/browser-captcha.d.ts +6 -0
- package/dist/server/handlers/browser-captcha.js +172 -0
- package/dist/server/handlers/browser-captcha.js.map +1 -0
- package/dist/server/handlers/browser-lifecycle.d.ts +9 -0
- package/dist/server/handlers/browser-lifecycle.js +142 -0
- package/dist/server/handlers/browser-lifecycle.js.map +1 -0
- package/dist/server/handlers/browser-validation.test.js +257 -0
- package/dist/server/handlers/catalog-advanced.d.ts +9 -0
- package/dist/server/handlers/catalog-advanced.js +352 -0
- package/dist/server/handlers/catalog-advanced.js.map +1 -0
- package/dist/server/handlers/catalog-categories.d.ts +5 -0
- package/dist/server/handlers/catalog-categories.js +181 -0
- package/dist/server/handlers/catalog-categories.js.map +1 -0
- package/dist/server/handlers/catalog-products.d.ts +5 -0
- package/dist/server/handlers/catalog-products.js +404 -0
- package/dist/server/handlers/catalog-products.js.map +1 -0
- package/dist/server/handlers/catalog-schemas.d.ts +5 -0
- package/dist/server/handlers/catalog-schemas.js +426 -0
- package/dist/server/handlers/catalog-schemas.js.map +1 -0
- package/dist/server/handlers/catalog.test.js +297 -0
- package/dist/server/handlers/comms-documents-advanced.d.ts +8 -0
- package/dist/server/handlers/comms-documents-advanced.js +159 -0
- package/dist/server/handlers/comms-documents-advanced.js.map +1 -0
- package/dist/server/handlers/comms-documents.d.ts +10 -0
- package/dist/server/handlers/comms-documents.js +445 -0
- package/dist/server/handlers/comms-documents.js.map +1 -0
- package/dist/server/handlers/comms-email.d.ts +10 -0
- package/dist/server/handlers/comms-email.js +492 -0
- package/dist/server/handlers/comms-email.js.map +1 -0
- package/dist/server/handlers/comms-pdf-generation.d.ts +8 -0
- package/dist/server/handlers/comms-pdf-generation.js +327 -0
- package/dist/server/handlers/comms-pdf-generation.js.map +1 -0
- package/dist/server/handlers/comms-pdf-helpers.d.ts +9 -0
- package/dist/server/handlers/comms-pdf-helpers.js +126 -0
- package/dist/server/handlers/comms-pdf-helpers.js.map +1 -0
- package/dist/server/handlers/comms-shared.d.ts +3 -0
- package/dist/server/handlers/comms-shared.js +28 -0
- package/dist/server/handlers/comms-shared.js.map +1 -0
- package/dist/server/handlers/comms.test.js +289 -0
- package/dist/server/handlers/creations-actions.d.ts +21 -0
- package/dist/server/handlers/creations-actions.js +250 -0
- package/dist/server/handlers/creations-actions.js.map +1 -0
- package/dist/server/handlers/creations-advanced-collections.test.js +214 -0
- package/dist/server/handlers/creations-advanced-generate.test.js +142 -0
- package/dist/server/handlers/creations-advanced.test.js +171 -0
- package/dist/server/handlers/creations-collections-preview.test.js +214 -0
- package/dist/server/handlers/creations-crud.d.ts +35 -0
- package/dist/server/handlers/creations-crud.js +248 -0
- package/dist/server/handlers/creations-crud.js.map +1 -0
- package/dist/server/handlers/creations-crud.test.js +260 -0
- package/dist/server/handlers/creations-generate.d.ts +21 -0
- package/dist/server/handlers/creations-generate.js +256 -0
- package/dist/server/handlers/creations-generate.js.map +1 -0
- package/dist/server/handlers/creations-mutations.test.js +197 -0
- package/dist/server/handlers/crm-customers-read.d.ts +58 -0
- package/dist/server/handlers/crm-customers-read.js +208 -0
- package/dist/server/handlers/crm-customers-read.js.map +1 -0
- package/dist/server/handlers/crm-customers-write.d.ts +54 -0
- package/dist/server/handlers/crm-customers-write.js +414 -0
- package/dist/server/handlers/crm-customers-write.js.map +1 -0
- package/dist/server/handlers/crm-utils.d.ts +6 -0
- package/dist/server/handlers/crm-utils.js +19 -0
- package/dist/server/handlers/crm-utils.js.map +1 -0
- package/dist/server/handlers/crm.test.js +179 -0
- package/dist/server/handlers/discovery-advertise.d.ts +18 -0
- package/dist/server/handlers/discovery-advertise.js +101 -0
- package/dist/server/handlers/discovery-advertise.js.map +1 -0
- package/dist/server/handlers/discovery-advertise.test.js +185 -0
- package/dist/server/handlers/discovery-scan.d.ts +19 -0
- package/dist/server/handlers/discovery-scan.js +107 -0
- package/dist/server/handlers/discovery-scan.js.map +1 -0
- package/dist/server/handlers/discovery-scan.test.js +233 -0
- package/dist/server/handlers/embeddings-embed-search.test.js +196 -0
- package/dist/server/handlers/embeddings-index-delete-stats.test.js +140 -0
- package/dist/server/handlers/embeddings-search.test.js +221 -0
- package/dist/server/handlers/embeddings.test.js +137 -0
- package/dist/server/handlers/enrichment-breach.d.ts +8 -0
- package/dist/server/handlers/enrichment-breach.js +266 -0
- package/dist/server/handlers/enrichment-breach.js.map +1 -0
- package/dist/server/handlers/enrichment-data.d.ts +13 -0
- package/dist/server/handlers/enrichment-data.js +145 -0
- package/dist/server/handlers/enrichment-data.js.map +1 -0
- package/dist/server/handlers/enrichment-enrich.d.ts +6 -0
- package/dist/server/handlers/enrichment-enrich.js +235 -0
- package/dist/server/handlers/enrichment-enrich.js.map +1 -0
- package/dist/server/handlers/enrichment-helpers.d.ts +10 -0
- package/dist/server/handlers/enrichment-helpers.js +17 -0
- package/dist/server/handlers/enrichment-helpers.js.map +1 -0
- package/dist/server/handlers/enrichment-mutations.test.js +240 -0
- package/dist/server/handlers/enrichment-queries.test.js +181 -0
- package/dist/server/handlers/enrichment-validation.test.js +177 -0
- package/dist/server/handlers/enrichment-writes.d.ts +16 -0
- package/dist/server/handlers/enrichment-writes.js +226 -0
- package/dist/server/handlers/enrichment-writes.js.map +1 -0
- package/dist/server/handlers/image-gen-actions.d.ts +18 -0
- package/dist/server/handlers/image-gen-actions.js +183 -0
- package/dist/server/handlers/image-gen-actions.js.map +1 -0
- package/dist/server/handlers/image-gen-providers.d.ts +29 -0
- package/dist/server/handlers/image-gen-providers.js +161 -0
- package/dist/server/handlers/image-gen-providers.js.map +1 -0
- package/dist/server/handlers/image-gen.test.js +205 -0
- package/dist/server/handlers/inventory-audit.d.ts +10 -0
- package/dist/server/handlers/inventory-audit.js +90 -0
- package/dist/server/handlers/inventory-audit.js.map +1 -0
- package/dist/server/handlers/inventory-helpers.d.ts +8 -0
- package/dist/server/handlers/inventory-helpers.js +19 -0
- package/dist/server/handlers/inventory-helpers.js.map +1 -0
- package/dist/server/handlers/inventory-query.d.ts +67 -0
- package/dist/server/handlers/inventory-query.js +299 -0
- package/dist/server/handlers/inventory-query.js.map +1 -0
- package/dist/server/handlers/inventory.test.js +380 -0
- package/dist/server/handlers/kali-background.test.js +222 -0
- package/dist/server/handlers/kali-errors.test.js +92 -0
- package/dist/server/handlers/kali-validation.test.js +234 -0
- package/dist/server/handlers/llm-providers-actions.test.js +220 -0
- package/dist/server/handlers/llm-providers-anthropic.test.js +239 -0
- package/dist/server/handlers/llm-providers-clients.d.ts +6 -0
- package/dist/server/handlers/llm-providers-clients.js +296 -0
- package/dist/server/handlers/llm-providers-clients.js.map +1 -0
- package/dist/server/handlers/llm-providers-credentials.d.ts +3 -0
- package/dist/server/handlers/llm-providers-credentials.js +109 -0
- package/dist/server/handlers/llm-providers-credentials.js.map +1 -0
- package/dist/server/handlers/llm-providers-failover.test.js +232 -0
- package/dist/server/handlers/llm-providers-models.d.ts +67 -0
- package/dist/server/handlers/llm-providers-models.js +213 -0
- package/dist/server/handlers/llm-providers-models.js.map +1 -0
- package/dist/server/handlers/llm-providers-providers.test.js +300 -0
- package/dist/server/handlers/llm-providers-validation.test.js +239 -0
- package/dist/server/handlers/local-agent-tools.test.js +224 -0
- package/dist/server/handlers/local-agent.test.js +198 -0
- package/dist/server/handlers/local-agent.tools-status.test.js +204 -0
- package/dist/server/handlers/local-agent.validation-exec.test.js +182 -0
- package/dist/server/handlers/media-actions.d.ts +14 -0
- package/dist/server/handlers/media-actions.js +398 -0
- package/dist/server/handlers/media-actions.js.map +1 -0
- package/dist/server/handlers/media-crud.d.ts +9 -0
- package/dist/server/handlers/media-crud.js +365 -0
- package/dist/server/handlers/media-crud.js.map +1 -0
- package/dist/server/handlers/media-upload.d.ts +4 -0
- package/dist/server/handlers/media-upload.js +179 -0
- package/dist/server/handlers/media-upload.js.map +1 -0
- package/dist/server/handlers/media-utils.d.ts +14 -0
- package/dist/server/handlers/media-utils.js +33 -0
- package/dist/server/handlers/media-utils.js.map +1 -0
- package/dist/server/handlers/meta-ads-advanced.d.ts +46 -0
- package/dist/server/handlers/meta-ads-advanced.js +222 -0
- package/dist/server/handlers/meta-ads-advanced.js.map +1 -0
- package/dist/server/handlers/meta-ads-audience-rules.test.js +243 -0
- package/dist/server/handlers/meta-ads-audience-targeting.test.js +205 -0
- package/dist/server/handlers/meta-ads-audiences-targeting.test.js +383 -0
- package/dist/server/handlers/meta-ads-audiences.d.ts +48 -0
- package/dist/server/handlers/meta-ads-audiences.js +214 -0
- package/dist/server/handlers/meta-ads-audiences.js.map +1 -0
- package/dist/server/handlers/meta-ads-crud-ads.test.js +136 -0
- package/dist/server/handlers/meta-ads-crud-campaigns.test.js +189 -0
- package/dist/server/handlers/meta-ads-crud-create.test.js +303 -0
- package/dist/server/handlers/meta-ads-crud-list-update.test.js +259 -0
- package/dist/server/handlers/meta-ads-crud-read.d.ts +78 -0
- package/dist/server/handlers/meta-ads-crud-read.js +204 -0
- package/dist/server/handlers/meta-ads-crud-read.js.map +1 -0
- package/dist/server/handlers/meta-ads-crud-write.d.ts +105 -0
- package/dist/server/handlers/meta-ads-crud-write.js +390 -0
- package/dist/server/handlers/meta-ads-crud-write.js.map +1 -0
- package/dist/server/handlers/meta-ads-crud.d.ts +9 -0
- package/dist/server/handlers/meta-ads-crud.js +12 -0
- package/dist/server/handlers/meta-ads-crud.js.map +1 -0
- package/dist/server/handlers/meta-ads-delete-publish-sync.test.js +282 -0
- package/dist/server/handlers/meta-ads-graph-api.d.ts +25 -0
- package/dist/server/handlers/meta-ads-graph-api.js +155 -0
- package/dist/server/handlers/meta-ads-graph-api.js.map +1 -0
- package/dist/server/handlers/meta-ads-insights.test.js +80 -0
- package/dist/server/handlers/meta-ads-list-get.test.js +237 -0
- package/dist/server/handlers/meta-ads-media.d.ts +16 -0
- package/dist/server/handlers/meta-ads-media.js +205 -0
- package/dist/server/handlers/meta-ads-media.js.map +1 -0
- package/dist/server/handlers/meta-ads-pixels-rules.d.ts +127 -0
- package/dist/server/handlers/meta-ads-pixels-rules.js +463 -0
- package/dist/server/handlers/meta-ads-pixels-rules.js.map +1 -0
- package/dist/server/handlers/meta-ads-publish-ad.d.ts +11 -0
- package/dist/server/handlers/meta-ads-publish-ad.js +229 -0
- package/dist/server/handlers/meta-ads-publish-ad.js.map +1 -0
- package/dist/server/handlers/meta-ads-publish-delete.test.js +254 -0
- package/dist/server/handlers/meta-ads-publish-helpers.js +117 -0
- package/dist/server/handlers/meta-ads-publish-helpers.js.map +1 -0
- package/dist/server/handlers/meta-ads-publish-sync.test.js +205 -0
- package/dist/server/handlers/meta-ads-publish.d.ts +14 -0
- package/dist/server/handlers/meta-ads-publish.js +194 -0
- package/dist/server/handlers/meta-ads-publish.js.map +1 -0
- package/dist/server/handlers/meta-ads-publish.test.js +254 -0
- package/dist/server/handlers/meta-ads-sync-insights.test.js +184 -0
- package/dist/server/handlers/meta-ads-targeting.d.ts +27 -0
- package/dist/server/handlers/meta-ads-targeting.js +323 -0
- package/dist/server/handlers/meta-ads-targeting.js.map +1 -0
- package/dist/server/handlers/meta-ads-types.d.ts +49 -0
- package/dist/server/handlers/meta-ads-types.js +59 -0
- package/dist/server/handlers/meta-ads-types.js.map +1 -0
- package/dist/server/handlers/meta-ads-update.test.js +117 -0
- package/dist/server/handlers/meta-ads.d.ts +25 -0
- package/dist/server/handlers/meta-ads.js +392 -3
- package/dist/server/handlers/meta-ads.js.map +1 -1
- package/dist/server/handlers/nodes-channels.test.js +413 -0
- package/dist/server/handlers/nodes-events.test.js +131 -0
- package/dist/server/handlers/nodes-handlers-channels-messages.d.ts +20 -0
- package/dist/server/handlers/nodes-handlers-channels-messages.js +314 -0
- package/dist/server/handlers/nodes-handlers-channels-messages.js.map +1 -0
- package/dist/server/handlers/nodes-handlers-channels.d.ts +19 -0
- package/dist/server/handlers/nodes-handlers-channels.js +225 -0
- package/dist/server/handlers/nodes-handlers-channels.js.map +1 -0
- package/dist/server/handlers/nodes-handlers-mgmt.d.ts +33 -0
- package/dist/server/handlers/nodes-handlers-mgmt.js +418 -0
- package/dist/server/handlers/nodes-handlers-mgmt.js.map +1 -0
- package/dist/server/handlers/nodes-list-delete.test.js +171 -0
- package/dist/server/handlers/nodes-messages-delivery.test.js +208 -0
- package/dist/server/handlers/nodes-messages.test.js +211 -0
- package/dist/server/handlers/nodes-register.test.js +277 -0
- package/dist/server/handlers/nodes-routes-channels.d.ts +9 -0
- package/dist/server/handlers/nodes-routes-channels.js +217 -0
- package/dist/server/handlers/nodes-routes-channels.js.map +1 -0
- package/dist/server/handlers/nodes-routes-crud.d.ts +9 -0
- package/dist/server/handlers/nodes-routes-crud.js +290 -0
- package/dist/server/handlers/nodes-routes-crud.js.map +1 -0
- package/dist/server/handlers/nodes-routes-delivery.d.ts +9 -0
- package/dist/server/handlers/nodes-routes-delivery.js +226 -0
- package/dist/server/handlers/nodes-routes-delivery.js.map +1 -0
- package/dist/server/handlers/nodes-routes-messages.d.ts +9 -0
- package/dist/server/handlers/nodes-routes-messages.js +218 -0
- package/dist/server/handlers/nodes-routes-messages.js.map +1 -0
- package/dist/server/handlers/nodes-routes-register.d.ts +9 -0
- package/dist/server/handlers/nodes-routes-register.js +239 -0
- package/dist/server/handlers/nodes-routes-register.js.map +1 -0
- package/dist/server/handlers/nodes-types.d.ts +82 -0
- package/dist/server/handlers/nodes-types.js +220 -0
- package/dist/server/handlers/nodes-types.js.map +1 -0
- package/dist/server/handlers/nodes-utils.d.ts +70 -0
- package/dist/server/handlers/nodes-utils.js +214 -0
- package/dist/server/handlers/nodes-utils.js.map +1 -0
- package/dist/server/handlers/nodes.test.js +353 -0
- package/dist/server/handlers/operations.test.js +136 -0
- package/dist/server/handlers/platform-telemetry.d.ts +10 -0
- package/dist/server/handlers/platform-telemetry.js +372 -0
- package/dist/server/handlers/platform-telemetry.js.map +1 -0
- package/dist/server/handlers/platform-telemetry.test.js +200 -0
- package/dist/server/handlers/platform-websearch.test.js +160 -0
- package/dist/server/handlers/sessions-handlers.d.ts +23 -0
- package/dist/server/handlers/sessions-handlers.js +374 -0
- package/dist/server/handlers/sessions-handlers.js.map +1 -0
- package/dist/server/handlers/storefront-cart.d.ts +31 -0
- package/dist/server/handlers/storefront-cart.js +381 -0
- package/dist/server/handlers/storefront-cart.js.map +1 -0
- package/dist/server/handlers/storefront.test.js +329 -0
- package/dist/server/handlers/supply-chain-transfers.d.ts +10 -0
- package/dist/server/handlers/supply-chain-transfers.js +214 -0
- package/dist/server/handlers/supply-chain-transfers.js.map +1 -0
- package/dist/server/handlers/supply-chain-utils.d.ts +2 -0
- package/dist/server/handlers/supply-chain-utils.js +21 -0
- package/dist/server/handlers/supply-chain-utils.js.map +1 -0
- package/dist/server/handlers/supply-chain.test.js +347 -0
- package/dist/server/handlers/transcription.test.js +118 -0
- package/dist/server/handlers/video-gen-providers.d.ts +30 -0
- package/dist/server/handlers/video-gen-providers.js +205 -0
- package/dist/server/handlers/video-gen-providers.js.map +1 -0
- package/dist/server/handlers/video-gen-sora.d.ts +5 -0
- package/dist/server/handlers/video-gen-sora.js +87 -0
- package/dist/server/handlers/video-gen-sora.js.map +1 -0
- package/dist/server/handlers/video-gen-veo.js +114 -0
- package/dist/server/handlers/video-gen-veo.js.map +1 -0
- package/dist/server/handlers/video-gen.test.js +146 -0
- package/dist/server/handlers/voice-handlers-audio.d.ts +9 -0
- package/dist/server/handlers/voice-handlers-audio.js +229 -0
- package/dist/server/handlers/voice-handlers-audio.js.map +1 -0
- package/dist/server/handlers/voice-handlers-music.d.ts +5 -0
- package/dist/server/handlers/voice-handlers-music.js +124 -0
- package/dist/server/handlers/voice-handlers-music.js.map +1 -0
- package/dist/server/handlers/voice-handlers-pvc.d.ts +8 -0
- package/dist/server/handlers/voice-handlers-pvc.js +345 -0
- package/dist/server/handlers/voice-handlers-pvc.js.map +1 -0
- package/dist/server/handlers/voice-handlers-tts.d.ts +5 -0
- package/dist/server/handlers/voice-handlers-tts.js +142 -0
- package/dist/server/handlers/voice-handlers-tts.js.map +1 -0
- package/dist/server/handlers/voice-handlers-voices.d.ts +8 -0
- package/dist/server/handlers/voice-handlers-voices.js +321 -0
- package/dist/server/handlers/voice-handlers-voices.js.map +1 -0
- package/dist/server/handlers/voice-utils.d.ts +32 -0
- package/dist/server/handlers/voice-utils.js +281 -0
- package/dist/server/handlers/voice-utils.js.map +1 -0
- package/dist/server/handlers/voice.test.js +153 -0
- package/dist/server/handlers/workflow-crud-advanced.d.ts +8 -0
- package/dist/server/handlers/workflow-crud-advanced.js +275 -0
- package/dist/server/handlers/workflow-crud-advanced.js.map +1 -0
- package/dist/server/handlers/workflow-crud-core.d.ts +8 -0
- package/dist/server/handlers/workflow-crud-core.js +286 -0
- package/dist/server/handlers/workflow-crud-core.js.map +1 -0
- package/dist/server/handlers/workflow-crud-events.d.ts +8 -0
- package/dist/server/handlers/workflow-crud-events.js +483 -0
- package/dist/server/handlers/workflow-crud-events.js.map +1 -0
- package/dist/server/handlers/workflow-crud-runs-lifecycle.d.ts +8 -0
- package/dist/server/handlers/workflow-crud-runs-lifecycle.js +231 -0
- package/dist/server/handlers/workflow-crud-runs-lifecycle.js.map +1 -0
- package/dist/server/handlers/workflow-crud-runs-versioning.d.ts +8 -0
- package/dist/server/handlers/workflow-crud-runs-versioning.js +319 -0
- package/dist/server/handlers/workflow-crud-runs-versioning.js.map +1 -0
- package/dist/server/handlers/workflow-crud-runs.d.ts +8 -0
- package/dist/server/handlers/workflow-crud-runs.js +18 -0
- package/dist/server/handlers/workflow-crud-runs.js.map +1 -0
- package/dist/server/handlers/workflow-steps-advancement.d.ts +13 -0
- package/dist/server/handlers/workflow-steps-advancement.js +197 -0
- package/dist/server/handlers/workflow-steps-advancement.js.map +1 -0
- package/dist/server/handlers/workflow-steps-circuit-breaker.d.ts +7 -0
- package/dist/server/handlers/workflow-steps-circuit-breaker.js +131 -0
- package/dist/server/handlers/workflow-steps-circuit-breaker.js.map +1 -0
- package/dist/server/handlers/workflow-steps-completion.d.ts +5 -0
- package/dist/server/handlers/workflow-steps-completion.js +254 -0
- package/dist/server/handlers/workflow-steps-completion.js.map +1 -0
- package/dist/server/handlers/workflow-steps-cron.d.ts +4 -0
- package/dist/server/handlers/workflow-steps-cron.js +259 -0
- package/dist/server/handlers/workflow-steps-cron.js.map +1 -0
- package/dist/server/handlers/workflow-steps-engine-execute.d.ts +3 -0
- package/dist/server/handlers/workflow-steps-engine-execute.js +388 -0
- package/dist/server/handlers/workflow-steps-engine-execute.js.map +1 -0
- package/dist/server/handlers/workflow-steps-engine-inline.d.ts +2 -0
- package/dist/server/handlers/workflow-steps-engine-inline.js +91 -0
- package/dist/server/handlers/workflow-steps-engine-inline.js.map +1 -0
- package/dist/server/handlers/workflow-steps-engine-persist.d.ts +5 -0
- package/dist/server/handlers/workflow-steps-engine-persist.js +192 -0
- package/dist/server/handlers/workflow-steps-engine-persist.js.map +1 -0
- package/dist/server/handlers/workflow-steps-engine-process.d.ts +7 -0
- package/dist/server/handlers/workflow-steps-engine-process.js +290 -0
- package/dist/server/handlers/workflow-steps-engine-process.js.map +1 -0
- package/dist/server/handlers/workflow-steps-engine.d.ts +3 -0
- package/dist/server/handlers/workflow-steps-engine.js +10 -0
- package/dist/server/handlers/workflow-steps-engine.js.map +1 -0
- package/dist/server/handlers/workflow-steps-executors-llm.d.ts +7 -0
- package/dist/server/handlers/workflow-steps-executors-llm.js +265 -0
- package/dist/server/handlers/workflow-steps-executors-llm.js.map +1 -0
- package/dist/server/handlers/workflow-steps-executors.d.ts +9 -0
- package/dist/server/handlers/workflow-steps-executors.js +188 -0
- package/dist/server/handlers/workflow-steps-executors.js.map +1 -0
- package/dist/server/handlers/workflow-steps-maintenance.d.ts +4 -0
- package/dist/server/handlers/workflow-steps-maintenance.js +256 -0
- package/dist/server/handlers/workflow-steps-maintenance.js.map +1 -0
- package/dist/server/handlers/workflow-steps-types.d.ts +84 -0
- package/dist/server/handlers/workflow-steps-types.js +179 -0
- package/dist/server/handlers/workflow-steps-types.js.map +1 -0
- package/dist/server/handlers/workflow-steps-webhook.d.ts +5 -0
- package/dist/server/handlers/workflow-steps-webhook.js +179 -0
- package/dist/server/handlers/workflow-steps-webhook.js.map +1 -0
- package/dist/server/handlers/workflow-steps.test.js +330 -0
- package/dist/server/handlers/workflows-extras.test.js +65 -0
- package/dist/server/handlers/workflows.part2.test.js +170 -0
- package/dist/server/handlers/workflows.test.js +281 -0
- package/dist/server/index.js +81 -1720
- package/dist/server/index.js.map +1 -1
- package/dist/server/lib/__tests__/batch-client-conversion-jsonl.test.js +171 -0
- package/dist/server/lib/__tests__/batch-client-polling.test.js +292 -0
- package/dist/server/lib/__tests__/batch-client-queue.test.js +270 -0
- package/dist/server/lib/__tests__/clickhouse-buffer.test.js +236 -0
- package/dist/server/lib/__tests__/code-worker-edge-cases.test.js +118 -0
- package/dist/server/lib/__tests__/code-worker-pool-execute.test.js +193 -0
- package/dist/server/lib/__tests__/code-worker-pool-execution.test.js +165 -0
- package/dist/server/lib/__tests__/code-worker-pool-init.test.js +131 -0
- package/dist/server/lib/__tests__/code-worker-pool.test.js +194 -0
- package/dist/server/lib/__tests__/code-worker-sandbox-ops.test.js +123 -0
- package/dist/server/lib/__tests__/code-worker-sandbox.test.js +217 -0
- package/dist/server/lib/__tests__/code-worker.test.js +179 -0
- package/dist/server/lib/__tests__/compaction-service-generate.test.js +229 -0
- package/dist/server/lib/__tests__/compaction-service.test.js +319 -0
- package/dist/server/lib/__tests__/otel.test.js +146 -0
- package/dist/server/lib/__tests__/prompt-sanitizer-validation.test.js +165 -0
- package/dist/server/lib/__tests__/prompt-sanitizer.sanitize.test.js +343 -0
- package/dist/server/lib/__tests__/prompt-sanitizer.test.js +328 -0
- package/dist/server/lib/__tests__/prompt-sanitizer.validate-tool.test.js +145 -0
- package/dist/server/lib/__tests__/provider-capabilities.test.js +263 -0
- package/dist/server/lib/__tests__/provider-failover-routing.test.js +145 -0
- package/dist/server/lib/__tests__/provider-failover-state.test.js +131 -0
- package/dist/server/lib/__tests__/rate-limiter-budgets.test.js +216 -0
- package/dist/server/lib/__tests__/rate-limiter.budgets-tools.test.js +113 -0
- package/dist/server/lib/__tests__/rate-limiter.check-request.test.js +141 -0
- package/dist/server/lib/__tests__/rate-limiter.stats-lifecycle.test.js +135 -0
- package/dist/server/lib/__tests__/rate-limiter.test.js +207 -0
- package/dist/server/lib/__tests__/server-agent-loop-abort-conditions.test.js +544 -0
- package/dist/server/lib/__tests__/server-agent-loop-abort.part2.test.js +504 -0
- package/dist/server/lib/__tests__/server-agent-loop-abort.test.js +396 -0
- package/dist/server/lib/__tests__/server-agent-loop-compaction.test.js +397 -0
- package/dist/server/lib/__tests__/server-agent-loop-failover.test.js +356 -0
- package/dist/server/lib/__tests__/server-agent-loop-features-caching.test.js +519 -0
- package/dist/server/lib/__tests__/server-agent-loop-features-edges.test.js +512 -0
- package/dist/server/lib/__tests__/server-subagent-bailout.test.js +194 -0
- package/dist/server/lib/__tests__/server-subagent-basics.test.js +348 -0
- package/dist/server/lib/__tests__/server-subagent-errors-abort.test.js +319 -0
- package/dist/server/lib/__tests__/server-subagent-errors-progress.test.js +253 -0
- package/dist/server/lib/__tests__/server-subagent-errors.part2.test.js +253 -0
- package/dist/server/lib/__tests__/server-subagent-errors.test.js +319 -0
- package/dist/server/lib/__tests__/session-checkpoint-load.test.js +275 -0
- package/dist/server/lib/__tests__/session-checkpoint-save.test.js +159 -0
- package/dist/server/lib/__tests__/ssrf-guard.test.js +93 -0
- package/dist/server/lib/__tests__/supabase-client.test.js +111 -0
- package/dist/server/lib/__tests__/template-resolver.test.js +317 -0
- package/dist/server/lib/__tests__/utils-timeout.test.js +49 -0
- package/dist/server/lib/__tests__/utils.test.js +322 -0
- package/dist/server/lib/agent-loop-executor.d.ts +7 -0
- package/dist/server/lib/agent-loop-executor.js +224 -0
- package/dist/server/lib/agent-loop-executor.js.map +1 -0
- package/dist/server/lib/agent-loop-turn.d.ts +53 -0
- package/dist/server/lib/agent-loop-turn.js +166 -0
- package/dist/server/lib/agent-loop-turn.js.map +1 -0
- package/dist/server/lib/agent-loop-types.d.ts +118 -0
- package/dist/server/lib/agent-loop-types.js +53 -0
- package/dist/server/lib/agent-loop-types.js.map +1 -0
- package/dist/server/lib/batch-client-anthropic.d.ts +10 -0
- package/dist/server/lib/batch-client-anthropic.js +144 -0
- package/dist/server/lib/batch-client-anthropic.js.map +1 -0
- package/dist/server/lib/batch-client-openai.d.ts +10 -0
- package/dist/server/lib/batch-client-openai.js +172 -0
- package/dist/server/lib/batch-client-openai.js.map +1 -0
- package/dist/server/lib/batch-client-types.d.ts +54 -0
- package/dist/server/lib/batch-client-types.js +27 -0
- package/dist/server/lib/batch-client-types.js.map +1 -0
- package/dist/server/lib/coa-renderer-components.d.ts +15 -0
- package/dist/server/lib/coa-renderer-components.js +361 -0
- package/dist/server/lib/coa-renderer-components.js.map +1 -0
- package/dist/server/lib/coa-renderer-pages.d.ts +15 -0
- package/dist/server/lib/coa-renderer-pages.js +467 -0
- package/dist/server/lib/coa-renderer-pages.js.map +1 -0
- package/dist/server/lib/coa-renderer-styles.d.ts +525 -0
- package/dist/server/lib/coa-renderer-styles.js +540 -0
- package/dist/server/lib/coa-renderer-styles.js.map +1 -0
- package/dist/server/lib/coa-renderer-tokens.d.ts +107 -0
- package/dist/server/lib/coa-renderer-tokens.js +46 -0
- package/dist/server/lib/coa-renderer-tokens.js.map +1 -0
- package/dist/server/lib/pdf-renderer-calc.d.ts +7 -0
- package/dist/server/lib/pdf-renderer-calc.js +272 -0
- package/dist/server/lib/pdf-renderer-calc.js.map +1 -0
- package/dist/server/lib/pdf-renderer-generation.d.ts +73 -0
- package/dist/server/lib/pdf-renderer-generation.js +298 -0
- package/dist/server/lib/pdf-renderer-generation.js.map +1 -0
- package/dist/server/lib/pdf-renderer-layout.d.ts +2 -0
- package/dist/server/lib/pdf-renderer-layout.js +144 -0
- package/dist/server/lib/pdf-renderer-layout.js.map +1 -0
- package/dist/server/lib/pdf-renderer-validation.d.ts +14 -0
- package/dist/server/lib/pdf-renderer-validation.js +220 -0
- package/dist/server/lib/pdf-renderer-validation.js.map +1 -0
- package/dist/server/lib/react-pdf-layout-elements.d.ts +8 -0
- package/dist/server/lib/react-pdf-layout-elements.js +366 -0
- package/dist/server/lib/react-pdf-layout-elements.js.map +1 -0
- package/dist/server/lib/react-pdf-layout-labels.d.ts +38 -0
- package/dist/server/lib/react-pdf-layout-labels.js +217 -0
- package/dist/server/lib/react-pdf-layout-labels.js.map +1 -0
- package/dist/server/lib/server-agent-loop-init.d.ts +28 -0
- package/dist/server/lib/server-agent-loop-init.js +138 -0
- package/dist/server/lib/server-agent-loop-init.js.map +1 -0
- package/dist/server/lib/server-agent-loop-v2.d.ts +110 -0
- package/dist/server/lib/server-agent-loop-v2.js +340 -0
- package/dist/server/lib/server-agent-loop-v2.js.map +1 -0
- package/dist/server/lib/server-agent-loop.js +2 -1
- package/dist/server/lib/server-agent-loop.js.map +1 -1
- package/dist/server/lib/server-subagent-loop.d.ts +3 -0
- package/dist/server/lib/server-subagent-loop.js +267 -0
- package/dist/server/lib/server-subagent-loop.js.map +1 -0
- package/dist/server/lib/session-types.d.ts +106 -0
- package/dist/server/lib/session-types.js +2 -0
- package/dist/server/lib/session-types.js.map +1 -0
- package/dist/server/local-agent-gateway-api.d.ts +34 -0
- package/dist/server/local-agent-gateway-api.js +156 -0
- package/dist/server/local-agent-gateway-api.js.map +1 -0
- package/dist/server/local-agent-gateway-handler.d.ts +3 -0
- package/dist/server/local-agent-gateway-handler.js +292 -0
- package/dist/server/local-agent-gateway-handler.js.map +1 -0
- package/dist/server/local-agent-gateway-init.d.ts +21 -0
- package/dist/server/local-agent-gateway-init.js +143 -0
- package/dist/server/local-agent-gateway-init.js.map +1 -0
- package/dist/server/local-agent-gateway-messages.d.ts +12 -0
- package/dist/server/local-agent-gateway-messages.js +108 -0
- package/dist/server/local-agent-gateway-messages.js.map +1 -0
- package/dist/server/local-agent-gateway-stats.d.ts +53 -0
- package/dist/server/local-agent-gateway-stats.js +129 -0
- package/dist/server/local-agent-gateway-stats.js.map +1 -0
- package/dist/server/local-agent-gateway-types.d.ts +94 -0
- package/dist/server/local-agent-gateway-types.js +78 -0
- package/dist/server/local-agent-gateway-types.js.map +1 -0
- package/dist/server/local-agent-gateway.d.ts +6 -0
- package/dist/server/local-agent-gateway.js +40 -0
- package/dist/server/local-agent-gateway.js.map +1 -1
- package/dist/server/providers/__tests__/anthropic-adapter.test.js +228 -0
- package/dist/server/providers/__tests__/anthropic-betas-toolchoice.test.js +257 -0
- package/dist/server/providers/__tests__/anthropic-errors.test.js +262 -0
- package/dist/server/providers/__tests__/anthropic-stream-core.test.js +275 -0
- package/dist/server/providers/__tests__/anthropic-streaming-betas.test.js +247 -0
- package/dist/server/providers/__tests__/anthropic-streaming-core.test.js +275 -0
- package/dist/server/providers/__tests__/bedrock-config.test.js +177 -0
- package/dist/server/providers/__tests__/bedrock-stream-behavior-streaming.test.js +272 -0
- package/dist/server/providers/__tests__/bedrock-stream-behavior-toolchoice.test.js +214 -0
- package/dist/server/providers/__tests__/bedrock-stream-behavior.part2.test.js +165 -0
- package/dist/server/providers/__tests__/bedrock-stream-behavior.test.js +309 -0
- package/dist/server/providers/__tests__/bedrock-stream-body-credentials.test.js +170 -0
- package/dist/server/providers/__tests__/bedrock-stream-body-extras.test.js +183 -0
- package/dist/server/providers/__tests__/bedrock-stream-body-request.test.js +305 -0
- package/dist/server/providers/__tests__/bedrock-stream-body.part2.test.js +305 -0
- package/dist/server/providers/__tests__/bedrock-stream-body.test.js +175 -0
- package/dist/server/providers/__tests__/bedrock-stream-errors.test.js +165 -0
- package/dist/server/providers/__tests__/gemini-config-methods.test.js +182 -0
- package/dist/server/providers/__tests__/gemini-config-streaming.test.js +257 -0
- package/dist/server/providers/__tests__/gemini-conversion-messages.test.js +247 -0
- package/dist/server/providers/__tests__/gemini-conversion-schema.test.js +365 -0
- package/dist/server/providers/__tests__/gemini-tools-choice.test.js +221 -0
- package/dist/server/providers/__tests__/gemini-tools-fn.test.js +252 -0
- package/dist/server/providers/__tests__/openai-config.test.js +194 -0
- package/dist/server/providers/__tests__/openai-conversion.test.js +276 -0
- package/dist/server/providers/__tests__/openai-messages.test.js +261 -0
- package/dist/server/providers/__tests__/openai-streaming.test.js +394 -0
- package/dist/server/providers/__tests__/openai-tools-cache.test.js +227 -0
- package/dist/server/providers/__tests__/registry.test.js +183 -0
- package/dist/server/providers/__tests__/shared.test.js +297 -0
- package/dist/server/providers/gemini-conversion.d.ts +17 -0
- package/dist/server/providers/gemini-conversion.js +185 -0
- package/dist/server/providers/gemini-conversion.js.map +1 -0
- package/dist/server/providers/gemini-streaming.d.ts +18 -0
- package/dist/server/providers/gemini-streaming.js +187 -0
- package/dist/server/providers/gemini-streaming.js.map +1 -0
- package/dist/server/providers/openai-adapter.d.ts +15 -0
- package/dist/server/providers/openai-adapter.js +423 -0
- package/dist/server/providers/openai-adapter.js.map +1 -0
- package/dist/server/providers/openai-conversion.d.ts +21 -0
- package/dist/server/providers/openai-conversion.js +191 -0
- package/dist/server/providers/openai-conversion.js.map +1 -0
- package/dist/server/server-agent.d.ts +21 -0
- package/dist/server/server-agent.js +162 -0
- package/dist/server/server-agent.js.map +1 -0
- package/dist/server/server-chat.d.ts +6 -0
- package/dist/server/server-chat.js +210 -0
- package/dist/server/server-chat.js.map +1 -0
- package/dist/server/server-cost-guard.d.ts +16 -0
- package/dist/server/server-cost-guard.js +141 -0
- package/dist/server/server-cost-guard.js.map +1 -0
- package/dist/server/server-executors.d.ts +10 -0
- package/dist/server/server-executors.js +110 -0
- package/dist/server/server-executors.js.map +1 -0
- package/dist/server/server-helpers.d.ts +49 -0
- package/dist/server/server-helpers.js +210 -0
- package/dist/server/server-helpers.js.map +1 -0
- package/dist/server/server-persist.d.ts +43 -0
- package/dist/server/server-persist.js +249 -0
- package/dist/server/server-persist.js.map +1 -0
- package/dist/server/server-rate-limit.d.ts +9 -0
- package/dist/server/server-rate-limit.js +77 -0
- package/dist/server/server-rate-limit.js.map +1 -0
- package/dist/server/server-routes-approvals.d.ts +4 -0
- package/dist/server/server-routes-approvals.js +238 -0
- package/dist/server/server-routes-approvals.js.map +1 -0
- package/dist/server/server-routes-auth.d.ts +7 -0
- package/dist/server/server-routes-auth.js +532 -0
- package/dist/server/server-routes-auth.js.map +1 -0
- package/dist/server/server-routes-events.d.ts +4 -0
- package/dist/server/server-routes-events.js +167 -0
- package/dist/server/server-routes-events.js.map +1 -0
- package/dist/server/server-routes-public.d.ts +24 -0
- package/dist/server/server-routes-public.js +453 -0
- package/dist/server/server-routes-public.js.map +1 -0
- package/dist/server/server-routes-waitpoints.d.ts +4 -0
- package/dist/server/server-routes-waitpoints.js +190 -0
- package/dist/server/server-routes-waitpoints.js.map +1 -0
- package/dist/server/server-routes-webchat.d.ts +14 -0
- package/dist/server/server-routes-webchat.js +307 -0
- package/dist/server/server-routes-webchat.js.map +1 -0
- package/dist/server/server-routes-workflows.d.ts +5 -0
- package/dist/server/server-routes-workflows.js +289 -0
- package/dist/server/server-routes-workflows.js.map +1 -0
- package/dist/server/server-sse.d.ts +13 -0
- package/dist/server/server-sse.js +197 -0
- package/dist/server/server-sse.js.map +1 -0
- package/dist/server/server-store-circuit-breaker.d.ts +32 -0
- package/dist/server/server-store-circuit-breaker.js +211 -0
- package/dist/server/server-store-circuit-breaker.js.map +1 -0
- package/dist/server/server-store.d.ts +5 -0
- package/dist/server/server-store.js +71 -0
- package/dist/server/server-store.js.map +1 -0
- package/dist/server/server-trace.d.ts +41 -0
- package/dist/server/server-trace.js +133 -0
- package/dist/server/server-trace.js.map +1 -0
- package/dist/server/server-worker.d.ts +4 -0
- package/dist/server/server-worker.js +127 -0
- package/dist/server/server-worker.js.map +1 -0
- package/dist/server/session-events.d.ts +27 -0
- package/dist/server/session-events.js +69 -0
- package/dist/server/session-events.js.map +1 -0
- package/dist/server/session-manager.d.ts +52 -0
- package/dist/server/session-manager.js +502 -0
- package/dist/server/session-manager.js.map +1 -0
- package/dist/server/tool-router-discovery.d.ts +33 -0
- package/dist/server/tool-router-discovery.js +218 -0
- package/dist/server/tool-router-discovery.js.map +1 -0
- package/dist/server/tool-router-types.d.ts +91 -0
- package/dist/server/tool-router-types.js +336 -0
- package/dist/server/tool-router-types.js.map +1 -0
- package/dist/server/tool-router-user-tools.d.ts +16 -0
- package/dist/server/tool-router-user-tools.js +269 -0
- package/dist/server/tool-router-user-tools.js.map +1 -0
- package/dist/server/validation-schemas.d.ts +12 -0
- package/dist/server/validation-schemas.js +251 -0
- package/dist/server/validation-schemas.js.map +1 -0
- package/dist/shared/agent-core-config.d.ts +12 -0
- package/dist/shared/agent-core-config.js +77 -0
- package/dist/shared/agent-core-config.js.map +1 -0
- package/dist/shared/agent-core-config.test.js +132 -0
- package/dist/shared/agent-core-context-thinking.test.js +293 -0
- package/dist/shared/agent-core-loop-calls.test.js +174 -0
- package/dist/shared/agent-core-loop-detector-bail.test.js +201 -0
- package/dist/shared/agent-core-loop-detector.test.js +195 -0
- package/dist/shared/agent-core-loop-errors.test.js +258 -0
- package/dist/shared/agent-core-loop.d.ts +53 -0
- package/dist/shared/agent-core-loop.js +251 -0
- package/dist/shared/agent-core-loop.js.map +1 -0
- package/dist/shared/agent-core-pricing.test.js +191 -0
- package/dist/shared/agent-core-sanitize-retry.test.js +129 -0
- package/dist/shared/agent-core-tools.d.ts +32 -0
- package/dist/shared/agent-core-tools.js +323 -0
- package/dist/shared/agent-core-tools.js.map +1 -0
- package/dist/shared/agent-core-types.d.ts +182 -0
- package/dist/shared/agent-core-types.js +265 -0
- package/dist/shared/agent-core-types.js.map +1 -0
- package/dist/shared/agent-core.js +1 -1
- package/dist/shared/agent-core.js.map +1 -1
- package/dist/shared/agent-loop-base.d.ts +130 -0
- package/dist/shared/agent-loop-base.js +347 -0
- package/dist/shared/agent-loop-base.js.map +1 -0
- package/dist/shared/api-client-build-request.test.js +228 -0
- package/dist/shared/api-client-build-system-caching.test.js +107 -0
- package/dist/shared/api-client-build.test.js +223 -0
- package/dist/shared/api-client-config.d.ts +21 -0
- package/dist/shared/api-client-helpers.d.ts +57 -0
- package/dist/shared/api-client-helpers.test.js +261 -0
- package/dist/shared/api-client-proxy-happy.test.js +255 -0
- package/dist/shared/api-client-proxy-retry.test.js +307 -0
- package/dist/shared/api-client-proxy.d.ts +26 -0
- package/dist/shared/api-client-proxy.test.js +255 -0
- package/dist/shared/api-client-retry.test.js +307 -0
- package/dist/shared/api-client-system-trimming.test.js +261 -0
- package/dist/shared/api-client-trimming.d.ts +36 -0
- package/dist/shared/api-client.js.map +1 -1
- package/dist/shared/api-client.test.js +228 -0
- package/dist/shared/compaction-thinking.test.js +315 -0
- package/dist/shared/compaction-trimming.test.js +223 -0
- package/dist/shared/exec-validator.d.ts +29 -0
- package/dist/shared/exec-validator.js +106 -0
- package/dist/shared/exec-validator.js.map +1 -0
- package/dist/shared/imsg-constants.d.ts +8 -0
- package/dist/shared/imsg-constants.js +13 -0
- package/dist/shared/imsg-constants.js.map +1 -0
- package/dist/shared/sse-parser-callbacks.test.js +422 -0
- package/dist/shared/sse-parser-collect.test.js +252 -0
- package/dist/shared/sse-parser-e2e.test.js +558 -0
- package/dist/shared/sse-parser-parse.test.js +253 -0
- package/dist/shared/tool-dispatch-advanced-batch-build.test.js +405 -0
- package/dist/shared/tool-dispatch-advanced.test.js +320 -0
- package/dist/shared/tool-dispatch-basic.test.js +278 -0
- package/dist/shared/tool-dispatch-content.d.ts +14 -0
- package/dist/shared/tool-dispatch-parallel.test.js +378 -0
- package/dist/shared/tool-dispatch.js +1 -1
- package/dist/shared/tool-dispatch.js.map +1 -1
- package/dist/webchat/__tests__/widget-messaging.test.js +323 -0
- package/dist/webchat/__tests__/widget.test.js +273 -0
- package/dist/webchat/widget-styles.d.ts +7 -0
- package/dist/webchat/widget-styles.js +11 -0
- package/dist/webchat/widget-styles.js.map +1 -0
- package/package.json +5 -4
- package/src/cli/services/builtin-skills/verify.md +72 -0
- package/vendor/ink/build/ink.js +33 -10
- package/vendor/ink/build/log-update.js +11 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatInput.js","names":["useState","useEffect","useRef","Box","Text","useStdin","readFileSync","existsSync","statSync","basename","extname","colors","loadKeybindings","bindingToControlChar","SlashMenu","SLASH_COMMANDS","_SLASH_COMMANDS","getFilteredSelectableCount","getCommandAtIndex","getCategoryCount","getCategoryCommandCount","getCategoryCommand","getCategoryLabel","getCategoryColor","jsx","_jsx","jsxs","_jsxs","IMAGE_EXTENSIONS","MAX_IMAGE_SIZE","MAX_DISPLAY_LINES","CONTEXT_TYPES","CONTEXT_COLORS","product","customer","order","inventory","media","document","location","parseWhaleContext","text","trimmed","trim","startsWith","endsWith","obj","JSON","parse","id","type","includes","title","sourceApp","contextToBlock","ctx","lines","push","subtitle","data","key","value","Object","entries","sort","a","b","localeCompare","join","isImagePath","p","normalizePath","ext","toLowerCase","raw","decodeURIComponent","replace","isFilePath","isFile","loadImage","filePath","mediaType","stat","size","path","name","base64","toString","getCursorLineCol","cursor","pos","split","i","length","line","col","ChatInput","onSubmit","onCommand","disabled","agentName","onInterrupt","stdin","inputRef","displayValue","setDisplayValue","displayCursor","setDisplayCursor","onSubmitRef","onCommandRef","onInterruptRef","disabledRef","current","queued","setQueued","queuedRef","prevDisabledRef","handleSubmit","menuMode","setMenuMode","menuModeRef","menuFilter","setMenuFilter","menuFilterRef","menuIndex","setMenuIndex","menuIndexRef","images","setImages","imagesRef","files","setFiles","filesRef","contextItems","setContextItems","contextItemsRef","selectedCategory","setSelectedCategory","selectedCategoryRef","setSelectedCategorySync","val","historyRef","historyIndexRef","savedInputRef","MAX_HISTORY","isPasting","pasteBuffer","pastedText","setPastedText","pastedTextRef","setMenuModeSync","setMenuFilterSync","setMenuIndexSync","process","stdout","write","update","processPaste","clean","some","c","prev","map","l","filter","Boolean","every","newImages","img","newFiles","pasteLines","cur","newValue","slice","typed","paste","imgs","fls","ctxs","contextPrefix","filePrefix","f","body","fullText","shift","undefined","onData","str","_kb","exitChar","exit","expandChar","toggle_expand","thinkingChar","toggle_thinking","Math","min","max","curLine","curCol","targetLine","targetCol","newCursor","charCodeAt","codePoints","hasFilter","inCategory","cmd","count","catIdx","clear_line","delete_word","before","match","len","home","newIdx","hist","on","off","disabledLines","dCursorLine","dCursorCol","flexDirection","children","color","quaternary","bold","wrap","dim","inverse","warning","isCursorOnLine","marginLeft","promptLine","brand","catLabel","catColor","tertiary","hint","selectedIndex","cursorLine","cursorCol","isTruncated","visibleLines","secondary","indigo","purple","isRealLine"],"sources":["../../../src/cli/chat/ChatInput.tsx"],"sourcesContent":["/**\n * ChatInput — Custom input with bracketed paste + image attachments\n *\n * Replaces ink-text-input with raw stdin handling to fix:\n * - Paste losing content on enter (newlines in paste triggered submit)\n * - Multi-line paste mangled/unformatted\n * - No drag-drop image support\n *\n * Features:\n * - Bracketed paste mode — clean multi-line paste\n * - Drag-drop images — detects image file paths, attaches as chips\n * - Image chips above input like Claude Code: [image1.png] [image2.jpg]\n * - Backspace on empty input removes last image\n * - Slash command menu preserved\n * - Multi-line input with ⎸ continuation markers\n */\n\nimport { useState, useEffect, useRef } from \"react\";\nimport { Box, Text, useStdin } from \"ink\";\nimport { readFileSync, existsSync, statSync } from \"fs\";\nimport { basename, extname } from \"path\";\nimport { colors } from \"../shared/Theme.js\";\nimport { loadKeybindings, bindingToControlChar } from \"../services/keybinding-manager.js\";\nimport { SlashMenu, SLASH_COMMANDS as _SLASH_COMMANDS, getFilteredSelectableCount, getCommandAtIndex, getCategoryCount, getCategoryCommandCount, getCategoryCommand, getCategoryLabel, getCategoryColor } from \"./SlashMenu.js\";\n\n// ── Types ──\n\nexport interface ImageAttachment {\n path: string;\n name: string;\n base64: string;\n mediaType: string;\n}\n\nexport interface FileAttachment {\n path: string;\n name: string;\n}\n\nexport interface ContextAttachment {\n id: string;\n type: string;\n title: string;\n subtitle?: string;\n icon: string;\n sourceApp: string;\n data: Record<string, unknown>;\n timestamp: string;\n}\n\n// Re-export for consumers (e.g. useSlashCommands)\nexport type { SlashCommand } from \"./SlashMenu.js\";\nexport const SLASH_COMMANDS = _SLASH_COMMANDS;\n\n// ── Constants ──\n\nconst IMAGE_EXTENSIONS: Record<string, string> = {\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".gif\": \"image/gif\",\n \".webp\": \"image/webp\",\n};\n\nconst MAX_IMAGE_SIZE = 20 * 1024 * 1024; // 20MB\nconst MAX_DISPLAY_LINES = 8;\n\n// ── Helpers ──\n\nconst CONTEXT_TYPES = [\"product\", \"customer\", \"order\", \"inventory\", \"media\", \"document\", \"location\"];\nconst CONTEXT_COLORS: Record<string, string> = {\n product: \"blue\", customer: \"#a855f7\", order: \"green\",\n inventory: \"#f97316\", media: \"#ec4899\", document: \"cyan\", location: \"yellow\",\n};\n\n/** Detect if pasted text is a valid WhaleContextItem JSON object */\nfunction parseWhaleContext(text: string): ContextAttachment | null {\n const trimmed = text.trim();\n if (!trimmed.startsWith(\"{\") || !trimmed.endsWith(\"}\")) return null;\n try {\n const obj = JSON.parse(trimmed);\n if (obj && typeof obj.id === \"string\" && typeof obj.type === \"string\" &&\n CONTEXT_TYPES.includes(obj.type) && typeof obj.title === \"string\" &&\n typeof obj.sourceApp === \"string\") {\n return obj as ContextAttachment;\n }\n } catch { /* not JSON */ }\n return null;\n}\n\n/** Format a context attachment into an XML context block for AI prompt */\nfunction contextToBlock(ctx: ContextAttachment): string {\n const lines: string[] = [];\n lines.push(`<context type=\"${ctx.type}\" source=\"${ctx.sourceApp}\">`);\n lines.push(` ${ctx.title}`);\n if (ctx.subtitle) lines.push(` ${ctx.subtitle}`);\n if (ctx.data) {\n for (const [key, value] of Object.entries(ctx.data).sort(([a], [b]) => a.localeCompare(b))) {\n lines.push(` ${key}: ${value}`);\n }\n }\n lines.push(\"</context>\");\n return lines.join(\"\\n\");\n}\n\nfunction isImagePath(text: string): boolean {\n const p = normalizePath(text);\n if (!p || p.includes(\"\\n\")) return false;\n const ext = extname(p).toLowerCase();\n return ext in IMAGE_EXTENSIONS && existsSync(p);\n}\n\n/** Normalize a terminal-pasted path (handles escapes, file:// URLs, quotes) */\nfunction normalizePath(raw: string): string {\n let p = raw.trim();\n // Strip file:// URL prefix + percent-decode\n if (p.startsWith(\"file://\")) {\n p = decodeURIComponent(p.replace(/^file:\\/\\//, \"\"));\n }\n // Strip surrounding quotes\n p = p.replace(/^['\"]|['\"]$/g, \"\");\n // Unescape backslash-escaped characters (spaces, parens, etc.)\n p = p.replace(/\\\\(.)/g, \"$1\");\n return p;\n}\n\nfunction isFilePath(text: string): boolean {\n const p = normalizePath(text);\n if (!p || p.includes(\"\\n\")) return false;\n // Skip image paths — handled separately\n const ext = extname(p).toLowerCase();\n if (ext in IMAGE_EXTENSIONS) return false;\n try { return existsSync(p) && statSync(p).isFile(); } catch { return false; }\n}\n\nfunction loadImage(filePath: string): ImageAttachment | null {\n try {\n const p = normalizePath(filePath);\n const ext = extname(p).toLowerCase();\n const mediaType = IMAGE_EXTENSIONS[ext];\n if (!mediaType) return null;\n const stat = statSync(p);\n if (stat.size > MAX_IMAGE_SIZE) return null;\n const data = readFileSync(p);\n return { path: p, name: basename(p), base64: data.toString(\"base64\"), mediaType };\n } catch {\n return null;\n }\n}\n\nfunction getCursorLineCol(text: string, cursor: number): { line: number; col: number } {\n let pos = 0;\n const lines = text.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n if (cursor <= pos + lines[i].length) {\n return { line: i, col: cursor - pos };\n }\n pos += lines[i].length + 1;\n }\n return { line: lines.length - 1, col: lines[lines.length - 1].length };\n}\n\n// ── Props ──\n\ninterface ChatInputProps {\n onSubmit: (message: string, images?: ImageAttachment[]) => void;\n onCommand: (command: string) => void;\n disabled: boolean;\n agentName?: string;\n onInterrupt?: () => void;\n}\n\n// ── Component ──\n\nexport function ChatInput({ onSubmit, onCommand, disabled, agentName, onInterrupt }: ChatInputProps) {\n const { stdin } = useStdin();\n\n // Input state — ref for synchronous handler access, state for render\n const inputRef = useRef({ value: \"\", cursor: 0 });\n const [displayValue, setDisplayValue] = useState(\"\");\n const [displayCursor, setDisplayCursor] = useState(0);\n\n // Stable refs for callbacks — prevents stale closures in stdin handler\n const onSubmitRef = useRef(onSubmit);\n const onCommandRef = useRef(onCommand);\n const onInterruptRef = useRef(onInterrupt);\n const disabledRef = useRef(disabled);\n useEffect(() => { onSubmitRef.current = onSubmit; }, [onSubmit]);\n useEffect(() => { onCommandRef.current = onCommand; }, [onCommand]);\n useEffect(() => { onInterruptRef.current = onInterrupt; }, [onInterrupt]);\n useEffect(() => { disabledRef.current = disabled; }, [disabled]);\n\n // Queued message — typed during streaming, auto-submitted when streaming ends\n const [queued, setQueued] = useState(false);\n const queuedRef = useRef(false);\n\n // Auto-submit queued input when streaming ends (disabled goes from true → false)\n const prevDisabledRef = useRef(disabled);\n useEffect(() => {\n if (prevDisabledRef.current && !disabled && queuedRef.current) {\n // Streaming just ended and we have queued input — submit it\n queuedRef.current = false;\n setQueued(false);\n handleSubmit();\n }\n prevDisabledRef.current = disabled;\n }, [disabled]);\n\n // Mode & attachments\n const [menuMode, setMenuMode] = useState(false);\n const menuModeRef = useRef(false);\n const [menuFilter, setMenuFilter] = useState(\"\");\n const menuFilterRef = useRef(\"\");\n const [menuIndex, setMenuIndex] = useState(0);\n const menuIndexRef = useRef(0);\n const [images, setImages] = useState<ImageAttachment[]>([]);\n const imagesRef = useRef<ImageAttachment[]>([]);\n const [files, setFiles] = useState<FileAttachment[]>([]);\n const filesRef = useRef<FileAttachment[]>([]);\n const [contextItems, setContextItems] = useState<ContextAttachment[]>([]);\n const contextItemsRef = useRef<ContextAttachment[]>([]);\n\n // Two-level menu: null = Level 1 (categories), number = Level 2 (drilled into that category)\n const [selectedCategory, setSelectedCategory] = useState<number | null>(null);\n const selectedCategoryRef = useRef<number | null>(null);\n function setSelectedCategorySync(val: number | null) {\n selectedCategoryRef.current = val;\n setSelectedCategory(val);\n }\n\n // Input history (up/down arrow recall)\n const historyRef = useRef<string[]>([]);\n const historyIndexRef = useRef(-1);\n const savedInputRef = useRef(\"\");\n const MAX_HISTORY = 50;\n\n // Paste tracking\n const isPasting = useRef(false);\n const pasteBuffer = useRef(\"\");\n\n // Multi-line paste — stored separately, displayed as chip\n const [pastedText, setPastedText] = useState<string | null>(null);\n const pastedTextRef = useRef<string | null>(null);\n\n // Sync refs\n useEffect(() => { imagesRef.current = images; }, [images]);\n useEffect(() => { filesRef.current = files; }, [files]);\n useEffect(() => { contextItemsRef.current = contextItems; }, [contextItems]);\n useEffect(() => { pastedTextRef.current = pastedText; }, [pastedText]);\n // ── Sync helpers: update ref THEN state (fixes race conditions) ──\n function setMenuModeSync(val: boolean) {\n menuModeRef.current = val;\n setMenuMode(val);\n }\n function setMenuFilterSync(val: string) {\n menuFilterRef.current = val;\n setMenuFilter(val);\n }\n function setMenuIndexSync(val: number) {\n menuIndexRef.current = val;\n setMenuIndex(val);\n }\n\n // ── Enable bracketed paste mode ──\n useEffect(() => {\n process.stdout.write(\"\\x1b[?2004h\");\n return () => { process.stdout.write(\"\\x1b[?2004l\"); };\n }, []);\n\n // ── Update helper ──\n function update(value: string, cursor: number) {\n inputRef.current = { value, cursor };\n setDisplayValue(value);\n setDisplayCursor(cursor);\n }\n\n // ── Process paste content ──\n function processPaste(text: string) {\n const clean = text.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n\n // Check for WhaleContext JSON → attach as context chip\n const ctx = parseWhaleContext(clean);\n if (ctx) {\n // Avoid duplicates\n if (!contextItemsRef.current.some(c => c.id === ctx.id)) {\n setContextItems(prev => [...prev, ctx]);\n }\n return;\n }\n\n // Check if ALL non-empty lines are image paths → attach them\n const lines = clean.split(\"\\n\").map(l => l.trim()).filter(Boolean);\n if (lines.length > 0 && lines.every(l => isImagePath(l))) {\n const newImages: ImageAttachment[] = [];\n for (const line of lines) {\n const img = loadImage(line);\n if (img) newImages.push(img);\n }\n if (newImages.length > 0) {\n setImages(prev => [...prev, ...newImages]);\n return;\n }\n }\n\n // Check for non-image file paths → attach as file chips\n if (lines.length > 0 && lines.length <= 4 && lines.every(l => isFilePath(l))) {\n const newFiles: FileAttachment[] = lines.map(l => {\n const p = normalizePath(l);\n return { path: p, name: basename(p) };\n });\n setFiles(prev => [...prev, ...newFiles]);\n return;\n }\n\n // Slash command pasted directly (must look like /word, not an absolute path)\n if (clean.startsWith(\"/\") && !clean.includes(\"\\n\") && !clean.includes(\"/\", 1) && inputRef.current.value === \"\") {\n onCommandRef.current(clean.trim());\n update(\"\", 0);\n return;\n }\n\n // Multi-line paste → store as chip, don't spam input\n const pasteLines = clean.split(\"\\n\");\n if (pasteLines.length >= 4) {\n setPastedText(clean);\n return;\n }\n\n // Short paste — insert inline as before\n const { value: val, cursor: cur } = inputRef.current;\n const newValue = val.slice(0, cur) + clean + val.slice(cur);\n update(newValue, cur + clean.length);\n }\n\n // ── Handle submit ──\n function handleSubmit() {\n const typed = inputRef.current.value.trim();\n const paste = pastedTextRef.current;\n const imgs = imagesRef.current;\n const fls = filesRef.current;\n const ctxs = contextItemsRef.current;\n\n if (!typed && !paste && imgs.length === 0 && fls.length === 0 && ctxs.length === 0) return;\n\n // Slash command — must start with / and NOT contain a second /\n // (prevents file paths like /Users/whale/file.txt from being misidentified)\n if (typed.startsWith(\"/\") && !typed.includes(\"/\", 1) && !paste && imgs.length === 0 && fls.length === 0 && ctxs.length === 0) {\n update(\"\", 0);\n onCommandRef.current(typed);\n return;\n }\n\n // Build context blocks prefix\n const contextPrefix = ctxs.length > 0\n ? ctxs.map(c => contextToBlock(c)).join(\"\\n\\n\") + \"\\n\\n\"\n : \"\";\n\n // Build file context prefix\n const filePrefix = fls.length > 0\n ? fls.map(f => f.path).join(\"\\n\") + \"\\n\\n\"\n : \"\";\n\n // Combine context + file prefix + typed text + pasted content\n const body = paste\n ? (typed ? `${typed}\\n\\n${paste}` : paste)\n : (typed || (ctxs.length > 0 ? \"Tell me about this\" : \"\"));\n const fullText = contextPrefix + filePrefix + body;\n\n // Record in history\n if (fullText.trim()) {\n historyRef.current.push(fullText.trim());\n if (historyRef.current.length > MAX_HISTORY) historyRef.current.shift();\n }\n historyIndexRef.current = -1;\n\n onSubmitRef.current(fullText, imgs.length > 0 ? imgs : undefined);\n update(\"\", 0);\n setImages([]);\n setFiles([]);\n setContextItems([]);\n setPastedText(null);\n }\n\n // ── Raw stdin handler (handles both normal input and menu mode) ──\n useEffect(() => {\n if (!stdin) return;\n\n const onData = (data: Buffer) => {\n const str = data.toString(\"utf-8\");\n\n // ══════════════════════════════════════════════\n // DISABLED MODE — accept typing, block commands, handle Esc\n // ══════════════════════════════════════════════\n if (disabledRef.current) {\n // Escape → interrupt streaming\n if (str === \"\\x1b\") {\n onInterruptRef.current?.();\n return;\n }\n\n // Control chars handled by ChatApp (exit, expand, thinking toggle)\n const _kb = loadKeybindings();\n const exitChar = bindingToControlChar(_kb.exit);\n const expandChar = bindingToControlChar(_kb.toggle_expand);\n const thinkingChar = bindingToControlChar(_kb.toggle_thinking);\n if (str === exitChar || str === expandChar || str === thinkingChar) return;\n\n // Arrow keys — cursor movement within buffer while disabled\n if (str.startsWith(\"\\x1b[\")) {\n const { value: val, cursor: cur } = inputRef.current;\n if (str === \"\\x1b[C\") { // Right\n update(val, Math.min(cur + 1, val.length));\n } else if (str === \"\\x1b[D\") { // Left\n update(val, Math.max(cur - 1, 0));\n } else if (str === \"\\x1b[A\" || str === \"\\x1b[B\") { // Up/Down\n const lines = val.split(\"\\n\");\n if (lines.length > 1) {\n const { line: curLine, col: curCol } = getCursorLineCol(val, cur);\n const targetLine = str === \"\\x1b[A\"\n ? Math.max(0, curLine - 1)\n : Math.min(lines.length - 1, curLine + 1);\n if (targetLine !== curLine) {\n const targetCol = Math.min(curCol, lines[targetLine].length);\n let newCursor = 0;\n for (let i = 0; i < targetLine; i++) newCursor += lines[i].length + 1;\n newCursor += targetCol;\n update(val, newCursor);\n }\n }\n } else if (str === \"\\x1b[H\" || str === \"\\x1b[1~\") { // Home\n update(val, 0);\n } else if (str === \"\\x1b[F\" || str === \"\\x1b[4~\") { // End\n update(val, val.length);\n }\n return;\n }\n\n // Bracketed paste while disabled — accept into buffer\n if (str.includes(\"\\x1b[200~\")) {\n isPasting.current = true;\n let text = str.replace(/\\x1b\\[200~/g, \"\").replace(/\\x1b\\[201~/g, \"\");\n pasteBuffer.current += text;\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n }\n return;\n }\n if (isPasting.current) {\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n pasteBuffer.current += str.replace(/\\x1b\\[201~/g, \"\");\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n } else {\n pasteBuffer.current += str;\n }\n return;\n }\n\n // Enter → queue the current input for auto-submit\n if (str === \"\\r\" || str === \"\\n\") {\n const typed = inputRef.current.value.trim();\n if (typed) {\n queuedRef.current = true;\n setQueued(true);\n }\n return;\n }\n\n // Backspace\n if (str === \"\\x7f\" || str === \"\\b\") {\n const { value: val, cursor: cur } = inputRef.current;\n if (cur > 0) {\n update(val.slice(0, cur - 1) + val.slice(cur), cur - 1);\n // Un-queue if editing\n if (queuedRef.current) { queuedRef.current = false; setQueued(false); }\n }\n return;\n }\n\n // Slash — block menu mode while streaming\n if (str === \"/\" && inputRef.current.value === \"\") return;\n\n // Printable char — type into buffer\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n const { value: val, cursor: cur } = inputRef.current;\n update(val.slice(0, cur) + str + val.slice(cur), cur + 1);\n // Un-queue if editing after queuing\n if (queuedRef.current) { queuedRef.current = false; setQueued(false); }\n return;\n }\n\n // Multi-character non-escape (unbracketted paste)\n if (str.length > 1 && !str.startsWith(\"\\x1b\")) {\n const codePoints = [...str];\n if (codePoints.length === 1) {\n const { value: val, cursor: cur } = inputRef.current;\n update(val.slice(0, cur) + str + val.slice(cur), cur + str.length);\n } else {\n processPaste(str);\n }\n if (queuedRef.current) { queuedRef.current = false; setQueued(false); }\n return;\n }\n\n return;\n }\n\n // ══════════════════════════════════════════════\n // MENU MODE — two-level navigation\n // ══════════════════════════════════════════════\n if (menuModeRef.current) {\n const hasFilter = menuFilterRef.current.length > 0;\n const inCategory = selectedCategoryRef.current !== null;\n\n // Escape or Ctrl+C → dismiss menu entirely\n if (str === \"\\x1b\" || str === \"\\x03\") {\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n return;\n }\n\n // Tab → no-op\n if (str === \"\\t\") return;\n\n // ── Filter mode (has filter text) ──\n if (hasFilter) {\n if (str === \"\\r\" || str === \"\\n\") {\n const cmd = getCommandAtIndex(menuFilterRef.current, menuIndexRef.current);\n if (cmd) {\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n onCommandRef.current(cmd.name);\n }\n return;\n }\n if (str === \"\\x1b[A\") {\n setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));\n return;\n }\n if (str === \"\\x1b[B\") {\n const count = getFilteredSelectableCount(menuFilterRef.current);\n setMenuIndexSync(Math.min(count - 1, menuIndexRef.current + 1));\n return;\n }\n if (str === \"\\x7f\" || str === \"\\b\") {\n const f = menuFilterRef.current;\n if (f.length > 1) {\n setMenuFilterSync(f.slice(0, -1));\n setMenuIndexSync(0);\n } else {\n // Clearing filter → back to Level 1\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n }\n return;\n }\n if (str.startsWith(\"\\x1b\")) return;\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n setMenuFilterSync(menuFilterRef.current + str);\n setMenuIndexSync(0);\n return;\n }\n return;\n }\n\n // ── Level 2: inside a category ──\n if (inCategory) {\n const catIdx = selectedCategoryRef.current!;\n if (str === \"\\r\" || str === \"\\n\") {\n const cmd = getCategoryCommand(catIdx, menuIndexRef.current);\n if (cmd) {\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n onCommandRef.current(cmd.name);\n }\n return;\n }\n if (str === \"\\x1b[A\") {\n setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));\n return;\n }\n if (str === \"\\x1b[B\") {\n const count = getCategoryCommandCount(catIdx);\n setMenuIndexSync(Math.min(count - 1, menuIndexRef.current + 1));\n return;\n }\n // Left arrow or Backspace → back to Level 1\n if (str === \"\\x1b[D\" || str === \"\\x7f\" || str === \"\\b\") {\n setMenuIndexSync(catIdx); // restore highlight to the category we were in\n setSelectedCategorySync(null);\n return;\n }\n if (str.startsWith(\"\\x1b\")) return;\n // Printable → switch to filter mode\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n setSelectedCategorySync(null);\n setMenuFilterSync(str);\n setMenuIndexSync(0);\n return;\n }\n return;\n }\n\n // ── Level 1: category list ──\n if (str === \"\\r\" || str === \"\\n\" || str === \"\\x1b[C\") {\n // Enter or Right → drill into selected category\n const catIdx = menuIndexRef.current;\n if (catIdx >= 0 && catIdx < getCategoryCount()) {\n setSelectedCategorySync(catIdx);\n setMenuIndexSync(0);\n }\n return;\n }\n if (str === \"\\x1b[A\") {\n setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));\n return;\n }\n if (str === \"\\x1b[B\") {\n setMenuIndexSync(Math.min(getCategoryCount() - 1, menuIndexRef.current + 1));\n return;\n }\n if (str === \"\\x7f\" || str === \"\\b\") {\n // Backspace on Level 1 → dismiss menu\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n return;\n }\n if (str.startsWith(\"\\x1b\")) return;\n // Printable → switch to filter mode\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n setMenuFilterSync(str);\n setMenuIndexSync(0);\n return;\n }\n\n return;\n }\n\n // ══════════════════════════════════════════════\n // NORMAL INPUT MODE\n // ══════════════════════════════════════════════\n\n // ── Bracketed paste detection ──\n if (str.includes(\"\\x1b[200~\")) {\n isPasting.current = true;\n let text = str.replace(/\\x1b\\[200~/g, \"\").replace(/\\x1b\\[201~/g, \"\");\n pasteBuffer.current += text;\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n }\n return;\n }\n\n if (isPasting.current) {\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n pasteBuffer.current += str.replace(/\\x1b\\[201~/g, \"\");\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n } else {\n pasteBuffer.current += str;\n }\n return;\n }\n\n // ── Control chars handled by ChatApp (keybinding-aware) ──\n const _kb = loadKeybindings();\n const exitChar = bindingToControlChar(_kb.exit);\n const expandChar = bindingToControlChar(_kb.toggle_expand);\n const thinkingChar = bindingToControlChar(_kb.toggle_thinking);\n if (str === exitChar || str === expandChar || str === thinkingChar) return;\n\n // ── Enter ──\n if (str === \"\\r\" || str === \"\\n\") {\n handleSubmit();\n return;\n }\n\n // ── Tab ── (no-op in input)\n if (str === \"\\t\") return;\n\n // ── Backspace ──\n if (str === \"\\x7f\" || str === \"\\b\") {\n const { value: val, cursor: cur } = inputRef.current;\n if (cur > 0) {\n update(val.slice(0, cur - 1) + val.slice(cur), cur - 1);\n } else if (val === \"\") {\n // Empty input + backspace → remove paste chip, then context, then files, then images\n if (pastedTextRef.current) {\n setPastedText(null);\n } else if (contextItemsRef.current.length > 0) {\n setContextItems(prev => prev.slice(0, -1));\n } else if (filesRef.current.length > 0) {\n setFiles(prev => prev.slice(0, -1));\n } else if (imagesRef.current.length > 0) {\n setImages(prev => prev.slice(0, -1));\n }\n }\n return;\n }\n\n // ── Clear line (default: Ctrl+U) ──\n if (str === bindingToControlChar(_kb.clear_line)) {\n update(\"\", 0);\n setImages([]);\n setFiles([]);\n setPastedText(null);\n return;\n }\n\n // ── Delete word (default: Ctrl+W) ──\n if (str === bindingToControlChar(_kb.delete_word)) {\n const { value: val, cursor: cur } = inputRef.current;\n const before = val.slice(0, cur);\n const match = before.match(/\\S+\\s*$/);\n if (match) {\n const len = match[0].length;\n update(val.slice(0, cur - len) + val.slice(cur), cur - len);\n }\n return;\n }\n\n // ── Home (default: Ctrl+A) ──\n if (str === bindingToControlChar(_kb.home)) {\n update(inputRef.current.value, 0);\n return;\n }\n\n // ── Escape sequences ──\n if (str.startsWith(\"\\x1b[\")) {\n const { value: val, cursor: cur } = inputRef.current;\n\n if (str === \"\\x1b[C\") { // Right\n update(val, Math.min(cur + 1, val.length));\n } else if (str === \"\\x1b[D\") { // Left\n update(val, Math.max(cur - 1, 0));\n } else if (str === \"\\x1b[H\" || str === \"\\x1b[1~\") { // Home\n update(val, 0);\n } else if (str === \"\\x1b[F\" || str === \"\\x1b[4~\") { // End\n update(val, val.length);\n } else if (str === \"\\x1b[3~\") { // Delete\n if (cur < val.length) {\n update(val.slice(0, cur) + val.slice(cur + 1), cur);\n }\n } else if (str === \"\\x1b[A\" || str === \"\\x1b[B\") { // Up/Down\n const lines = val.split(\"\\n\");\n if (lines.length > 1) {\n // Multi-line: navigate lines\n const { line: curLine, col: curCol } = getCursorLineCol(val, cur);\n const targetLine = str === \"\\x1b[A\"\n ? Math.max(0, curLine - 1)\n : Math.min(lines.length - 1, curLine + 1);\n if (targetLine !== curLine) {\n const targetCol = Math.min(curCol, lines[targetLine].length);\n let newCursor = 0;\n for (let i = 0; i < targetLine; i++) newCursor += lines[i].length + 1;\n newCursor += targetCol;\n update(val, newCursor);\n }\n } else if (str === \"\\x1b[A\") {\n // Up arrow — history recall\n if (historyRef.current.length === 0) { /* no history */ }\n else {\n if (historyIndexRef.current === -1) savedInputRef.current = val;\n const newIdx = Math.min(historyIndexRef.current + 1, historyRef.current.length - 1);\n historyIndexRef.current = newIdx;\n const hist = historyRef.current[historyRef.current.length - 1 - newIdx];\n update(hist, hist.length);\n }\n } else {\n // Down arrow — forward in history\n if (historyIndexRef.current <= -1) { /* already at current */ }\n else {\n const newIdx = historyIndexRef.current - 1;\n historyIndexRef.current = newIdx;\n if (newIdx < 0) {\n update(savedInputRef.current, savedInputRef.current.length);\n } else {\n const hist = historyRef.current[historyRef.current.length - 1 - newIdx];\n update(hist, hist.length);\n }\n }\n }\n }\n // Ignore unrecognized escape sequences\n return;\n }\n\n // ── Standalone escape — clear input if non-empty ──\n if (str === \"\\x1b\") {\n const { value } = inputRef.current;\n if (value || filesRef.current.length > 0) {\n update(\"\", 0);\n setImages([]);\n setFiles([]);\n setPastedText(null);\n }\n return;\n }\n\n // ── Multi-character non-escape = paste without brackets ──\n if (str.length > 1 && !str.startsWith(\"\\x1b\")) {\n const codePoints = [...str];\n if (codePoints.length === 1) {\n // Single code point (emoji etc.)\n const { value: val, cursor: cur } = inputRef.current;\n update(val.slice(0, cur) + str + val.slice(cur), cur + str.length);\n } else {\n processPaste(str);\n }\n return;\n }\n\n // ── Single printable character ──\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n const { value: val, cursor: cur } = inputRef.current;\n\n // Slash menu trigger\n if (str === \"/\" && val === \"\") {\n setMenuModeSync(true);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n return;\n }\n\n update(val.slice(0, cur) + str + val.slice(cur), cur + 1);\n }\n };\n\n stdin.on(\"data\", onData);\n return () => { stdin.off(\"data\", onData); };\n }, [stdin]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // ── Render ──\n\n // Disabled — dimmed but visible input (accept typing to queue)\n if (disabled) {\n const disabledLines = displayValue.split(\"\\n\");\n const { line: dCursorLine, col: dCursorCol } = displayValue\n ? getCursorLineCol(displayValue, displayCursor)\n : { line: 0, col: 0 };\n\n return (\n <Box flexDirection=\"column\">\n\n {/* Single-line disabled */}\n {disabledLines.length <= 1 ? (\n <Box>\n <Text color={colors.quaternary} bold>{\"❯ \"}</Text>\n {!displayValue ? (\n <Text color={colors.quaternary} wrap=\"truncate\">\n {queued ? \"queued — will send when done\" : \"type to queue a message...\"}\n </Text>\n ) : (\n <Box>\n <Text color={colors.dim}>\n {displayValue.slice(0, displayCursor)}\n <Text inverse>{displayCursor < displayValue.length ? displayValue[displayCursor] : \" \"}</Text>\n {displayCursor < displayValue.length ? displayValue.slice(displayCursor + 1) : \"\"}\n </Text>\n {queued && <Text color={colors.warning}> [queued]</Text>}\n </Box>\n )}\n </Box>\n ) : (\n /* Multi-line disabled */\n <Box flexDirection=\"column\">\n {disabledLines.map((line, i) => {\n const isCursorOnLine = i === dCursorLine;\n return (\n <Box key={i}>\n <Text color={colors.quaternary} bold>{i === 0 ? \"❯ \" : \"⎸ \"}</Text>\n {isCursorOnLine ? (\n <Text color={colors.dim}>\n {line.slice(0, dCursorCol)}\n <Text inverse>{dCursorCol < line.length ? line[dCursorCol] : \" \"}</Text>\n {dCursorCol < line.length ? line.slice(dCursorCol + 1) : \"\"}\n </Text>\n ) : (\n <Text color={colors.dim}>{line}</Text>\n )}\n </Box>\n );\n })}\n {queued && (\n <Box marginLeft={2}>\n <Text color={colors.warning}>[queued]</Text>\n </Box>\n )}\n </Box>\n )}\n </Box>\n );\n }\n\n // Slash command menu — two-level categorized via SlashMenu component\n if (menuMode) {\n // Prompt line varies by level\n let promptLine: React.ReactNode;\n if (menuFilter) {\n // Filter mode\n promptLine = (\n <Box>\n <Text color={colors.brand} bold>{\"/ \"}</Text>\n <Text>\n {menuFilter}\n <Text inverse>{\" \"}</Text>\n </Text>\n </Box>\n );\n } else if (selectedCategory !== null) {\n // Level 2: show category name\n const catLabel = getCategoryLabel(selectedCategory);\n const catColor = getCategoryColor(selectedCategory);\n promptLine = (\n <Box>\n <Text color={colors.brand} bold>{\"/ \"}</Text>\n <Text color={catColor} bold>{catLabel}</Text>\n <Text color={colors.tertiary}>{\" > \"}</Text>\n <Text inverse>{\" \"}</Text>\n </Box>\n );\n } else {\n // Level 1\n promptLine = (\n <Box>\n <Text color={colors.brand} bold>{\"/ \"}</Text>\n <Text>\n <Text inverse>{\" \"}</Text>\n <Text color={colors.dim}> type to filter</Text>\n </Text>\n </Box>\n );\n }\n\n // Hint line varies by level\n const hint = selectedCategory !== null && !menuFilter\n ? \" \\u2190 back esc dismiss\"\n : \" esc to dismiss\";\n\n return (\n <Box flexDirection=\"column\">\n\n {promptLine}\n <SlashMenu filter={menuFilter} selectedIndex={menuIndex} selectedCategory={selectedCategory} />\n <Text color={colors.quaternary}>{hint}</Text>\n </Box>\n );\n }\n\n // ── Normal input rendering ──\n\n const lines = displayValue.split(\"\\n\");\n const { line: cursorLine, col: cursorCol } = displayValue\n ? getCursorLineCol(displayValue, displayCursor)\n : { line: 0, col: 0 };\n\n // Truncate display for very long pastes\n const isTruncated = lines.length > MAX_DISPLAY_LINES;\n const visibleLines = isTruncated\n ? [...lines.slice(0, MAX_DISPLAY_LINES - 1), `… ${lines.length - MAX_DISPLAY_LINES + 1} more lines`]\n : lines;\n\n return (\n <Box flexDirection=\"column\">\n {/* Attachment chips — context + images + files + pasted text */}\n {(images.length > 0 || files.length > 0 || contextItems.length > 0 || pastedText) && (\n <Box>\n <Text> </Text>\n {contextItems.map((ctx, i) => (\n <Text key={`ctx-${i}`}>\n <Text color={CONTEXT_COLORS[ctx.type] || \"cyan\"}>[</Text>\n <Text color={colors.secondary}>{ctx.type}: {ctx.title}</Text>\n <Text color={CONTEXT_COLORS[ctx.type] || \"cyan\"}>]</Text>\n <Text> </Text>\n </Text>\n ))}\n {images.map((img, i) => (\n <Text key={`img-${i}`}>\n <Text color={colors.indigo}>[</Text>\n <Text color={colors.secondary}>{img.name}</Text>\n <Text color={colors.indigo}>]</Text>\n <Text> </Text>\n </Text>\n ))}\n {files.map((f, i) => (\n <Text key={`file-${i}`}>\n <Text color={colors.purple}>[</Text>\n <Text color={colors.secondary}>{f.name}</Text>\n <Text color={colors.purple}>]</Text>\n <Text> </Text>\n </Text>\n ))}\n {pastedText && (\n <Text>\n <Text color={colors.indigo}>[</Text>\n <Text color={colors.secondary}>pasted {pastedText.split(\"\\n\").length} lines</Text>\n <Text color={colors.indigo}>]</Text>\n </Text>\n )}\n </Box>\n )}\n\n {/* Single-line input */}\n {lines.length <= 1 ? (\n <Box>\n <Text color={colors.brand} bold>{\"❯ \"}</Text>\n {!displayValue ? (\n <Text wrap=\"truncate\">\n <Text inverse> </Text>\n <Text color={colors.dim}>{`Message ${agentName || \"whale\"}, or type / for commands`}</Text>\n </Text>\n ) : (\n <Text>\n {displayValue.slice(0, displayCursor)}\n <Text inverse>{displayCursor < displayValue.length ? displayValue[displayCursor] : \" \"}</Text>\n {displayCursor < displayValue.length ? displayValue.slice(displayCursor + 1) : \"\"}\n </Text>\n )}\n </Box>\n ) : (\n /* Multi-line input */\n <Box flexDirection=\"column\">\n {visibleLines.map((line, i) => {\n const isRealLine = !isTruncated || i < MAX_DISPLAY_LINES - 1;\n const isCursorOnLine = isRealLine && i === cursorLine;\n\n return (\n <Box key={i}>\n <Text color={colors.brand} bold>{i === 0 ? \"❯ \" : \"⎸ \"}</Text>\n {isCursorOnLine ? (\n <Text>\n {line.slice(0, cursorCol)}\n <Text inverse>{cursorCol < line.length ? line[cursorCol] : \" \"}</Text>\n {cursorCol < line.length ? line.slice(cursorCol + 1) : \"\"}\n </Text>\n ) : (\n <Text color={isRealLine ? undefined : colors.tertiary}>{line}</Text>\n )}\n </Box>\n );\n })}\n </Box>\n )}\n </Box>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ChatInput.js","names":["useState","useEffect","useRef","Box","Text","useStdin","readFileSync","existsSync","statSync","basename","extname","colors","loadKeybindings","bindingToControlChar","SlashMenu","SLASH_COMMANDS","_SLASH_COMMANDS","getFilteredSelectableCount","getCommandAtIndex","getCategoryCount","getCategoryCommandCount","getCategoryCommand","getCategoryLabel","getCategoryColor","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","IMAGE_EXTENSIONS","MAX_IMAGE_SIZE","MAX_DISPLAY_LINES","CONTEXT_TYPES","CONTEXT_COLORS","product","brand","customer","purple","order","success","inventory","warning","media","pink","document","info","location","parseWhaleContext","text","trimmed","trim","startsWith","endsWith","obj","JSON","parse","id","type","includes","title","sourceApp","contextToBlock","ctx","lines","push","subtitle","data","key","value","Object","entries","sort","a","b","localeCompare","join","isImagePath","p","normalizePath","ext","toLowerCase","raw","decodeURIComponent","replace","isFilePath","isFile","loadImage","filePath","mediaType","stat","size","path","name","base64","toString","getCursorLineCol","cursor","pos","split","i","length","line","col","ChatInput","onSubmit","onCommand","disabled","overlayActive","agentName","onInterrupt","stdin","inputRef","displayValue","setDisplayValue","displayCursor","setDisplayCursor","onSubmitRef","onCommandRef","onInterruptRef","disabledRef","current","queued","setQueued","queuedRef","submittingRef","prevDisabledRef","handleSubmit","menuMode","setMenuMode","menuModeRef","menuFilter","setMenuFilter","menuFilterRef","menuIndex","setMenuIndex","menuIndexRef","images","setImages","imagesRef","files","setFiles","filesRef","contextItems","setContextItems","contextItemsRef","selectedCategory","setSelectedCategory","selectedCategoryRef","setSelectedCategorySync","val","historyRef","historyIndexRef","savedInputRef","MAX_HISTORY","isPasting","pasteBuffer","pastedText","setPastedText","pastedTextRef","setMenuModeSync","setMenuFilterSync","setMenuIndexSync","process","stdout","write","update","processPaste","clean","some","c","prev","map","l","filter","Boolean","every","newImages","img","newFiles","pasteLines","cur","newValue","slice","typed","paste","imgs","fls","ctxs","contextPrefix","filePrefix","f","body","fullText","shift","undefined","setTimeout","onData","str","_kb","exitChar","exit","expandChar","toggle_expand","thinkingChar","toggle_thinking","Math","min","max","curLine","curCol","targetLine","targetCol","newCursor","charCodeAt","codePoints","hasFilter","inCategory","cmd","count","catIdx","clear_line","delete_word","before","match","len","home","newIdx","hist","on","off","disabledLines","dCursorLine","dCursorCol","flexDirection","children","color","quaternary","wrap","dim","inverse","isCursorOnLine","marginLeft","promptLine","bold","catLabel","catColor","tertiary","hint","selectedIndex","cursorLine","cursorCol","isTruncated","visibleLines","secondary","indigo","isRealLine"],"sources":["../../../src/cli/chat/ChatInput.tsx"],"sourcesContent":["/**\n * ChatInput — Custom input with bracketed paste + image attachments\n *\n * Replaces ink-text-input with raw stdin handling to fix:\n * - Paste losing content on enter (newlines in paste triggered submit)\n * - Multi-line paste mangled/unformatted\n * - No drag-drop image support\n *\n * Features:\n * - Bracketed paste mode — clean multi-line paste\n * - Drag-drop images — detects image file paths, attaches as chips\n * - Image chips above input like Claude Code: [image1.png] [image2.jpg]\n * - Backspace on empty input removes last image\n * - Slash command menu preserved\n * - Multi-line input with ⎸ continuation markers\n */\n\nimport { useState, useEffect, useRef } from \"react\";\nimport { Box, Text, useStdin } from \"ink\";\nimport { readFileSync, existsSync, statSync } from \"fs\";\nimport { basename, extname } from \"path\";\nimport { colors } from \"../shared/Theme.js\";\nimport { loadKeybindings, bindingToControlChar } from \"../services/keybinding-manager.js\";\nimport { SlashMenu, SLASH_COMMANDS as _SLASH_COMMANDS, getFilteredSelectableCount, getCommandAtIndex, getCategoryCount, getCategoryCommandCount, getCategoryCommand, getCategoryLabel, getCategoryColor } from \"./SlashMenu.js\";\n\n// ── Types ──\n\nexport interface ImageAttachment {\n path: string;\n name: string;\n base64: string;\n mediaType: string;\n}\n\nexport interface FileAttachment {\n path: string;\n name: string;\n}\n\nexport interface ContextAttachment {\n id: string;\n type: string;\n title: string;\n subtitle?: string;\n icon: string;\n sourceApp: string;\n data: Record<string, unknown>;\n timestamp: string;\n}\n\n// Re-export for consumers (e.g. useSlashCommands)\nexport type { SlashCommand } from \"./SlashMenu.js\";\nexport const SLASH_COMMANDS = _SLASH_COMMANDS;\n\n// ── Constants ──\n\nconst IMAGE_EXTENSIONS: Record<string, string> = {\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".gif\": \"image/gif\",\n \".webp\": \"image/webp\",\n};\n\nconst MAX_IMAGE_SIZE = 20 * 1024 * 1024; // 20MB\nconst MAX_DISPLAY_LINES = 8;\n\n// ── Helpers ──\n\nconst CONTEXT_TYPES = [\"product\", \"customer\", \"order\", \"inventory\", \"media\", \"document\", \"location\"];\nconst CONTEXT_COLORS: Record<string, string> = {\n product: colors.brand, customer: colors.purple, order: colors.success,\n inventory: colors.warning, media: colors.pink, document: colors.info, location: \"yellow\",\n};\n\n/** Detect if pasted text is a valid WhaleContextItem JSON object */\nfunction parseWhaleContext(text: string): ContextAttachment | null {\n const trimmed = text.trim();\n if (!trimmed.startsWith(\"{\") || !trimmed.endsWith(\"}\")) return null;\n try {\n const obj = JSON.parse(trimmed);\n if (obj && typeof obj.id === \"string\" && typeof obj.type === \"string\" &&\n CONTEXT_TYPES.includes(obj.type) && typeof obj.title === \"string\" &&\n typeof obj.sourceApp === \"string\") {\n return obj as ContextAttachment;\n }\n } catch { /* not JSON */ }\n return null;\n}\n\n/** Format a context attachment into an XML context block for AI prompt */\nfunction contextToBlock(ctx: ContextAttachment): string {\n const lines: string[] = [];\n lines.push(`<context type=\"${ctx.type}\" source=\"${ctx.sourceApp}\">`);\n lines.push(` ${ctx.title}`);\n if (ctx.subtitle) lines.push(` ${ctx.subtitle}`);\n if (ctx.data) {\n for (const [key, value] of Object.entries(ctx.data).sort(([a], [b]) => a.localeCompare(b))) {\n lines.push(` ${key}: ${value}`);\n }\n }\n lines.push(\"</context>\");\n return lines.join(\"\\n\");\n}\n\nfunction isImagePath(text: string): boolean {\n const p = normalizePath(text);\n if (!p || p.includes(\"\\n\")) return false;\n const ext = extname(p).toLowerCase();\n return ext in IMAGE_EXTENSIONS && existsSync(p);\n}\n\n/** Normalize a terminal-pasted path (handles escapes, file:// URLs, quotes) */\nfunction normalizePath(raw: string): string {\n let p = raw.trim();\n // Strip file:// URL prefix + percent-decode\n if (p.startsWith(\"file://\")) {\n p = decodeURIComponent(p.replace(/^file:\\/\\//, \"\"));\n }\n // Strip surrounding quotes\n p = p.replace(/^['\"]|['\"]$/g, \"\");\n // Unescape backslash-escaped characters (spaces, parens, etc.)\n p = p.replace(/\\\\(.)/g, \"$1\");\n return p;\n}\n\nfunction isFilePath(text: string): boolean {\n const p = normalizePath(text);\n if (!p || p.includes(\"\\n\")) return false;\n // Skip image paths — handled separately\n const ext = extname(p).toLowerCase();\n if (ext in IMAGE_EXTENSIONS) return false;\n try { return existsSync(p) && statSync(p).isFile(); } catch { return false; }\n}\n\nfunction loadImage(filePath: string): ImageAttachment | null {\n try {\n const p = normalizePath(filePath);\n const ext = extname(p).toLowerCase();\n const mediaType = IMAGE_EXTENSIONS[ext];\n if (!mediaType) return null;\n const stat = statSync(p);\n if (stat.size > MAX_IMAGE_SIZE) return null;\n const data = readFileSync(p);\n return { path: p, name: basename(p), base64: data.toString(\"base64\"), mediaType };\n } catch {\n return null;\n }\n}\n\nfunction getCursorLineCol(text: string, cursor: number): { line: number; col: number } {\n let pos = 0;\n const lines = text.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n if (cursor <= pos + lines[i].length) {\n return { line: i, col: cursor - pos };\n }\n pos += lines[i].length + 1;\n }\n return { line: lines.length - 1, col: lines[lines.length - 1].length };\n}\n\n// ── Props ──\n\ninterface ChatInputProps {\n onSubmit: (message: string, images?: ImageAttachment[]) => void;\n onCommand: (command: string) => void;\n disabled: boolean;\n overlayActive?: boolean;\n agentName?: string;\n onInterrupt?: () => void;\n}\n\n// ── Component ──\n\nexport function ChatInput({ onSubmit, onCommand, disabled, overlayActive, agentName, onInterrupt }: ChatInputProps) {\n const { stdin } = useStdin();\n\n // Input state — ref for synchronous handler access, state for render\n const inputRef = useRef({ value: \"\", cursor: 0 });\n const [displayValue, setDisplayValue] = useState(\"\");\n const [displayCursor, setDisplayCursor] = useState(0);\n\n // Stable refs for callbacks — prevents stale closures in stdin handler\n const onSubmitRef = useRef(onSubmit);\n const onCommandRef = useRef(onCommand);\n const onInterruptRef = useRef(onInterrupt);\n const disabledRef = useRef(disabled);\n useEffect(() => { onSubmitRef.current = onSubmit; }, [onSubmit]);\n useEffect(() => { onCommandRef.current = onCommand; }, [onCommand]);\n useEffect(() => { onInterruptRef.current = onInterrupt; }, [onInterrupt]);\n useEffect(() => { disabledRef.current = disabled; }, [disabled]);\n\n // Queued message — typed during streaming, auto-submitted when streaming ends\n const [queued, setQueued] = useState(false);\n const queuedRef = useRef(false);\n\n // Guard against double-submission (BUG-1 fix)\n const submittingRef = useRef(false);\n\n // Auto-submit queued input when streaming ends (disabled goes from true → false)\n const prevDisabledRef = useRef(disabled);\n useEffect(() => {\n if (prevDisabledRef.current && !disabled && queuedRef.current) {\n // Streaming just ended and we have queued input — submit it\n queuedRef.current = false;\n setQueued(false);\n handleSubmit();\n }\n prevDisabledRef.current = disabled;\n }, [disabled]);\n\n // Mode & attachments\n const [menuMode, setMenuMode] = useState(false);\n const menuModeRef = useRef(false);\n const [menuFilter, setMenuFilter] = useState(\"\");\n const menuFilterRef = useRef(\"\");\n const [menuIndex, setMenuIndex] = useState(0);\n const menuIndexRef = useRef(0);\n const [images, setImages] = useState<ImageAttachment[]>([]);\n const imagesRef = useRef<ImageAttachment[]>([]);\n const [files, setFiles] = useState<FileAttachment[]>([]);\n const filesRef = useRef<FileAttachment[]>([]);\n const [contextItems, setContextItems] = useState<ContextAttachment[]>([]);\n const contextItemsRef = useRef<ContextAttachment[]>([]);\n\n // Two-level menu: null = Level 1 (categories), number = Level 2 (drilled into that category)\n const [selectedCategory, setSelectedCategory] = useState<number | null>(null);\n const selectedCategoryRef = useRef<number | null>(null);\n function setSelectedCategorySync(val: number | null) {\n selectedCategoryRef.current = val;\n setSelectedCategory(val);\n }\n\n // Input history (up/down arrow recall)\n const historyRef = useRef<string[]>([]);\n const historyIndexRef = useRef(-1);\n const savedInputRef = useRef(\"\");\n const MAX_HISTORY = 50;\n\n // Paste tracking\n const isPasting = useRef(false);\n const pasteBuffer = useRef(\"\");\n\n // Multi-line paste — stored separately, displayed as chip\n const [pastedText, setPastedText] = useState<string | null>(null);\n const pastedTextRef = useRef<string | null>(null);\n\n // Sync refs\n useEffect(() => { imagesRef.current = images; }, [images]);\n useEffect(() => { filesRef.current = files; }, [files]);\n useEffect(() => { contextItemsRef.current = contextItems; }, [contextItems]);\n useEffect(() => { pastedTextRef.current = pastedText; }, [pastedText]);\n // ── Sync helpers: update ref THEN state (fixes race conditions) ──\n function setMenuModeSync(val: boolean) {\n menuModeRef.current = val;\n setMenuMode(val);\n }\n function setMenuFilterSync(val: string) {\n menuFilterRef.current = val;\n setMenuFilter(val);\n }\n function setMenuIndexSync(val: number) {\n menuIndexRef.current = val;\n setMenuIndex(val);\n }\n\n // ── Enable bracketed paste mode ──\n useEffect(() => {\n process.stdout.write(\"\\x1b[?2004h\");\n return () => { process.stdout.write(\"\\x1b[?2004l\"); };\n }, []);\n\n // ── Update helper ──\n function update(value: string, cursor: number) {\n inputRef.current = { value, cursor };\n setDisplayValue(value);\n setDisplayCursor(cursor);\n }\n\n // ── Process paste content ──\n function processPaste(text: string) {\n const clean = text.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n\n // Check for WhaleContext JSON → attach as context chip\n const ctx = parseWhaleContext(clean);\n if (ctx) {\n // Avoid duplicates\n if (!contextItemsRef.current.some(c => c.id === ctx.id)) {\n setContextItems(prev => [...prev, ctx]);\n }\n return;\n }\n\n // Check if ALL non-empty lines are image paths → attach them\n const lines = clean.split(\"\\n\").map(l => l.trim()).filter(Boolean);\n if (lines.length > 0 && lines.every(l => isImagePath(l))) {\n const newImages: ImageAttachment[] = [];\n for (const line of lines) {\n const img = loadImage(line);\n if (img) newImages.push(img);\n }\n if (newImages.length > 0) {\n setImages(prev => [...prev, ...newImages]);\n return;\n }\n }\n\n // Check for non-image file paths → attach as file chips\n if (lines.length > 0 && lines.length <= 4 && lines.every(l => isFilePath(l))) {\n const newFiles: FileAttachment[] = lines.map(l => {\n const p = normalizePath(l);\n return { path: p, name: basename(p) };\n });\n setFiles(prev => [...prev, ...newFiles]);\n return;\n }\n\n // Slash command pasted directly (must look like /word, not an absolute path)\n if (clean.startsWith(\"/\") && !clean.includes(\"\\n\") && !clean.includes(\"/\", 1) && inputRef.current.value === \"\") {\n onCommandRef.current(clean.trim());\n update(\"\", 0);\n return;\n }\n\n // Multi-line paste → store as chip, don't spam input\n const pasteLines = clean.split(\"\\n\");\n if (pasteLines.length >= 4) {\n setPastedText(clean);\n return;\n }\n\n // Short paste — insert inline as before\n const { value: val, cursor: cur } = inputRef.current;\n const newValue = val.slice(0, cur) + clean + val.slice(cur);\n update(newValue, cur + clean.length);\n }\n\n // ── Handle submit ──\n function handleSubmit() {\n // Prevent double-submission from queued auto-submit racing with manual submit\n if (submittingRef.current) {\n return;\n }\n submittingRef.current = true;\n\n const typed = inputRef.current.value.trim();\n const paste = pastedTextRef.current;\n const imgs = imagesRef.current;\n const fls = filesRef.current;\n const ctxs = contextItemsRef.current;\n\n if (!typed && !paste && imgs.length === 0 && fls.length === 0 && ctxs.length === 0) {\n submittingRef.current = false;\n return;\n }\n\n // Slash command — must start with / and NOT contain a second /\n // (prevents file paths like /Users/whale/file.txt from being misidentified)\n if (typed.startsWith(\"/\") && !typed.includes(\"/\", 1) && !paste && imgs.length === 0 && fls.length === 0 && ctxs.length === 0) {\n update(\"\", 0);\n submittingRef.current = false;\n onCommandRef.current(typed);\n return;\n }\n\n // Build context blocks prefix\n const contextPrefix = ctxs.length > 0\n ? ctxs.map(c => contextToBlock(c)).join(\"\\n\\n\") + \"\\n\\n\"\n : \"\";\n\n // Build file context prefix\n const filePrefix = fls.length > 0\n ? fls.map(f => f.path).join(\"\\n\") + \"\\n\\n\"\n : \"\";\n\n // Combine context + file prefix + typed text + pasted content\n const body = paste\n ? (typed ? `${typed}\\n\\n${paste}` : paste)\n : (typed || (ctxs.length > 0 ? \"Tell me about this\" : \"\"));\n const fullText = contextPrefix + filePrefix + body;\n\n // Record in history\n if (fullText.trim()) {\n historyRef.current.push(fullText.trim());\n if (historyRef.current.length > MAX_HISTORY) historyRef.current.shift();\n }\n historyIndexRef.current = -1;\n\n onSubmitRef.current(fullText, imgs.length > 0 ? imgs : undefined);\n update(\"\", 0);\n setImages([]);\n setFiles([]);\n setContextItems([]);\n setPastedText(null);\n\n // Release guard after state is cleared (next tick ensures no re-entry)\n setTimeout(() => { submittingRef.current = false; }, 0);\n }\n\n // ── Raw stdin handler (handles both normal input and menu mode) ──\n useEffect(() => {\n if (!stdin) return;\n\n // When an overlay with its own useInput is active (PlanApproval, etc.),\n // detach our data listener entirely so Ink's readable handler can deliver\n // keystrokes to the overlay's useInput hooks.\n if (overlayActive) return;\n\n const onData = (data: Buffer) => {\n const str = data.toString(\"utf-8\");\n\n // ══════════════════════════════════════════════\n // DISABLED MODE — accept typing, block commands, handle Esc\n // ══════════════════════════════════════════════\n if (disabledRef.current) {\n // Escape → interrupt streaming\n if (str === \"\\x1b\") {\n onInterruptRef.current?.();\n return;\n }\n\n // Control chars handled by ChatApp (exit, expand, thinking toggle)\n const _kb = loadKeybindings();\n const exitChar = bindingToControlChar(_kb.exit);\n const expandChar = bindingToControlChar(_kb.toggle_expand);\n const thinkingChar = bindingToControlChar(_kb.toggle_thinking);\n if (str === exitChar || str === expandChar || str === thinkingChar) return;\n\n // Arrow keys — cursor movement within buffer while disabled\n if (str.startsWith(\"\\x1b[\")) {\n const { value: val, cursor: cur } = inputRef.current;\n if (str === \"\\x1b[C\") { // Right\n update(val, Math.min(cur + 1, val.length));\n } else if (str === \"\\x1b[D\") { // Left\n update(val, Math.max(cur - 1, 0));\n } else if (str === \"\\x1b[A\" || str === \"\\x1b[B\") { // Up/Down\n const lines = val.split(\"\\n\");\n if (lines.length > 1) {\n const { line: curLine, col: curCol } = getCursorLineCol(val, cur);\n const targetLine = str === \"\\x1b[A\"\n ? Math.max(0, curLine - 1)\n : Math.min(lines.length - 1, curLine + 1);\n if (targetLine !== curLine) {\n const targetCol = Math.min(curCol, lines[targetLine].length);\n let newCursor = 0;\n for (let i = 0; i < targetLine; i++) newCursor += lines[i].length + 1;\n newCursor += targetCol;\n update(val, newCursor);\n }\n }\n } else if (str === \"\\x1b[H\" || str === \"\\x1b[1~\") { // Home\n update(val, 0);\n } else if (str === \"\\x1b[F\" || str === \"\\x1b[4~\") { // End\n update(val, val.length);\n }\n return;\n }\n\n // Bracketed paste while disabled — accept into buffer\n if (str.includes(\"\\x1b[200~\")) {\n isPasting.current = true;\n let text = str.replace(/\\x1b\\[200~/g, \"\").replace(/\\x1b\\[201~/g, \"\");\n pasteBuffer.current += text;\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n }\n return;\n }\n if (isPasting.current) {\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n pasteBuffer.current += str.replace(/\\x1b\\[201~/g, \"\");\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n } else {\n pasteBuffer.current += str;\n }\n return;\n }\n\n // Enter → queue the current input for auto-submit\n if (str === \"\\r\" || str === \"\\n\") {\n const typed = inputRef.current.value.trim();\n if (typed) {\n queuedRef.current = true;\n setQueued(true);\n }\n return;\n }\n\n // Backspace\n if (str === \"\\x7f\" || str === \"\\b\") {\n const { value: val, cursor: cur } = inputRef.current;\n if (cur > 0) {\n update(val.slice(0, cur - 1) + val.slice(cur), cur - 1);\n // Un-queue if editing\n if (queuedRef.current) { queuedRef.current = false; setQueued(false); }\n }\n return;\n }\n\n // Slash — block menu mode while streaming\n if (str === \"/\" && inputRef.current.value === \"\") return;\n\n // Printable char — type into buffer\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n const { value: val, cursor: cur } = inputRef.current;\n update(val.slice(0, cur) + str + val.slice(cur), cur + 1);\n // Un-queue if editing after queuing\n if (queuedRef.current) { queuedRef.current = false; setQueued(false); }\n return;\n }\n\n // Multi-character non-escape (unbracketted paste)\n if (str.length > 1 && !str.startsWith(\"\\x1b\")) {\n const codePoints = [...str];\n if (codePoints.length === 1) {\n const { value: val, cursor: cur } = inputRef.current;\n update(val.slice(0, cur) + str + val.slice(cur), cur + str.length);\n } else {\n processPaste(str);\n }\n if (queuedRef.current) { queuedRef.current = false; setQueued(false); }\n return;\n }\n\n return;\n }\n\n // ══════════════════════════════════════════════\n // MENU MODE — two-level navigation\n // ══════════════════════════════════════════════\n if (menuModeRef.current) {\n const hasFilter = menuFilterRef.current.length > 0;\n const inCategory = selectedCategoryRef.current !== null;\n\n // Escape or Ctrl+C → dismiss menu entirely\n if (str === \"\\x1b\" || str === \"\\x03\") {\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n return;\n }\n\n // Tab → no-op\n if (str === \"\\t\") return;\n\n // ── Filter mode (has filter text) ──\n if (hasFilter) {\n if (str === \"\\r\" || str === \"\\n\") {\n const cmd = getCommandAtIndex(menuFilterRef.current, menuIndexRef.current);\n if (cmd) {\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n onCommandRef.current(cmd.name);\n }\n return;\n }\n if (str === \"\\x1b[A\") {\n setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));\n return;\n }\n if (str === \"\\x1b[B\") {\n const count = getFilteredSelectableCount(menuFilterRef.current);\n setMenuIndexSync(Math.min(count - 1, menuIndexRef.current + 1));\n return;\n }\n if (str === \"\\x7f\" || str === \"\\b\") {\n const f = menuFilterRef.current;\n if (f.length > 1) {\n setMenuFilterSync(f.slice(0, -1));\n setMenuIndexSync(0);\n } else {\n // Clearing filter → back to Level 1\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n }\n return;\n }\n if (str.startsWith(\"\\x1b\")) return;\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n setMenuFilterSync(menuFilterRef.current + str);\n setMenuIndexSync(0);\n return;\n }\n return;\n }\n\n // ── Level 2: inside a category ──\n if (inCategory) {\n const catIdx = selectedCategoryRef.current!;\n if (str === \"\\r\" || str === \"\\n\") {\n const cmd = getCategoryCommand(catIdx, menuIndexRef.current);\n if (cmd) {\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n onCommandRef.current(cmd.name);\n }\n return;\n }\n if (str === \"\\x1b[A\") {\n setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));\n return;\n }\n if (str === \"\\x1b[B\") {\n const count = getCategoryCommandCount(catIdx);\n setMenuIndexSync(Math.min(count - 1, menuIndexRef.current + 1));\n return;\n }\n // Left arrow or Backspace → back to Level 1\n if (str === \"\\x1b[D\" || str === \"\\x7f\" || str === \"\\b\") {\n setMenuIndexSync(catIdx); // restore highlight to the category we were in\n setSelectedCategorySync(null);\n return;\n }\n if (str.startsWith(\"\\x1b\")) return;\n // Printable → switch to filter mode\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n setSelectedCategorySync(null);\n setMenuFilterSync(str);\n setMenuIndexSync(0);\n return;\n }\n return;\n }\n\n // ── Level 1: category list ──\n if (str === \"\\r\" || str === \"\\n\" || str === \"\\x1b[C\") {\n // Enter or Right → drill into selected category\n const catIdx = menuIndexRef.current;\n if (catIdx >= 0 && catIdx < getCategoryCount()) {\n setSelectedCategorySync(catIdx);\n setMenuIndexSync(0);\n }\n return;\n }\n if (str === \"\\x1b[A\") {\n setMenuIndexSync(Math.max(0, menuIndexRef.current - 1));\n return;\n }\n if (str === \"\\x1b[B\") {\n setMenuIndexSync(Math.min(getCategoryCount() - 1, menuIndexRef.current + 1));\n return;\n }\n if (str === \"\\x7f\" || str === \"\\b\") {\n // Backspace on Level 1 → dismiss menu\n setMenuModeSync(false);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n setSelectedCategorySync(null);\n update(\"\", 0);\n return;\n }\n if (str.startsWith(\"\\x1b\")) return;\n // Printable → switch to filter mode\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n setMenuFilterSync(str);\n setMenuIndexSync(0);\n return;\n }\n\n return;\n }\n\n // ══════════════════════════════════════════════\n // NORMAL INPUT MODE\n // ══════════════════════════════════════════════\n\n // ── Bracketed paste detection ──\n if (str.includes(\"\\x1b[200~\")) {\n isPasting.current = true;\n let text = str.replace(/\\x1b\\[200~/g, \"\").replace(/\\x1b\\[201~/g, \"\");\n pasteBuffer.current += text;\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n }\n return;\n }\n\n if (isPasting.current) {\n if (str.includes(\"\\x1b[201~\")) {\n isPasting.current = false;\n pasteBuffer.current += str.replace(/\\x1b\\[201~/g, \"\");\n const paste = pasteBuffer.current;\n pasteBuffer.current = \"\";\n processPaste(paste);\n } else {\n pasteBuffer.current += str;\n }\n return;\n }\n\n // ── Control chars handled by ChatApp (keybinding-aware) ──\n const _kb = loadKeybindings();\n const exitChar = bindingToControlChar(_kb.exit);\n const expandChar = bindingToControlChar(_kb.toggle_expand);\n const thinkingChar = bindingToControlChar(_kb.toggle_thinking);\n if (str === exitChar || str === expandChar || str === thinkingChar) return;\n\n // ── Enter ──\n if (str === \"\\r\" || str === \"\\n\") {\n handleSubmit();\n return;\n }\n\n // ── Tab ── (no-op in input)\n if (str === \"\\t\") return;\n\n // ── Backspace ──\n if (str === \"\\x7f\" || str === \"\\b\") {\n const { value: val, cursor: cur } = inputRef.current;\n if (cur > 0) {\n update(val.slice(0, cur - 1) + val.slice(cur), cur - 1);\n } else if (val === \"\") {\n // Empty input + backspace → remove paste chip, then context, then files, then images\n if (pastedTextRef.current) {\n setPastedText(null);\n } else if (contextItemsRef.current.length > 0) {\n setContextItems(prev => prev.slice(0, -1));\n } else if (filesRef.current.length > 0) {\n setFiles(prev => prev.slice(0, -1));\n } else if (imagesRef.current.length > 0) {\n setImages(prev => prev.slice(0, -1));\n }\n }\n return;\n }\n\n // ── Clear line (default: Ctrl+U) ──\n if (str === bindingToControlChar(_kb.clear_line)) {\n update(\"\", 0);\n setImages([]);\n setFiles([]);\n setPastedText(null);\n return;\n }\n\n // ── Delete word (default: Ctrl+W) ──\n if (str === bindingToControlChar(_kb.delete_word)) {\n const { value: val, cursor: cur } = inputRef.current;\n const before = val.slice(0, cur);\n const match = before.match(/\\S+\\s*$/);\n if (match) {\n const len = match[0].length;\n update(val.slice(0, cur - len) + val.slice(cur), cur - len);\n }\n return;\n }\n\n // ── Home (default: Ctrl+A) ──\n if (str === bindingToControlChar(_kb.home)) {\n update(inputRef.current.value, 0);\n return;\n }\n\n // ── Escape sequences ──\n if (str.startsWith(\"\\x1b[\")) {\n const { value: val, cursor: cur } = inputRef.current;\n\n if (str === \"\\x1b[C\") { // Right\n update(val, Math.min(cur + 1, val.length));\n } else if (str === \"\\x1b[D\") { // Left\n update(val, Math.max(cur - 1, 0));\n } else if (str === \"\\x1b[H\" || str === \"\\x1b[1~\") { // Home\n update(val, 0);\n } else if (str === \"\\x1b[F\" || str === \"\\x1b[4~\") { // End\n update(val, val.length);\n } else if (str === \"\\x1b[3~\") { // Delete\n if (cur < val.length) {\n update(val.slice(0, cur) + val.slice(cur + 1), cur);\n }\n } else if (str === \"\\x1b[A\" || str === \"\\x1b[B\") { // Up/Down\n const lines = val.split(\"\\n\");\n if (lines.length > 1) {\n // Multi-line: navigate lines\n const { line: curLine, col: curCol } = getCursorLineCol(val, cur);\n const targetLine = str === \"\\x1b[A\"\n ? Math.max(0, curLine - 1)\n : Math.min(lines.length - 1, curLine + 1);\n if (targetLine !== curLine) {\n const targetCol = Math.min(curCol, lines[targetLine].length);\n let newCursor = 0;\n for (let i = 0; i < targetLine; i++) newCursor += lines[i].length + 1;\n newCursor += targetCol;\n update(val, newCursor);\n }\n } else if (str === \"\\x1b[A\") {\n // Up arrow — history recall\n if (historyRef.current.length === 0) { /* no history */ }\n else {\n if (historyIndexRef.current === -1) savedInputRef.current = val;\n const newIdx = Math.min(historyIndexRef.current + 1, historyRef.current.length - 1);\n historyIndexRef.current = newIdx;\n const hist = historyRef.current[historyRef.current.length - 1 - newIdx];\n update(hist, hist.length);\n }\n } else {\n // Down arrow — forward in history\n if (historyIndexRef.current <= -1) { /* already at current */ }\n else {\n const newIdx = historyIndexRef.current - 1;\n historyIndexRef.current = newIdx;\n if (newIdx < 0) {\n update(savedInputRef.current, savedInputRef.current.length);\n } else {\n const hist = historyRef.current[historyRef.current.length - 1 - newIdx];\n update(hist, hist.length);\n }\n }\n }\n }\n // Ignore unrecognized escape sequences\n return;\n }\n\n // ── Standalone escape — clear input if non-empty ──\n if (str === \"\\x1b\") {\n const { value } = inputRef.current;\n if (value || filesRef.current.length > 0) {\n update(\"\", 0);\n setImages([]);\n setFiles([]);\n setPastedText(null);\n }\n return;\n }\n\n // ── Multi-character non-escape = paste without brackets ──\n if (str.length > 1 && !str.startsWith(\"\\x1b\")) {\n const codePoints = [...str];\n if (codePoints.length === 1) {\n // Single code point (emoji etc.)\n const { value: val, cursor: cur } = inputRef.current;\n update(val.slice(0, cur) + str + val.slice(cur), cur + str.length);\n } else {\n processPaste(str);\n }\n return;\n }\n\n // ── Single printable character ──\n if (str.length === 1 && str.charCodeAt(0) >= 0x20) {\n const { value: val, cursor: cur } = inputRef.current;\n\n // Slash menu trigger\n if (str === \"/\" && val === \"\") {\n setMenuModeSync(true);\n setMenuFilterSync(\"\");\n setMenuIndexSync(0);\n return;\n }\n\n update(val.slice(0, cur) + str + val.slice(cur), cur + 1);\n }\n };\n\n stdin.on(\"data\", onData);\n return () => { stdin.off(\"data\", onData); };\n }, [stdin, overlayActive]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // ── Render ──\n\n // Disabled — dimmed but visible input (accept typing to queue)\n if (disabled) {\n // No input and not queued — render empty (eliminates dot line but keeps component mounted)\n if (!displayValue.trim() && !queued) return <></>;\n\n const disabledLines = displayValue.split(\"\\n\");\n const { line: dCursorLine, col: dCursorCol } = displayValue\n ? getCursorLineCol(displayValue, displayCursor)\n : { line: 0, col: 0 };\n\n return (\n <Box flexDirection=\"column\">\n\n {/* Single-line disabled */}\n {disabledLines.length <= 1 ? (\n <Box>\n <Text color={colors.quaternary}>{\"· \"}</Text>\n {!displayValue ? (\n <Text color={colors.quaternary} wrap=\"truncate\">\n {queued ? \"queued — will send when done\" : \" \"}\n </Text>\n ) : (\n <Box>\n <Text color={colors.dim}>\n {displayValue.slice(0, displayCursor)}\n <Text inverse>{displayCursor < displayValue.length ? displayValue[displayCursor] : \" \"}</Text>\n {displayCursor < displayValue.length ? displayValue.slice(displayCursor + 1) : \"\"}\n </Text>\n {queued && <Text color={colors.warning}> [queued]</Text>}\n </Box>\n )}\n </Box>\n ) : (\n /* Multi-line disabled */\n <Box flexDirection=\"column\">\n {disabledLines.map((line, i) => {\n const isCursorOnLine = i === dCursorLine;\n return (\n <Box key={i}>\n <Text color={colors.quaternary}>{i === 0 ? \"· \" : \"⎸ \"}</Text>\n {isCursorOnLine ? (\n <Text color={colors.dim}>\n {line.slice(0, dCursorCol)}\n <Text inverse>{dCursorCol < line.length ? line[dCursorCol] : \" \"}</Text>\n {dCursorCol < line.length ? line.slice(dCursorCol + 1) : \"\"}\n </Text>\n ) : (\n <Text color={colors.dim}>{line}</Text>\n )}\n </Box>\n );\n })}\n {queued && (\n <Box marginLeft={2}>\n <Text color={colors.warning}>[queued]</Text>\n </Box>\n )}\n </Box>\n )}\n </Box>\n );\n }\n\n // Slash command menu — two-level categorized via SlashMenu component\n if (menuMode) {\n // Prompt line varies by level\n let promptLine: React.ReactNode;\n if (menuFilter) {\n // Filter mode\n promptLine = (\n <Box>\n <Text color={colors.brand} bold>{\"/ \"}</Text>\n <Text>\n {menuFilter}\n <Text inverse>{\" \"}</Text>\n </Text>\n </Box>\n );\n } else if (selectedCategory !== null) {\n // Level 2: show category name\n const catLabel = getCategoryLabel(selectedCategory);\n const catColor = getCategoryColor(selectedCategory);\n promptLine = (\n <Box>\n <Text color={colors.brand} bold>{\"/ \"}</Text>\n <Text color={catColor} bold>{catLabel}</Text>\n <Text color={colors.tertiary}>{\" > \"}</Text>\n <Text inverse>{\" \"}</Text>\n </Box>\n );\n } else {\n // Level 1\n promptLine = (\n <Box>\n <Text color={colors.brand} bold>{\"/ \"}</Text>\n <Text>\n <Text inverse>{\" \"}</Text>\n <Text color={colors.dim}> type to filter</Text>\n </Text>\n </Box>\n );\n }\n\n // Hint line varies by level\n const hint = selectedCategory !== null && !menuFilter\n ? \" \\u2190 back esc dismiss\"\n : \" esc to dismiss\";\n\n return (\n <Box flexDirection=\"column\">\n\n {promptLine}\n <SlashMenu filter={menuFilter} selectedIndex={menuIndex} selectedCategory={selectedCategory} />\n <Text color={colors.quaternary}>{hint}</Text>\n </Box>\n );\n }\n\n // ── Normal input rendering ──\n\n const lines = displayValue.split(\"\\n\");\n const { line: cursorLine, col: cursorCol } = displayValue\n ? getCursorLineCol(displayValue, displayCursor)\n : { line: 0, col: 0 };\n\n // Truncate display for very long pastes\n const isTruncated = lines.length > MAX_DISPLAY_LINES;\n const visibleLines = isTruncated\n ? [...lines.slice(0, MAX_DISPLAY_LINES - 1), `… ${lines.length - MAX_DISPLAY_LINES + 1} more lines`]\n : lines;\n\n return (\n <Box flexDirection=\"column\">\n {/* Attachment chips — context + images + files + pasted text */}\n {(images.length > 0 || files.length > 0 || contextItems.length > 0 || pastedText) && (\n <Box>\n <Text> </Text>\n {contextItems.map((ctx, i) => (\n <Text key={`ctx-${i}`}>\n <Text color={CONTEXT_COLORS[ctx.type] || \"cyan\"}>[</Text>\n <Text color={colors.secondary}>{ctx.type}: {ctx.title}</Text>\n <Text color={CONTEXT_COLORS[ctx.type] || \"cyan\"}>]</Text>\n <Text> </Text>\n </Text>\n ))}\n {images.map((img, i) => (\n <Text key={`img-${i}`}>\n <Text color={colors.indigo}>[</Text>\n <Text color={colors.secondary}>{img.name}</Text>\n <Text color={colors.indigo}>]</Text>\n <Text> </Text>\n </Text>\n ))}\n {files.map((f, i) => (\n <Text key={`file-${i}`}>\n <Text color={colors.purple}>[</Text>\n <Text color={colors.secondary}>{f.name}</Text>\n <Text color={colors.purple}>]</Text>\n <Text> </Text>\n </Text>\n ))}\n {pastedText && (\n <Text>\n <Text color={colors.indigo}>[</Text>\n <Text color={colors.secondary}>pasted {pastedText.split(\"\\n\").length} lines</Text>\n <Text color={colors.indigo}>]</Text>\n </Text>\n )}\n </Box>\n )}\n\n {/* Single-line input */}\n {lines.length <= 1 ? (\n <Box>\n <Text color={colors.brand} bold>{\"❯ \"}</Text>\n {!displayValue ? (\n <Text wrap=\"truncate\">\n <Text inverse> </Text>\n <Text color={colors.dim}>{`Message ${agentName || \"whale\"}, or type / for commands`}</Text>\n </Text>\n ) : (\n <Text>\n {displayValue.slice(0, displayCursor)}\n <Text inverse>{displayCursor < displayValue.length ? displayValue[displayCursor] : \" \"}</Text>\n {displayCursor < displayValue.length ? displayValue.slice(displayCursor + 1) : \"\"}\n </Text>\n )}\n </Box>\n ) : (\n /* Multi-line input */\n <Box flexDirection=\"column\">\n {visibleLines.map((line, i) => {\n const isRealLine = !isTruncated || i < MAX_DISPLAY_LINES - 1;\n const isCursorOnLine = isRealLine && i === cursorLine;\n\n return (\n <Box key={i}>\n <Text color={colors.brand} bold>{i === 0 ? \"❯ \" : \"⎸ \"}</Text>\n {isCursorOnLine ? (\n <Text>\n {line.slice(0, cursorCol)}\n <Text inverse>{cursorCol < line.length ? line[cursorCol] : \" \"}</Text>\n {cursorCol < line.length ? line.slice(cursorCol + 1) : \"\"}\n </Text>\n ) : (\n <Text color={isRealLine ? undefined : colors.tertiary}>{line}</Text>\n )}\n </Box>\n );\n })}\n </Box>\n )}\n </Box>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AACnD,SAASC,GAAG,EAAEC,IAAI,EAAEC,QAAQ,QAAQ,KAAK;AACzC,SAASC,YAAY,EAAEC,UAAU,EAAEC,QAAQ,QAAQ,IAAI;AACvD,SAASC,QAAQ,EAAEC,OAAO,QAAQ,MAAM;AACxC,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,eAAe,EAAEC,oBAAoB,QAAQ,mCAAmC;AACzF,SAASC,SAAS,EAAEC,cAAc,IAAIC,eAAe,EAAEC,0BAA0B,EAAEC,iBAAiB,EAAEC,gBAAgB,EAAEC,uBAAuB,EAAEC,kBAAkB,EAAEC,gBAAgB,EAAEC,gBAAgB,QAAQ,gBAAgB;;AAE/N;;AAyBA;AAAA,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEA,OAAO,MAAMd,cAAc,GAAGC,eAAe;;AAE7C;;AAEA,MAAMc,gBAAwC,GAAG;EAC/C,MAAM,EAAE,WAAW;EACnB,MAAM,EAAE,YAAY;EACpB,OAAO,EAAE,YAAY;EACrB,MAAM,EAAE,WAAW;EACnB,OAAO,EAAE;AACX,CAAC;AAED,MAAMC,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AACzC,MAAMC,iBAAiB,GAAG,CAAC;;AAE3B;;AAEA,MAAMC,aAAa,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC;AACpG,MAAMC,cAAsC,GAAG;EAC7CC,OAAO,EAAExB,MAAM,CAACyB,KAAK;EAAEC,QAAQ,EAAE1B,MAAM,CAAC2B,MAAM;EAAEC,KAAK,EAAE5B,MAAM,CAAC6B,OAAO;EACrEC,SAAS,EAAE9B,MAAM,CAAC+B,OAAO;EAAEC,KAAK,EAAEhC,MAAM,CAACiC,IAAI;EAAEC,QAAQ,EAAElC,MAAM,CAACmC,IAAI;EAAEC,QAAQ,EAAE;AAClF,CAAC;;AAED;AACA,SAASC,iBAAiBA,CAACC,IAAY,EAA4B;EACjE,MAAMC,OAAO,GAAGD,IAAI,CAACE,IAAI,CAAC,CAAC;EAC3B,IAAI,CAACD,OAAO,CAACE,UAAU,CAAC,GAAG,CAAC,IAAI,CAACF,OAAO,CAACG,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI;EACnE,IAAI;IACF,MAAMC,GAAG,GAAGC,IAAI,CAACC,KAAK,CAACN,OAAO,CAAC;IAC/B,IAAII,GAAG,IAAI,OAAOA,GAAG,CAACG,EAAE,KAAK,QAAQ,IAAI,OAAOH,GAAG,CAACI,IAAI,KAAK,QAAQ,IACjEzB,aAAa,CAAC0B,QAAQ,CAACL,GAAG,CAACI,IAAI,CAAC,IAAI,OAAOJ,GAAG,CAACM,KAAK,KAAK,QAAQ,IACjE,OAAON,GAAG,CAACO,SAAS,KAAK,QAAQ,EAAE;MACrC,OAAOP,GAAG;IACZ;EACF,CAAC,CAAC,MAAM,CAAE;EACV,OAAO,IAAI;AACb;;AAEA;AACA,SAASQ,cAAcA,CAACC,GAAsB,EAAU;EACtD,MAAMC,KAAe,GAAG,EAAE;EAC1BA,KAAK,CAACC,IAAI,CAAC,kBAAkBF,GAAG,CAACL,IAAI,aAAaK,GAAG,CAACF,SAAS,IAAI,CAAC;EACpEG,KAAK,CAACC,IAAI,CAAC,KAAKF,GAAG,CAACH,KAAK,EAAE,CAAC;EAC5B,IAAIG,GAAG,CAACG,QAAQ,EAAEF,KAAK,CAACC,IAAI,CAAC,KAAKF,GAAG,CAACG,QAAQ,EAAE,CAAC;EACjD,IAAIH,GAAG,CAACI,IAAI,EAAE;IACZ,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACR,GAAG,CAACI,IAAI,CAAC,CAACK,IAAI,CAAC,CAAC,CAACC,CAAC,CAAC,EAAE,CAACC,CAAC,CAAC,KAAKD,CAAC,CAACE,aAAa,CAACD,CAAC,CAAC,CAAC,EAAE;MAC1FV,KAAK,CAACC,IAAI,CAAC,KAAKG,GAAG,KAAKC,KAAK,EAAE,CAAC;IAClC;EACF;EACAL,KAAK,CAACC,IAAI,CAAC,YAAY,CAAC;EACxB,OAAOD,KAAK,CAACY,IAAI,CAAC,IAAI,CAAC;AACzB;AAEA,SAASC,WAAWA,CAAC5B,IAAY,EAAW;EAC1C,MAAM6B,CAAC,GAAGC,aAAa,CAAC9B,IAAI,CAAC;EAC7B,IAAI,CAAC6B,CAAC,IAAIA,CAAC,CAACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK;EACxC,MAAMqB,GAAG,GAAGtE,OAAO,CAACoE,CAAC,CAAC,CAACG,WAAW,CAAC,CAAC;EACpC,OAAOD,GAAG,IAAIlD,gBAAgB,IAAIvB,UAAU,CAACuE,CAAC,CAAC;AACjD;;AAEA;AACA,SAASC,aAAaA,CAACG,GAAW,EAAU;EAC1C,IAAIJ,CAAC,GAAGI,GAAG,CAAC/B,IAAI,CAAC,CAAC;EAClB;EACA,IAAI2B,CAAC,CAAC1B,UAAU,CAAC,SAAS,CAAC,EAAE;IAC3B0B,CAAC,GAAGK,kBAAkB,CAACL,CAAC,CAACM,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;EACrD;EACA;EACAN,CAAC,GAAGA,CAAC,CAACM,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;EACjC;EACAN,CAAC,GAAGA,CAAC,CAACM,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;EAC7B,OAAON,CAAC;AACV;AAEA,SAASO,UAAUA,CAACpC,IAAY,EAAW;EACzC,MAAM6B,CAAC,GAAGC,aAAa,CAAC9B,IAAI,CAAC;EAC7B,IAAI,CAAC6B,CAAC,IAAIA,CAAC,CAACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK;EACxC;EACA,MAAMqB,GAAG,GAAGtE,OAAO,CAACoE,CAAC,CAAC,CAACG,WAAW,CAAC,CAAC;EACpC,IAAID,GAAG,IAAIlD,gBAAgB,EAAE,OAAO,KAAK;EACzC,IAAI;IAAE,OAAOvB,UAAU,CAACuE,CAAC,CAAC,IAAItE,QAAQ,CAACsE,CAAC,CAAC,CAACQ,MAAM,CAAC,CAAC;EAAE,CAAC,CAAC,MAAM;IAAE,OAAO,KAAK;EAAE;AAC9E;AAEA,SAASC,SAASA,CAACC,QAAgB,EAA0B;EAC3D,IAAI;IACF,MAAMV,CAAC,GAAGC,aAAa,CAACS,QAAQ,CAAC;IACjC,MAAMR,GAAG,GAAGtE,OAAO,CAACoE,CAAC,CAAC,CAACG,WAAW,CAAC,CAAC;IACpC,MAAMQ,SAAS,GAAG3D,gBAAgB,CAACkD,GAAG,CAAC;IACvC,IAAI,CAACS,SAAS,EAAE,OAAO,IAAI;IAC3B,MAAMC,IAAI,GAAGlF,QAAQ,CAACsE,CAAC,CAAC;IACxB,IAAIY,IAAI,CAACC,IAAI,GAAG5D,cAAc,EAAE,OAAO,IAAI;IAC3C,MAAMoC,IAAI,GAAG7D,YAAY,CAACwE,CAAC,CAAC;IAC5B,OAAO;MAAEc,IAAI,EAAEd,CAAC;MAAEe,IAAI,EAAEpF,QAAQ,CAACqE,CAAC,CAAC;MAAEgB,MAAM,EAAE3B,IAAI,CAAC4B,QAAQ,CAAC,QAAQ,CAAC;MAAEN;IAAU,CAAC;EACnF,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;AACF;AAEA,SAASO,gBAAgBA,CAAC/C,IAAY,EAAEgD,MAAc,EAAiC;EACrF,IAAIC,GAAG,GAAG,CAAC;EACX,MAAMlC,KAAK,GAAGf,IAAI,CAACkD,KAAK,CAAC,IAAI,CAAC;EAC9B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpC,KAAK,CAACqC,MAAM,EAAED,CAAC,EAAE,EAAE;IACrC,IAAIH,MAAM,IAAIC,GAAG,GAAGlC,KAAK,CAACoC,CAAC,CAAC,CAACC,MAAM,EAAE;MACnC,OAAO;QAAEC,IAAI,EAAEF,CAAC;QAAEG,GAAG,EAAEN,MAAM,GAAGC;MAAI,CAAC;IACvC;IACAA,GAAG,IAAIlC,KAAK,CAACoC,CAAC,CAAC,CAACC,MAAM,GAAG,CAAC;EAC5B;EACA,OAAO;IAAEC,IAAI,EAAEtC,KAAK,CAACqC,MAAM,GAAG,CAAC;IAAEE,GAAG,EAAEvC,KAAK,CAACA,KAAK,CAACqC,MAAM,GAAG,CAAC,CAAC,CAACA;EAAO,CAAC;AACxE;;AAEA;;AAWA;;AAEA,OAAO,SAASG,SAASA,CAAC;EAAEC,QAAQ;EAAEC,SAAS;EAAEC,QAAQ;EAAEC,aAAa;EAAEC,SAAS;EAAEC;AAA4B,CAAC,EAAE;EAClH,MAAM;IAAEC;EAAM,CAAC,GAAG1G,QAAQ,CAAC,CAAC;;EAE5B;EACA,MAAM2G,QAAQ,GAAG9G,MAAM,CAAC;IAAEmE,KAAK,EAAE,EAAE;IAAE4B,MAAM,EAAE;EAAE,CAAC,CAAC;EACjD,MAAM,CAACgB,YAAY,EAAEC,eAAe,CAAC,GAAGlH,QAAQ,CAAC,EAAE,CAAC;EACpD,MAAM,CAACmH,aAAa,EAAEC,gBAAgB,CAAC,GAAGpH,QAAQ,CAAC,CAAC,CAAC;;EAErD;EACA,MAAMqH,WAAW,GAAGnH,MAAM,CAACuG,QAAQ,CAAC;EACpC,MAAMa,YAAY,GAAGpH,MAAM,CAACwG,SAAS,CAAC;EACtC,MAAMa,cAAc,GAAGrH,MAAM,CAAC4G,WAAW,CAAC;EAC1C,MAAMU,WAAW,GAAGtH,MAAM,CAACyG,QAAQ,CAAC;EACpC1G,SAAS,CAAC,MAAM;IAAEoH,WAAW,CAACI,OAAO,GAAGhB,QAAQ;EAAE,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EAChExG,SAAS,CAAC,MAAM;IAAEqH,YAAY,CAACG,OAAO,GAAGf,SAAS;EAAE,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EACnEzG,SAAS,CAAC,MAAM;IAAEsH,cAAc,CAACE,OAAO,GAAGX,WAAW;EAAE,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EACzE7G,SAAS,CAAC,MAAM;IAAEuH,WAAW,CAACC,OAAO,GAAGd,QAAQ;EAAE,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;;EAEhE;EACA,MAAM,CAACe,MAAM,EAAEC,SAAS,CAAC,GAAG3H,QAAQ,CAAC,KAAK,CAAC;EAC3C,MAAM4H,SAAS,GAAG1H,MAAM,CAAC,KAAK,CAAC;;EAE/B;EACA,MAAM2H,aAAa,GAAG3H,MAAM,CAAC,KAAK,CAAC;;EAEnC;EACA,MAAM4H,eAAe,GAAG5H,MAAM,CAACyG,QAAQ,CAAC;EACxC1G,SAAS,CAAC,MAAM;IACd,IAAI6H,eAAe,CAACL,OAAO,IAAI,CAACd,QAAQ,IAAIiB,SAAS,CAACH,OAAO,EAAE;MAC7D;MACAG,SAAS,CAACH,OAAO,GAAG,KAAK;MACzBE,SAAS,CAAC,KAAK,CAAC;MAChBI,YAAY,CAAC,CAAC;IAChB;IACAD,eAAe,CAACL,OAAO,GAAGd,QAAQ;EACpC,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;;EAEd;EACA,MAAM,CAACqB,QAAQ,EAAEC,WAAW,CAAC,GAAGjI,QAAQ,CAAC,KAAK,CAAC;EAC/C,MAAMkI,WAAW,GAAGhI,MAAM,CAAC,KAAK,CAAC;EACjC,MAAM,CAACiI,UAAU,EAAEC,aAAa,CAAC,GAAGpI,QAAQ,CAAC,EAAE,CAAC;EAChD,MAAMqI,aAAa,GAAGnI,MAAM,CAAC,EAAE,CAAC;EAChC,MAAM,CAACoI,SAAS,EAAEC,YAAY,CAAC,GAAGvI,QAAQ,CAAC,CAAC,CAAC;EAC7C,MAAMwI,YAAY,GAAGtI,MAAM,CAAC,CAAC,CAAC;EAC9B,MAAM,CAACuI,MAAM,EAAEC,SAAS,CAAC,GAAG1I,QAAQ,CAAoB,EAAE,CAAC;EAC3D,MAAM2I,SAAS,GAAGzI,MAAM,CAAoB,EAAE,CAAC;EAC/C,MAAM,CAAC0I,KAAK,EAAEC,QAAQ,CAAC,GAAG7I,QAAQ,CAAmB,EAAE,CAAC;EACxD,MAAM8I,QAAQ,GAAG5I,MAAM,CAAmB,EAAE,CAAC;EAC7C,MAAM,CAAC6I,YAAY,EAAEC,eAAe,CAAC,GAAGhJ,QAAQ,CAAsB,EAAE,CAAC;EACzE,MAAMiJ,eAAe,GAAG/I,MAAM,CAAsB,EAAE,CAAC;;EAEvD;EACA,MAAM,CAACgJ,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGnJ,QAAQ,CAAgB,IAAI,CAAC;EAC7E,MAAMoJ,mBAAmB,GAAGlJ,MAAM,CAAgB,IAAI,CAAC;EACvD,SAASmJ,uBAAuBA,CAACC,GAAkB,EAAE;IACnDF,mBAAmB,CAAC3B,OAAO,GAAG6B,GAAG;IACjCH,mBAAmB,CAACG,GAAG,CAAC;EAC1B;;EAEA;EACA,MAAMC,UAAU,GAAGrJ,MAAM,CAAW,EAAE,CAAC;EACvC,MAAMsJ,eAAe,GAAGtJ,MAAM,CAAC,CAAC,CAAC,CAAC;EAClC,MAAMuJ,aAAa,GAAGvJ,MAAM,CAAC,EAAE,CAAC;EAChC,MAAMwJ,WAAW,GAAG,EAAE;;EAEtB;EACA,MAAMC,SAAS,GAAGzJ,MAAM,CAAC,KAAK,CAAC;EAC/B,MAAM0J,WAAW,GAAG1J,MAAM,CAAC,EAAE,CAAC;;EAE9B;EACA,MAAM,CAAC2J,UAAU,EAAEC,aAAa,CAAC,GAAG9J,QAAQ,CAAgB,IAAI,CAAC;EACjE,MAAM+J,aAAa,GAAG7J,MAAM,CAAgB,IAAI,CAAC;;EAEjD;EACAD,SAAS,CAAC,MAAM;IAAE0I,SAAS,CAAClB,OAAO,GAAGgB,MAAM;EAAE,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EAC1DxI,SAAS,CAAC,MAAM;IAAE6I,QAAQ,CAACrB,OAAO,GAAGmB,KAAK;EAAE,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EACvD3I,SAAS,CAAC,MAAM;IAAEgJ,eAAe,CAACxB,OAAO,GAAGsB,YAAY;EAAE,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAC5E9I,SAAS,CAAC,MAAM;IAAE8J,aAAa,CAACtC,OAAO,GAAGoC,UAAU;EAAE,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EACtE;EACA,SAASG,eAAeA,CAACV,KAAY,EAAE;IACrCpB,WAAW,CAACT,OAAO,GAAG6B,KAAG;IACzBrB,WAAW,CAACqB,KAAG,CAAC;EAClB;EACA,SAASW,iBAAiBA,CAACX,KAAW,EAAE;IACtCjB,aAAa,CAACZ,OAAO,GAAG6B,KAAG;IAC3BlB,aAAa,CAACkB,KAAG,CAAC;EACpB;EACA,SAASY,gBAAgBA,CAACZ,KAAW,EAAE;IACrCd,YAAY,CAACf,OAAO,GAAG6B,KAAG;IAC1Bf,YAAY,CAACe,KAAG,CAAC;EACnB;;EAEA;EACArJ,SAAS,CAAC,MAAM;IACdkK,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC,aAAa,CAAC;IACnC,OAAO,MAAM;MAAEF,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC,aAAa,CAAC;IAAE,CAAC;EACvD,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,SAASC,MAAMA,CAACjG,KAAa,EAAE4B,MAAc,EAAE;IAC7Ce,QAAQ,CAACS,OAAO,GAAG;MAAEpD,KAAK;MAAE4B;IAAO,CAAC;IACpCiB,eAAe,CAAC7C,KAAK,CAAC;IACtB+C,gBAAgB,CAACnB,MAAM,CAAC;EAC1B;;EAEA;EACA,SAASsE,YAAYA,CAACtH,IAAY,EAAE;IAClC,MAAMuH,KAAK,GAAGvH,IAAI,CAACmC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAACA,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;;IAE9D;IACA,MAAMrB,GAAG,GAAGf,iBAAiB,CAACwH,KAAK,CAAC;IACpC,IAAIzG,GAAG,EAAE;MACP;MACA,IAAI,CAACkF,eAAe,CAACxB,OAAO,CAACgD,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACjH,EAAE,KAAKM,GAAG,CAACN,EAAE,CAAC,EAAE;QACvDuF,eAAe,CAAC2B,IAAI,IAAI,CAAC,GAAGA,IAAI,EAAE5G,GAAG,CAAC,CAAC;MACzC;MACA;IACF;;IAEA;IACA,MAAMC,KAAK,GAAGwG,KAAK,CAACrE,KAAK,CAAC,IAAI,CAAC,CAACyE,GAAG,CAACC,CAAC,IAAIA,CAAC,CAAC1H,IAAI,CAAC,CAAC,CAAC,CAAC2H,MAAM,CAACC,OAAO,CAAC;IAClE,IAAI/G,KAAK,CAACqC,MAAM,GAAG,CAAC,IAAIrC,KAAK,CAACgH,KAAK,CAACH,GAAC,IAAIhG,WAAW,CAACgG,GAAC,CAAC,CAAC,EAAE;MACxD,MAAMI,SAA4B,GAAG,EAAE;MACvC,KAAK,MAAM3E,IAAI,IAAItC,KAAK,EAAE;QACxB,MAAMkH,GAAG,GAAG3F,SAAS,CAACe,IAAI,CAAC;QAC3B,IAAI4E,GAAG,EAAED,SAAS,CAAChH,IAAI,CAACiH,GAAG,CAAC;MAC9B;MACA,IAAID,SAAS,CAAC5E,MAAM,GAAG,CAAC,EAAE;QACxBqC,SAAS,CAACiC,MAAI,IAAI,CAAC,GAAGA,MAAI,EAAE,GAAGM,SAAS,CAAC,CAAC;QAC1C;MACF;IACF;;IAEA;IACA,IAAIjH,KAAK,CAACqC,MAAM,GAAG,CAAC,IAAIrC,KAAK,CAACqC,MAAM,IAAI,CAAC,IAAIrC,KAAK,CAACgH,KAAK,CAACH,GAAC,IAAIxF,UAAU,CAACwF,GAAC,CAAC,CAAC,EAAE;MAC5E,MAAMM,QAA0B,GAAGnH,KAAK,CAAC4G,GAAG,CAACC,GAAC,IAAI;QAChD,MAAM/F,CAAC,GAAGC,aAAa,CAAC8F,GAAC,CAAC;QAC1B,OAAO;UAAEjF,IAAI,EAAEd,CAAC;UAAEe,IAAI,EAAEpF,QAAQ,CAACqE,CAAC;QAAE,CAAC;MACvC,CAAC,CAAC;MACF+D,QAAQ,CAAC8B,MAAI,IAAI,CAAC,GAAGA,MAAI,EAAE,GAAGQ,QAAQ,CAAC,CAAC;MACxC;IACF;;IAEA;IACA,IAAIX,KAAK,CAACpH,UAAU,CAAC,GAAG,CAAC,IAAI,CAACoH,KAAK,CAAC7G,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC6G,KAAK,CAAC7G,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,IAAIqD,QAAQ,CAACS,OAAO,CAACpD,KAAK,KAAK,EAAE,EAAE;MAC9GiD,YAAY,CAACG,OAAO,CAAC+C,KAAK,CAACrH,IAAI,CAAC,CAAC,CAAC;MAClCmH,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;MACb;IACF;;IAEA;IACA,MAAMc,UAAU,GAAGZ,KAAK,CAACrE,KAAK,CAAC,IAAI,CAAC;IACpC,IAAIiF,UAAU,CAAC/E,MAAM,IAAI,CAAC,EAAE;MAC1ByD,aAAa,CAACU,KAAK,CAAC;MACpB;IACF;;IAEA;IACA,MAAM;MAAEnG,KAAK,EAAEiF,KAAG;MAAErD,MAAM,EAAEoF;IAAI,CAAC,GAAGrE,QAAQ,CAACS,OAAO;IACpD,MAAM6D,QAAQ,GAAGhC,KAAG,CAACiC,KAAK,CAAC,CAAC,EAAEF,GAAG,CAAC,GAAGb,KAAK,GAAGlB,KAAG,CAACiC,KAAK,CAACF,GAAG,CAAC;IAC3Df,MAAM,CAACgB,QAAQ,EAAED,GAAG,GAAGb,KAAK,CAACnE,MAAM,CAAC;EACtC;;EAEA;EACA,SAAS0B,YAAYA,CAAA,EAAG;IACtB;IACA,IAAIF,aAAa,CAACJ,OAAO,EAAE;MACzB;IACF;IACAI,aAAa,CAACJ,OAAO,GAAG,IAAI;IAE5B,MAAM+D,KAAK,GAAGxE,QAAQ,CAACS,OAAO,CAACpD,KAAK,CAAClB,IAAI,CAAC,CAAC;IAC3C,MAAMsI,KAAK,GAAG1B,aAAa,CAACtC,OAAO;IACnC,MAAMiE,IAAI,GAAG/C,SAAS,CAAClB,OAAO;IAC9B,MAAMkE,GAAG,GAAG7C,QAAQ,CAACrB,OAAO;IAC5B,MAAMmE,IAAI,GAAG3C,eAAe,CAACxB,OAAO;IAEpC,IAAI,CAAC+D,KAAK,IAAI,CAACC,KAAK,IAAIC,IAAI,CAACrF,MAAM,KAAK,CAAC,IAAIsF,GAAG,CAACtF,MAAM,KAAK,CAAC,IAAIuF,IAAI,CAACvF,MAAM,KAAK,CAAC,EAAE;MAClFwB,aAAa,CAACJ,OAAO,GAAG,KAAK;MAC7B;IACF;;IAEA;IACA;IACA,IAAI+D,KAAK,CAACpI,UAAU,CAAC,GAAG,CAAC,IAAI,CAACoI,KAAK,CAAC7H,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC8H,KAAK,IAAIC,IAAI,CAACrF,MAAM,KAAK,CAAC,IAAIsF,GAAG,CAACtF,MAAM,KAAK,CAAC,IAAIuF,IAAI,CAACvF,MAAM,KAAK,CAAC,EAAE;MAC5HiE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;MACbzC,aAAa,CAACJ,OAAO,GAAG,KAAK;MAC7BH,YAAY,CAACG,OAAO,CAAC+D,KAAK,CAAC;MAC3B;IACF;;IAEA;IACA,MAAMK,aAAa,GAAGD,IAAI,CAACvF,MAAM,GAAG,CAAC,GACjCuF,IAAI,CAAChB,GAAG,CAACF,GAAC,IAAI5G,cAAc,CAAC4G,GAAC,CAAC,CAAC,CAAC9F,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,GACtD,EAAE;;IAEN;IACA,MAAMkH,UAAU,GAAGH,GAAG,CAACtF,MAAM,GAAG,CAAC,GAC7BsF,GAAG,CAACf,GAAG,CAACmB,CAAC,IAAIA,CAAC,CAACnG,IAAI,CAAC,CAAChB,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,GACxC,EAAE;;IAEN;IACA,MAAMoH,IAAI,GAAGP,KAAK,GACbD,KAAK,GAAG,GAAGA,KAAK,OAAOC,KAAK,EAAE,GAAGA,KAAK,GACtCD,KAAK,KAAKI,IAAI,CAACvF,MAAM,GAAG,CAAC,GAAG,oBAAoB,GAAG,EAAE,CAAE;IAC5D,MAAM4F,QAAQ,GAAGJ,aAAa,GAAGC,UAAU,GAAGE,IAAI;;IAElD;IACA,IAAIC,QAAQ,CAAC9I,IAAI,CAAC,CAAC,EAAE;MACnBoG,UAAU,CAAC9B,OAAO,CAACxD,IAAI,CAACgI,QAAQ,CAAC9I,IAAI,CAAC,CAAC,CAAC;MACxC,IAAIoG,UAAU,CAAC9B,OAAO,CAACpB,MAAM,GAAGqD,WAAW,EAAEH,UAAU,CAAC9B,OAAO,CAACyE,KAAK,CAAC,CAAC;IACzE;IACA1C,eAAe,CAAC/B,OAAO,GAAG,CAAC,CAAC;IAE5BJ,WAAW,CAACI,OAAO,CAACwE,QAAQ,EAAEP,IAAI,CAACrF,MAAM,GAAG,CAAC,GAAGqF,IAAI,GAAGS,SAAS,CAAC;IACjE7B,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;IACb5B,SAAS,CAAC,EAAE,CAAC;IACbG,QAAQ,CAAC,EAAE,CAAC;IACZG,eAAe,CAAC,EAAE,CAAC;IACnBc,aAAa,CAAC,IAAI,CAAC;;IAEnB;IACAsC,UAAU,CAAC,MAAM;MAAEvE,aAAa,CAACJ,OAAO,GAAG,KAAK;IAAE,CAAC,EAAE,CAAC,CAAC;EACzD;;EAEA;EACAxH,SAAS,CAAC,MAAM;IACd,IAAI,CAAC8G,KAAK,EAAE;;IAEZ;IACA;IACA;IACA,IAAIH,aAAa,EAAE;IAEnB,MAAMyF,MAAM,GAAIlI,IAAY,IAAK;MAC/B,MAAMmI,GAAG,GAAGnI,IAAI,CAAC4B,QAAQ,CAAC,OAAO,CAAC;;MAElC;MACA;MACA;MACA,IAAIyB,WAAW,CAACC,OAAO,EAAE;QACvB;QACA,IAAI6E,GAAG,KAAK,MAAM,EAAE;UAClB/E,cAAc,CAACE,OAAO,GAAG,CAAC;UAC1B;QACF;;QAEA;QACA,MAAM8E,GAAG,GAAG3L,eAAe,CAAC,CAAC;QAC7B,MAAM4L,QAAQ,GAAG3L,oBAAoB,CAAC0L,GAAG,CAACE,IAAI,CAAC;QAC/C,MAAMC,UAAU,GAAG7L,oBAAoB,CAAC0L,GAAG,CAACI,aAAa,CAAC;QAC1D,MAAMC,YAAY,GAAG/L,oBAAoB,CAAC0L,GAAG,CAACM,eAAe,CAAC;QAC9D,IAAIP,GAAG,KAAKE,QAAQ,IAAIF,GAAG,KAAKI,UAAU,IAAIJ,GAAG,KAAKM,YAAY,EAAE;;QAEpE;QACA,IAAIN,GAAG,CAAClJ,UAAU,CAAC,OAAO,CAAC,EAAE;UAC3B,MAAM;YAAEiB,KAAK,EAAEiF,KAAG;YAAErD,MAAM,EAAEoF;UAAI,CAAC,GAAGrE,QAAQ,CAACS,OAAO;UACpD,IAAI6E,GAAG,KAAK,QAAQ,EAAE;YAAE;YACtBhC,MAAM,CAAChB,KAAG,EAAEwD,IAAI,CAACC,GAAG,CAAC1B,KAAG,GAAG,CAAC,EAAE/B,KAAG,CAACjD,MAAM,CAAC,CAAC;UAC5C,CAAC,MAAM,IAAIiG,GAAG,KAAK,QAAQ,EAAE;YAAE;YAC7BhC,MAAM,CAAChB,KAAG,EAAEwD,IAAI,CAACE,GAAG,CAAC3B,KAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;UACnC,CAAC,MAAM,IAAIiB,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,QAAQ,EAAE;YAAE;YACjD,MAAMtI,OAAK,GAAGsF,KAAG,CAACnD,KAAK,CAAC,IAAI,CAAC;YAC7B,IAAInC,OAAK,CAACqC,MAAM,GAAG,CAAC,EAAE;cACpB,MAAM;gBAAEC,IAAI,EAAE2G,OAAO;gBAAE1G,GAAG,EAAE2G;cAAO,CAAC,GAAGlH,gBAAgB,CAACsD,KAAG,EAAE+B,KAAG,CAAC;cACjE,MAAM8B,UAAU,GAAGb,GAAG,KAAK,QAAQ,GAC/BQ,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEC,OAAO,GAAG,CAAC,CAAC,GACxBH,IAAI,CAACC,GAAG,CAAC/I,OAAK,CAACqC,MAAM,GAAG,CAAC,EAAE4G,OAAO,GAAG,CAAC,CAAC;cAC3C,IAAIE,UAAU,KAAKF,OAAO,EAAE;gBAC1B,MAAMG,SAAS,GAAGN,IAAI,CAACC,GAAG,CAACG,MAAM,EAAElJ,OAAK,CAACmJ,UAAU,CAAC,CAAC9G,MAAM,CAAC;gBAC5D,IAAIgH,SAAS,GAAG,CAAC;gBACjB,KAAK,IAAIjH,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+G,UAAU,EAAE/G,CAAC,EAAE,EAAEiH,SAAS,IAAIrJ,OAAK,CAACoC,CAAC,CAAC,CAACC,MAAM,GAAG,CAAC;gBACrEgH,SAAS,IAAID,SAAS;gBACtB9C,MAAM,CAAChB,KAAG,EAAE+D,SAAS,CAAC;cACxB;YACF;UACF,CAAC,MAAM,IAAIf,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,SAAS,EAAE;YAAE;YAClDhC,MAAM,CAAChB,KAAG,EAAE,CAAC,CAAC;UAChB,CAAC,MAAM,IAAIgD,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,SAAS,EAAE;YAAE;YAClDhC,MAAM,CAAChB,KAAG,EAAEA,KAAG,CAACjD,MAAM,CAAC;UACzB;UACA;QACF;;QAEA;QACA,IAAIiG,GAAG,CAAC3I,QAAQ,CAAC,WAAW,CAAC,EAAE;UAC7BgG,SAAS,CAAClC,OAAO,GAAG,IAAI;UACxB,IAAIxE,MAAI,GAAGqJ,GAAG,CAAClH,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;UACpEwE,WAAW,CAACnC,OAAO,IAAIxE,MAAI;UAC3B,IAAIqJ,GAAG,CAAC3I,QAAQ,CAAC,WAAW,CAAC,EAAE;YAC7BgG,SAAS,CAAClC,OAAO,GAAG,KAAK;YACzB,MAAMgE,OAAK,GAAG7B,WAAW,CAACnC,OAAO;YACjCmC,WAAW,CAACnC,OAAO,GAAG,EAAE;YACxB8C,YAAY,CAACkB,OAAK,CAAC;UACrB;UACA;QACF;QACA,IAAI9B,SAAS,CAAClC,OAAO,EAAE;UACrB,IAAI6E,GAAG,CAAC3I,QAAQ,CAAC,WAAW,CAAC,EAAE;YAC7BgG,SAAS,CAAClC,OAAO,GAAG,KAAK;YACzBmC,WAAW,CAACnC,OAAO,IAAI6E,GAAG,CAAClH,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;YACrD,MAAMqG,OAAK,GAAG7B,WAAW,CAACnC,OAAO;YACjCmC,WAAW,CAACnC,OAAO,GAAG,EAAE;YACxB8C,YAAY,CAACkB,OAAK,CAAC;UACrB,CAAC,MAAM;YACL7B,WAAW,CAACnC,OAAO,IAAI6E,GAAG;UAC5B;UACA;QACF;;QAEA;QACA,IAAIA,GAAG,KAAK,IAAI,IAAIA,GAAG,KAAK,IAAI,EAAE;UAChC,MAAMd,OAAK,GAAGxE,QAAQ,CAACS,OAAO,CAACpD,KAAK,CAAClB,IAAI,CAAC,CAAC;UAC3C,IAAIqI,OAAK,EAAE;YACT5D,SAAS,CAACH,OAAO,GAAG,IAAI;YACxBE,SAAS,CAAC,IAAI,CAAC;UACjB;UACA;QACF;;QAEA;QACA,IAAI2E,GAAG,KAAK,MAAM,IAAIA,GAAG,KAAK,IAAI,EAAE;UAClC,MAAM;YAAEjI,KAAK,EAAEiF,KAAG;YAAErD,MAAM,EAAEoF;UAAI,CAAC,GAAGrE,QAAQ,CAACS,OAAO;UACpD,IAAI4D,KAAG,GAAG,CAAC,EAAE;YACXf,MAAM,CAAChB,KAAG,CAACiC,KAAK,CAAC,CAAC,EAAEF,KAAG,GAAG,CAAC,CAAC,GAAG/B,KAAG,CAACiC,KAAK,CAACF,KAAG,CAAC,EAAEA,KAAG,GAAG,CAAC,CAAC;YACvD;YACA,IAAIzD,SAAS,CAACH,OAAO,EAAE;cAAEG,SAAS,CAACH,OAAO,GAAG,KAAK;cAAEE,SAAS,CAAC,KAAK,CAAC;YAAE;UACxE;UACA;QACF;;QAEA;QACA,IAAI2E,GAAG,KAAK,GAAG,IAAItF,QAAQ,CAACS,OAAO,CAACpD,KAAK,KAAK,EAAE,EAAE;;QAElD;QACA,IAAIiI,GAAG,CAACjG,MAAM,KAAK,CAAC,IAAIiG,GAAG,CAACgB,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;UACjD,MAAM;YAAEjJ,KAAK,EAAEiF,KAAG;YAAErD,MAAM,EAAEoF;UAAI,CAAC,GAAGrE,QAAQ,CAACS,OAAO;UACpD6C,MAAM,CAAChB,KAAG,CAACiC,KAAK,CAAC,CAAC,EAAEF,KAAG,CAAC,GAAGiB,GAAG,GAAGhD,KAAG,CAACiC,KAAK,CAACF,KAAG,CAAC,EAAEA,KAAG,GAAG,CAAC,CAAC;UACzD;UACA,IAAIzD,SAAS,CAACH,OAAO,EAAE;YAAEG,SAAS,CAACH,OAAO,GAAG,KAAK;YAAEE,SAAS,CAAC,KAAK,CAAC;UAAE;UACtE;QACF;;QAEA;QACA,IAAI2E,GAAG,CAACjG,MAAM,GAAG,CAAC,IAAI,CAACiG,GAAG,CAAClJ,UAAU,CAAC,MAAM,CAAC,EAAE;UAC7C,MAAMmK,UAAU,GAAG,CAAC,GAAGjB,GAAG,CAAC;UAC3B,IAAIiB,UAAU,CAAClH,MAAM,KAAK,CAAC,EAAE;YAC3B,MAAM;cAAEhC,KAAK,EAAEiF,KAAG;cAAErD,MAAM,EAAEoF;YAAI,CAAC,GAAGrE,QAAQ,CAACS,OAAO;YACpD6C,MAAM,CAAChB,KAAG,CAACiC,KAAK,CAAC,CAAC,EAAEF,KAAG,CAAC,GAAGiB,GAAG,GAAGhD,KAAG,CAACiC,KAAK,CAACF,KAAG,CAAC,EAAEA,KAAG,GAAGiB,GAAG,CAACjG,MAAM,CAAC;UACpE,CAAC,MAAM;YACLkE,YAAY,CAAC+B,GAAG,CAAC;UACnB;UACA,IAAI1E,SAAS,CAACH,OAAO,EAAE;YAAEG,SAAS,CAACH,OAAO,GAAG,KAAK;YAAEE,SAAS,CAAC,KAAK,CAAC;UAAE;UACtE;QACF;QAEA;MACF;;MAEA;MACA;MACA;MACA,IAAIO,WAAW,CAACT,OAAO,EAAE;QACvB,MAAM+F,SAAS,GAAGnF,aAAa,CAACZ,OAAO,CAACpB,MAAM,GAAG,CAAC;QAClD,MAAMoH,UAAU,GAAGrE,mBAAmB,CAAC3B,OAAO,KAAK,IAAI;;QAEvD;QACA,IAAI6E,GAAG,KAAK,MAAM,IAAIA,GAAG,KAAK,MAAM,EAAE;UACpCtC,eAAe,CAAC,KAAK,CAAC;UACtBC,iBAAiB,CAAC,EAAE,CAAC;UACrBC,gBAAgB,CAAC,CAAC,CAAC;UACnBb,uBAAuB,CAAC,IAAI,CAAC;UAC7BiB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;UACb;QACF;;QAEA;QACA,IAAIgC,GAAG,KAAK,IAAI,EAAE;;QAElB;QACA,IAAIkB,SAAS,EAAE;UACb,IAAIlB,GAAG,KAAK,IAAI,IAAIA,GAAG,KAAK,IAAI,EAAE;YAChC,MAAMoB,GAAG,GAAGxM,iBAAiB,CAACmH,aAAa,CAACZ,OAAO,EAAEe,YAAY,CAACf,OAAO,CAAC;YAC1E,IAAIiG,GAAG,EAAE;cACP1D,eAAe,CAAC,KAAK,CAAC;cACtBC,iBAAiB,CAAC,EAAE,CAAC;cACrBC,gBAAgB,CAAC,CAAC,CAAC;cACnBb,uBAAuB,CAAC,IAAI,CAAC;cAC7BiB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;cACbhD,YAAY,CAACG,OAAO,CAACiG,GAAG,CAAC7H,IAAI,CAAC;YAChC;YACA;UACF;UACA,IAAIyG,GAAG,KAAK,QAAQ,EAAE;YACpBpC,gBAAgB,CAAC4C,IAAI,CAACE,GAAG,CAAC,CAAC,EAAExE,YAAY,CAACf,OAAO,GAAG,CAAC,CAAC,CAAC;YACvD;UACF;UACA,IAAI6E,GAAG,KAAK,QAAQ,EAAE;YACpB,MAAMqB,KAAK,GAAG1M,0BAA0B,CAACoH,aAAa,CAACZ,OAAO,CAAC;YAC/DyC,gBAAgB,CAAC4C,IAAI,CAACC,GAAG,CAACY,KAAK,GAAG,CAAC,EAAEnF,YAAY,CAACf,OAAO,GAAG,CAAC,CAAC,CAAC;YAC/D;UACF;UACA,IAAI6E,GAAG,KAAK,MAAM,IAAIA,GAAG,KAAK,IAAI,EAAE;YAClC,MAAMP,GAAC,GAAG1D,aAAa,CAACZ,OAAO;YAC/B,IAAIsE,GAAC,CAAC1F,MAAM,GAAG,CAAC,EAAE;cAChB4D,iBAAiB,CAAC8B,GAAC,CAACR,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;cACjCrB,gBAAgB,CAAC,CAAC,CAAC;YACrB,CAAC,MAAM;cACL;cACAD,iBAAiB,CAAC,EAAE,CAAC;cACrBC,gBAAgB,CAAC,CAAC,CAAC;cACnBb,uBAAuB,CAAC,IAAI,CAAC;YAC/B;YACA;UACF;UACA,IAAIiD,GAAG,CAAClJ,UAAU,CAAC,MAAM,CAAC,EAAE;UAC5B,IAAIkJ,GAAG,CAACjG,MAAM,KAAK,CAAC,IAAIiG,GAAG,CAACgB,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YACjDrD,iBAAiB,CAAC5B,aAAa,CAACZ,OAAO,GAAG6E,GAAG,CAAC;YAC9CpC,gBAAgB,CAAC,CAAC,CAAC;YACnB;UACF;UACA;QACF;;QAEA;QACA,IAAIuD,UAAU,EAAE;UACd,MAAMG,MAAM,GAAGxE,mBAAmB,CAAC3B,OAAQ;UAC3C,IAAI6E,GAAG,KAAK,IAAI,IAAIA,GAAG,KAAK,IAAI,EAAE;YAChC,MAAMoB,KAAG,GAAGrM,kBAAkB,CAACuM,MAAM,EAAEpF,YAAY,CAACf,OAAO,CAAC;YAC5D,IAAIiG,KAAG,EAAE;cACP1D,eAAe,CAAC,KAAK,CAAC;cACtBC,iBAAiB,CAAC,EAAE,CAAC;cACrBC,gBAAgB,CAAC,CAAC,CAAC;cACnBb,uBAAuB,CAAC,IAAI,CAAC;cAC7BiB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;cACbhD,YAAY,CAACG,OAAO,CAACiG,KAAG,CAAC7H,IAAI,CAAC;YAChC;YACA;UACF;UACA,IAAIyG,GAAG,KAAK,QAAQ,EAAE;YACpBpC,gBAAgB,CAAC4C,IAAI,CAACE,GAAG,CAAC,CAAC,EAAExE,YAAY,CAACf,OAAO,GAAG,CAAC,CAAC,CAAC;YACvD;UACF;UACA,IAAI6E,GAAG,KAAK,QAAQ,EAAE;YACpB,MAAMqB,OAAK,GAAGvM,uBAAuB,CAACwM,MAAM,CAAC;YAC7C1D,gBAAgB,CAAC4C,IAAI,CAACC,GAAG,CAACY,OAAK,GAAG,CAAC,EAAEnF,YAAY,CAACf,OAAO,GAAG,CAAC,CAAC,CAAC;YAC/D;UACF;UACA;UACA,IAAI6E,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,MAAM,IAAIA,GAAG,KAAK,IAAI,EAAE;YACtDpC,gBAAgB,CAAC0D,MAAM,CAAC,CAAC,CAAC;YAC1BvE,uBAAuB,CAAC,IAAI,CAAC;YAC7B;UACF;UACA,IAAIiD,GAAG,CAAClJ,UAAU,CAAC,MAAM,CAAC,EAAE;UAC5B;UACA,IAAIkJ,GAAG,CAACjG,MAAM,KAAK,CAAC,IAAIiG,GAAG,CAACgB,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YACjDjE,uBAAuB,CAAC,IAAI,CAAC;YAC7BY,iBAAiB,CAACqC,GAAG,CAAC;YACtBpC,gBAAgB,CAAC,CAAC,CAAC;YACnB;UACF;UACA;QACF;;QAEA;QACA,IAAIoC,GAAG,KAAK,IAAI,IAAIA,GAAG,KAAK,IAAI,IAAIA,GAAG,KAAK,QAAQ,EAAE;UACpD;UACA,MAAMsB,QAAM,GAAGpF,YAAY,CAACf,OAAO;UACnC,IAAImG,QAAM,IAAI,CAAC,IAAIA,QAAM,GAAGzM,gBAAgB,CAAC,CAAC,EAAE;YAC9CkI,uBAAuB,CAACuE,QAAM,CAAC;YAC/B1D,gBAAgB,CAAC,CAAC,CAAC;UACrB;UACA;QACF;QACA,IAAIoC,GAAG,KAAK,QAAQ,EAAE;UACpBpC,gBAAgB,CAAC4C,IAAI,CAACE,GAAG,CAAC,CAAC,EAAExE,YAAY,CAACf,OAAO,GAAG,CAAC,CAAC,CAAC;UACvD;QACF;QACA,IAAI6E,GAAG,KAAK,QAAQ,EAAE;UACpBpC,gBAAgB,CAAC4C,IAAI,CAACC,GAAG,CAAC5L,gBAAgB,CAAC,CAAC,GAAG,CAAC,EAAEqH,YAAY,CAACf,OAAO,GAAG,CAAC,CAAC,CAAC;UAC5E;QACF;QACA,IAAI6E,GAAG,KAAK,MAAM,IAAIA,GAAG,KAAK,IAAI,EAAE;UAClC;UACAtC,eAAe,CAAC,KAAK,CAAC;UACtBC,iBAAiB,CAAC,EAAE,CAAC;UACrBC,gBAAgB,CAAC,CAAC,CAAC;UACnBb,uBAAuB,CAAC,IAAI,CAAC;UAC7BiB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;UACb;QACF;QACA,IAAIgC,GAAG,CAAClJ,UAAU,CAAC,MAAM,CAAC,EAAE;QAC5B;QACA,IAAIkJ,GAAG,CAACjG,MAAM,KAAK,CAAC,IAAIiG,GAAG,CAACgB,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;UACjDrD,iBAAiB,CAACqC,GAAG,CAAC;UACtBpC,gBAAgB,CAAC,CAAC,CAAC;UACnB;QACF;QAEA;MACF;;MAEA;MACA;MACA;;MAEA;MACA,IAAIoC,GAAG,CAAC3I,QAAQ,CAAC,WAAW,CAAC,EAAE;QAC7BgG,SAAS,CAAClC,OAAO,GAAG,IAAI;QACxB,IAAIxE,MAAI,GAAGqJ,GAAG,CAAClH,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;QACpEwE,WAAW,CAACnC,OAAO,IAAIxE,MAAI;QAC3B,IAAIqJ,GAAG,CAAC3I,QAAQ,CAAC,WAAW,CAAC,EAAE;UAC7BgG,SAAS,CAAClC,OAAO,GAAG,KAAK;UACzB,MAAMgE,OAAK,GAAG7B,WAAW,CAACnC,OAAO;UACjCmC,WAAW,CAACnC,OAAO,GAAG,EAAE;UACxB8C,YAAY,CAACkB,OAAK,CAAC;QACrB;QACA;MACF;MAEA,IAAI9B,SAAS,CAAClC,OAAO,EAAE;QACrB,IAAI6E,GAAG,CAAC3I,QAAQ,CAAC,WAAW,CAAC,EAAE;UAC7BgG,SAAS,CAAClC,OAAO,GAAG,KAAK;UACzBmC,WAAW,CAACnC,OAAO,IAAI6E,GAAG,CAAClH,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;UACrD,MAAMqG,OAAK,GAAG7B,WAAW,CAACnC,OAAO;UACjCmC,WAAW,CAACnC,OAAO,GAAG,EAAE;UACxB8C,YAAY,CAACkB,OAAK,CAAC;QACrB,CAAC,MAAM;UACL7B,WAAW,CAACnC,OAAO,IAAI6E,GAAG;QAC5B;QACA;MACF;;MAEA;MACA,MAAMC,KAAG,GAAG3L,eAAe,CAAC,CAAC;MAC7B,MAAM4L,UAAQ,GAAG3L,oBAAoB,CAAC0L,KAAG,CAACE,IAAI,CAAC;MAC/C,MAAMC,YAAU,GAAG7L,oBAAoB,CAAC0L,KAAG,CAACI,aAAa,CAAC;MAC1D,MAAMC,cAAY,GAAG/L,oBAAoB,CAAC0L,KAAG,CAACM,eAAe,CAAC;MAC9D,IAAIP,GAAG,KAAKE,UAAQ,IAAIF,GAAG,KAAKI,YAAU,IAAIJ,GAAG,KAAKM,cAAY,EAAE;;MAEpE;MACA,IAAIN,GAAG,KAAK,IAAI,IAAIA,GAAG,KAAK,IAAI,EAAE;QAChCvE,YAAY,CAAC,CAAC;QACd;MACF;;MAEA;MACA,IAAIuE,GAAG,KAAK,IAAI,EAAE;;MAElB;MACA,IAAIA,GAAG,KAAK,MAAM,IAAIA,GAAG,KAAK,IAAI,EAAE;QAClC,MAAM;UAAEjI,KAAK,EAAEiF,KAAG;UAAErD,MAAM,EAAEoF;QAAI,CAAC,GAAGrE,QAAQ,CAACS,OAAO;QACpD,IAAI4D,KAAG,GAAG,CAAC,EAAE;UACXf,MAAM,CAAChB,KAAG,CAACiC,KAAK,CAAC,CAAC,EAAEF,KAAG,GAAG,CAAC,CAAC,GAAG/B,KAAG,CAACiC,KAAK,CAACF,KAAG,CAAC,EAAEA,KAAG,GAAG,CAAC,CAAC;QACzD,CAAC,MAAM,IAAI/B,KAAG,KAAK,EAAE,EAAE;UACrB;UACA,IAAIS,aAAa,CAACtC,OAAO,EAAE;YACzBqC,aAAa,CAAC,IAAI,CAAC;UACrB,CAAC,MAAM,IAAIb,eAAe,CAACxB,OAAO,CAACpB,MAAM,GAAG,CAAC,EAAE;YAC7C2C,eAAe,CAAC2B,MAAI,IAAIA,MAAI,CAACY,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;UAC5C,CAAC,MAAM,IAAIzC,QAAQ,CAACrB,OAAO,CAACpB,MAAM,GAAG,CAAC,EAAE;YACtCwC,QAAQ,CAAC8B,MAAI,IAAIA,MAAI,CAACY,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;UACrC,CAAC,MAAM,IAAI5C,SAAS,CAAClB,OAAO,CAACpB,MAAM,GAAG,CAAC,EAAE;YACvCqC,SAAS,CAACiC,MAAI,IAAIA,MAAI,CAACY,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;UACtC;QACF;QACA;MACF;;MAEA;MACA,IAAIe,GAAG,KAAKzL,oBAAoB,CAAC0L,KAAG,CAACsB,UAAU,CAAC,EAAE;QAChDvD,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACb5B,SAAS,CAAC,EAAE,CAAC;QACbG,QAAQ,CAAC,EAAE,CAAC;QACZiB,aAAa,CAAC,IAAI,CAAC;QACnB;MACF;;MAEA;MACA,IAAIwC,GAAG,KAAKzL,oBAAoB,CAAC0L,KAAG,CAACuB,WAAW,CAAC,EAAE;QACjD,MAAM;UAAEzJ,KAAK,EAAEiF,KAAG;UAAErD,MAAM,EAAEoF;QAAI,CAAC,GAAGrE,QAAQ,CAACS,OAAO;QACpD,MAAMsG,MAAM,GAAGzE,KAAG,CAACiC,KAAK,CAAC,CAAC,EAAEF,KAAG,CAAC;QAChC,MAAM2C,KAAK,GAAGD,MAAM,CAACC,KAAK,CAAC,SAAS,CAAC;QACrC,IAAIA,KAAK,EAAE;UACT,MAAMC,GAAG,GAAGD,KAAK,CAAC,CAAC,CAAC,CAAC3H,MAAM;UAC3BiE,MAAM,CAAChB,KAAG,CAACiC,KAAK,CAAC,CAAC,EAAEF,KAAG,GAAG4C,GAAG,CAAC,GAAG3E,KAAG,CAACiC,KAAK,CAACF,KAAG,CAAC,EAAEA,KAAG,GAAG4C,GAAG,CAAC;QAC7D;QACA;MACF;;MAEA;MACA,IAAI3B,GAAG,KAAKzL,oBAAoB,CAAC0L,KAAG,CAAC2B,IAAI,CAAC,EAAE;QAC1C5D,MAAM,CAACtD,QAAQ,CAACS,OAAO,CAACpD,KAAK,EAAE,CAAC,CAAC;QACjC;MACF;;MAEA;MACA,IAAIiI,GAAG,CAAClJ,UAAU,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM;UAAEiB,KAAK,EAAEiF,MAAG;UAAErD,MAAM,EAAEoF;QAAI,CAAC,GAAGrE,QAAQ,CAACS,OAAO;QAEpD,IAAI6E,GAAG,KAAK,QAAQ,EAAE;UAAE;UACtBhC,MAAM,CAAChB,MAAG,EAAEwD,IAAI,CAACC,GAAG,CAAC1B,KAAG,GAAG,CAAC,EAAE/B,MAAG,CAACjD,MAAM,CAAC,CAAC;QAC5C,CAAC,MAAM,IAAIiG,GAAG,KAAK,QAAQ,EAAE;UAAE;UAC7BhC,MAAM,CAAChB,MAAG,EAAEwD,IAAI,CAACE,GAAG,CAAC3B,KAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC,MAAM,IAAIiB,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,SAAS,EAAE;UAAE;UAClDhC,MAAM,CAAChB,MAAG,EAAE,CAAC,CAAC;QAChB,CAAC,MAAM,IAAIgD,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,SAAS,EAAE;UAAE;UAClDhC,MAAM,CAAChB,MAAG,EAAEA,MAAG,CAACjD,MAAM,CAAC;QACzB,CAAC,MAAM,IAAIiG,GAAG,KAAK,SAAS,EAAE;UAAE;UAC9B,IAAIjB,KAAG,GAAG/B,MAAG,CAACjD,MAAM,EAAE;YACpBiE,MAAM,CAAChB,MAAG,CAACiC,KAAK,CAAC,CAAC,EAAEF,KAAG,CAAC,GAAG/B,MAAG,CAACiC,KAAK,CAACF,KAAG,GAAG,CAAC,CAAC,EAAEA,KAAG,CAAC;UACrD;QACF,CAAC,MAAM,IAAIiB,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,QAAQ,EAAE;UAAE;UACjD,MAAMtI,OAAK,GAAGsF,MAAG,CAACnD,KAAK,CAAC,IAAI,CAAC;UAC7B,IAAInC,OAAK,CAACqC,MAAM,GAAG,CAAC,EAAE;YACpB;YACA,MAAM;cAAEC,IAAI,EAAE2G,SAAO;cAAE1G,GAAG,EAAE2G;YAAO,CAAC,GAAGlH,gBAAgB,CAACsD,MAAG,EAAE+B,KAAG,CAAC;YACjE,MAAM8B,YAAU,GAAGb,GAAG,KAAK,QAAQ,GAC/BQ,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEC,SAAO,GAAG,CAAC,CAAC,GACxBH,IAAI,CAACC,GAAG,CAAC/I,OAAK,CAACqC,MAAM,GAAG,CAAC,EAAE4G,SAAO,GAAG,CAAC,CAAC;YAC3C,IAAIE,YAAU,KAAKF,SAAO,EAAE;cAC1B,MAAMG,WAAS,GAAGN,IAAI,CAACC,GAAG,CAACG,QAAM,EAAElJ,OAAK,CAACmJ,YAAU,CAAC,CAAC9G,MAAM,CAAC;cAC5D,IAAIgH,WAAS,GAAG,CAAC;cACjB,KAAK,IAAIjH,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAG+G,YAAU,EAAE/G,GAAC,EAAE,EAAEiH,WAAS,IAAIrJ,OAAK,CAACoC,GAAC,CAAC,CAACC,MAAM,GAAG,CAAC;cACrEgH,WAAS,IAAID,WAAS;cACtB9C,MAAM,CAAChB,MAAG,EAAE+D,WAAS,CAAC;YACxB;UACF,CAAC,MAAM,IAAIf,GAAG,KAAK,QAAQ,EAAE;YAC3B;YACA,IAAI/C,UAAU,CAAC9B,OAAO,CAACpB,MAAM,KAAK,CAAC,EAAE,CAAE,iBAAkB,MACpD;cACH,IAAImD,eAAe,CAAC/B,OAAO,KAAK,CAAC,CAAC,EAAEgC,aAAa,CAAChC,OAAO,GAAG6B,MAAG;cAC/D,MAAM6E,MAAM,GAAGrB,IAAI,CAACC,GAAG,CAACvD,eAAe,CAAC/B,OAAO,GAAG,CAAC,EAAE8B,UAAU,CAAC9B,OAAO,CAACpB,MAAM,GAAG,CAAC,CAAC;cACnFmD,eAAe,CAAC/B,OAAO,GAAG0G,MAAM;cAChC,MAAMC,IAAI,GAAG7E,UAAU,CAAC9B,OAAO,CAAC8B,UAAU,CAAC9B,OAAO,CAACpB,MAAM,GAAG,CAAC,GAAG8H,MAAM,CAAC;cACvE7D,MAAM,CAAC8D,IAAI,EAAEA,IAAI,CAAC/H,MAAM,CAAC;YAC3B;UACF,CAAC,MAAM;YACL;YACA,IAAImD,eAAe,CAAC/B,OAAO,IAAI,CAAC,CAAC,EAAE,CAAE,yBAA0B,MAC1D;cACH,MAAM0G,QAAM,GAAG3E,eAAe,CAAC/B,OAAO,GAAG,CAAC;cAC1C+B,eAAe,CAAC/B,OAAO,GAAG0G,QAAM;cAChC,IAAIA,QAAM,GAAG,CAAC,EAAE;gBACd7D,MAAM,CAACb,aAAa,CAAChC,OAAO,EAAEgC,aAAa,CAAChC,OAAO,CAACpB,MAAM,CAAC;cAC7D,CAAC,MAAM;gBACL,MAAM+H,MAAI,GAAG7E,UAAU,CAAC9B,OAAO,CAAC8B,UAAU,CAAC9B,OAAO,CAACpB,MAAM,GAAG,CAAC,GAAG8H,QAAM,CAAC;gBACvE7D,MAAM,CAAC8D,MAAI,EAAEA,MAAI,CAAC/H,MAAM,CAAC;cAC3B;YACF;UACF;QACF;QACA;QACA;MACF;;MAEA;MACA,IAAIiG,GAAG,KAAK,MAAM,EAAE;QAClB,MAAM;UAAEjI,KAAK,EAALA;QAAM,CAAC,GAAG2C,QAAQ,CAACS,OAAO;QAClC,IAAIpD,OAAK,IAAIyE,QAAQ,CAACrB,OAAO,CAACpB,MAAM,GAAG,CAAC,EAAE;UACxCiE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;UACb5B,SAAS,CAAC,EAAE,CAAC;UACbG,QAAQ,CAAC,EAAE,CAAC;UACZiB,aAAa,CAAC,IAAI,CAAC;QACrB;QACA;MACF;;MAEA;MACA,IAAIwC,GAAG,CAACjG,MAAM,GAAG,CAAC,IAAI,CAACiG,GAAG,CAAClJ,UAAU,CAAC,MAAM,CAAC,EAAE;QAC7C,MAAMmK,YAAU,GAAG,CAAC,GAAGjB,GAAG,CAAC;QAC3B,IAAIiB,YAAU,CAAClH,MAAM,KAAK,CAAC,EAAE;UAC3B;UACA,MAAM;YAAEhC,KAAK,EAAEiF,MAAG;YAAErD,MAAM,EAAEoF;UAAI,CAAC,GAAGrE,QAAQ,CAACS,OAAO;UACpD6C,MAAM,CAAChB,MAAG,CAACiC,KAAK,CAAC,CAAC,EAAEF,KAAG,CAAC,GAAGiB,GAAG,GAAGhD,MAAG,CAACiC,KAAK,CAACF,KAAG,CAAC,EAAEA,KAAG,GAAGiB,GAAG,CAACjG,MAAM,CAAC;QACpE,CAAC,MAAM;UACLkE,YAAY,CAAC+B,GAAG,CAAC;QACnB;QACA;MACF;;MAEA;MACA,IAAIA,GAAG,CAACjG,MAAM,KAAK,CAAC,IAAIiG,GAAG,CAACgB,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;QACjD,MAAM;UAAEjJ,KAAK,EAAEiF,MAAG;UAAErD,MAAM,EAAEoF;QAAI,CAAC,GAAGrE,QAAQ,CAACS,OAAO;;QAEpD;QACA,IAAI6E,GAAG,KAAK,GAAG,IAAIhD,MAAG,KAAK,EAAE,EAAE;UAC7BU,eAAe,CAAC,IAAI,CAAC;UACrBC,iBAAiB,CAAC,EAAE,CAAC;UACrBC,gBAAgB,CAAC,CAAC,CAAC;UACnB;QACF;QAEAI,MAAM,CAAChB,MAAG,CAACiC,KAAK,CAAC,CAAC,EAAEF,KAAG,CAAC,GAAGiB,GAAG,GAAGhD,MAAG,CAACiC,KAAK,CAACF,KAAG,CAAC,EAAEA,KAAG,GAAG,CAAC,CAAC;MAC3D;IACF,CAAC;IAEDtE,KAAK,CAACsH,EAAE,CAAC,MAAM,EAAEhC,MAAM,CAAC;IACxB,OAAO,MAAM;MAAEtF,KAAK,CAACuH,GAAG,CAAC,MAAM,EAAEjC,MAAM,CAAC;IAAE,CAAC;EAC7C,CAAC,EAAE,CAACtF,KAAK,EAAEH,aAAa,CAAC,CAAC,CAAC,CAAC;;EAE5B;;EAEA;EACA,IAAID,QAAQ,EAAE;IACZ;IACA,IAAI,CAACM,YAAY,CAAC9D,IAAI,CAAC,CAAC,IAAI,CAACuE,MAAM,EAAE,oBAAO/F,IAAA,CAAAF,SAAA,IAAI,CAAC;IAEjD,MAAM8M,aAAa,GAAGtH,YAAY,CAACd,KAAK,CAAC,IAAI,CAAC;IAC9C,MAAM;MAAEG,IAAI,EAAEkI,WAAW;MAAEjI,GAAG,EAAEkI;IAAW,CAAC,GAAGxH,YAAY,GACvDjB,gBAAgB,CAACiB,YAAY,EAAEE,aAAa,CAAC,GAC7C;MAAEb,IAAI,EAAE,CAAC;MAAEC,GAAG,EAAE;IAAE,CAAC;IAEvB,oBACE5E,IAAA,CAACxB,GAAG;MAACuO,aAAa,EAAC,QAAQ;MAAAC,QAAA,EAGxBJ,aAAa,CAAClI,MAAM,IAAI,CAAC,gBACxBxE,KAAA,CAAC1B,GAAG;QAAAwO,QAAA,gBACFhN,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAACkO,UAAW;UAAAF,QAAA,EAAE;QAAI,CAAO,CAAC,EAC5C,CAAC1H,YAAY,gBACZtF,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAACkO,UAAW;UAACC,IAAI,EAAC,UAAU;UAAAH,QAAA,EAC5CjH,MAAM,GAAG,8BAA8B,GAAG;QAAG,CAC1C,CAAC,gBAEP7F,KAAA,CAAC1B,GAAG;UAAAwO,QAAA,gBACF9M,KAAA,CAACzB,IAAI;YAACwO,KAAK,EAAEjO,MAAM,CAACoO,GAAI;YAAAJ,QAAA,GACrB1H,YAAY,CAACsE,KAAK,CAAC,CAAC,EAAEpE,aAAa,CAAC,eACrCxF,IAAA,CAACvB,IAAI;cAAC4O,OAAO;cAAAL,QAAA,EAAExH,aAAa,GAAGF,YAAY,CAACZ,MAAM,GAAGY,YAAY,CAACE,aAAa,CAAC,GAAG;YAAG,CAAO,CAAC,EAC7FA,aAAa,GAAGF,YAAY,CAACZ,MAAM,GAAGY,YAAY,CAACsE,KAAK,CAACpE,aAAa,GAAG,CAAC,CAAC,GAAG,EAAE;UAAA,CAC7E,CAAC,EACNO,MAAM,iBAAI/F,IAAA,CAACvB,IAAI;YAACwO,KAAK,EAAEjO,MAAM,CAAC+B,OAAQ;YAAAiM,QAAA,EAAC;UAAS,CAAM,CAAC;QAAA,CACrD,CACN;MAAA,CACE,CAAC;MAAA;MAEN;MACA9M,KAAA,CAAC1B,GAAG;QAACuO,aAAa,EAAC,QAAQ;QAAAC,QAAA,GACxBJ,aAAa,CAAC3D,GAAG,CAAC,CAACtE,MAAI,EAAEF,GAAC,KAAK;UAC9B,MAAM6I,cAAc,GAAG7I,GAAC,KAAKoI,WAAW;UACxC,oBACE3M,KAAA,CAAC1B,GAAG;YAAAwO,QAAA,gBACFhN,IAAA,CAACvB,IAAI;cAACwO,KAAK,EAAEjO,MAAM,CAACkO,UAAW;cAAAF,QAAA,EAAEvI,GAAC,KAAK,CAAC,GAAG,IAAI,GAAG;YAAI,CAAO,CAAC,EAC7D6I,cAAc,gBACbpN,KAAA,CAACzB,IAAI;cAACwO,KAAK,EAAEjO,MAAM,CAACoO,GAAI;cAAAJ,QAAA,GACrBrI,MAAI,CAACiF,KAAK,CAAC,CAAC,EAAEkD,UAAU,CAAC,eAC1B9M,IAAA,CAACvB,IAAI;gBAAC4O,OAAO;gBAAAL,QAAA,EAAEF,UAAU,GAAGnI,MAAI,CAACD,MAAM,GAAGC,MAAI,CAACmI,UAAU,CAAC,GAAG;cAAG,CAAO,CAAC,EACvEA,UAAU,GAAGnI,MAAI,CAACD,MAAM,GAAGC,MAAI,CAACiF,KAAK,CAACkD,UAAU,GAAG,CAAC,CAAC,GAAG,EAAE;YAAA,CACvD,CAAC,gBAEP9M,IAAA,CAACvB,IAAI;cAACwO,KAAK,EAAEjO,MAAM,CAACoO,GAAI;cAAAJ,QAAA,EAAErI;YAAI,CAAO,CACtC;UAAA,GAVOF,GAWL,CAAC;QAEV,CAAC,CAAC,EACDsB,MAAM,iBACL/F,IAAA,CAACxB,GAAG;UAAC+O,UAAU,EAAE,CAAE;UAAAP,QAAA,eACjBhN,IAAA,CAACvB,IAAI;YAACwO,KAAK,EAAEjO,MAAM,CAAC+B,OAAQ;YAAAiM,QAAA,EAAC;UAAQ,CAAM;QAAC,CACzC,CACN;MAAA,CACE;IACN,CACE,CAAC;EAEV;;EAEA;EACA,IAAI3G,QAAQ,EAAE;IACZ;IACA,IAAImH,UAA2B;IAC/B,IAAIhH,UAAU,EAAE;MACd;MACAgH,UAAU,gBACRtN,KAAA,CAAC1B,GAAG;QAAAwO,QAAA,gBACFhN,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAACyB,KAAM;UAACgN,IAAI;UAAAT,QAAA,EAAE;QAAI,CAAO,CAAC,eAC7C9M,KAAA,CAACzB,IAAI;UAAAuO,QAAA,GACFxG,UAAU,eACXxG,IAAA,CAACvB,IAAI;YAAC4O,OAAO;YAAAL,QAAA,EAAE;UAAG,CAAO,CAAC;QAAA,CACtB,CAAC;MAAA,CACJ,CACN;IACH,CAAC,MAAM,IAAIzF,gBAAgB,KAAK,IAAI,EAAE;MACpC;MACA,MAAMmG,QAAQ,GAAG/N,gBAAgB,CAAC4H,gBAAgB,CAAC;MACnD,MAAMoG,QAAQ,GAAG/N,gBAAgB,CAAC2H,gBAAgB,CAAC;MACnDiG,UAAU,gBACRtN,KAAA,CAAC1B,GAAG;QAAAwO,QAAA,gBACFhN,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAACyB,KAAM;UAACgN,IAAI;UAAAT,QAAA,EAAE;QAAI,CAAO,CAAC,eAC7ChN,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEU,QAAS;UAACF,IAAI;UAAAT,QAAA,EAAEU;QAAQ,CAAO,CAAC,eAC7C1N,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAAC4O,QAAS;UAAAZ,QAAA,EAAE;QAAK,CAAO,CAAC,eAC5ChN,IAAA,CAACvB,IAAI;UAAC4O,OAAO;UAAAL,QAAA,EAAE;QAAG,CAAO,CAAC;MAAA,CACvB,CACN;IACH,CAAC,MAAM;MACL;MACAQ,UAAU,gBACRtN,KAAA,CAAC1B,GAAG;QAAAwO,QAAA,gBACFhN,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAACyB,KAAM;UAACgN,IAAI;UAAAT,QAAA,EAAE;QAAI,CAAO,CAAC,eAC7C9M,KAAA,CAACzB,IAAI;UAAAuO,QAAA,gBACHhN,IAAA,CAACvB,IAAI;YAAC4O,OAAO;YAAAL,QAAA,EAAE;UAAG,CAAO,CAAC,eAC1BhN,IAAA,CAACvB,IAAI;YAACwO,KAAK,EAAEjO,MAAM,CAACoO,GAAI;YAAAJ,QAAA,EAAC;UAAe,CAAM,CAAC;QAAA,CAC3C,CAAC;MAAA,CACJ,CACN;IACH;;IAEA;IACA,MAAMa,IAAI,GAAGtG,gBAAgB,KAAK,IAAI,IAAI,CAACf,UAAU,GACjD,4BAA4B,GAC5B,kBAAkB;IAEtB,oBACEtG,KAAA,CAAC1B,GAAG;MAACuO,aAAa,EAAC,QAAQ;MAAAC,QAAA,GAExBQ,UAAU,eACXxN,IAAA,CAACb,SAAS;QAACgK,MAAM,EAAE3C,UAAW;QAACsH,aAAa,EAAEnH,SAAU;QAACY,gBAAgB,EAAEA;MAAiB,CAAE,CAAC,eAC/FvH,IAAA,CAACvB,IAAI;QAACwO,KAAK,EAAEjO,MAAM,CAACkO,UAAW;QAAAF,QAAA,EAAEa;MAAI,CAAO,CAAC;IAAA,CAC1C,CAAC;EAEV;;EAEA;;EAEA,MAAMxL,OAAK,GAAGiD,YAAY,CAACd,KAAK,CAAC,IAAI,CAAC;EACtC,MAAM;IAAEG,IAAI,EAAEoJ,UAAU;IAAEnJ,GAAG,EAAEoJ;EAAU,CAAC,GAAG1I,YAAY,GACrDjB,gBAAgB,CAACiB,YAAY,EAAEE,aAAa,CAAC,GAC7C;IAAEb,IAAI,EAAE,CAAC;IAAEC,GAAG,EAAE;EAAE,CAAC;;EAEvB;EACA,MAAMqJ,WAAW,GAAG5L,OAAK,CAACqC,MAAM,GAAGrE,iBAAiB;EACpD,MAAM6N,YAAY,GAAGD,WAAW,GAC5B,CAAC,GAAG5L,OAAK,CAACuH,KAAK,CAAC,CAAC,EAAEvJ,iBAAiB,GAAG,CAAC,CAAC,EAAE,KAAKgC,OAAK,CAACqC,MAAM,GAAGrE,iBAAiB,GAAG,CAAC,aAAa,CAAC,GAClGgC,OAAK;EAET,oBACEnC,KAAA,CAAC1B,GAAG;IAACuO,aAAa,EAAC,QAAQ;IAAAC,QAAA,GAExB,CAAClG,MAAM,CAACpC,MAAM,GAAG,CAAC,IAAIuC,KAAK,CAACvC,MAAM,GAAG,CAAC,IAAI0C,YAAY,CAAC1C,MAAM,GAAG,CAAC,IAAIwD,UAAU,kBAC9EhI,KAAA,CAAC1B,GAAG;MAAAwO,QAAA,gBACFhN,IAAA,CAACvB,IAAI;QAAAuO,QAAA,EAAC;MAAE,CAAM,CAAC,EACd5F,YAAY,CAAC6B,GAAG,CAAC,CAAC7G,KAAG,EAAEqC,GAAC,kBACvBvE,KAAA,CAACzB,IAAI;QAAAuO,QAAA,gBACHhN,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAE1M,cAAc,CAAC6B,KAAG,CAACL,IAAI,CAAC,IAAI,MAAO;UAAAiL,QAAA,EAAC;QAAC,CAAM,CAAC,eACzD9M,KAAA,CAACzB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAACmP,SAAU;UAAAnB,QAAA,GAAE5K,KAAG,CAACL,IAAI,EAAC,IAAE,EAACK,KAAG,CAACH,KAAK;QAAA,CAAO,CAAC,eAC7DjC,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAE1M,cAAc,CAAC6B,KAAG,CAACL,IAAI,CAAC,IAAI,MAAO;UAAAiL,QAAA,EAAC;QAAC,CAAM,CAAC,eACzDhN,IAAA,CAACvB,IAAI;UAAAuO,QAAA,EAAC;QAAC,CAAM,CAAC;MAAA,GAJL,OAAOvI,GAAC,EAKb,CACP,CAAC,EACDqC,MAAM,CAACmC,GAAG,CAAC,CAACM,KAAG,EAAE9E,GAAC,kBACjBvE,KAAA,CAACzB,IAAI;QAAAuO,QAAA,gBACHhN,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAACoP,MAAO;UAAApB,QAAA,EAAC;QAAC,CAAM,CAAC,eACpChN,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAACmP,SAAU;UAAAnB,QAAA,EAAEzD,KAAG,CAACrF;QAAI,CAAO,CAAC,eAChDlE,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAACoP,MAAO;UAAApB,QAAA,EAAC;QAAC,CAAM,CAAC,eACpChN,IAAA,CAACvB,IAAI;UAAAuO,QAAA,EAAC;QAAC,CAAM,CAAC;MAAA,GAJL,OAAOvI,GAAC,EAKb,CACP,CAAC,EACDwC,KAAK,CAACgC,GAAG,CAAC,CAACmB,GAAC,EAAE3F,GAAC,kBACdvE,KAAA,CAACzB,IAAI;QAAAuO,QAAA,gBACHhN,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAAC2B,MAAO;UAAAqM,QAAA,EAAC;QAAC,CAAM,CAAC,eACpChN,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAACmP,SAAU;UAAAnB,QAAA,EAAE5C,GAAC,CAAClG;QAAI,CAAO,CAAC,eAC9ClE,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAAC2B,MAAO;UAAAqM,QAAA,EAAC;QAAC,CAAM,CAAC,eACpChN,IAAA,CAACvB,IAAI;UAAAuO,QAAA,EAAC;QAAC,CAAM,CAAC;MAAA,GAJL,QAAQvI,GAAC,EAKd,CACP,CAAC,EACDyD,UAAU,iBACThI,KAAA,CAACzB,IAAI;QAAAuO,QAAA,gBACHhN,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAACoP,MAAO;UAAApB,QAAA,EAAC;QAAC,CAAM,CAAC,eACpC9M,KAAA,CAACzB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAACmP,SAAU;UAAAnB,QAAA,GAAC,SAAO,EAAC9E,UAAU,CAAC1D,KAAK,CAAC,IAAI,CAAC,CAACE,MAAM,EAAC,QAAM;QAAA,CAAM,CAAC,eAClF1E,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAACoP,MAAO;UAAApB,QAAA,EAAC;QAAC,CAAM,CAAC;MAAA,CAChC,CACP;IAAA,CACE,CACN,EAGA3K,OAAK,CAACqC,MAAM,IAAI,CAAC,gBAChBxE,KAAA,CAAC1B,GAAG;MAAAwO,QAAA,gBACFhN,IAAA,CAACvB,IAAI;QAACwO,KAAK,EAAEjO,MAAM,CAACyB,KAAM;QAACgN,IAAI;QAAAT,QAAA,EAAE;MAAI,CAAO,CAAC,EAC5C,CAAC1H,YAAY,gBACZpF,KAAA,CAACzB,IAAI;QAAC0O,IAAI,EAAC,UAAU;QAAAH,QAAA,gBACnBhN,IAAA,CAACvB,IAAI;UAAC4O,OAAO;UAAAL,QAAA,EAAC;QAAC,CAAM,CAAC,eACtBhN,IAAA,CAACvB,IAAI;UAACwO,KAAK,EAAEjO,MAAM,CAACoO,GAAI;UAAAJ,QAAA,EAAE,WAAW9H,SAAS,IAAI,OAAO;QAA0B,CAAO,CAAC;MAAA,CACvF,CAAC,gBAEPhF,KAAA,CAACzB,IAAI;QAAAuO,QAAA,GACF1H,YAAY,CAACsE,KAAK,CAAC,CAAC,EAAEpE,aAAa,CAAC,eACrCxF,IAAA,CAACvB,IAAI;UAAC4O,OAAO;UAAAL,QAAA,EAAExH,aAAa,GAAGF,YAAY,CAACZ,MAAM,GAAGY,YAAY,CAACE,aAAa,CAAC,GAAG;QAAG,CAAO,CAAC,EAC7FA,aAAa,GAAGF,YAAY,CAACZ,MAAM,GAAGY,YAAY,CAACsE,KAAK,CAACpE,aAAa,GAAG,CAAC,CAAC,GAAG,EAAE;MAAA,CAC7E,CACP;IAAA,CACE,CAAC;IAAA;IAEN;IACAxF,IAAA,CAACxB,GAAG;MAACuO,aAAa,EAAC,QAAQ;MAAAC,QAAA,EACxBkB,YAAY,CAACjF,GAAG,CAAC,CAACtE,MAAI,EAAEF,GAAC,KAAK;QAC7B,MAAM4J,UAAU,GAAG,CAACJ,WAAW,IAAIxJ,GAAC,GAAGpE,iBAAiB,GAAG,CAAC;QAC5D,MAAMiN,gBAAc,GAAGe,UAAU,IAAI5J,GAAC,KAAKsJ,UAAU;QAErD,oBACE7N,KAAA,CAAC1B,GAAG;UAAAwO,QAAA,gBACFhN,IAAA,CAACvB,IAAI;YAACwO,KAAK,EAAEjO,MAAM,CAACyB,KAAM;YAACgN,IAAI;YAAAT,QAAA,EAAEvI,GAAC,KAAK,CAAC,GAAG,IAAI,GAAG;UAAI,CAAO,CAAC,EAC7D6I,gBAAc,gBACbpN,KAAA,CAACzB,IAAI;YAAAuO,QAAA,GACFrI,MAAI,CAACiF,KAAK,CAAC,CAAC,EAAEoE,SAAS,CAAC,eACzBhO,IAAA,CAACvB,IAAI;cAAC4O,OAAO;cAAAL,QAAA,EAAEgB,SAAS,GAAGrJ,MAAI,CAACD,MAAM,GAAGC,MAAI,CAACqJ,SAAS,CAAC,GAAG;YAAG,CAAO,CAAC,EACrEA,SAAS,GAAGrJ,MAAI,CAACD,MAAM,GAAGC,MAAI,CAACiF,KAAK,CAACoE,SAAS,GAAG,CAAC,CAAC,GAAG,EAAE;UAAA,CACrD,CAAC,gBAEPhO,IAAA,CAACvB,IAAI;YAACwO,KAAK,EAAEoB,UAAU,GAAG7D,SAAS,GAAGxL,MAAM,CAAC4O,QAAS;YAAAZ,QAAA,EAAErI;UAAI,CAAO,CACpE;QAAA,GAVOF,GAWL,CAAC;MAEV,CAAC;IAAC,CACC,CACN;EAAA,CACE,CAAC;AAEV","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NodeManager — unified interactive overlay for node + iMessage management
|
|
3
|
+
*
|
|
4
|
+
* Shows node status (registered, running) and iMessage contacts in one panel.
|
|
5
|
+
* Navigate contacts, toggle allow/block, edit prompts, start/stop node.
|
|
6
|
+
*
|
|
7
|
+
* Sub-modules:
|
|
8
|
+
* - imsg-manager-render.tsx (JSX view component)
|
|
9
|
+
*/
|
|
10
|
+
export interface NodeManagerProps {
|
|
11
|
+
daemonRunning: boolean;
|
|
12
|
+
daemonPid: number | null;
|
|
13
|
+
onClose: (resultMessage?: string) => void;
|
|
14
|
+
onStopDaemon: () => boolean;
|
|
15
|
+
onStartDaemon: () => {
|
|
16
|
+
success: boolean;
|
|
17
|
+
pid?: number;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export declare function NodeManager({ daemonRunning, daemonPid, onClose, onStopDaemon, onStartDaemon }: NodeManagerProps): import("react/jsx-runtime").JSX.Element;
|