whale-code 6.5.5 → 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 +39 -31
- package/bin/{swagmanager-mcp.js → whale-code.js} +40 -2
- 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 +154 -72
- package/dist/cli/app.js.map +1 -0
- package/dist/cli/chat/AgentSelector.js +105 -10
- package/dist/cli/chat/AgentSelector.js.map +1 -0
- package/dist/cli/chat/ChatApp.d.ts +8 -5
- package/dist/cli/chat/ChatApp.js +253 -315
- package/dist/cli/chat/ChatApp.js.map +1 -0
- package/dist/cli/chat/ChatInput.d.ts +3 -2
- package/dist/cli/chat/ChatInput.js +1111 -770
- package/dist/cli/chat/ChatInput.js.map +1 -0
- 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 +44 -15
- package/dist/cli/chat/MarkdownText.js.map +1 -0
- package/dist/cli/chat/MemoryManager.js +182 -46
- package/dist/cli/chat/MemoryManager.js.map +1 -0
- package/dist/cli/chat/MessageList.d.ts +3 -4
- package/dist/cli/chat/MessageList.js +195 -49
- package/dist/cli/chat/MessageList.js.map +1 -0
- package/dist/cli/chat/ModelSelector.js +282 -63
- package/dist/cli/chat/ModelSelector.js.map +1 -0
- package/dist/cli/chat/NodeManager.js +61 -84
- package/dist/cli/chat/NodeManager.js.map +1 -0
- package/dist/cli/chat/NodeSelector.js +171 -30
- package/dist/cli/chat/NodeSelector.js.map +1 -0
- package/dist/cli/chat/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 +282 -57
- package/dist/cli/chat/PlanApproval.js.map +1 -0
- 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 +560 -144
- package/dist/cli/chat/RewindViewer.js.map +1 -0
- package/dist/cli/chat/SessionManager.js +138 -30
- package/dist/cli/chat/SessionManager.js.map +1 -0
- package/dist/cli/chat/SlashMenu.d.ts +7 -24
- package/dist/cli/chat/SlashMenu.js +150 -190
- package/dist/cli/chat/SlashMenu.js.map +1 -0
- package/dist/cli/chat/StatusBar.d.ts +5 -2
- package/dist/cli/chat/StatusBar.js +188 -10
- package/dist/cli/chat/StatusBar.js.map +1 -0
- package/dist/cli/chat/StoreSelector.js +147 -18
- package/dist/cli/chat/StoreSelector.js.map +1 -0
- package/dist/cli/chat/StreamingText.d.ts +0 -3
- package/dist/cli/chat/StreamingText.js +21 -6
- package/dist/cli/chat/StreamingText.js.map +1 -0
- package/dist/cli/chat/SubagentPanel.d.ts +6 -7
- package/dist/cli/chat/SubagentPanel.js +253 -91
- package/dist/cli/chat/SubagentPanel.js.map +1 -0
- package/dist/cli/chat/TeamPanel.d.ts +1 -0
- package/dist/cli/chat/TeamPanel.js +201 -29
- package/dist/cli/chat/TeamPanel.js.map +1 -0
- package/dist/cli/chat/ThemeSelector.js +84 -24
- package/dist/cli/chat/ThemeSelector.js.map +1 -0
- package/dist/cli/chat/ToolIndicator.d.ts +7 -23
- package/dist/cli/chat/ToolIndicator.js +635 -430
- package/dist/cli/chat/ToolIndicator.js.map +1 -0
- 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 -20
- package/dist/cli/chat/hooks/useAgentLoop.js +344 -373
- package/dist/cli/chat/hooks/useAgentLoop.js.map +1 -0
- 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 -33
- package/dist/cli/chat/hooks/useSlashCommands.js +167 -616
- package/dist/cli/chat/hooks/useSlashCommands.js.map +1 -0
- 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/config-cmd.js +56 -57
- package/dist/cli/commands/config-cmd.js.map +1 -0
- package/dist/cli/commands/db.js +184 -169
- package/dist/cli/commands/db.js.map +1 -0
- package/dist/cli/commands/doctor.js +212 -122
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/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/init.js +211 -244
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/mcp.js +127 -122
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/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 +358 -141
- package/dist/cli/login/LoginApp.js.map +1 -0
- package/dist/cli/print-mode.js +196 -177
- package/dist/cli/print-mode.js.map +1 -0
- package/dist/cli/serve-mode-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/serve-mode.js +615 -530
- package/dist/cli/serve-mode.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-config.d.ts +5 -1
- package/dist/cli/services/agent-config.js +66 -36
- package/dist/cli/services/agent-config.js.map +1 -0
- package/dist/cli/services/agent-definitions.d.ts +4 -1
- package/dist/cli/services/agent-definitions.js +97 -56
- package/dist/cli/services/agent-definitions.js.map +1 -0
- package/dist/cli/services/agent-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-events.js +225 -162
- package/dist/cli/services/agent-events.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 +1135 -702
- package/dist/cli/services/agent-loop.js.map +1 -0
- 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.d.ts +35 -5
- package/dist/cli/services/agent-worker-base.js +337 -153
- package/dist/cli/services/agent-worker-base.js.map +1 -0
- package/dist/cli/services/api-retry.js +69 -64
- package/dist/cli/services/api-retry.js.map +1 -0
- package/dist/cli/services/auth-service.d.ts +3 -3
- package/dist/cli/services/auth-service.js +213 -136
- package/dist/cli/services/auth-service.js.map +1 -0
- 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 +347 -267
- package/dist/cli/services/background-processes.js.map +1 -0
- package/dist/cli/services/background-tool-defs.d.ts +50 -0
- package/dist/cli/services/browser-auth.d.ts +2 -2
- package/dist/cli/services/browser-auth.js +159 -118
- package/dist/cli/services/browser-auth.js.map +1 -0
- package/dist/cli/services/claude-md-loader.js +40 -36
- package/dist/cli/services/claude-md-loader.js.map +1 -0
- package/dist/cli/services/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 +14 -4
- package/dist/cli/services/config-store.js +249 -117
- package/dist/cli/services/config-store.js.map +1 -0
- package/dist/cli/services/debug-log.d.ts +1 -1
- package/dist/cli/services/debug-log.js +34 -35
- package/dist/cli/services/debug-log.js.map +1 -0
- package/dist/cli/services/env-detect.d.ts +7 -0
- package/dist/cli/services/env-detect.js +9 -0
- package/dist/cli/services/env-detect.js.map +1 -0
- package/dist/cli/services/error-logger-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/error-logger.js +187 -169
- package/dist/cli/services/error-logger.js.map +1 -0
- package/dist/cli/services/file-history.d.ts +1 -1
- package/dist/cli/services/file-history.js +50 -54
- package/dist/cli/services/file-history.js.map +1 -0
- package/dist/cli/services/format-server-response-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 +334 -372
- package/dist/cli/services/format-server-response.js.map +1 -0
- package/dist/cli/services/git-context.js +61 -45
- package/dist/cli/services/git-context.js.map +1 -0
- package/dist/cli/services/hooks-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.d.ts +2 -2
- package/dist/cli/services/hooks.glob-load.test.js +233 -0
- package/dist/cli/services/hooks.js +195 -180
- package/dist/cli/services/hooks.js.map +1 -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/ink-incremental.d.ts +19 -0
- package/dist/cli/services/ink-incremental.js +59 -0
- package/dist/cli/services/ink-incremental.js.map +1 -0
- package/dist/cli/services/ink-resize-fix.js +54 -44
- package/dist/cli/services/ink-resize-fix.js.map +1 -0
- package/dist/cli/services/ink-sync-output.d.ts +12 -0
- package/dist/cli/services/ink-sync-output.js +16 -0
- package/dist/cli/services/ink-sync-output.js.map +1 -0
- package/dist/cli/services/interactive-tool-defs.d.ts +80 -0
- package/dist/cli/services/interactive-tools.d.ts +5 -2
- package/dist/cli/services/interactive-tools.js +283 -213
- package/dist/cli/services/interactive-tools.js.map +1 -0
- package/dist/cli/services/keybinding-manager.d.ts +13 -1
- package/dist/cli/services/keybinding-manager.js +131 -63
- package/dist/cli/services/keybinding-manager.js.map +1 -0
- 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.d.ts +1 -1
- package/dist/cli/services/local-tools.js +938 -657
- package/dist/cli/services/local-tools.js.map +1 -0
- 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-manager.js +757 -594
- package/dist/cli/services/lsp-manager.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/mcp-client.d.ts +1 -1
- package/dist/cli/services/mcp-client.js +173 -134
- package/dist/cli/services/mcp-client.js.map +1 -0
- package/dist/cli/services/memory-manager.js +53 -40
- package/dist/cli/services/memory-manager.js.map +1 -0
- package/dist/cli/services/model-manager.js +55 -40
- package/dist/cli/services/model-manager.js.map +1 -0
- package/dist/cli/services/model-router.js +115 -85
- package/dist/cli/services/model-router.js.map +1 -0
- package/dist/cli/services/model-router.test.js +245 -0
- package/dist/cli/services/paths.d.ts +30 -0
- package/dist/cli/services/paths.js +81 -0
- package/dist/cli/services/paths.js.map +1 -0
- package/dist/cli/services/permission-modes.js +45 -25
- package/dist/cli/services/permission-modes.js.map +1 -0
- 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.js +182 -168
- package/dist/cli/services/rewind.js.map +1 -0
- package/dist/cli/services/rewind.test.js +175 -0
- package/dist/cli/services/ripgrep.js +115 -115
- package/dist/cli/services/ripgrep.js.map +1 -0
- package/dist/cli/services/sandbox.d.ts +1 -1
- package/dist/cli/services/sandbox.js +58 -37
- package/dist/cli/services/sandbox.js.map +1 -0
- package/dist/cli/services/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 +763 -565
- package/dist/cli/services/server-tools.js.map +1 -0
- 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 +81 -74
- package/dist/cli/services/session-persistence.js.map +1 -0
- 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-worker.js +42 -27
- package/dist/cli/services/subagent-worker.js.map +1 -0
- package/dist/cli/services/subagent.d.ts +2 -0
- package/dist/cli/services/subagent.js +606 -433
- package/dist/cli/services/subagent.js.map +1 -0
- package/dist/cli/services/system-prompt.js +111 -80
- package/dist/cli/services/system-prompt.js.map +1 -0
- package/dist/cli/services/task-decomposer.d.ts +1 -1
- package/dist/cli/services/task-decomposer.js +172 -139
- package/dist/cli/services/task-decomposer.js.map +1 -0
- package/dist/cli/services/team-lead-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 +62 -2
- package/dist/cli/services/team-lead.js +863 -528
- package/dist/cli/services/team-lead.js.map +1 -0
- 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 +348 -319
- package/dist/cli/services/team-state.js.map +1 -0
- 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/teammate.d.ts +8 -2
- package/dist/cli/services/teammate.js +857 -569
- package/dist/cli/services/teammate.js.map +1 -0
- package/dist/cli/services/telemetry-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/telemetry.d.ts +6 -1
- package/dist/cli/services/telemetry.js +180 -157
- package/dist/cli/services/telemetry.js.map +1 -0
- package/dist/cli/services/tools/__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.d.ts +3 -3
- package/dist/cli/services/tools/agent-tools.js +555 -324
- package/dist/cli/services/tools/agent-tools.js.map +1 -0
- 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 +727 -447
- package/dist/cli/services/tools/file-ops.js.map +1 -0
- 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/search-tools.js +231 -162
- package/dist/cli/services/tools/search-tools.js.map +1 -0
- package/dist/cli/services/tools/shell-exec.js +197 -151
- package/dist/cli/services/tools/shell-exec.js.map +1 -0
- package/dist/cli/services/tools/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/services/tools/task-manager.js +206 -173
- package/dist/cli/services/tools/task-manager.js.map +1 -0
- package/dist/cli/services/tools/web-tools.js +388 -341
- package/dist/cli/services/tools/web-tools.js.map +1 -0
- package/dist/cli/setup/SetupApp.d.ts +2 -2
- package/dist/cli/setup/SetupApp.js +608 -160
- package/dist/cli/setup/SetupApp.js.map +1 -0
- package/dist/cli/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/ErrorBoundary.d.ts +22 -0
- package/dist/cli/shared/ErrorBoundary.js +73 -0
- package/dist/cli/shared/ErrorBoundary.js.map +1 -0
- package/dist/cli/shared/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 +67 -69
- package/dist/cli/shared/MatrixIntro.js.map +1 -0
- package/dist/cli/shared/SharedTick.d.ts +10 -0
- package/dist/cli/shared/SpinnerSlot.d.ts +22 -0
- package/dist/cli/shared/SpinnerSlot.js +156 -0
- package/dist/cli/shared/SpinnerSlot.js.map +1 -0
- package/dist/cli/shared/Theme.d.ts +1 -1
- package/dist/cli/shared/Theme.js +136 -92
- package/dist/cli/shared/Theme.js.map +1 -0
- package/dist/cli/shared/WhaleBanner.js +100 -11
- package/dist/cli/shared/WhaleBanner.js.map +1 -0
- 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 -4
- package/dist/cli/shared/markdown.js +658 -703
- package/dist/cli/shared/markdown.js.map +1 -0
- package/dist/cli/shared/marked-terminal.d.js +2 -0
- package/dist/cli/shared/marked-terminal.d.js.map +1 -0
- package/dist/cli/shared/theme-manager.js +99 -90
- package/dist/cli/shared/theme-manager.js.map +1 -0
- package/dist/cli/shared/theme-presets.js +256 -254
- package/dist/cli/shared/theme-presets.js.map +1 -0
- package/dist/cli/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/status/StatusApp.js +235 -86
- package/dist/cli/status/StatusApp.js.map +1 -0
- package/dist/cli/stores/StoreApp.js +278 -66
- package/dist/cli/stores/StoreApp.js.map +1 -0
- 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/index.d.ts +2 -2
- package/dist/index.js +509 -396
- package/dist/index.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/connection.d.ts +2 -2
- package/dist/local-agent/connection.js +352 -293
- package/dist/local-agent/connection.js.map +1 -0
- package/dist/local-agent/discovery.js +259 -122
- package/dist/local-agent/discovery.js.map +1 -0
- package/dist/local-agent/executor-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 +218 -195
- package/dist/local-agent/executor.js.map +1 -0
- package/dist/local-agent/index.d.ts +2 -2
- package/dist/local-agent/index.js +156 -156
- package/dist/local-agent/index.js.map +1 -0
- package/dist/node/__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/base.js +18 -8
- package/dist/node/adapters/base.js.map +1 -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/discord.js +286 -275
- package/dist/node/adapters/discord.js.map +1 -0
- package/dist/node/adapters/email.js +189 -202
- package/dist/node/adapters/email.js.map +1 -0
- package/dist/node/adapters/imessage.d.ts +11 -0
- package/dist/node/adapters/imessage.js +165 -145
- package/dist/node/adapters/imessage.js.map +1 -0
- package/dist/node/adapters/slack.js +237 -236
- package/dist/node/adapters/slack.js.map +1 -0
- package/dist/node/adapters/sms.js +149 -151
- package/dist/node/adapters/sms.js.map +1 -0
- package/dist/node/adapters/telegram.js +88 -92
- package/dist/node/adapters/telegram.js.map +1 -0
- package/dist/node/adapters/webchat.js +160 -136
- package/dist/node/adapters/webchat.js.map +1 -0
- package/dist/node/adapters/whatsapp.js +212 -215
- package/dist/node/adapters/whatsapp.js.map +1 -0
- package/dist/node/cli-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/cli.js +884 -653
- package/dist/node/cli.js.map +1 -0
- package/dist/node/config.js +20 -18
- package/dist/node/config.js.map +1 -0
- package/dist/node/gateway-client.js +191 -181
- package/dist/node/gateway-client.js.map +1 -0
- package/dist/node/portal/clipboard.js +161 -130
- package/dist/node/portal/clipboard.js.map +1 -0
- package/dist/node/portal/discovery.js +51 -45
- package/dist/node/portal/discovery.js.map +1 -0
- package/dist/node/portal/forward.js +64 -58
- package/dist/node/portal/forward.js.map +1 -0
- package/dist/node/portal/index.js +246 -221
- package/dist/node/portal/index.js.map +1 -0
- package/dist/node/portal/multiplexer.js +192 -182
- package/dist/node/portal/multiplexer.js.map +1 -0
- package/dist/node/portal/permissions.js +102 -70
- package/dist/node/portal/permissions.js.map +1 -0
- package/dist/node/portal/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/portal/protocol.js +153 -116
- package/dist/node/portal/protocol.js.map +1 -0
- package/dist/node/portal/screen.js +80 -69
- package/dist/node/portal/screen.js.map +1 -0
- package/dist/node/portal/session.js +124 -117
- package/dist/node/portal/session.js.map +1 -0
- package/dist/node/portal/shell.js +140 -113
- package/dist/node/portal/shell.js.map +1 -0
- package/dist/node/portal/stream.js +77 -75
- package/dist/node/portal/stream.js.map +1 -0
- package/dist/node/portal/transfer.js +190 -167
- package/dist/node/portal/transfer.js.map +1 -0
- package/dist/node/portal/ui.js +124 -99
- package/dist/node/portal/ui.js.map +1 -0
- package/dist/node/remote-desktop/compile-helper.js +50 -45
- package/dist/node/remote-desktop/compile-helper.js.map +1 -0
- package/dist/node/remote-desktop/index.js +215 -187
- package/dist/node/remote-desktop/index.js.map +1 -0
- package/dist/node/remote-desktop/protocol.js +45 -29
- package/dist/node/remote-desktop/protocol.js.map +1 -0
- package/dist/node/runtime-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 +562 -409
- package/dist/node/runtime.js.map +1 -0
- 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 +52 -89
- package/dist/server/handlers/__test-utils__/test-db.js.map +1 -0
- 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 +553 -260
- package/dist/server/handlers/analytics.js.map +1 -0
- 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 +1205 -893
- package/dist/server/handlers/api-docs.js.map +1 -0
- package/dist/server/handlers/api-keys.js +291 -242
- package/dist/server/handlers/api-keys.js.map +1 -0
- package/dist/server/handlers/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.js +330 -239
- package/dist/server/handlers/billing.js.map +1 -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/browser.js +468 -395
- package/dist/server/handlers/browser.js.map +1 -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.js +1377 -978
- package/dist/server/handlers/catalog.js.map +1 -0
- package/dist/server/handlers/catalog.test.js +297 -0
- package/dist/server/handlers/clickhouse.js +157 -109
- package/dist/server/handlers/clickhouse.js.map +1 -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.js +1439 -984
- package/dist/server/handlers/comms.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/creations.js +461 -394
- package/dist/server/handlers/creations.js.map +1 -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.js +1082 -791
- package/dist/server/handlers/crm.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/discovery.js +251 -232
- package/dist/server/handlers/discovery.js.map +1 -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.js +241 -164
- package/dist/server/handlers/embeddings.js.map +1 -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/enrichment.js +887 -718
- package/dist/server/handlers/enrichment.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.js +467 -376
- package/dist/server/handlers/image-gen.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.js +797 -424
- package/dist/server/handlers/inventory.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/kali.js +272 -230
- package/dist/server/handlers/kali.js.map +1 -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/llm-providers.js +803 -580
- package/dist/server/handlers/llm-providers.js.map +1 -0
- package/dist/server/handlers/local-agent-tools.test.js +224 -0
- package/dist/server/handlers/local-agent.js +133 -105
- package/dist/server/handlers/local-agent.js.map +1 -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/media.js +1179 -857
- package/dist/server/handlers/media.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 +3049 -2084
- package/dist/server/handlers/meta-ads.js.map +1 -0
- 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.js +1321 -913
- package/dist/server/handlers/nodes.js.map +1 -0
- package/dist/server/handlers/nodes.test.js +353 -0
- package/dist/server/handlers/operations.js +183 -157
- package/dist/server/handlers/operations.js.map +1 -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/platform.js +346 -210
- package/dist/server/handlers/platform.js.map +1 -0
- package/dist/server/handlers/remove-bg.js +118 -86
- package/dist/server/handlers/remove-bg.js.map +1 -0
- package/dist/server/handlers/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.js +586 -446
- package/dist/server/handlers/storefront.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.js +546 -326
- package/dist/server/handlers/supply-chain.js.map +1 -0
- package/dist/server/handlers/supply-chain.test.js +347 -0
- package/dist/server/handlers/transcription.js +106 -97
- package/dist/server/handlers/transcription.js.map +1 -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.js +593 -424
- package/dist/server/handlers/video-gen.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.js +1458 -1039
- package/dist/server/handlers/voice.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.js +2837 -2116
- package/dist/server/handlers/workflow-steps.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.js +1630 -933
- package/dist/server/handlers/workflows.js.map +1 -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 +1702 -2596
- package/dist/server/index.js.map +1 -0
- 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/batch-client.js +471 -409
- package/dist/server/lib/batch-client.js.map +1 -0
- package/dist/server/lib/clickhouse-buffer.js +118 -104
- package/dist/server/lib/clickhouse-buffer.js.map +1 -0
- package/dist/server/lib/clickhouse-client.js +107 -107
- package/dist/server/lib/clickhouse-client.js.map +1 -0
- package/dist/server/lib/coa-renderer-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/coa-renderer.js +1786 -356
- package/dist/server/lib/coa-renderer.js.map +1 -0
- package/dist/server/lib/code-worker-pool.js +227 -177
- package/dist/server/lib/code-worker-pool.js.map +1 -0
- package/dist/server/lib/code-worker.js +174 -164
- package/dist/server/lib/code-worker.js.map +1 -0
- package/dist/server/lib/compaction-service.d.ts +2 -12
- package/dist/server/lib/compaction-service.js +74 -184
- package/dist/server/lib/compaction-service.js.map +1 -0
- package/dist/server/lib/logger.js +36 -24
- package/dist/server/lib/logger.js.map +1 -0
- package/dist/server/lib/otel.js +101 -80
- package/dist/server/lib/otel.js.map +1 -0
- package/dist/server/lib/pdf-renderer-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/pdf-renderer.js +952 -788
- package/dist/server/lib/pdf-renderer.js.map +1 -0
- package/dist/server/lib/prompt-sanitizer.js +188 -108
- package/dist/server/lib/prompt-sanitizer.js.map +1 -0
- package/dist/server/lib/provider-capabilities.js +136 -138
- package/dist/server/lib/provider-capabilities.js.map +1 -0
- package/dist/server/lib/provider-failover.js +190 -168
- package/dist/server/lib/provider-failover.js.map +1 -0
- package/dist/server/lib/rate-limiter.js +186 -117
- package/dist/server/lib/rate-limiter.js.map +1 -0
- package/dist/server/lib/react-pdf-layout-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/react-pdf-layout.js +551 -382
- package/dist/server/lib/react-pdf-layout.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.d.ts +4 -1
- package/dist/server/lib/server-agent-loop.js +907 -634
- package/dist/server/lib/server-agent-loop.js.map +1 -0
- 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/server-subagent.js +260 -164
- package/dist/server/lib/server-subagent.js.map +1 -0
- package/dist/server/lib/session-checkpoint.js +105 -96
- package/dist/server/lib/session-checkpoint.js.map +1 -0
- package/dist/server/lib/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/lib/ssrf-guard.js +193 -184
- package/dist/server/lib/ssrf-guard.js.map +1 -0
- package/dist/server/lib/supabase-client.js +94 -82
- package/dist/server/lib/supabase-client.js.map +1 -0
- package/dist/server/lib/template-resolver.js +154 -176
- package/dist/server/lib/template-resolver.js.map +1 -0
- package/dist/server/lib/utils.js +242 -133
- package/dist/server/lib/utils.js.map +1 -0
- package/dist/server/local-agent-gateway-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 +8 -2
- package/dist/server/local-agent-gateway.js +825 -627
- package/dist/server/local-agent-gateway.js.map +1 -0
- 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/anthropic.js +250 -172
- package/dist/server/providers/anthropic.js.map +1 -0
- package/dist/server/providers/bedrock.js +217 -158
- package/dist/server/providers/bedrock.js.map +1 -0
- package/dist/server/providers/gemini-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/gemini.js +548 -418
- package/dist/server/providers/gemini.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/providers/openai.js +571 -437
- package/dist/server/providers/openai.js.map +1 -0
- package/dist/server/providers/registry.js +23 -18
- package/dist/server/providers/registry.js.map +1 -0
- package/dist/server/providers/shared.js +123 -95
- package/dist/server/providers/shared.js.map +1 -0
- package/dist/server/providers/types.js +1 -11
- package/dist/server/providers/types.js.map +1 -0
- package/dist/server/proxy-handlers.js +209 -165
- package/dist/server/proxy-handlers.js.map +1 -0
- package/dist/server/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/tool-router.js +959 -599
- package/dist/server/tool-router.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/server/validation.js +248 -188
- package/dist/server/validation.js.map +1 -0
- package/dist/server/worker.js +202 -133
- package/dist/server/worker.js.map +1 -0
- package/dist/setup.d.ts +2 -2
- package/dist/setup.js +151 -147
- package/dist/setup.js.map +1 -0
- package/dist/shared/agent-core-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.d.ts +115 -26
- package/dist/shared/agent-core.js +956 -522
- package/dist/shared/agent-core.js.map +1 -0
- 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/anthropic-types.js +1 -6
- package/dist/shared/anthropic-types.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.d.ts +16 -9
- package/dist/shared/api-client.js +419 -327
- package/dist/shared/api-client.js.map +1 -0
- 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/compaction.d.ts +36 -0
- package/dist/shared/compaction.js +138 -0
- package/dist/shared/compaction.js.map +1 -0
- package/dist/shared/constants.js +67 -64
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/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/sse-parser.js +221 -219
- package/dist/shared/sse-parser.js.map +1 -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.d.ts +4 -0
- package/dist/shared/tool-dispatch.js +226 -165
- package/dist/shared/tool-dispatch.js.map +1 -0
- package/dist/shared/types.js +1 -6
- package/dist/shared/types.js.map +1 -0
- package/dist/types/cli-highlight.d.js +2 -0
- package/dist/types/cli-highlight.d.js.map +1 -0
- package/dist/types/diff.d.js +2 -0
- package/dist/types/diff.d.js.map +1 -0
- package/dist/types/pdf-parse.d.js +2 -0
- package/dist/types/pdf-parse.d.js.map +1 -0
- package/dist/updater.d.ts +1 -1
- package/dist/updater.js +118 -92
- package/dist/updater.js.map +1 -0
- package/dist/webchat/__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/dist/webchat/widget.js +227 -380
- package/dist/webchat/widget.js.map +1 -0
- package/package.json +24 -11
- package/src/cli/services/builtin-skills/verify.md +72 -0
- package/vendor/ink/build/ansi-tokenizer.d.ts +38 -0
- package/vendor/ink/build/ansi-tokenizer.js +316 -0
- package/vendor/ink/build/ansi-tokenizer.js.map +1 -0
- package/vendor/ink/build/apply-styles.js +175 -0
- package/vendor/ink/build/build-layout.js +77 -0
- package/vendor/ink/build/calculate-wrapped-text.js +53 -0
- package/vendor/ink/build/colorize.d.ts +3 -0
- package/vendor/ink/build/colorize.js +48 -0
- package/vendor/ink/build/colorize.js.map +1 -0
- package/vendor/ink/build/components/AccessibilityContext.d.ts +3 -0
- package/vendor/ink/build/components/AccessibilityContext.js +5 -0
- package/vendor/ink/build/components/AccessibilityContext.js.map +1 -0
- package/vendor/ink/build/components/App.d.ts +18 -0
- package/vendor/ink/build/components/App.js +351 -0
- package/vendor/ink/build/components/App.js.map +1 -0
- package/vendor/ink/build/components/AppContext.d.ts +15 -0
- package/vendor/ink/build/components/AppContext.js +11 -0
- package/vendor/ink/build/components/AppContext.js.map +1 -0
- package/vendor/ink/build/components/BackgroundContext.d.ts +4 -0
- package/vendor/ink/build/components/BackgroundContext.js +3 -0
- package/vendor/ink/build/components/BackgroundContext.js.map +1 -0
- package/vendor/ink/build/components/Box.d.ts +117 -0
- package/vendor/ink/build/components/Box.js +34 -0
- package/vendor/ink/build/components/Box.js.map +1 -0
- package/vendor/ink/build/components/Color.js +62 -0
- package/vendor/ink/build/components/Cursor.d.ts +83 -0
- package/vendor/ink/build/components/Cursor.js +53 -0
- package/vendor/ink/build/components/Cursor.js.map +1 -0
- package/vendor/ink/build/components/CursorContext.d.ts +11 -0
- package/vendor/ink/build/components/CursorContext.js +8 -0
- package/vendor/ink/build/components/CursorContext.js.map +1 -0
- package/vendor/ink/build/components/ErrorBoundary.d.ts +18 -0
- package/vendor/ink/build/components/ErrorBoundary.js +23 -0
- package/vendor/ink/build/components/ErrorBoundary.js.map +1 -0
- package/vendor/ink/build/components/ErrorOverview.d.ts +6 -0
- package/vendor/ink/build/components/ErrorOverview.js +84 -0
- package/vendor/ink/build/components/ErrorOverview.js.map +1 -0
- package/vendor/ink/build/components/FocusContext.d.ts +16 -0
- package/vendor/ink/build/components/FocusContext.js +17 -0
- package/vendor/ink/build/components/FocusContext.js.map +1 -0
- package/vendor/ink/build/components/Newline.d.ts +13 -0
- package/vendor/ink/build/components/Newline.js +8 -0
- package/vendor/ink/build/components/Newline.js.map +1 -0
- package/vendor/ink/build/components/Spacer.d.ts +7 -0
- package/vendor/ink/build/components/Spacer.js +11 -0
- package/vendor/ink/build/components/Spacer.js.map +1 -0
- package/vendor/ink/build/components/Static.d.ts +24 -0
- package/vendor/ink/build/components/Static.js +28 -0
- package/vendor/ink/build/components/Static.js.map +1 -0
- package/vendor/ink/build/components/StderrContext.d.ts +15 -0
- package/vendor/ink/build/components/StderrContext.js +13 -0
- package/vendor/ink/build/components/StderrContext.js.map +1 -0
- package/vendor/ink/build/components/StdinContext.d.ts +22 -0
- package/vendor/ink/build/components/StdinContext.js +19 -0
- package/vendor/ink/build/components/StdinContext.js.map +1 -0
- package/vendor/ink/build/components/StdoutContext.d.ts +15 -0
- package/vendor/ink/build/components/StdoutContext.js +13 -0
- package/vendor/ink/build/components/StdoutContext.js.map +1 -0
- package/vendor/ink/build/components/Text.d.ts +55 -0
- package/vendor/ink/build/components/Text.js +50 -0
- package/vendor/ink/build/components/Text.js.map +1 -0
- package/vendor/ink/build/components/Transform.d.ts +16 -0
- package/vendor/ink/build/components/Transform.js +15 -0
- package/vendor/ink/build/components/Transform.js.map +1 -0
- package/vendor/ink/build/cursor-helpers.d.ts +38 -0
- package/vendor/ink/build/cursor-helpers.js +56 -0
- package/vendor/ink/build/cursor-helpers.js.map +1 -0
- package/vendor/ink/build/devtools-window-polyfill.d.ts +1 -0
- package/vendor/ink/build/devtools-window-polyfill.js +65 -0
- package/vendor/ink/build/devtools-window-polyfill.js.map +1 -0
- package/vendor/ink/build/devtools.d.ts +1 -0
- package/vendor/ink/build/devtools.js +11 -0
- package/vendor/ink/build/devtools.js.map +1 -0
- package/vendor/ink/build/dom.d.ts +56 -0
- package/vendor/ink/build/dom.js +124 -0
- package/vendor/ink/build/dom.js.map +1 -0
- package/vendor/ink/build/experimental/apply-style.js +140 -0
- package/vendor/ink/build/experimental/dom.js +123 -0
- package/vendor/ink/build/experimental/output.js +91 -0
- package/vendor/ink/build/experimental/reconciler.js +141 -0
- package/vendor/ink/build/experimental/renderer.js +81 -0
- package/vendor/ink/build/get-max-width.d.ts +3 -0
- package/vendor/ink/build/get-max-width.js +10 -0
- package/vendor/ink/build/get-max-width.js.map +1 -0
- package/vendor/ink/build/hooks/use-app.d.ts +5 -0
- package/vendor/ink/build/hooks/use-app.js +8 -0
- package/vendor/ink/build/hooks/use-app.js.map +1 -0
- package/vendor/ink/build/hooks/use-cursor.d.ts +12 -0
- package/vendor/ink/build/hooks/use-cursor.js +29 -0
- package/vendor/ink/build/hooks/use-cursor.js.map +1 -0
- package/vendor/ink/build/hooks/use-focus-manager.d.ts +28 -0
- package/vendor/ink/build/hooks/use-focus-manager.js +17 -0
- package/vendor/ink/build/hooks/use-focus-manager.js.map +1 -0
- package/vendor/ink/build/hooks/use-focus.d.ts +29 -0
- package/vendor/ink/build/hooks/use-focus.js +42 -0
- package/vendor/ink/build/hooks/use-focus.js.map +1 -0
- package/vendor/ink/build/hooks/use-input.d.ts +131 -0
- package/vendor/ink/build/hooks/use-input.js +124 -0
- package/vendor/ink/build/hooks/use-input.js.map +1 -0
- package/vendor/ink/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
- package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js +11 -0
- package/vendor/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
- package/vendor/ink/build/hooks/use-stderr.d.ts +5 -0
- package/vendor/ink/build/hooks/use-stderr.js +8 -0
- package/vendor/ink/build/hooks/use-stderr.js.map +1 -0
- package/vendor/ink/build/hooks/use-stdin.d.ts +5 -0
- package/vendor/ink/build/hooks/use-stdin.js +8 -0
- package/vendor/ink/build/hooks/use-stdin.js.map +1 -0
- package/vendor/ink/build/hooks/use-stdout.d.ts +5 -0
- package/vendor/ink/build/hooks/use-stdout.js +8 -0
- package/vendor/ink/build/hooks/use-stdout.js.map +1 -0
- package/vendor/ink/build/hooks/useInput.js +38 -0
- package/vendor/ink/build/index.d.ts +34 -0
- package/vendor/ink/build/index.js +20 -0
- package/vendor/ink/build/index.js.map +1 -0
- package/vendor/ink/build/ink.d.ts +90 -0
- package/vendor/ink/build/ink.js +677 -0
- package/vendor/ink/build/ink.js.map +1 -0
- package/vendor/ink/build/input-parser.d.ts +7 -0
- package/vendor/ink/build/input-parser.js +154 -0
- package/vendor/ink/build/input-parser.js.map +1 -0
- package/vendor/ink/build/instance.js +205 -0
- package/vendor/ink/build/instances.d.ts +3 -0
- package/vendor/ink/build/instances.js +8 -0
- package/vendor/ink/build/instances.js.map +1 -0
- package/vendor/ink/build/kitty-keyboard.d.ts +23 -0
- package/vendor/ink/build/kitty-keyboard.js +32 -0
- package/vendor/ink/build/kitty-keyboard.js.map +1 -0
- package/vendor/ink/build/layout.d.ts +7 -0
- package/vendor/ink/build/layout.js +33 -0
- package/vendor/ink/build/layout.js.map +1 -0
- package/vendor/ink/build/log-update.d.ts +19 -0
- package/vendor/ink/build/log-update.js +250 -0
- package/vendor/ink/build/log-update.js.map +1 -0
- package/vendor/ink/build/measure-element.d.ts +16 -0
- package/vendor/ink/build/measure-element.js +9 -0
- package/vendor/ink/build/measure-element.js.map +1 -0
- package/vendor/ink/build/measure-text.d.ts +6 -0
- package/vendor/ink/build/measure-text.js +21 -0
- package/vendor/ink/build/measure-text.js.map +1 -0
- package/vendor/ink/build/options.d.ts +52 -0
- package/vendor/ink/build/options.js +2 -0
- package/vendor/ink/build/options.js.map +1 -0
- package/vendor/ink/build/output.d.ts +35 -0
- package/vendor/ink/build/output.js +183 -0
- package/vendor/ink/build/output.js.map +1 -0
- package/vendor/ink/build/parse-keypress.d.ts +22 -0
- package/vendor/ink/build/parse-keypress.js +493 -0
- package/vendor/ink/build/parse-keypress.js.map +1 -0
- package/vendor/ink/build/reconciler.d.ts +4 -0
- package/vendor/ink/build/reconciler.js +274 -0
- package/vendor/ink/build/reconciler.js.map +1 -0
- package/vendor/ink/build/render-background.d.ts +4 -0
- package/vendor/ink/build/render-background.js +25 -0
- package/vendor/ink/build/render-background.js.map +1 -0
- package/vendor/ink/build/render-border.d.ts +4 -0
- package/vendor/ink/build/render-border.js +73 -0
- package/vendor/ink/build/render-border.js.map +1 -0
- package/vendor/ink/build/render-node-to-output.d.ts +14 -0
- package/vendor/ink/build/render-node-to-output.js +147 -0
- package/vendor/ink/build/render-node-to-output.js.map +1 -0
- package/vendor/ink/build/render-to-string.d.ts +38 -0
- package/vendor/ink/build/render-to-string.js +115 -0
- package/vendor/ink/build/render-to-string.js.map +1 -0
- package/vendor/ink/build/render.d.ts +121 -0
- package/vendor/ink/build/render.js +55 -0
- package/vendor/ink/build/render.js.map +1 -0
- package/vendor/ink/build/renderer.d.ts +8 -0
- package/vendor/ink/build/renderer.js +55 -0
- package/vendor/ink/build/renderer.js.map +1 -0
- package/vendor/ink/build/sanitize-ansi.d.ts +2 -0
- package/vendor/ink/build/sanitize-ansi.js +27 -0
- package/vendor/ink/build/sanitize-ansi.js.map +1 -0
- package/vendor/ink/build/screen-reader-update.d.ts +13 -0
- package/vendor/ink/build/screen-reader-update.js +38 -0
- package/vendor/ink/build/screen-reader-update.js.map +1 -0
- package/vendor/ink/build/squash-text-nodes.d.ts +3 -0
- package/vendor/ink/build/squash-text-nodes.js +36 -0
- package/vendor/ink/build/squash-text-nodes.js.map +1 -0
- package/vendor/ink/build/styles.d.ts +240 -0
- package/vendor/ink/build/styles.js +232 -0
- package/vendor/ink/build/styles.js.map +1 -0
- package/vendor/ink/build/utils.d.ts +2 -0
- package/vendor/ink/build/utils.js +4 -0
- package/vendor/ink/build/utils.js.map +1 -0
- package/vendor/ink/build/wrap-text.d.ts +3 -0
- package/vendor/ink/build/wrap-text.js +31 -0
- package/vendor/ink/build/wrap-text.js.map +1 -0
- package/vendor/ink/build/write-synchronized.d.ts +4 -0
- package/vendor/ink/build/write-synchronized.js +7 -0
- package/vendor/ink/build/write-synchronized.js.map +1 -0
- package/vendor/ink/license +10 -0
- package/vendor/ink/node_modules/@types/node/LICENSE +21 -0
- package/vendor/ink/node_modules/@types/node/README.md +15 -0
- package/vendor/ink/node_modules/@types/node/assert/strict.d.ts +105 -0
- package/vendor/ink/node_modules/@types/node/assert.d.ts +955 -0
- package/vendor/ink/node_modules/@types/node/async_hooks.d.ts +623 -0
- package/vendor/ink/node_modules/@types/node/buffer.buffer.d.ts +466 -0
- package/vendor/ink/node_modules/@types/node/buffer.d.ts +1810 -0
- package/vendor/ink/node_modules/@types/node/child_process.d.ts +1428 -0
- package/vendor/ink/node_modules/@types/node/cluster.d.ts +486 -0
- package/vendor/ink/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
- package/vendor/ink/node_modules/@types/node/console.d.ts +151 -0
- package/vendor/ink/node_modules/@types/node/constants.d.ts +20 -0
- package/vendor/ink/node_modules/@types/node/crypto.d.ts +4065 -0
- package/vendor/ink/node_modules/@types/node/dgram.d.ts +564 -0
- package/vendor/ink/node_modules/@types/node/diagnostics_channel.d.ts +576 -0
- package/vendor/ink/node_modules/@types/node/dns/promises.d.ts +503 -0
- package/vendor/ink/node_modules/@types/node/dns.d.ts +922 -0
- package/vendor/ink/node_modules/@types/node/domain.d.ts +166 -0
- package/vendor/ink/node_modules/@types/node/events.d.ts +1054 -0
- package/vendor/ink/node_modules/@types/node/fs/promises.d.ts +1329 -0
- package/vendor/ink/node_modules/@types/node/fs.d.ts +4676 -0
- package/vendor/ink/node_modules/@types/node/globals.d.ts +150 -0
- package/vendor/ink/node_modules/@types/node/globals.typedarray.d.ts +101 -0
- package/vendor/ink/node_modules/@types/node/http.d.ts +2167 -0
- package/vendor/ink/node_modules/@types/node/http2.d.ts +2480 -0
- package/vendor/ink/node_modules/@types/node/https.d.ts +405 -0
- package/vendor/ink/node_modules/@types/node/index.d.ts +115 -0
- package/vendor/ink/node_modules/@types/node/inspector/promises.d.ts +41 -0
- package/vendor/ink/node_modules/@types/node/inspector.d.ts +224 -0
- package/vendor/ink/node_modules/@types/node/inspector.generated.d.ts +4226 -0
- package/vendor/ink/node_modules/@types/node/module.d.ts +819 -0
- package/vendor/ink/node_modules/@types/node/net.d.ts +933 -0
- package/vendor/ink/node_modules/@types/node/os.d.ts +507 -0
- package/vendor/ink/node_modules/@types/node/package.json +155 -0
- package/vendor/ink/node_modules/@types/node/path/posix.d.ts +8 -0
- package/vendor/ink/node_modules/@types/node/path/win32.d.ts +8 -0
- package/vendor/ink/node_modules/@types/node/path.d.ts +187 -0
- package/vendor/ink/node_modules/@types/node/perf_hooks.d.ts +643 -0
- package/vendor/ink/node_modules/@types/node/process.d.ts +2156 -0
- package/vendor/ink/node_modules/@types/node/punycode.d.ts +117 -0
- package/vendor/ink/node_modules/@types/node/querystring.d.ts +152 -0
- package/vendor/ink/node_modules/@types/node/quic.d.ts +910 -0
- package/vendor/ink/node_modules/@types/node/readline/promises.d.ts +161 -0
- package/vendor/ink/node_modules/@types/node/readline.d.ts +541 -0
- package/vendor/ink/node_modules/@types/node/repl.d.ts +415 -0
- package/vendor/ink/node_modules/@types/node/sea.d.ts +162 -0
- package/vendor/ink/node_modules/@types/node/sqlite.d.ts +955 -0
- package/vendor/ink/node_modules/@types/node/stream/consumers.d.ts +38 -0
- package/vendor/ink/node_modules/@types/node/stream/promises.d.ts +211 -0
- package/vendor/ink/node_modules/@types/node/stream/web.d.ts +296 -0
- package/vendor/ink/node_modules/@types/node/stream.d.ts +1760 -0
- package/vendor/ink/node_modules/@types/node/string_decoder.d.ts +67 -0
- package/vendor/ink/node_modules/@types/node/test/reporters.d.ts +96 -0
- package/vendor/ink/node_modules/@types/node/test.d.ts +2240 -0
- package/vendor/ink/node_modules/@types/node/timers/promises.d.ts +108 -0
- package/vendor/ink/node_modules/@types/node/timers.d.ts +159 -0
- package/vendor/ink/node_modules/@types/node/tls.d.ts +1198 -0
- package/vendor/ink/node_modules/@types/node/trace_events.d.ts +197 -0
- package/vendor/ink/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
- package/vendor/ink/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
- package/vendor/ink/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
- package/vendor/ink/node_modules/@types/node/ts5.6/index.d.ts +117 -0
- package/vendor/ink/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
- package/vendor/ink/node_modules/@types/node/ts5.7/index.d.ts +117 -0
- package/vendor/ink/node_modules/@types/node/tty.d.ts +250 -0
- package/vendor/ink/node_modules/@types/node/url.d.ts +519 -0
- package/vendor/ink/node_modules/@types/node/util/types.d.ts +558 -0
- package/vendor/ink/node_modules/@types/node/util.d.ts +1662 -0
- package/vendor/ink/node_modules/@types/node/v8.d.ts +983 -0
- package/vendor/ink/node_modules/@types/node/vm.d.ts +1208 -0
- package/vendor/ink/node_modules/@types/node/wasi.d.ts +202 -0
- package/vendor/ink/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
- package/vendor/ink/node_modules/@types/node/web-globals/blob.d.ts +23 -0
- package/vendor/ink/node_modules/@types/node/web-globals/console.d.ts +9 -0
- package/vendor/ink/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
- package/vendor/ink/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
- package/vendor/ink/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
- package/vendor/ink/node_modules/@types/node/web-globals/events.d.ts +106 -0
- package/vendor/ink/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
- package/vendor/ink/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
- package/vendor/ink/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
- package/vendor/ink/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
- package/vendor/ink/node_modules/@types/node/web-globals/performance.d.ts +45 -0
- package/vendor/ink/node_modules/@types/node/web-globals/storage.d.ts +24 -0
- package/vendor/ink/node_modules/@types/node/web-globals/streams.d.ts +115 -0
- package/vendor/ink/node_modules/@types/node/web-globals/timers.d.ts +44 -0
- package/vendor/ink/node_modules/@types/node/web-globals/url.d.ts +24 -0
- package/vendor/ink/node_modules/@types/node/worker_threads.d.ts +717 -0
- package/vendor/ink/node_modules/@types/node/zlib.d.ts +618 -0
- package/vendor/ink/node_modules/node-pty/LICENSE +69 -0
- package/vendor/ink/node_modules/node-pty/README.md +164 -0
- package/vendor/ink/node_modules/node-pty/binding.gyp +150 -0
- package/vendor/ink/node_modules/node-pty/lib/conpty_console_list_agent.js +25 -0
- package/vendor/ink/node_modules/node-pty/lib/eventEmitter2.js +47 -0
- package/vendor/ink/node_modules/node-pty/lib/index.js +52 -0
- package/vendor/ink/node_modules/node-pty/lib/interfaces.js +7 -0
- package/vendor/ink/node_modules/node-pty/lib/shared/conout.js +11 -0
- package/vendor/ink/node_modules/node-pty/lib/terminal.js +190 -0
- package/vendor/ink/node_modules/node-pty/lib/types.js +7 -0
- package/vendor/ink/node_modules/node-pty/lib/unixTerminal.js +349 -0
- package/vendor/ink/node_modules/node-pty/lib/utils.js +39 -0
- package/vendor/ink/node_modules/node-pty/lib/windowsConoutConnection.js +125 -0
- package/vendor/ink/node_modules/node-pty/lib/windowsPtyAgent.js +287 -0
- package/vendor/ink/node_modules/node-pty/lib/windowsTerminal.js +201 -0
- package/vendor/ink/node_modules/node-pty/lib/worker/conoutSocketWorker.js +22 -0
- package/vendor/ink/node_modules/node-pty/package.json +65 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/pty.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/pty.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/linux-arm64/pty.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/linux-x64/pty.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty.pdb +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-arm64/conpty_console_list.pdb +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty.pdb +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
- package/vendor/ink/node_modules/node-pty/prebuilds/win32-x64/conpty_console_list.pdb +0 -0
- package/vendor/ink/node_modules/node-pty/scripts/post-install.js +76 -0
- package/vendor/ink/node_modules/node-pty/scripts/prebuild.js +34 -0
- package/vendor/ink/node_modules/node-pty/src/unix/pty.cc +875 -0
- package/vendor/ink/node_modules/node-pty/src/unix/spawn-helper.cc +23 -0
- package/vendor/ink/node_modules/node-pty/src/win/conpty.cc +582 -0
- package/vendor/ink/node_modules/node-pty/src/win/conpty.h +41 -0
- package/vendor/ink/node_modules/node-pty/src/win/conpty_console_list.cc +44 -0
- package/vendor/ink/node_modules/node-pty/src/win/path_util.cc +95 -0
- package/vendor/ink/node_modules/node-pty/src/win/path_util.h +26 -0
- package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/OpenConsole.exe +0 -0
- package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-arm64/conpty.dll +0 -0
- package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/OpenConsole.exe +0 -0
- package/vendor/ink/node_modules/node-pty/third_party/conpty/1.23.251008001/win10-x64/conpty.dll +0 -0
- package/vendor/ink/node_modules/node-pty/typings/node-pty.d.ts +215 -0
- package/vendor/ink/node_modules/undici-types/LICENSE +21 -0
- package/vendor/ink/node_modules/undici-types/README.md +6 -0
- package/vendor/ink/node_modules/undici-types/agent.d.ts +32 -0
- package/vendor/ink/node_modules/undici-types/api.d.ts +43 -0
- package/vendor/ink/node_modules/undici-types/balanced-pool.d.ts +30 -0
- package/vendor/ink/node_modules/undici-types/cache-interceptor.d.ts +173 -0
- package/vendor/ink/node_modules/undici-types/cache.d.ts +36 -0
- package/vendor/ink/node_modules/undici-types/client-stats.d.ts +15 -0
- package/vendor/ink/node_modules/undici-types/client.d.ts +108 -0
- package/vendor/ink/node_modules/undici-types/connector.d.ts +34 -0
- package/vendor/ink/node_modules/undici-types/content-type.d.ts +21 -0
- package/vendor/ink/node_modules/undici-types/cookies.d.ts +30 -0
- package/vendor/ink/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
- package/vendor/ink/node_modules/undici-types/dispatcher.d.ts +276 -0
- package/vendor/ink/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
- package/vendor/ink/node_modules/undici-types/errors.d.ts +161 -0
- package/vendor/ink/node_modules/undici-types/eventsource.d.ts +66 -0
- package/vendor/ink/node_modules/undici-types/fetch.d.ts +211 -0
- package/vendor/ink/node_modules/undici-types/formdata.d.ts +108 -0
- package/vendor/ink/node_modules/undici-types/global-dispatcher.d.ts +9 -0
- package/vendor/ink/node_modules/undici-types/global-origin.d.ts +7 -0
- package/vendor/ink/node_modules/undici-types/h2c-client.d.ts +73 -0
- package/vendor/ink/node_modules/undici-types/handlers.d.ts +15 -0
- package/vendor/ink/node_modules/undici-types/header.d.ts +160 -0
- package/vendor/ink/node_modules/undici-types/index.d.ts +88 -0
- package/vendor/ink/node_modules/undici-types/interceptors.d.ts +73 -0
- package/vendor/ink/node_modules/undici-types/mock-agent.d.ts +68 -0
- package/vendor/ink/node_modules/undici-types/mock-call-history.d.ts +111 -0
- package/vendor/ink/node_modules/undici-types/mock-client.d.ts +27 -0
- package/vendor/ink/node_modules/undici-types/mock-errors.d.ts +12 -0
- package/vendor/ink/node_modules/undici-types/mock-interceptor.d.ts +94 -0
- package/vendor/ink/node_modules/undici-types/mock-pool.d.ts +27 -0
- package/vendor/ink/node_modules/undici-types/package.json +55 -0
- package/vendor/ink/node_modules/undici-types/patch.d.ts +29 -0
- package/vendor/ink/node_modules/undici-types/pool-stats.d.ts +19 -0
- package/vendor/ink/node_modules/undici-types/pool.d.ts +41 -0
- package/vendor/ink/node_modules/undici-types/proxy-agent.d.ts +29 -0
- package/vendor/ink/node_modules/undici-types/readable.d.ts +68 -0
- package/vendor/ink/node_modules/undici-types/retry-agent.d.ts +8 -0
- package/vendor/ink/node_modules/undici-types/retry-handler.d.ts +125 -0
- package/vendor/ink/node_modules/undici-types/round-robin-pool.d.ts +41 -0
- package/vendor/ink/node_modules/undici-types/snapshot-agent.d.ts +109 -0
- package/vendor/ink/node_modules/undici-types/util.d.ts +18 -0
- package/vendor/ink/node_modules/undici-types/utility.d.ts +7 -0
- package/vendor/ink/node_modules/undici-types/webidl.d.ts +341 -0
- package/vendor/ink/node_modules/undici-types/websocket.d.ts +186 -0
- package/vendor/ink/package.json +201 -0
- package/vendor/ink/readme.md +2636 -0
- package/bin/swag-agent.js +0 -9
- package/dist/server/lib/pg-rate-limiter.d.ts +0 -21
- package/dist/server/lib/pg-rate-limiter.js +0 -86
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-steps.js","names":["createHmac","timingSafeEqual","randomUUID","resolveTemplate","evaluateCondition","sanitizeError","executeWithPool","initWorkerPool","getPoolStats","shutdownPool","batchClient","getProvider","createLogger","startSpan","queueSpan","auditRowToSpan","classifyErrorType","log","webhookRateCounters","Map","MAX_INLINE_DEPTH","CODE_TIMEOUT_MS","CODE_OUTPUT_MAX","MAX_FOR_EACH_ITEMS","MAX_PARALLEL_CHILDREN","GUEST_APPROVAL_SECRET","process","env","FLY_INTERNAL_SECRET","GUEST_APPROVAL_BASE_URL","generateGuestApprovalUrl","approvalId","action","expiresAt","payload","sig","update","digest","encodeURIComponent","verifyGuestApprovalSignature","expected","Buffer","from","logWorkflowEvent","supabase","runId","eventType","stepRunId","error","insert","run_id","step_run_id","event_type","warn","err","message","checkFlowControl","step","config","step_config","concurrencyLimit","concurrency_limit","concurrencyKey","concurrency_key","step_key","count","select","head","eq","store_id","neq","allowed","reason","rateLimit","rate_limit","rateWindowSec","rate_window_seconds","windowStart","Date","now","toISOString","in","gte","_executeTool","_runAgentQuery","_broadcastToken","_broadcastStepError","setToolExecutor","fn","setAgentExecutor","setTokenBroadcaster","setStepErrorBroadcaster","surfaceStepError","errorMessage","timestamp","error_details","step_name","step_type","error_message","type","workflow_id","executeToolStep","ctx","storeId","traceId","success","toolName","tool_name","argsTemplate","args_template","args","resolvedArgs","template_data","mergedData","trigger","stepData","Object","entries","steps","output","assign","keys","length","tool_id","cb","checkToolCircuitBreaker","result","updateToolCircuitBreaker","data","executeConditionStep","expression","on_true","on_false","branch","undefined","condition_result","executeTransformStep","mapping","executeAgentStep","agentId","agent_id","promptTemplate","prompt_template","prompt","allowedTools","allowed_tools","blockedTools","blocked_tools","requireApprovalTools","require_approval_tools","gatedPrompt","join","approvedTools","input","approved_tools","pendingTools","filter","t","includes","maxTurns","max_turns","useBatch","use_batch","model","provider","batchProvider","requestId","replace","slice","batchResult","processSingle","role","content","max_tokens","temperature","response","text","usage","batch","onToken","token","validateUrl","executeWebhookOutStep","url","ssrfError","method","toUpperCase","headers","k","v","body","bodyTemplate","body_template","JSON","stringify","hmac_secret","hmac","controller","AbortController","timer","setTimeout","abort","resp","fetch","signal","clearTimeout","ct","get","json","ok","status","String","substring","name","executeNoopStep","noop","executeLlmBatchStep","systemTemplate","system","maxTokens","tools","batch_request_id","executeApprovalStep","approval_status","approvalData","isApproved","approved","response_data","approval_data","responded_by","on_approve","on_reject","title","description","options","timeoutSeconds","timeout_seconds","timeoutAction","timeout_action","channels","notification_channels","form_schema","assigned_to","assigned_role","expires_at","guestUrls","optionsList","Array","isArray","opt","waiting_for","guest_urls","parseCronField","field","min","max","values","Set","part","split","trimmed","trim","i","add","range","stepStr","parseInt","isNaN","start","end","map","Number","s","e","n","sort","a","b","getUtcOffsetMinutes","date","tz","fmt","Intl","DateTimeFormat","timeZone","year","month","day","hour","minute","second","hour12","p","fromEntries","formatToParts","x","value","wallMs","UTC","getTime","getNextCronTime","after","timezone","parts","minutes","hours","doms","months","dows","domRestricted","dowRestricted","useDomDowOr","effectiveTz","offsetMin","localEpoch","candidate","setUTCSeconds","setUTCMinutes","getUTCMinutes","maxMs","lastOffsetDay","getUTCDate","currentDay","approxUtc","newOffset","drift","setTime","realUtc","mo","getUTCMonth","hr","getUTCHours","mi","dow","getUTCDay","setUTCMonth","setUTCHours","domMatch","dowMatch","dayMatch","setUTCDate","verifyOffset","processScheduleTriggers","dueWorkflows","not","lte","limit","fired","wf","isOneTime","cron_expression","rpc","p_workflow_id","id","p_store_id","p_trigger_type","p_trigger_payload","cron","one_time","scheduled_at","p_idempotency_key","workflowId","trace_id","executeInlineChain","last_scheduled_at","next_run_at","is_active","nextRun","DEFAULT_MAX_RUN_DURATION_SEC","enforceWorkflowTimeouts","timedOut","run","workflows","maxDuration","max_run_duration_seconds","elapsed","started_at","completeWorkflowRun","Math","round","archiveToDlq","elapsedSec","zombieRuns","activeSteps","checkWorkflowCompletion","lastOrphanCleanupAt","ORPHAN_CLEANUP_INTERVAL_MS","cleanupOrphanedSteps","orphans","cleaned","runStatus","workflow_runs","completed_at","info","lastDlqRetryAt","DLQ_RETRY_INTERVAL_MS","DLQ_RETRY_BATCH_SIZE","DLQ_MAX_RETRY_ATTEMPTS","processDlqRetries","or","lt","order","ascending","retried","entry","last_retry_at","backoffMs","pow","retry_count","trigger_type","trigger_payload","_dlq_retry","_dlq_entry_id","last_error","retried_run_id","dlqEntryId","retryCount","processEventTriggers","events","claimed","claimErr","batch_size","debug","fallbackEvents","eventIds","uniqueStoreIds","uniqueEventTypes","allSubs","subsMap","sub","key","has","set","push","processed","event","subs","processed_at","filter_expression","event_payload","pass","idempotencyKey","startErr","_event_id","_event_type","_event_source","source","eventId","deduplicated","workflowName","single","workflow_name","error_step_key","step_outputs","run_duration_ms","duration_ms","executeCodeStepIsolated","code","language","timeoutMs","timeout_ms","context","outputStr","truncated","executePythonCode","_code","_ctx","toolId","circuit_breaker_state","trippedAt","circuit_breaker_tripped_at","cooldownMs","circuit_breaker_cooldown_seconds","TRANSIENT_ERROR_PATTERNS","isTransientError","some","pattern","test","circuit_breaker_failures","newFailures","circuit_breaker_threshold","severity","resource_type","resource_id","service_name","span_kind","status_code","start_time","end_time","details","failures","threshold","handleWorkflowCircuitBreaker","reclaimStaleSteps","MIN_STALE_THRESHOLD_MS","MAX_STALE_AGE_MS","staleSteps","reclaimed","timeoutSec","workflow_steps","staleThreshold","exhaustedRetries","attempt_count","max_attempts","next_retry_at","stepKey","processWorkflowSteps","batchSize","catch","claimedRaw","errors","workflowIds","openBreakers","blockedIds","w","blocked","affectedRuns","skippedSteps","blockedWorkflows","size","stepCount","runIds","runTraces","traceMap","r","isForEachEmailStep","parent_step_run_id","emailForEachSteps","otherSteps","processStep","applyVersionOverrides","executeAndAdvance","errMsg","Promise","all","processWaitingSteps","resolved","subWfSteps","childRunIds","child_run_id","Boolean","childRuns","runMap","childRun","accumulateAndAdvance","aggregatedParents","aggErr","waitingParents","parent","totalChildren","doneChildren","childOutputs","outputs","c","failedKids","allSuccess","children","total","failed","total_children","done_children","childOutputsArr","child_outputs","failed_children","firstError","find","parent_id","parent_run_id","parent_step_key","stepDef","wsDef","versionedSteps","loadVersionedSteps","vStep","on_success","on_failure","max_retries","step_id","stepOutput","p_run_id","p_step_key","p_step_output","then","rpcErr","newOutputs","createNextStepRunByKey","startTime","span","attempt","prevRun","nextStepKey","flowCheck","flow_control","workflow","val","stepTimeoutSec","stepTimeoutMs","stepTimer","stepTimeoutPromise","_","reject","Error","race","delaySec","seconds","delay_seconds","resume_at","delayed","childWfId","payloadTemplate","trigger_payload_template","startResult","child_workflow_id","stepKeys","step_keys","child_steps","parallel","itemsExpr","items","targetStepKey","maxItems","max_items","targetStep","item","idx","waiting_for_count","target_step","approvalResult","customUrl","endpoint","customSsrfError","customHeaders","customBody","payload_config","ctrl","respData","waitpoint_completed","waitpoint_data","waitpointToken","waitpointTimeout","waitpointExpires","label","timeoutErr","durationMs","setError","rpcError","retryError","lockError","cpError","sequence_number","request_id","error_type","retryPolicy","retry_policy","backoffType","backoff_type","baseDelay","backoff_base_seconds","retry_delay_seconds","maxBackoff","max_backoff_seconds","backoffDelay","random","retryOn","retry_on","shouldRetry","VERSION_CACHE_MAX_SIZE","versionedStepsCache","VERSION_CACHE_TTL_MS","clearStepCache","clear","versionedStepsCacheSet","delete","excess","removed","setInterval","cached","version_id","version","resolveStepDef","nextStep","max_steps_per_run","inserted","claimStepForRun","row","input_schema","depth","depthLimit","runData","asyncTypes","allSteps","activeStatuses","failedSteps","vStepMap","stepIds","stepDefs","defMap","d","def","errorStepKey","resolvedTraceId","failedStepRuns","errorCount","errorLog","sr","updatedMetadata","metadata","error_count","error_log","updatedRows","updateErr","current_step_key","sendErrorNotification","errorPayload","error_step","errorWebhookSsrf","on_error_webhook_url","on_error_email","to","subject","handleWebhookIngestion","slug","rawBody","endpointQuery","endpoints","counter","timestamps","max_requests_per_minute","verify_signature","signature","signing_secret","sigBuf","expBuf","MAX_TRIGGER_PAYLOAD_BYTES","parse","raw","payload_transform","last_received_at","total_received","input_bytes","sync_response","sync_timeout_seconds","deadline"],"sources":["../../../src/server/handlers/workflow-steps.ts"],"sourcesContent":["// server/handlers/workflow-steps.ts — Step executor engine\n// Extracted from workflows.ts to separate step execution from workflow CRUD/management.\n//\n// Contains: step type executors, executeAndAdvance, inline chain execution,\n// circuit breakers, code execution (JS/Python), cron parser, schedule/timeout processing,\n// event trigger processing, flow control, webhook ingestion, and all step advancement helpers.\n\nimport { createHmac, timingSafeEqual, randomUUID } from \"node:crypto\";\n// P0 FIX: node:vm import removed — in-process code sandbox eliminated\nimport type { SupabaseClient } from \"@supabase/supabase-js\";\nimport { resolveTemplate, evaluateCondition, type TemplateContext } from \"../lib/template-resolver.js\";\nimport { sanitizeError } from \"../../shared/agent-core.js\";\nimport { executeWithPool, initWorkerPool, getPoolStats, shutdownPool } from \"../lib/code-worker-pool.js\";\nimport { batchClient } from \"../lib/batch-client.js\";\nimport { getProvider } from \"../../shared/constants.js\";\nimport { createLogger } from \"../lib/logger.js\";\nimport { startSpan } from \"../lib/otel.js\";\nimport { queueSpan, auditRowToSpan, classifyErrorType } from \"../lib/clickhouse-buffer.js\";\n\nconst log = createLogger(\"workflow-steps\");\n\n// In-memory sliding-window rate limiter for webhooks (replaces audit_logs read)\nconst webhookRateCounters = new Map<string, { timestamps: number[] }>();\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\nconst MAX_INLINE_DEPTH = 50;\nconst CODE_TIMEOUT_MS = 5000;\nconst CODE_OUTPUT_MAX = 102_400; // 100KB\nconst MAX_FOR_EACH_ITEMS = 1000; // P2 FIX: Prevent unbounded for_each expansion\nconst MAX_PARALLEL_CHILDREN = 100; // P1 FIX: Cap parallel step fan-out\nconst GUEST_APPROVAL_SECRET = process.env.GUEST_APPROVAL_SECRET || process.env.FLY_INTERNAL_SECRET || \"\";\nconst GUEST_APPROVAL_BASE_URL = \"https://whale-agent.fly.dev/approvals/guest\";\n\n// ============================================================================\n// GUEST APPROVAL — HMAC-signed URLs for unauthenticated approvers\n// ============================================================================\n\nexport function generateGuestApprovalUrl(approvalId: string, action: string, expiresAt: string): string | null {\n if (!GUEST_APPROVAL_SECRET) return null; // Guest approvals disabled — no signing secret configured\n const payload = `${approvalId}:${action}:${expiresAt}`;\n const sig = createHmac(\"sha256\", GUEST_APPROVAL_SECRET).update(payload).digest(\"hex\");\n return `${GUEST_APPROVAL_BASE_URL}/${approvalId}?action=${action}&expires=${encodeURIComponent(expiresAt)}&sig=${sig}`;\n}\n\nexport function verifyGuestApprovalSignature(approvalId: string, action: string, expiresAt: string, sig: string): boolean {\n if (!GUEST_APPROVAL_SECRET) return false; // Guest approvals disabled — no signing secret configured\n const payload = `${approvalId}:${action}:${expiresAt}`;\n const expected = createHmac(\"sha256\", GUEST_APPROVAL_SECRET).update(payload).digest(\"hex\");\n try {\n return timingSafeEqual(Buffer.from(sig, \"hex\"), Buffer.from(expected, \"hex\"));\n } catch {\n return false;\n }\n}\n\n// ============================================================================\n// EVENT JOURNAL — append-only state transition log\n// ============================================================================\n\nexport async function logWorkflowEvent(\n supabase: SupabaseClient, runId: string, eventType: string,\n payload: Record<string, unknown>, stepRunId?: string,\n): Promise<void> {\n const { error } = await supabase.from(\"workflow_events\").insert({\n run_id: runId,\n step_run_id: stepRunId || null,\n event_type: eventType,\n payload,\n });\n if (error) log.warn({ err: error.message, runId, eventType }, \"logWorkflowEvent insert failed\");\n}\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface StepClaim {\n step_run_id: string;\n run_id: string;\n workflow_id: string;\n store_id: string;\n step_id: string;\n step_key: string;\n step_type: string;\n step_config: Record<string, unknown>;\n on_success: string | null;\n on_failure: string | null;\n timeout_seconds: number;\n input_schema: Record<string, unknown> | null;\n step_outputs: Record<string, unknown>;\n trigger_payload: Record<string, unknown>;\n attempt_count: number;\n max_attempts: number;\n max_steps_per_run: number;\n input: unknown | null;\n parent_step_run_id: string | null;\n retry_delay_seconds: number;\n}\n\nexport interface StepResult {\n success: boolean;\n output?: unknown;\n error?: string;\n branch?: string;\n}\n\n// ============================================================================\n// FLOW CONTROL — concurrency + rate limiting at step level\n// ============================================================================\n\nasync function checkFlowControl(\n supabase: SupabaseClient, step: StepClaim,\n): Promise<{ allowed: boolean; reason?: string }> {\n const config = step.step_config;\n\n // Per-step concurrency limit\n // P0 FIX: Filter by store_id to prevent cross-tenant data access in flow control decisions\n const concurrencyLimit = config.concurrency_limit as number;\n if (concurrencyLimit && concurrencyLimit > 0) {\n const concurrencyKey = (config.concurrency_key as string) || step.step_key;\n const { count } = await supabase.from(\"workflow_step_runs\")\n .select(\"id\", { count: \"exact\", head: true })\n .eq(\"step_key\", concurrencyKey)\n .eq(\"status\", \"running\")\n .eq(\"store_id\", step.store_id)\n .neq(\"id\", step.step_run_id); // exclude self\n if ((count || 0) >= concurrencyLimit) {\n return { allowed: false, reason: `Concurrency limit ${concurrencyLimit} reached for '${concurrencyKey}'` };\n }\n }\n\n // Per-step rate limit (max N executions per window)\n // P0 FIX: Filter by store_id to prevent cross-tenant data access in flow control decisions\n const rateLimit = config.rate_limit as number;\n const rateWindowSec = (config.rate_window_seconds as number) || 60;\n if (rateLimit && rateLimit > 0) {\n const windowStart = new Date(Date.now() - rateWindowSec * 1000).toISOString();\n const { count } = await supabase.from(\"workflow_step_runs\")\n .select(\"id\", { count: \"exact\", head: true })\n .eq(\"step_key\", step.step_key)\n .eq(\"store_id\", step.store_id)\n .in(\"status\", [\"success\", \"running\"])\n .gte(\"started_at\", windowStart);\n if ((count || 0) >= rateLimit) {\n return { allowed: false, reason: `Rate limit ${rateLimit}/${rateWindowSec}s reached for '${step.step_key}'` };\n }\n }\n\n return { allowed: true };\n}\n\n// ============================================================================\n// INJECTED EXECUTORS (set from index.ts to avoid circular deps)\n// ============================================================================\n\ntype ExecuteToolFn = (\n supabase: SupabaseClient,\n toolName: string,\n args: Record<string, unknown>,\n storeId?: string,\n traceId?: string,\n) => Promise<{ success: boolean; data?: unknown; error?: string }>;\n\ntype TokenBroadcastFn = (runId: string, stepKey: string, token: string) => void;\n\ntype StepErrorBroadcastFn = (runId: string, data: {\n type: \"workflow_error\";\n workflow_id: string;\n run_id: string;\n step_name: string;\n step_type: string;\n error: string;\n timestamp: string;\n}) => void;\n\ntype RunAgentQueryFn = (\n supabase: SupabaseClient,\n agentId: string,\n prompt: string,\n storeId: string,\n maxTurns?: number,\n onToken?: (token: string) => void,\n traceId?: string,\n) => Promise<{ success: boolean; response?: string; error?: string }>;\n\nlet _executeTool: ExecuteToolFn | null = null;\nlet _runAgentQuery: RunAgentQueryFn | null = null;\nlet _broadcastToken: TokenBroadcastFn | null = null;\nlet _broadcastStepError: StepErrorBroadcastFn | null = null;\n\nexport function setToolExecutor(fn: ExecuteToolFn): void { _executeTool = fn; }\nexport function setAgentExecutor(fn: RunAgentQueryFn): void { _runAgentQuery = fn; }\nexport function setTokenBroadcaster(fn: TokenBroadcastFn): void { _broadcastToken = fn; }\nexport function setStepErrorBroadcaster(fn: StepErrorBroadcastFn): void { _broadcastStepError = fn; }\n\n/** Broadcast a step error to SSE clients and persist error_details on the step run. */\nasync function surfaceStepError(\n supabase: SupabaseClient,\n step: { step_run_id: string; run_id: string; workflow_id: string; step_key: string; step_type: string },\n errorMessage: string,\n): Promise<void> {\n const timestamp = new Date().toISOString();\n\n // 1. Persist structured error_details on the step run record\n await supabase.from(\"workflow_step_runs\").update({\n error_details: {\n step_name: step.step_key,\n step_type: step.step_type,\n error_message: errorMessage,\n timestamp,\n },\n }).eq(\"id\", step.step_run_id);\n\n // 2. Broadcast via SSE so connected clients see the error in real time\n if (_broadcastStepError) {\n _broadcastStepError(step.run_id, {\n type: \"workflow_error\",\n workflow_id: step.workflow_id,\n run_id: step.run_id,\n step_name: step.step_key,\n step_type: step.step_type,\n error: errorMessage,\n timestamp,\n });\n }\n}\n\n// ============================================================================\n// STEP EXECUTORS\n// ============================================================================\n\nasync function executeToolStep(\n supabase: SupabaseClient, config: Record<string, unknown>,\n ctx: TemplateContext, storeId: string, traceId?: string,\n): Promise<StepResult> {\n if (!_executeTool) return { success: false, error: \"Tool executor not initialized\" };\n const toolName = config.tool_name as string;\n if (!toolName) return { success: false, error: \"No tool_name in step config\" };\n\n const argsTemplate = (config.args_template || config.args || {}) as Record<string, unknown>;\n const resolvedArgs = resolveTemplate(argsTemplate, ctx) as Record<string, unknown>;\n\n // For email steps: auto-inject template_data from workflow context so {{variable}} placeholders resolve\n if (toolName === \"email\" && (resolvedArgs.action === \"send\" || resolvedArgs.action === \"send_template\") && !resolvedArgs.template_data) {\n const mergedData: Record<string, unknown> = { ...(ctx.trigger || {}) };\n for (const [, stepData] of Object.entries(ctx.steps || {})) {\n if (stepData?.output && typeof stepData.output === \"object\") {\n Object.assign(mergedData, stepData.output as Record<string, unknown>);\n }\n }\n if (Object.keys(mergedData).length > 0) {\n resolvedArgs.template_data = mergedData;\n }\n }\n\n if (config.tool_id) {\n const cb = await checkToolCircuitBreaker(supabase, config.tool_id as string);\n if (!cb.allowed) return { success: false, error: cb.reason };\n }\n\n const result = await _executeTool(supabase, toolName, resolvedArgs, storeId, traceId);\n\n if (config.tool_id) await updateToolCircuitBreaker(supabase, config.tool_id as string, result.success, result.error);\n\n return result.success\n ? { success: true, output: result.data }\n : { success: false, error: result.error };\n}\n\nfunction executeConditionStep(config: Record<string, unknown>, ctx: TemplateContext): StepResult {\n const expression = config.expression as string;\n if (!expression) return { success: false, error: \"No expression in condition step\" };\n if (!config.on_true && !config.on_false) {\n return { success: false, output: { error: \"Condition step must have at least on_true or on_false defined\" } };\n }\n const result = evaluateCondition(expression, ctx);\n const branch = result ? (config.on_true as string || undefined) : (config.on_false as string || undefined);\n return { success: true, output: { condition_result: result, branch }, branch };\n}\n\nfunction executeTransformStep(config: Record<string, unknown>, ctx: TemplateContext): StepResult {\n const mapping = config.mapping as Record<string, unknown>;\n if (!mapping) return { success: false, error: \"No mapping in transform step\" };\n return { success: true, output: resolveTemplate(mapping, ctx) };\n}\n\nasync function executeAgentStep(\n config: Record<string, unknown>, ctx: TemplateContext, storeId: string,\n supabase: SupabaseClient, step?: StepClaim, traceId?: string,\n): Promise<StepResult> {\n if (!_runAgentQuery) return { success: false, error: \"Agent executor not initialized\" };\n const agentId = config.agent_id as string;\n if (!agentId) return { success: false, error: \"No agent_id in agent step config\" };\n\n const promptTemplate = (config.prompt_template || config.prompt || \"\") as string;\n const prompt = resolveTemplate(promptTemplate, ctx) as string;\n if (!prompt) return { success: false, error: \"No prompt resolved for agent step\" };\n\n // AI tool gating — inject allowed/blocked tool lists into prompt\n const allowedTools = config.allowed_tools as string[] | undefined;\n const blockedTools = config.blocked_tools as string[] | undefined;\n const requireApprovalTools = config.require_approval_tools as string[] | undefined;\n\n let gatedPrompt = prompt;\n if (allowedTools?.length) {\n gatedPrompt += `\\n\\n[SYSTEM: You may ONLY use these tools: ${allowedTools.join(\", \")}. Refuse any other tool calls.]`;\n }\n if (blockedTools?.length) {\n gatedPrompt += `\\n\\n[SYSTEM: You must NEVER use these tools: ${blockedTools.join(\", \")}. Use alternatives instead.]`;\n }\n if (requireApprovalTools?.length && step) {\n // Check if approval was already given (stored in step input from approval step)\n const approvedTools = (step.input as any)?.approved_tools as string[] | undefined;\n const pendingTools = requireApprovalTools.filter(t => !approvedTools?.includes(t));\n if (pendingTools.length > 0) {\n gatedPrompt += `\\n\\n[SYSTEM: The following tools require human approval before use: ${pendingTools.join(\", \")}. Do NOT call them — describe what you would do and why, then stop.]`;\n }\n }\n\n const maxTurns = (config.max_turns as number) || 5;\n const useBatch = config.use_batch === true;\n\n // Batch mode: single-turn LLM call via Batch API for ~50% cost savings.\n // Only valid when no tool loop is needed (the batch API doesn't support agentic tool loops).\n if (useBatch && maxTurns <= 1) {\n const model = (config.model as string) || \"claude-sonnet-4-6\";\n const provider = getProvider(model);\n const batchProvider = (provider === \"openai\") ? \"openai\" as const : \"anthropic\" as const;\n const requestId = `wf_agent_${randomUUID().replace(/-/g, \"\").slice(0, 12)}`;\n\n try {\n const batchResult = await batchClient.processSingle(\n requestId,\n batchProvider,\n model,\n [{ role: \"user\", content: gatedPrompt }],\n { max_tokens: (config.max_tokens as number) || 4096, temperature: config.temperature as number | undefined },\n );\n\n return batchResult.success\n ? { success: true, output: { response: batchResult.text || \"\", usage: batchResult.usage, batch: true } }\n : { success: false, error: batchResult.error || \"Batch agent request failed\" };\n } catch (err) {\n return { success: false, error: sanitizeError(err) };\n }\n }\n\n // Wire up token broadcasting for SSE streaming to connected clients\n const onToken = step && _broadcastToken\n ? (token: string) => _broadcastToken!(step.run_id, step.step_key, token)\n : undefined;\n\n const result = await _runAgentQuery(supabase, agentId, gatedPrompt, storeId, maxTurns, onToken, traceId);\n\n return result.success\n ? { success: true, output: { response: result.response } }\n : { success: false, error: result.error };\n}\n\n// P1 FIX: Use shared SSRF guard module (enhanced with DNS resolve-then-check, IPv6-mapped, CGNAT)\nimport { validateUrl } from \"../lib/ssrf-guard.js\";\n\nasync function executeWebhookOutStep(\n config: Record<string, unknown>, ctx: TemplateContext,\n): Promise<StepResult> {\n const url = resolveTemplate(config.url as string, ctx) as string;\n if (!url) return { success: false, error: \"No URL in webhook_out step\" };\n // P0 FIX: Use async validateUrl (DNS resolve-then-check) instead of sync isBlockedUrl\n const ssrfError = await validateUrl(url);\n if (ssrfError) return { success: false, error: `Blocked: ${ssrfError}` };\n\n const method = ((config.method as string) || \"POST\").toUpperCase();\n const headers: Record<string, string> = {};\n if (config.headers && typeof config.headers === \"object\") {\n for (const [k, v] of Object.entries(config.headers as Record<string, string>)) {\n headers[k] = resolveTemplate(v, ctx) as string;\n }\n }\n\n let body: string | undefined;\n if (method !== \"GET\" && method !== \"HEAD\") {\n const bodyTemplate = config.body_template || {};\n body = JSON.stringify(resolveTemplate(bodyTemplate, ctx));\n if (!headers[\"Content-Type\"]) headers[\"Content-Type\"] = \"application/json\";\n }\n\n if (config.hmac_secret && body) {\n const hmac = createHmac(\"sha256\", config.hmac_secret as string).update(body).digest(\"hex\");\n headers[\"X-Webhook-Signature\"] = `sha256=${hmac}`;\n }\n\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 30_000);\n const resp = await fetch(url, { method, headers, body, signal: controller.signal });\n clearTimeout(timer);\n\n const ct = resp.headers.get(\"content-type\") || \"\";\n const data = ct.includes(\"json\") ? await resp.json() : await resp.text();\n\n if (!resp.ok) return { success: false, error: `HTTP ${resp.status}: ${String(data).substring(0, 500)}` };\n return { success: true, output: { status: resp.status, data } };\n } catch (err: any) {\n if (err.name === \"AbortError\") return { success: false, error: \"Webhook request timed out\" };\n return { success: false, error: sanitizeError(err) };\n }\n}\n\nfunction executeNoopStep(): StepResult {\n return { success: true, output: { noop: true } };\n}\n\n\n// ============================================================================\n// BATCH LLM STEP — non-streaming LLM via Batch API (~50% cost savings)\n// ============================================================================\n\n/**\n * Execute an LLM request via the Batch API instead of streaming.\n * Designed for workflow steps that don't need real-time token streaming.\n *\n * Step config:\n * model: string — model ID (e.g. \"claude-sonnet-4-6\", \"gpt-5-mini\")\n * prompt: string — prompt template (resolved with ctx)\n * system: string — optional system prompt template\n * max_tokens: number — optional, default 4096\n * temperature: number — optional\n * tools: array — optional tool definitions for the LLM\n */\nasync function executeLlmBatchStep(\n config: Record<string, unknown>, ctx: TemplateContext,\n): Promise<StepResult> {\n const model = config.model as string;\n if (!model) return { success: false, error: \"No model in llm_batch step config\" };\n\n const promptTemplate = (config.prompt_template || config.prompt || \"\") as string;\n const prompt = resolveTemplate(promptTemplate, ctx) as string;\n if (!prompt) return { success: false, error: \"No prompt resolved for llm_batch step\" };\n\n const systemTemplate = config.system as string | undefined;\n const system = systemTemplate ? resolveTemplate(systemTemplate, ctx) as string : undefined;\n\n const maxTokens = (config.max_tokens as number) || 4096;\n const temperature = config.temperature as number | undefined;\n const tools = config.tools as unknown[] | undefined;\n\n // Determine provider from model ID\n const provider = getProvider(model);\n const batchProvider = (provider === \"openai\") ? \"openai\" as const : \"anthropic\" as const;\n\n const requestId = `wf_${randomUUID().replace(/-/g, \"\").slice(0, 16)}`;\n\n try {\n const result = await batchClient.processSingle(\n requestId,\n batchProvider,\n model,\n [{ role: \"user\", content: prompt }],\n { system, tools, max_tokens: maxTokens, temperature },\n );\n\n if (result.success) {\n return {\n success: true,\n output: {\n response: result.text || \"\",\n content: result.content,\n usage: result.usage,\n batch_request_id: requestId,\n },\n };\n } else {\n return { success: false, error: result.error || \"Batch LLM request failed\" };\n }\n } catch (err) {\n return { success: false, error: sanitizeError(err) };\n }\n}\n\n// ============================================================================\n// PHASE 2: APPROVAL STEP EXECUTOR\n// ============================================================================\n\nasync function executeApprovalStep(\n supabase: SupabaseClient, step: StepClaim, ctx: TemplateContext,\n): Promise<StepResult | \"waiting\"> {\n const config = step.step_config;\n\n // Second pass — step was resumed after approval response\n if (step.input && typeof step.input === \"object\" && (step.input as any).approval_status) {\n const approvalData = step.input as { approval_status: string; approval_data?: unknown; responded_by?: string };\n const isApproved = approvalData.approval_status === \"approved\" || approvalData.approval_status === \"approve\";\n return {\n success: true,\n output: {\n approved: isApproved,\n status: approvalData.approval_status,\n response_data: approvalData.approval_data,\n responded_by: approvalData.responded_by,\n },\n branch: isApproved ? (config.on_approve as string) : (config.on_reject as string),\n };\n }\n\n // First pass — create approval request and wait\n const title = resolveTemplate((config.title || \"Approval Required\") as string, ctx) as string;\n const description = config.description ? resolveTemplate(config.description as string, ctx) as string : null;\n const prompt = config.prompt ? resolveTemplate(config.prompt as string, ctx) as string : null;\n const options = config.options || [\"approve\", \"reject\"];\n const timeoutSeconds = (config.timeout_seconds as number) || 86400;\n const timeoutAction = (config.timeout_action as string) || \"fail\";\n const channels = config.notification_channels || [\"push\"];\n\n const expiresAt = new Date(Date.now() + timeoutSeconds * 1000).toISOString();\n\n await supabase.from(\"workflow_approval_requests\").insert({\n store_id: step.store_id,\n run_id: step.run_id,\n step_run_id: step.step_run_id,\n workflow_id: step.workflow_id,\n title,\n description,\n prompt,\n options,\n form_schema: config.form_schema || null,\n assigned_to: config.assigned_to || null,\n assigned_role: config.assigned_role || null,\n expires_at: expiresAt,\n timeout_action: timeoutAction,\n notification_channels: channels,\n });\n\n // Generate guest approval URLs (signed, no auth required) — only if signing secret is configured\n const guestUrls: Record<string, string> = {};\n const optionsList = Array.isArray(options) ? options as string[] : [\"approve\", \"reject\"];\n for (const opt of optionsList) {\n const url = generateGuestApprovalUrl(step.step_run_id, opt, expiresAt);\n if (url) guestUrls[opt] = url;\n }\n\n // Set step to waiting\n await supabase.from(\"workflow_step_runs\").update({\n status: \"waiting\",\n output: { waiting_for: \"approval\", title, expires_at: expiresAt, guest_urls: guestUrls },\n }).eq(\"id\", step.step_run_id);\n\n return \"waiting\";\n}\n\n// ============================================================================\n// PHASE 7: ENHANCED CODE EXECUTION\n// ============================================================================\n\n// Re-export pool management for index.ts to initialize on startup\nexport { initWorkerPool, getPoolStats, shutdownPool };\n\n// ============================================================================\n// CRON EXPRESSION PARSER — 5-field (min hour dom mon dow)\n// No external dependencies. Supports: *, */N, N-M, N,M, N\n// ============================================================================\n\nfunction parseCronField(field: string, min: number, max: number): number[] {\n const values: Set<number> = new Set();\n for (const part of field.split(\",\")) {\n const trimmed = part.trim();\n if (trimmed === \"*\") {\n for (let i = min; i <= max; i++) values.add(i);\n } else if (trimmed.includes(\"/\")) {\n const [range, stepStr] = trimmed.split(\"/\");\n const step = parseInt(stepStr, 10);\n if (isNaN(step) || step <= 0) continue;\n let start = min, end = max;\n if (range !== \"*\") {\n if (range.includes(\"-\")) {\n [start, end] = range.split(\"-\").map(Number);\n } else {\n start = parseInt(range, 10);\n }\n }\n for (let i = start; i <= end; i += step) values.add(i);\n } else if (trimmed.includes(\"-\")) {\n const [s, e] = trimmed.split(\"-\").map(Number);\n for (let i = s; i <= e; i++) values.add(i);\n } else {\n const n = parseInt(trimmed, 10);\n if (!isNaN(n) && n >= min && n <= max) values.add(n);\n }\n }\n return [...values].sort((a, b) => a - b);\n}\n\n/**\n * Compute the next occurrence of a 5-field cron expression after `after`.\n * Returns null if expression is invalid or no match found within 366 days.\n */\n/**\n * Get the UTC offset in minutes for an IANA timezone at a specific instant.\n * Uses Intl.DateTimeFormat.formatToParts to extract wall-clock components,\n * then diffs against the UTC components of the same instant. No string parsing.\n */\nfunction getUtcOffsetMinutes(date: Date, tz: string): number {\n // Extract wall-clock parts in the target timezone\n const fmt = new Intl.DateTimeFormat(\"en-US\", {\n timeZone: tz, year: \"numeric\", month: \"numeric\", day: \"numeric\",\n hour: \"numeric\", minute: \"numeric\", second: \"numeric\", hour12: false,\n });\n const p = Object.fromEntries(fmt.formatToParts(date).map(x => [x.type, parseInt(x.value, 10)]));\n // Build a pseudo-UTC timestamp from the wall-clock parts\n const wallMs = Date.UTC(p.year, p.month - 1, p.day, p.hour % 24, p.minute, p.second);\n // The offset is how far ahead the wall clock is from the actual UTC instant\n return (wallMs - date.getTime()) / 60_000;\n}\n\nexport function getNextCronTime(expression: string, after: Date = new Date(), timezone?: string): Date | null {\n const parts = expression.trim().split(/\\s+/);\n if (parts.length !== 5) return null;\n\n const minutes = parseCronField(parts[0], 0, 59);\n const hours = parseCronField(parts[1], 0, 23);\n const doms = parseCronField(parts[2], 1, 31);\n const months = parseCronField(parts[3], 1, 12);\n const dows = parseCronField(parts[4], 0, 6); // 0=Sunday\n\n if (!minutes.length || !hours.length || !doms.length || !months.length || !dows.length) return null;\n\n // DOM/DOW: POSIX semantics — when both are restricted, match EITHER (OR).\n // When only one is restricted, match only that one.\n const domRestricted = parts[2] !== \"*\";\n const dowRestricted = parts[4] !== \"*\";\n const useDomDowOr = domRestricted && dowRestricted;\n\n // Validate timezone\n let effectiveTz = \"UTC\";\n if (timezone) {\n try { Intl.DateTimeFormat(undefined, { timeZone: timezone }); effectiveTz = timezone; } catch { /* invalid tz, stay UTC */ }\n }\n\n // Strategy: work in \"local time\" coordinates using a fake Date whose UTC fields\n // represent the wall-clock time in the target timezone. This lets us use the fast\n // jump-by-month/day/hour logic. Once we find a match, we convert back to real UTC.\n //\n // The offset is recomputed each time we cross a day boundary to handle DST transitions.\n let offsetMin = effectiveTz === \"UTC\" ? 0 : getUtcOffsetMinutes(after, effectiveTz);\n const localEpoch = after.getTime() + offsetMin * 60_000;\n const candidate = new Date(localEpoch);\n candidate.setUTCSeconds(0, 0);\n candidate.setUTCMinutes(candidate.getUTCMinutes() + 1); // 1 minute after `after`\n\n const maxMs = after.getTime() + 366 * 86_400_000;\n let lastOffsetDay = candidate.getUTCDate(); // Track day for offset recomputation\n\n // Iterate in local-time coordinates (fast jumps — same algorithm as before)\n while (true) {\n // Recompute offset on day boundaries to handle DST transitions correctly\n const currentDay = candidate.getUTCDate();\n if (effectiveTz !== \"UTC\" && currentDay !== lastOffsetDay) {\n // Convert current candidate back to approximate UTC, then get fresh offset\n const approxUtc = new Date(candidate.getTime() - offsetMin * 60_000);\n const newOffset = getUtcOffsetMinutes(approxUtc, effectiveTz);\n if (newOffset !== offsetMin) {\n // DST changed — adjust candidate to maintain correct local-time coordinates\n const drift = (newOffset - offsetMin) * 60_000;\n candidate.setTime(candidate.getTime() + drift);\n offsetMin = newOffset;\n }\n lastOffsetDay = candidate.getUTCDate();\n }\n\n // Safety: check if we've exceeded 366 days\n const realUtc = candidate.getTime() - offsetMin * 60_000;\n if (realUtc > maxMs) return null;\n\n const mo = candidate.getUTCMonth() + 1;\n const day = candidate.getUTCDate();\n const hr = candidate.getUTCHours();\n const mi = candidate.getUTCMinutes();\n const dow = candidate.getUTCDay();\n\n if (!months.includes(mo)) {\n candidate.setUTCMonth(candidate.getUTCMonth() + 1, 1);\n candidate.setUTCHours(0, 0, 0, 0);\n continue;\n }\n\n const domMatch = doms.includes(day);\n const dowMatch = dows.includes(dow);\n const dayMatch = useDomDowOr ? (domMatch || dowMatch) : (domMatch && dowMatch);\n if (!dayMatch) {\n candidate.setUTCDate(candidate.getUTCDate() + 1);\n candidate.setUTCHours(0, 0, 0, 0);\n continue;\n }\n\n if (!hours.includes(hr)) {\n candidate.setUTCHours(candidate.getUTCHours() + 1, 0, 0, 0);\n continue;\n }\n\n if (!minutes.includes(mi)) {\n candidate.setUTCMinutes(candidate.getUTCMinutes() + 1, 0, 0);\n continue;\n }\n\n // Match found in local coordinates — convert back to real UTC.\n if (effectiveTz === \"UTC\") return candidate;\n\n const result = new Date(candidate.getTime() - offsetMin * 60_000);\n\n // Verify: the result in UTC should map back to the same local time we matched.\n // DST spring-forward (gap): 2:00-3:00 doesn't exist → verifyOffset differs → we skip.\n // DST fall-back (ambiguity): 1:00-2:00 exists twice → first occurrence wins (same as cronie).\n const verifyOffset = getUtcOffsetMinutes(result, effectiveTz);\n if (verifyOffset !== offsetMin) {\n candidate.setUTCMinutes(candidate.getUTCMinutes() + 1, 0, 0);\n continue;\n }\n\n return result;\n }\n}\n\n// ============================================================================\n// SCHEDULE TRIGGER PROCESSING — fires due cron workflows\n// ============================================================================\n\nexport async function processScheduleTriggers(supabase: SupabaseClient): Promise<number> {\n // Find workflows that are past due — supports both cron (recurring) and one-time (run_at)\n const { data: dueWorkflows } = await supabase.from(\"workflows\")\n .select(\"id, store_id, cron_expression, timezone\")\n .not(\"next_run_at\", \"is\", null)\n .lte(\"next_run_at\", new Date().toISOString())\n .eq(\"is_active\", true)\n .eq(\"status\", \"active\")\n .limit(10);\n\n if (!dueWorkflows?.length) return 0;\n\n let fired = 0;\n for (const wf of dueWorkflows) {\n try {\n const isOneTime = !wf.cron_expression;\n\n // Start the run\n const { data: result, error } = await supabase.rpc(\"start_workflow_run\", {\n p_workflow_id: wf.id,\n p_store_id: wf.store_id,\n p_trigger_type: \"schedule\",\n p_trigger_payload: {\n cron: wf.cron_expression || null,\n one_time: isOneTime,\n scheduled_at: new Date().toISOString(),\n },\n p_idempotency_key: wf.cron_expression\n ? `schedule:${wf.id}:${new Date().toISOString().slice(0, 16)}` // Minute-granularity dedup for cron\n : `schedule:${wf.id}:one_time`,\n });\n\n if (error || !result?.success) {\n log.error({ workflowId: wf.id, err: error?.message || result?.error }, \"failed to start scheduled workflow\");\n // Still update next_run_at to prevent infinite retries\n } else {\n fired++;\n // Generate trace_id for the new run\n const traceId = randomUUID();\n await supabase.from(\"workflow_runs\").update({ trace_id: traceId }).eq(\"id\", result.run_id);\n // Inline execution\n try { await executeInlineChain(supabase, result.run_id); } catch (err) { log.error({ runId: result.run_id, err: (err as Error).message }, \"inline chain failed for scheduled run\"); }\n }\n\n if (isOneTime) {\n // One-time schedule: clear next_run_at and deactivate\n await supabase.from(\"workflows\").update({\n last_scheduled_at: new Date().toISOString(),\n next_run_at: null,\n is_active: false,\n status: \"paused\",\n }).eq(\"id\", wf.id);\n } else {\n // Recurring cron: compute next run time\n const nextRun = getNextCronTime(wf.cron_expression, new Date(), wf.timezone || undefined);\n await supabase.from(\"workflows\").update({\n last_scheduled_at: new Date().toISOString(),\n next_run_at: nextRun?.toISOString() || null,\n }).eq(\"id\", wf.id);\n }\n } catch (err) {\n log.error({ workflowId: wf.id, err: sanitizeError(err) }, \"error processing scheduled workflow\");\n }\n }\n\n return fired;\n}\n\n// ============================================================================\n// WORKFLOW TIMEOUT ENFORCEMENT — cancel overtime runs\n// ============================================================================\n\nconst DEFAULT_MAX_RUN_DURATION_SEC = 3600; // 1 hour hard ceiling for any workflow run\n\nexport async function enforceWorkflowTimeouts(supabase: SupabaseClient): Promise<number> {\n // Find running workflows that exceeded their duration limit\n const { data: timedOut } = await supabase.from(\"workflow_runs\")\n .select(\"id, workflow_id, store_id, started_at, workflows!inner(max_run_duration_seconds, name)\")\n .eq(\"status\", \"running\")\n .not(\"started_at\", \"is\", null)\n .limit(50);\n\n if (!timedOut?.length) return 0;\n\n let count = 0;\n const now = Date.now();\n\n for (const run of timedOut) {\n const wf = (run as any).workflows;\n // Use configured max_duration or fall back to the hard ceiling\n const maxDuration = (wf?.max_run_duration_seconds && wf.max_run_duration_seconds > 0)\n ? wf.max_run_duration_seconds\n : DEFAULT_MAX_RUN_DURATION_SEC;\n\n const elapsed = now - new Date(run.started_at).getTime();\n if (elapsed < maxDuration * 1000) continue;\n\n // This run has timed out\n await completeWorkflowRun(\n supabase, run.id, run.workflow_id, run.store_id,\n \"timed_out\",\n `Workflow exceeded max duration of ${maxDuration}s (ran for ${Math.round(elapsed / 1000)}s)`,\n );\n\n // Archive to DLQ\n await archiveToDlq(supabase, run.id, run.workflow_id, run.store_id, wf?.name);\n\n count++;\n log.warn({ runId: run.id, elapsedSec: Math.round(elapsed / 1000), maxDuration }, \"workflow run timed out\");\n }\n\n // Detect zombie runs: \"running\" with no active steps (all steps are terminal)\n const { data: zombieRuns } = await supabase.from(\"workflow_runs\")\n .select(\"id, workflow_id, store_id, started_at, workflows!inner(name)\")\n .eq(\"status\", \"running\")\n .not(\"started_at\", \"is\", null)\n .limit(50);\n\n if (zombieRuns?.length) {\n for (const run of zombieRuns) {\n const elapsed = now - new Date(run.started_at).getTime();\n if (elapsed < 120_000) continue; // Only check runs older than 2 min\n\n const { data: activeSteps } = await supabase.from(\"workflow_step_runs\")\n .select(\"id\").eq(\"run_id\", run.id)\n .in(\"status\", [\"pending\", \"running\", \"retrying\", \"waiting\"]).limit(1);\n\n if (!activeSteps?.length) {\n // No active steps but run is still \"running\" — finalize it\n await checkWorkflowCompletion(supabase, run.id, run.workflow_id);\n count++;\n log.warn({ runId: run.id, elapsedSec: Math.round(elapsed / 1000) }, \"finalized zombie workflow run\");\n }\n }\n }\n\n return count;\n}\n\n// ============================================================================\n// ORPHANED STEP CLEANUP — cancel step_runs whose parent run is terminal\n// ============================================================================\n\nlet lastOrphanCleanupAt = 0;\nconst ORPHAN_CLEANUP_INTERVAL_MS = 60_000; // Run at most once per minute\n\nexport async function cleanupOrphanedSteps(supabase: SupabaseClient): Promise<number> {\n if (Date.now() - lastOrphanCleanupAt < ORPHAN_CLEANUP_INTERVAL_MS) return 0;\n lastOrphanCleanupAt = Date.now();\n\n // Find step_runs in non-terminal status whose parent run IS terminal.\n // The !inner join + .in filter on the JOINED table ensures Postgres only returns\n // rows where the run status is already terminal — no in-app filtering needed.\n const { data: orphans } = await supabase.from(\"workflow_step_runs\")\n .select(\"id, run_id, step_key, status, workflow_runs!workflow_step_runs_run_id_fkey!inner(status)\")\n .in(\"status\", [\"pending\", \"retrying\", \"waiting\"])\n .in(\"workflow_runs.status\", [\"success\", \"failed\", \"cancelled\", \"timed_out\"])\n .limit(100);\n\n if (!orphans?.length) return 0;\n\n let cleaned = 0;\n for (const step of orphans) {\n const runStatus = (step as any).workflow_runs?.status;\n await supabase.from(\"workflow_step_runs\").update({\n status: \"cancelled\",\n error_message: `Orphaned: parent run already ${runStatus}`,\n completed_at: new Date().toISOString(),\n }).eq(\"id\", step.id);\n cleaned++;\n }\n\n if (cleaned > 0) {\n log.info({ cleaned }, \"cleaned up orphaned step runs\");\n }\n return cleaned;\n}\n\n// ============================================================================\n// DLQ RETRY MECHANISM — retry transient DLQ failures\n// ============================================================================\n\nlet lastDlqRetryAt = 0;\nconst DLQ_RETRY_INTERVAL_MS = 60_000; // Run at most once per minute\nconst DLQ_RETRY_BATCH_SIZE = 5;\nconst DLQ_MAX_RETRY_ATTEMPTS = 3;\n\nexport async function processDlqRetries(supabase: SupabaseClient): Promise<number> {\n // Throttle: only run once per minute\n if (Date.now() - lastDlqRetryAt < DLQ_RETRY_INTERVAL_MS) return 0;\n lastDlqRetryAt = Date.now();\n\n // Fetch retryable DLQ entries: transient errors (timeout, network), not yet exhausted\n const { data: entries } = await supabase.from(\"workflow_dlq\")\n .select(\"id, workflow_id, store_id, trigger_type, trigger_payload, error_message, retry_count, last_retry_at\")\n .or(\"error_message.ilike.%timed out%,error_message.ilike.%timeout%,error_message.ilike.%network%,error_message.ilike.%ECONNREFUSED%,error_message.ilike.%fetch failed%\")\n .eq(\"status\", \"pending\")\n .lt(\"retry_count\", DLQ_MAX_RETRY_ATTEMPTS)\n .order(\"created_at\", { ascending: true })\n .limit(DLQ_RETRY_BATCH_SIZE);\n\n if (!entries?.length) return 0;\n\n let retried = 0;\n const now = Date.now();\n for (const entry of entries) {\n try {\n // Enforce per-entry exponential backoff: 2min, 4min, 8min\n if (entry.last_retry_at) {\n const backoffMs = Math.pow(2, entry.retry_count || 0) * 120_000;\n const elapsed = now - new Date(entry.last_retry_at).getTime();\n if (elapsed < backoffMs) continue; // Too soon for this entry\n }\n\n const { data: result, error } = await supabase.rpc(\"start_workflow_run\", {\n p_workflow_id: entry.workflow_id,\n p_store_id: entry.store_id,\n p_trigger_type: entry.trigger_type || \"dlq_retry\",\n p_trigger_payload: { ...(entry.trigger_payload || {}), _dlq_retry: true, _dlq_entry_id: entry.id },\n p_idempotency_key: `dlq_retry:${entry.id}:${(entry.retry_count || 0) + 1}`,\n });\n\n if (error || !result?.success) {\n // Update retry count but keep in DLQ\n await supabase.from(\"workflow_dlq\").update({\n retry_count: (entry.retry_count || 0) + 1,\n last_error: error?.message || result?.error || \"retry failed\",\n last_retry_at: new Date().toISOString(),\n }).eq(\"id\", entry.id);\n continue;\n }\n\n // Success — mark DLQ entry as retried\n await supabase.from(\"workflow_dlq\").update({\n status: \"retried\",\n retry_count: (entry.retry_count || 0) + 1,\n retried_run_id: result.run_id,\n last_retry_at: new Date().toISOString(),\n }).eq(\"id\", entry.id);\n\n // Execute inline\n if (result.run_id) {\n const traceId = randomUUID();\n await supabase.from(\"workflow_runs\").update({ trace_id: traceId }).eq(\"id\", result.run_id);\n try { await executeInlineChain(supabase, result.run_id); } catch (err) {\n log.error({ runId: result.run_id, err: (err as Error).message }, \"inline chain failed for DLQ retry\");\n }\n }\n\n retried++;\n log.info({ dlqEntryId: entry.id, workflowId: entry.workflow_id, retryCount: (entry.retry_count || 0) + 1 }, \"DLQ entry retried\");\n } catch (err) {\n log.warn({ dlqEntryId: entry.id, err: sanitizeError(err) }, \"DLQ retry error\");\n await supabase.from(\"workflow_dlq\").update({\n retry_count: (entry.retry_count || 0) + 1,\n last_retry_at: new Date().toISOString(),\n last_error: sanitizeError(err),\n }).eq(\"id\", entry.id);\n }\n }\n\n return retried;\n}\n\n// ============================================================================\n// EVENT TRIGGER PROCESSING — match inbound events to workflow subscriptions\n// ============================================================================\n\nexport async function processEventTriggers(supabase: SupabaseClient): Promise<number> {\n // Atomically claim a batch of pending events using FOR UPDATE SKIP LOCKED\n // Falls back to SELECT+UPDATE if the RPC doesn't exist yet\n let events: { id: string; store_id: string; event_type: string; event_payload: Record<string, unknown>; source: string }[] | null = null;\n\n const { data: claimed, error: claimErr } = await supabase.rpc(\"claim_pending_events\", { batch_size: 20 });\n if (!claimErr && claimed?.length) {\n events = claimed;\n } else {\n // Fallback: non-atomic claim (SELECT then UPDATE)\n if (claimErr) log.debug({ err: claimErr.message }, \"claim_pending_events RPC unavailable, using fallback\");\n const { data: fallbackEvents } = await supabase.from(\"automation_events\")\n .select(\"id, store_id, event_type, event_payload, source\")\n .eq(\"status\", \"pending\")\n .order(\"created_at\", { ascending: true })\n .limit(20);\n if (fallbackEvents?.length) {\n const eventIds = fallbackEvents.map(e => e.id);\n await supabase.from(\"automation_events\")\n .update({ status: \"processing\" })\n .in(\"id\", eventIds);\n events = fallbackEvents;\n }\n }\n\n if (!events?.length) return 0;\n\n // P2 FIX: Batch-load ALL active subscriptions once instead of per-event queries.\n // Group by (store_id, event_type) for O(1) in-memory lookup per event.\n const uniqueStoreIds = Array.from(new Set(events.map(e => e.store_id)));\n const uniqueEventTypes = Array.from(new Set(events.map(e => e.event_type)));\n const { data: allSubs } = await supabase.from(\"workflow_event_subscriptions\")\n .select(\"id, workflow_id, filter_expression, store_id, event_type\")\n .in(\"store_id\", uniqueStoreIds)\n .in(\"event_type\", uniqueEventTypes)\n .eq(\"is_active\", true);\n\n // Build lookup map: \"store_id:event_type\" -> subscriptions[]\n const subsMap = new Map<string, typeof allSubs>();\n for (const sub of (allSubs || [])) {\n const key = `${sub.store_id}:${sub.event_type}`;\n if (!subsMap.has(key)) subsMap.set(key, []);\n subsMap.get(key)!.push(sub);\n }\n\n let processed = 0;\n\n for (const event of events) {\n try {\n // P2 FIX: In-memory lookup instead of per-event DB query\n const subs = subsMap.get(`${event.store_id}:${event.event_type}`) || [];\n\n if (!subs.length) {\n // No subscribers — mark processed and move on\n await supabase.from(\"automation_events\")\n .update({ status: \"processed\", processed_at: new Date().toISOString() })\n .eq(\"id\", event.id);\n processed++;\n continue;\n }\n\n for (const sub of subs) {\n // Optional filter expression evaluation\n if (sub.filter_expression) {\n try {\n const ctx: TemplateContext = {\n trigger: event.event_payload || {},\n steps: {},\n };\n const pass = evaluateCondition(sub.filter_expression, ctx);\n if (!pass) continue; // Filter didn't match — skip this subscription\n } catch {\n // Filter eval error — skip rather than block\n continue;\n }\n }\n\n // Start a workflow run for each matching subscription\n const idempotencyKey = `event:${event.id}:${sub.workflow_id}`;\n const { data: result, error: startErr } = await supabase.rpc(\"start_workflow_run\", {\n p_workflow_id: sub.workflow_id,\n p_store_id: event.store_id,\n p_trigger_type: \"event\",\n p_trigger_payload: {\n ...(event.event_payload || {}),\n _event_id: event.id,\n _event_type: event.event_type,\n _event_source: event.source,\n },\n p_idempotency_key: idempotencyKey,\n });\n\n if (startErr || !result?.success) {\n log.error({ workflowId: sub.workflow_id, eventId: event.id, err: startErr?.message || result?.error }, \"failed to start event-triggered workflow\");\n continue;\n }\n\n // Assign trace ID and run inline chain for immediate execution\n if (result.run_id && !result.deduplicated) {\n const traceId = randomUUID();\n await supabase.from(\"workflow_runs\").update({ trace_id: traceId }).eq(\"id\", result.run_id);\n try { await executeInlineChain(supabase, result.run_id); } catch (err) { log.error({ runId: result.run_id, err: (err as Error).message }, \"inline chain failed for event run\"); }\n }\n }\n\n // Mark event as processed\n await supabase.from(\"automation_events\")\n .update({ status: \"processed\", processed_at: new Date().toISOString() })\n .eq(\"id\", event.id);\n processed++;\n\n } catch (err) {\n // Mark event as failed\n await supabase.from(\"automation_events\")\n .update({\n status: \"failed\",\n processed_at: new Date().toISOString(),\n error_message: sanitizeError(err),\n })\n .eq(\"id\", event.id);\n log.error({ eventId: event.id, err: sanitizeError(err) }, \"error processing event trigger\");\n }\n }\n\n return processed;\n}\n\n// ============================================================================\n// DEAD LETTER QUEUE — archive failed runs for investigation\n// ============================================================================\n\nasync function archiveToDlq(\n supabase: SupabaseClient, runId: string, workflowId: string, storeId: string, workflowName?: string,\n): Promise<void> {\n const { data: run } = await supabase.from(\"workflow_runs\")\n .select(\"error_message, error_step_key, trigger_type, trigger_payload, step_outputs, duration_ms\")\n .eq(\"id\", runId).single();\n if (!run) return;\n\n const { error } = await supabase.from(\"workflow_dlq\").insert({\n store_id: storeId,\n run_id: runId,\n workflow_id: workflowId,\n workflow_name: workflowName || null,\n error_message: run.error_message,\n error_step_key: run.error_step_key,\n trigger_type: run.trigger_type,\n trigger_payload: run.trigger_payload || {},\n step_outputs: run.step_outputs || {},\n run_duration_ms: run.duration_ms,\n });\n if (error) log.warn({ err: error.message, runId, workflowId }, \"archiveToDlq insert failed\");\n}\n\n/**\n * Process-isolated JS code execution via persistent worker pool.\n * Falls back to one-shot fork if pool is unavailable.\n * A crash, OOM, or infinite loop in user code cannot take down the server.\n */\nasync function executeCodeStepIsolated(config: Record<string, unknown>, ctx: TemplateContext): Promise<StepResult> {\n const code = config.code as string;\n if (!code) return { success: false, error: \"No code in code step config\" };\n\n const language = (config.language as string) || \"javascript\";\n if (language === \"python\") {\n // P0 FIX: Python regex sandbox is trivially bypassable (string concatenation,\n // __builtins__, globals() aliasing). Hard-fail until a real Python sandbox\n // (e.g. Pyodide/WASM or containerized execution) is available.\n return { success: false, error: \"Python code execution is temporarily disabled — sandbox under hardening. Use JavaScript code steps instead.\" };\n }\n\n const timeoutMs = (config.timeout_ms as number) || CODE_TIMEOUT_MS;\n\n try {\n const result = await executeWithPool({\n code,\n context: { steps: ctx.steps, trigger: ctx.trigger, input: ctx.input },\n timeoutMs,\n });\n // P3 FIX: Enforce same 100KB output cap as Python code steps\n if (result.success && result.output) {\n const outputStr = JSON.stringify(result.output);\n if (outputStr.length > CODE_OUTPUT_MAX) {\n result.output = { result: outputStr.slice(0, CODE_OUTPUT_MAX) + \"\\n[output truncated at 100KB]\", truncated: true };\n }\n }\n return result;\n } catch (err) {\n // P0 FIX: Hard failure — no in-process fallback (SSRF risk via unrestricted fetch in sandbox)\n log.error({ err: (err as Error).message }, \"worker pool execution failed, no fallback\");\n return { success: false, error: \"Code execution unavailable — worker pool failed\" };\n }\n}\n\n// P0 FIX: executeCodeStepInProcess removed — in-process fallback was a security risk\n// (unrestricted fetch in sandbox = SSRF). All code steps now require the worker pool.\n\nasync function executePythonCode(_code: string, _ctx: TemplateContext): Promise<StepResult> {\n return { success: false, error: \"Python code execution is disabled — sandbox under hardening\" };\n}\n\n// ============================================================================\n// CIRCUIT BREAKER (per user_tool)\n// ============================================================================\n\nasync function checkToolCircuitBreaker(\n supabase: SupabaseClient, toolId: string,\n): Promise<{ allowed: boolean; reason?: string }> {\n const { data } = await supabase.from(\"user_tools\")\n .select(\"circuit_breaker_state, circuit_breaker_tripped_at, circuit_breaker_cooldown_seconds\")\n .eq(\"id\", toolId).single();\n if (!data) return { allowed: true };\n\n if (data.circuit_breaker_state === \"open\") {\n const trippedAt = new Date(data.circuit_breaker_tripped_at).getTime();\n const cooldownMs = (data.circuit_breaker_cooldown_seconds || 300) * 1000;\n if (Date.now() < trippedAt + cooldownMs) {\n return { allowed: false, reason: `Circuit breaker open (cooldown until ${new Date(trippedAt + cooldownMs).toISOString()})` };\n }\n await supabase.from(\"user_tools\").update({ circuit_breaker_state: \"half_open\" }).eq(\"id\", toolId);\n }\n return { allowed: true };\n}\n\n// P1 FIX: Transient error patterns — these indicate network/infra issues, not broken tools.\n// Circuit breaker should only trip on persistent tool-level errors (auth, 404, bad config).\nconst TRANSIENT_ERROR_PATTERNS = [\n /timed?\\s*out/i, /timeout/i, /ECONNREFUSED/i, /ECONNRESET/i, /ETIMEDOUT/i,\n /fetch failed/i, /network/i, /socket hang up/i, /EPIPE/i, /EHOSTUNREACH/i,\n /503 Service Unavailable/i, /502 Bad Gateway/i, /429 Too Many Requests/i,\n];\n\nfunction isTransientError(errorMessage?: string | null): boolean {\n if (!errorMessage) return false;\n return TRANSIENT_ERROR_PATTERNS.some(pattern => pattern.test(errorMessage));\n}\n\nasync function updateToolCircuitBreaker(\n supabase: SupabaseClient, toolId: string, success: boolean, errorMessage?: string,\n): Promise<void> {\n if (success) {\n await supabase.from(\"user_tools\").update({ circuit_breaker_state: \"closed\", circuit_breaker_failures: 0 }).eq(\"id\", toolId);\n return;\n }\n\n // P1 FIX: Skip circuit breaker increment for transient errors (network, timeout, etc.)\n if (isTransientError(errorMessage)) {\n log.debug({ toolId, error: errorMessage }, \"skipping circuit breaker increment for transient error\");\n return;\n }\n\n const { data } = await supabase.from(\"user_tools\")\n .select(\"circuit_breaker_failures, circuit_breaker_threshold\").eq(\"id\", toolId).single();\n if (!data) return;\n const newFailures = (data.circuit_breaker_failures || 0) + 1;\n if (newFailures >= (data.circuit_breaker_threshold || 5)) {\n await supabase.from(\"user_tools\").update({\n circuit_breaker_state: \"open\", circuit_breaker_failures: newFailures,\n circuit_breaker_tripped_at: new Date().toISOString(),\n }).eq(\"id\", toolId);\n queueSpan(auditRowToSpan({\n action: \"workflow.circuit_breaker.tripped\", severity: \"warning\",\n resource_type: \"user_tool\", resource_id: toolId, source: \"workflow_engine\",\n service_name: \"workflow-engine\", span_kind: \"INTERNAL\", status_code: \"OK\",\n start_time: new Date().toISOString(), end_time: new Date().toISOString(),\n details: { failures: newFailures, threshold: data.circuit_breaker_threshold },\n }));\n } else {\n await supabase.from(\"user_tools\").update({ circuit_breaker_failures: newFailures }).eq(\"id\", toolId);\n }\n}\n\nasync function handleWorkflowCircuitBreaker(\n supabase: SupabaseClient, workflowId: string, success: boolean, errorMessage?: string | null,\n): Promise<void> {\n if (success) {\n await supabase.from(\"workflows\").update({ circuit_breaker_state: \"closed\", circuit_breaker_failures: 0 }).eq(\"id\", workflowId);\n return;\n }\n\n // P1 FIX: Skip circuit breaker increment for transient errors\n if (isTransientError(errorMessage)) {\n log.debug({ workflowId, error: errorMessage }, \"skipping workflow circuit breaker increment for transient error\");\n return;\n }\n\n const { data } = await supabase.from(\"workflows\")\n .select(\"circuit_breaker_failures, circuit_breaker_threshold\").eq(\"id\", workflowId).single();\n if (!data) return;\n const newFailures = (data.circuit_breaker_failures || 0) + 1;\n if (newFailures >= (data.circuit_breaker_threshold || 5)) {\n await supabase.from(\"workflows\").update({\n circuit_breaker_state: \"open\", circuit_breaker_failures: newFailures,\n circuit_breaker_tripped_at: new Date().toISOString(),\n }).eq(\"id\", workflowId);\n queueSpan(auditRowToSpan({\n action: \"workflow.circuit_breaker.tripped\", severity: \"warning\",\n resource_type: \"workflow\", resource_id: workflowId, source: \"workflow_engine\",\n service_name: \"workflow-engine\", span_kind: \"INTERNAL\", status_code: \"OK\",\n start_time: new Date().toISOString(), end_time: new Date().toISOString(),\n details: { failures: newFailures, threshold: data.circuit_breaker_threshold },\n }));\n } else {\n await supabase.from(\"workflows\").update({ circuit_breaker_failures: newFailures }).eq(\"id\", workflowId);\n }\n}\n\n// ============================================================================\n// CORE ENGINE\n// ============================================================================\n\n/**\n * Reclaim steps stuck in \"running\" status longer than their timeout + buffer.\n * This handles steps that crashed mid-execution (e.g., server restart, OOM).\n * Steps are reset to \"retrying\" so the worker can re-execute them.\n */\nasync function reclaimStaleSteps(supabase: SupabaseClient): Promise<number> {\n // P0 FIX: Use step.timeout_seconds * 2 (min 300s) as stale threshold to prevent\n // double-execution. The old 60s buffer was too aggressive for long-running steps.\n const MIN_STALE_THRESHOLD_MS = 300_000; // 5 min minimum before reclaim\n const MAX_STALE_AGE_MS = 1_200_000; // Hard ceiling: 20 min = always stale\n\n const { data: staleSteps } = await supabase.from(\"workflow_step_runs\")\n .select(`\n id, step_key, run_id, attempt_count, max_attempts, started_at,\n workflow_steps!inner(timeout_seconds)\n `)\n .eq(\"status\", \"running\")\n .not(\"started_at\", \"is\", null)\n .limit(50);\n\n if (!staleSteps?.length) return 0;\n\n let reclaimed = 0;\n const now = Date.now();\n\n for (const step of staleSteps) {\n const timeoutSec = (step as any).workflow_steps?.timeout_seconds || 120;\n // P0 FIX: threshold = max(300s, timeout * 2) — gives step enough time to complete\n const staleThreshold = Math.min(Math.max(MIN_STALE_THRESHOLD_MS, timeoutSec * 2000), MAX_STALE_AGE_MS);\n const elapsed = now - new Date(step.started_at).getTime();\n\n if (elapsed < staleThreshold) continue;\n\n const exhaustedRetries = step.attempt_count >= step.max_attempts;\n if (exhaustedRetries) {\n // No retries left — mark as failed\n await supabase.from(\"workflow_step_runs\").update({\n status: \"failed\",\n error_message: `Step stale: running for ${Math.round(elapsed / 1000)}s with no response (retries exhausted)`,\n completed_at: new Date().toISOString(),\n }).eq(\"id\", step.id);\n } else {\n // Reset to retrying so worker picks it up again\n await supabase.from(\"workflow_step_runs\").update({\n status: \"retrying\",\n error_message: `Step stale: running for ${Math.round(elapsed / 1000)}s with no response (auto-reclaimed)`,\n next_retry_at: new Date(now + 5000).toISOString(),\n }).eq(\"id\", step.id);\n }\n reclaimed++;\n log.warn({ stepRunId: step.id, stepKey: step.step_key, runId: step.run_id, elapsedSec: Math.round(elapsed / 1000), exhaustedRetries }, \"reclaimed stale step\");\n }\n return reclaimed;\n}\n\nexport async function processWorkflowSteps(\n supabase: SupabaseClient, batchSize: number = 10,\n): Promise<{ processed: number; errors: number; reclaimed?: number }> {\n // Reclaim stale steps first so they become available for claiming\n const reclaimed = await reclaimStaleSteps(supabase).catch(e => {\n log.warn({ err: (e as Error).message }, \"reclaimStaleSteps failed\");\n return 0;\n });\n\n const { data: claimedRaw, error: claimErr } = await supabase.rpc(\"claim_pending_steps\", {\n batch_size: batchSize,\n });\n if (claimErr) {\n log.error({ err: claimErr.message }, \"workflow claim error\");\n return { processed: 0, errors: 1, reclaimed };\n }\n\n let claimed: StepClaim[] = Array.isArray(claimedRaw) ? claimedRaw : [];\n if (claimed.length === 0) return { processed: 0, errors: 0, reclaimed };\n\n // Circuit breaker enforcement — skip steps from workflows with open breakers\n const workflowIds = [...new Set(claimed.map(s => s.workflow_id))];\n const { data: openBreakers } = await supabase.from(\"workflows\")\n .select(\"id\")\n .in(\"id\", workflowIds)\n .eq(\"circuit_breaker_state\", \"open\");\n if (openBreakers?.length) {\n const blockedIds = new Set(openBreakers.map(w => w.id));\n const blocked = claimed.filter(s => blockedIds.has(s.workflow_id));\n claimed = claimed.filter(s => !blockedIds.has(s.workflow_id));\n // Mark blocked steps as skipped and finalize affected runs\n const affectedRuns = new Map<string, string>();\n for (const step of blocked) {\n await supabase.from(\"workflow_step_runs\").update({\n status: \"skipped\",\n error_message: \"Workflow circuit breaker is open — step skipped\",\n completed_at: new Date().toISOString(),\n }).eq(\"id\", step.step_run_id);\n affectedRuns.set(step.run_id, step.workflow_id);\n }\n // Check completion for affected runs — prevents zombie \"running\" state\n for (const [runId, workflowId] of affectedRuns) {\n await checkWorkflowCompletion(supabase, runId, workflowId).catch(e =>\n log.warn({ runId, err: (e as Error).message }, \"completion check after circuit breaker skip failed\"));\n }\n if (blocked.length) log.warn({ skippedSteps: blocked.length, blockedWorkflows: blockedIds.size }, \"circuit breaker skipped steps\");\n if (claimed.length === 0) return { processed: blocked.length, errors: 0, reclaimed };\n }\n\n log.info({ stepCount: claimed.length }, \"processing workflow steps\");\n let errors = 0;\n\n // Batch-fetch trace_ids for all runs in this batch\n const runIds = [...new Set(claimed.map(s => s.run_id))];\n const { data: runTraces } = await supabase.from(\"workflow_runs\")\n .select(\"id, trace_id\").in(\"id\", runIds);\n const traceMap = new Map((runTraces || []).map(r => [r.id, r.trace_id as string | undefined]));\n\n // Partition: email tool steps from for_each need sequential processing with delays\n // to avoid overwhelming Resend's 2 req/s rate limit\n const isForEachEmailStep = (s: StepClaim) =>\n s.parent_step_run_id && s.step_type === \"tool\" &&\n String(s.step_config?.tool_name || \"\").includes(\"email\");\n\n const emailForEachSteps = claimed.filter(isForEachEmailStep);\n const otherSteps = claimed.filter(s => !isForEachEmailStep(s));\n\n const processStep = async (step: StepClaim) => {\n try {\n await applyVersionOverrides(supabase, step);\n await executeAndAdvance(supabase, step, traceMap.get(step.run_id));\n } catch (err) {\n errors++;\n const errMsg = sanitizeError(err);\n log.error({ stepKey: step.step_key, runId: step.run_id, err: errMsg }, \"step execution error\");\n await supabase.from(\"workflow_step_runs\").update({\n status: \"failed\", error_message: errMsg,\n completed_at: new Date().toISOString(), duration_ms: 0,\n }).eq(\"id\", step.step_run_id);\n // Surface error to clients (SSE broadcast + structured error_details on step run)\n await surfaceStepError(supabase, step, errMsg);\n // Check if this failure finalizes the run (prevents zombie runs from uncaught errors)\n await checkWorkflowCompletion(supabase, step.run_id, step.workflow_id).catch(e =>\n log.warn({ runId: step.run_id, err: (e as Error).message }, \"completion check after step error failed\"));\n }\n };\n\n // Process non-email steps in parallel (existing behavior)\n await Promise.all(otherSteps.map(processStep));\n\n // Process email for_each children sequentially with 550ms throttle\n for (let i = 0; i < emailForEachSteps.length; i++) {\n if (i > 0) await new Promise(r => setTimeout(r, 550));\n await processStep(emailForEachSteps[i]);\n }\n\n return { processed: claimed.length, errors };\n}\n\n/**\n * Check waiting steps: sub_workflow children completed, parallel/for_each children done.\n * Called by the persistent worker loop alongside processWorkflowSteps.\n */\nexport async function processWaitingSteps(supabase: SupabaseClient): Promise<number> {\n let resolved = 0;\n\n // 0. Expire pending approvals (Phase 2)\n try {\n await supabase.rpc(\"expire_pending_approvals\");\n } catch (err) {\n // Non-fatal — RPC may not exist yet if migration not applied\n log.warn({ err: sanitizeError(err) }, \"expire_pending_approvals error\");\n }\n\n // 1. Sub-workflow steps waiting for child runs to complete\n const { data: subWfSteps } = await supabase\n .from(\"workflow_step_runs\")\n .select(\"id, run_id, step_key, child_run_id, step_type\")\n .eq(\"status\", \"waiting\")\n .eq(\"step_type\", \"sub_workflow\")\n .not(\"child_run_id\", \"is\", null)\n .limit(50);\n\n if (subWfSteps?.length) {\n const childRunIds = subWfSteps.map(s => s.child_run_id).filter(Boolean) as string[];\n const { data: childRuns } = await supabase\n .from(\"workflow_runs\")\n .select(\"id, status, step_outputs, error_message\")\n .in(\"id\", childRunIds)\n .in(\"status\", [\"success\", \"failed\"]);\n\n if (childRuns?.length) {\n const runMap = new Map(childRuns.map(r => [r.id, r]));\n for (const step of subWfSteps) {\n const childRun = runMap.get(step.child_run_id!);\n if (!childRun) continue;\n\n const success = childRun.status === \"success\";\n await supabase.from(\"workflow_step_runs\").update({\n status: success ? \"success\" : \"failed\",\n output: childRun.step_outputs,\n error_message: success ? null : childRun.error_message,\n completed_at: new Date().toISOString(),\n }).eq(\"id\", step.id);\n\n // Accumulate output + advance\n await accumulateAndAdvance(supabase, step.id, step.run_id, step.step_key,\n success, childRun.step_outputs, childRun.error_message);\n resolved++;\n }\n }\n }\n\n // 2. P1 FIX: Use aggregate RPC to eliminate N+1 queries (was 4 queries per parent)\n const { data: aggregatedParents, error: aggErr } = await supabase.rpc(\"get_waiting_parents_with_children\");\n\n if (aggErr) {\n // Fallback to old N+1 pattern if RPC doesn't exist yet\n log.debug({ err: aggErr.message }, \"get_waiting_parents_with_children RPC unavailable, using fallback\");\n const { data: waitingParents } = await supabase\n .from(\"workflow_step_runs\")\n .select(\"id, run_id, step_key, step_type, output\")\n .eq(\"status\", \"waiting\")\n .in(\"step_type\", [\"parallel\", \"for_each\"])\n .limit(50);\n\n if (waitingParents?.length) {\n for (const parent of waitingParents) {\n const { count: totalChildren } = await supabase\n .from(\"workflow_step_runs\")\n .select(\"id\", { count: \"exact\", head: true })\n .eq(\"parent_step_run_id\", parent.id);\n const { count: doneChildren } = await supabase\n .from(\"workflow_step_runs\")\n .select(\"id\", { count: \"exact\", head: true })\n .eq(\"parent_step_run_id\", parent.id)\n .in(\"status\", [\"success\", \"failed\", \"skipped\", \"cancelled\"]);\n if (totalChildren && doneChildren && doneChildren >= totalChildren) {\n const { data: childOutputs } = await supabase\n .from(\"workflow_step_runs\")\n .select(\"step_key, output, status, error_message\")\n .eq(\"parent_step_run_id\", parent.id)\n .order(\"created_at\", { ascending: true });\n const outputs = (childOutputs || []).map(c => c.output);\n const failedKids = (childOutputs || []).filter(c => c.status === \"failed\");\n const allSuccess = failedKids.length === 0;\n await supabase.from(\"workflow_step_runs\").update({\n status: allSuccess ? \"success\" : \"failed\",\n output: { children: outputs, total: totalChildren, failed: failedKids.length },\n error_message: allSuccess ? null : failedKids[0]?.error_message,\n completed_at: new Date().toISOString(),\n }).eq(\"id\", parent.id);\n await accumulateAndAdvance(supabase, parent.id, parent.run_id, parent.step_key,\n allSuccess, { children: outputs }, allSuccess ? null : failedKids[0]?.error_message);\n resolved++;\n }\n }\n }\n } else if (aggregatedParents?.length) {\n for (const parent of aggregatedParents) {\n if (parent.total_children > 0 && parent.done_children >= parent.total_children) {\n const childOutputsArr = (parent.child_outputs || []) as any[];\n const outputs = childOutputsArr.map((c: any) => c.output);\n const allSuccess = parent.failed_children === 0;\n const firstError = childOutputsArr.find((c: any) => c.status === \"failed\")?.error_message;\n\n await supabase.from(\"workflow_step_runs\").update({\n status: allSuccess ? \"success\" : \"failed\",\n output: { children: outputs, total: parent.total_children, failed: parent.failed_children },\n error_message: allSuccess ? null : firstError,\n completed_at: new Date().toISOString(),\n }).eq(\"id\", parent.parent_id);\n\n await accumulateAndAdvance(supabase, parent.parent_id, parent.parent_run_id, parent.parent_step_key,\n allSuccess, { children: outputs }, allSuccess ? null : firstError);\n resolved++;\n }\n }\n }\n\n return resolved;\n}\n\n/** Helper: after a waiting step resolves, accumulate output and advance the workflow. */\nasync function accumulateAndAdvance(\n supabase: SupabaseClient, stepRunId: string, runId: string, stepKey: string,\n success: boolean, output: unknown, errorMessage?: string | null,\n): Promise<void> {\n // Load run to get current step_outputs + workflow_id + on_success/on_failure\n const { data: run } = await supabase.from(\"workflow_runs\")\n .select(\"workflow_id, step_outputs, store_id\").eq(\"id\", runId).single();\n if (!run) return;\n\n const { data: stepDef } = await supabase.from(\"workflow_step_runs\")\n .select(\"step_id, step_key\").eq(\"id\", stepRunId).single();\n if (!stepDef) return;\n\n // Phase 4: Try versioned step def first, fall back to live table\n let wsDef: { on_success?: string | null; on_failure?: string | null; max_retries?: number } | null = null;\n const versionedSteps = await loadVersionedSteps(supabase, runId);\n if (versionedSteps) {\n const vStep = versionedSteps.find((s: any) => s.step_key === stepKey);\n if (vStep) wsDef = { on_success: vStep.on_success, on_failure: vStep.on_failure, max_retries: vStep.max_retries };\n }\n if (!wsDef) {\n const { data } = await supabase.from(\"workflow_steps\")\n .select(\"on_success, on_failure, max_retries\").eq(\"id\", stepDef.step_id).single();\n wsDef = data;\n }\n\n // P1 FIX: Atomic step output accumulation — use jsonb_set instead of read-modify-write\n // This prevents lost updates when multiple steps complete concurrently\n const stepOutput = { output, status: success ? \"success\" : \"failed\" };\n await supabase.rpc(\"accumulate_step_output\", {\n p_run_id: runId,\n p_step_key: stepKey,\n p_step_output: stepOutput,\n }).then(({ error: rpcErr }) => {\n // Fallback to direct update if RPC doesn't exist yet (migration pending)\n if (rpcErr) {\n const newOutputs = { ...(run.step_outputs || {}), [stepKey]: stepOutput };\n return supabase.from(\"workflow_runs\").update({ step_outputs: newOutputs }).eq(\"id\", runId);\n }\n });\n\n if (success) {\n if (wsDef?.on_success) {\n await createNextStepRunByKey(supabase, runId, run.workflow_id, wsDef.on_success);\n } else {\n await checkWorkflowCompletion(supabase, runId, run.workflow_id);\n }\n } else {\n if (wsDef?.on_failure) {\n await createNextStepRunByKey(supabase, runId, run.workflow_id, wsDef.on_failure);\n } else {\n await completeWorkflowRun(supabase, runId, run.workflow_id, run.store_id, \"failed\", errorMessage, stepKey);\n }\n }\n}\n\nexport async function executeAndAdvance(supabase: SupabaseClient, step: StepClaim, traceId?: string): Promise<void> {\n const startTime = Date.now();\n\n // Phase 3.3: OTEL span for step execution\n const span = startSpan(\"workflow.step.execute\", {\n \"workflow.run_id\": step.run_id,\n \"workflow.step_key\": step.step_key,\n \"workflow.step_type\": step.step_type,\n \"workflow.attempt\": step.attempt_count,\n ...(traceId ? { \"workflow.trace_id\": traceId } : {}),\n });\n\n // Event journal — step started\n await logWorkflowEvent(supabase, step.run_id, \"step_started\", {\n step_key: step.step_key, step_type: step.step_type, attempt: step.attempt_count,\n }, step.step_run_id);\n\n // Step result caching — skip successful steps on retry (idempotent re-execution)\n if (step.attempt_count > 1) {\n const { data: prevRun } = await supabase.from(\"workflow_step_runs\")\n .select(\"status, output\").eq(\"run_id\", step.run_id).eq(\"step_key\", step.step_key)\n .eq(\"status\", \"success\").neq(\"id\", step.step_run_id).limit(1);\n if (prevRun?.length) {\n log.info({ stepKey: step.step_key, runId: step.run_id }, \"step already succeeded, using cached result\");\n await supabase.from(\"workflow_step_runs\").update({\n status: \"success\", output: prevRun[0].output,\n completed_at: new Date().toISOString(), duration_ms: Date.now() - startTime,\n }).eq(\"id\", step.step_run_id);\n await logWorkflowEvent(supabase, step.run_id, \"step_cached\", { step_key: step.step_key }, step.step_run_id);\n const nextStepKey = step.on_success;\n if (!nextStepKey) {\n await checkWorkflowCompletion(supabase, step.run_id, step.workflow_id);\n } else {\n await createNextStepRunByKey(supabase, step.run_id, step.workflow_id, nextStepKey);\n }\n return;\n }\n }\n\n // Flow control — check concurrency/rate limits before execution\n const flowCheck = await checkFlowControl(supabase, step);\n if (!flowCheck.allowed) {\n // Requeue step with short delay for flow control backoff\n await supabase.from(\"workflow_step_runs\").update({\n status: \"retrying\",\n next_retry_at: new Date(Date.now() + 2000).toISOString(), // retry in 2s\n output: { flow_control: flowCheck.reason },\n }).eq(\"id\", step.step_run_id);\n await logWorkflowEvent(supabase, step.run_id, \"step_throttled\", { reason: flowCheck.reason }, step.step_run_id);\n return;\n }\n\n // Build template context\n const ctx: TemplateContext = {\n steps: {},\n trigger: step.trigger_payload || {},\n input: step.input || undefined,\n workflow: {\n id: step.workflow_id,\n store_id: step.store_id,\n },\n run: {\n id: step.run_id,\n workflow_id: step.workflow_id,\n store_id: step.store_id,\n },\n };\n if (step.step_outputs && typeof step.step_outputs === \"object\") {\n for (const [key, val] of Object.entries(step.step_outputs)) {\n if (val && typeof val === \"object\") {\n ctx.steps[key] = val as { output?: unknown; status?: string; duration_ms?: number };\n }\n }\n }\n\n let result: StepResult;\n\n // Enforce step-level timeout from step column (default 30s)\n const stepTimeoutSec = step.timeout_seconds || (step.step_config.timeout_seconds as number) || 30;\n const stepTimeoutMs = stepTimeoutSec * 1000;\n let stepTimer: ReturnType<typeof setTimeout> | undefined;\n const stepTimeoutPromise = new Promise<never>((_, reject) => {\n stepTimer = setTimeout(() => reject(new Error(`Step timed out after ${stepTimeoutSec}s`)), stepTimeoutMs);\n });\n\n try {\n\n switch (step.step_type) {\n case \"tool\":\n result = await Promise.race([executeToolStep(supabase, step.step_config, ctx, step.store_id, traceId), stepTimeoutPromise]);\n break;\n case \"condition\":\n result = executeConditionStep(step.step_config, ctx);\n break;\n case \"transform\":\n result = executeTransformStep(step.step_config, ctx);\n break;\n\n case \"delay\": {\n // First attempt: set the delay. Second attempt (after delay): success.\n if (step.attempt_count <= 1) {\n const delaySec = (step.step_config.seconds as number) || 60;\n await supabase.from(\"workflow_step_runs\").update({\n status: \"retrying\",\n output: { delay_seconds: delaySec, resume_at: new Date(Date.now() + delaySec * 1000).toISOString() },\n next_retry_at: new Date(Date.now() + delaySec * 1000).toISOString(),\n }).eq(\"id\", step.step_run_id);\n clearTimeout(stepTimer);\n return; // Worker picks it up after delay\n }\n result = { success: true, output: { delayed: true, seconds: step.step_config.seconds } };\n break;\n }\n\n case \"agent\":\n result = await Promise.race([executeAgentStep(step.step_config, ctx, step.store_id, supabase, step, traceId), stepTimeoutPromise]);\n break;\n\n case \"sub_workflow\": {\n const childWfId = resolveTemplate((step.step_config.workflow_id || \"\") as string, ctx) as string;\n if (!childWfId) { result = { success: false, error: \"No workflow_id in sub_workflow config\" }; break; }\n\n const payloadTemplate = (step.step_config.trigger_payload_template || step.step_config.trigger_payload || {}) as Record<string, unknown>;\n const payload = resolveTemplate(payloadTemplate, ctx);\n\n const { data: startResult } = await supabase.rpc(\"start_workflow_run\", {\n p_workflow_id: childWfId,\n p_store_id: step.store_id,\n p_trigger_type: \"sub_workflow\",\n p_trigger_payload: payload,\n });\n\n if (!startResult?.success) {\n result = { success: false, error: startResult?.error || \"Failed to start sub-workflow\" };\n break;\n }\n\n // Set to waiting — processWaitingSteps will resolve when child completes\n await supabase.from(\"workflow_step_runs\").update({\n status: \"waiting\",\n child_run_id: startResult.run_id,\n output: { child_run_id: startResult.run_id, child_workflow_id: childWfId },\n }).eq(\"id\", step.step_run_id);\n clearTimeout(stepTimer);\n return;\n }\n\n case \"parallel\": {\n const stepKeys = (step.step_config.step_keys || step.step_config.child_steps || []) as string[];\n if (stepKeys.length === 0) { result = { success: true, output: { parallel: true, steps: [] } }; break; }\n if (stepKeys.length > MAX_PARALLEL_CHILDREN) {\n result = { success: false, error: `Parallel step has ${stepKeys.length} children, exceeding limit of ${MAX_PARALLEL_CHILDREN}` }; break;\n }\n\n const { data: steps } = await supabase.from(\"workflow_steps\")\n .select(\"id, step_key, step_type, max_retries\")\n .eq(\"workflow_id\", step.workflow_id).in(\"step_key\", stepKeys);\n\n if (steps?.length) {\n await supabase.from(\"workflow_step_runs\").insert(\n steps.map(s => ({\n run_id: step.run_id, step_id: s.id, step_key: s.step_key,\n step_type: s.step_type, status: \"pending\" as const,\n max_attempts: s.max_retries ?? 3, parent_step_run_id: step.step_run_id,\n }))\n );\n }\n\n await supabase.from(\"workflow_step_runs\").update({\n status: \"waiting\", output: { waiting_for: stepKeys },\n }).eq(\"id\", step.step_run_id);\n clearTimeout(stepTimer);\n return; // processWaitingSteps resolves when all children complete\n }\n\n case \"for_each\": {\n const itemsExpr = step.step_config.items as string;\n const targetStepKey = step.step_config.step_key as string;\n if (!itemsExpr || !targetStepKey) {\n result = { success: false, error: \"for_each requires items and step_key in config\" }; break;\n }\n\n const items = resolveTemplate(itemsExpr, ctx);\n if (!Array.isArray(items)) {\n result = { success: false, error: `for_each items resolved to ${typeof items}, expected array` }; break;\n }\n if (items.length === 0) {\n result = { success: true, output: { children: [], total: 0 } }; break;\n }\n\n // P2 FIX: Enforce max items limit to prevent runaway step creation\n const maxItems = (step.step_config.max_items as number) || MAX_FOR_EACH_ITEMS;\n if (items.length > maxItems) {\n result = { success: false, error: `for_each exceeded maximum of ${maxItems} items (got ${items.length}). Increase limit in step config or paginate.` }; break;\n }\n\n // Look up target step definition\n const { data: targetStep } = await supabase.from(\"workflow_steps\")\n .select(\"id, step_key, step_type, max_retries\")\n .eq(\"workflow_id\", step.workflow_id).eq(\"step_key\", targetStepKey).single();\n\n if (!targetStep) {\n result = { success: false, error: `for_each target step '${targetStepKey}' not found` }; break;\n }\n\n // Create a step_run per item with the item as input\n await supabase.from(\"workflow_step_runs\").insert(\n items.map((item, idx) => ({\n run_id: step.run_id, step_id: targetStep.id,\n step_key: `${targetStepKey}[${idx}]`, step_type: targetStep.step_type,\n status: \"pending\" as const, max_attempts: targetStep.max_retries ?? 3,\n parent_step_run_id: step.step_run_id, input: item,\n }))\n );\n\n await supabase.from(\"workflow_step_runs\").update({\n status: \"waiting\", output: { waiting_for_count: items.length, target_step: targetStepKey },\n }).eq(\"id\", step.step_run_id);\n clearTimeout(stepTimer);\n return;\n }\n\n case \"code\": {\n result = await Promise.race([executeCodeStepIsolated(step.step_config, ctx), stepTimeoutPromise]);\n break;\n }\n\n case \"webhook_out\":\n result = await Promise.race([executeWebhookOutStep(step.step_config, ctx), stepTimeoutPromise]);\n break;\n\n case \"noop\":\n result = executeNoopStep();\n break;\n\n case \"llm_batch\":\n result = await Promise.race([executeLlmBatchStep(step.step_config, ctx), stepTimeoutPromise]);\n break;\n\n case \"approval\": {\n const approvalResult = await executeApprovalStep(supabase, step, ctx);\n if (approvalResult === \"waiting\") { clearTimeout(stepTimer); return; }\n result = approvalResult;\n break;\n }\n\n // Custom step — POSTs workflow context to a user-defined URL and uses the response\n case \"custom\": {\n const customUrl = resolveTemplate((step.step_config.url || step.step_config.endpoint) as string, ctx) as string;\n if (!customUrl) { result = { success: false, error: \"Custom step requires url in config\" }; break; }\n // P0 FIX: Use async validateUrl (DNS resolve-then-check) instead of sync isBlockedUrl\n const customSsrfError = await validateUrl(customUrl);\n if (customSsrfError) { result = { success: false, error: `Custom step blocked: ${customSsrfError}` }; break; }\n try {\n const customHeaders: Record<string, string> = { \"Content-Type\": \"application/json\" };\n if (step.step_config.headers && typeof step.step_config.headers === \"object\") {\n for (const [k, v] of Object.entries(step.step_config.headers as Record<string, string>)) {\n customHeaders[k] = resolveTemplate(v, ctx) as string;\n }\n }\n const customBody = JSON.stringify({\n step_key: step.step_key,\n run_id: step.run_id,\n workflow_id: step.workflow_id,\n input: step.input,\n step_outputs: step.step_outputs,\n trigger_payload: step.trigger_payload,\n config: step.step_config.payload_config || {},\n });\n const ctrl = new AbortController();\n const timer = setTimeout(() => ctrl.abort(), 30_000);\n const resp = await fetch(customUrl, { method: \"POST\", headers: customHeaders, body: customBody, signal: ctrl.signal });\n clearTimeout(timer);\n const respData = resp.headers.get(\"content-type\")?.includes(\"json\")\n ? await resp.json() : await resp.text();\n if (!resp.ok) {\n result = { success: false, error: `Custom step HTTP ${resp.status}: ${String(respData).substring(0, 500)}` };\n } else {\n // Support branch routing from custom step response\n const branch = typeof respData === \"object\" && respData?.branch ? respData.branch as string : undefined;\n result = { success: true, output: respData, branch };\n }\n } catch (err: any) {\n result = { success: false, error: err.name === \"AbortError\" ? \"Custom step timed out\" : sanitizeError(err) };\n }\n break;\n }\n\n // Waitpoint — generalized wait-for-external-signal (subsumes approval, webhook callback, cross-workflow)\n case \"waitpoint\": {\n // Second pass — resumed with completion data\n if (step.input && typeof step.input === \"object\" && (step.input as any).waitpoint_completed) {\n result = { success: true, output: (step.input as any).waitpoint_data || {} };\n break;\n }\n // First pass — create waitpoint token and pause\n const waitpointToken = randomUUID();\n const waitpointTimeout = (step.step_config.timeout_seconds as number) || 86400;\n const waitpointExpires = new Date(Date.now() + waitpointTimeout * 1000).toISOString();\n await supabase.from(\"waitpoint_tokens\").insert({\n token: waitpointToken,\n run_id: step.run_id,\n step_run_id: step.step_run_id,\n store_id: step.store_id,\n expires_at: waitpointExpires,\n label: (step.step_config.label as string) || step.step_key,\n });\n await supabase.from(\"workflow_step_runs\").update({\n status: \"waiting\",\n output: { waiting_for: \"waitpoint\", token: waitpointToken, expires_at: waitpointExpires },\n }).eq(\"id\", step.step_run_id);\n await logWorkflowEvent(supabase, step.run_id, \"waitpoint_created\", { token: waitpointToken }, step.step_run_id);\n clearTimeout(stepTimer);\n return;\n }\n\n default:\n result = { success: false, error: `Unknown step type: ${step.step_type}` };\n }\n\n } catch (timeoutErr: any) {\n result = { success: false, error: timeoutErr.message || `Step timed out after ${stepTimeoutSec}s` };\n } finally {\n clearTimeout(stepTimer);\n }\n\n const durationMs = Date.now() - startTime;\n\n // Phase 3.3: End OTEL span with result attributes\n if (result.success) {\n span.end({ \"workflow.duration_ms\": durationMs, \"workflow.status\": \"success\" });\n } else {\n span.setError(result.error || \"step failed\");\n span.end({ \"workflow.duration_ms\": durationMs, \"workflow.status\": \"failed\" });\n }\n\n // Event journal — step completed\n await logWorkflowEvent(supabase, step.run_id, result.success ? \"step_completed\" : \"step_failed\", {\n step_key: step.step_key, duration_ms: durationMs,\n ...(result.error ? { error: result.error } : {}),\n ...(result.branch ? { branch: result.branch } : {}),\n }, step.step_run_id);\n\n // Persist step result\n await supabase.from(\"workflow_step_runs\").update({\n status: result.success ? \"success\" : \"failed\",\n output: result.output || null,\n error_message: result.error || null,\n completed_at: new Date().toISOString(),\n duration_ms: durationMs,\n }).eq(\"id\", step.step_run_id);\n\n // P4 FIX: Atomically merge step output using jsonb_set to prevent race conditions\n // Two concurrent steps can no longer overwrite each other's outputs\n const stepOutput = { output: result.output, status: result.success ? \"success\" : \"failed\", duration_ms: durationMs };\n const { error: rpcError } = await supabase.rpc(\"accumulate_step_output\", {\n p_run_id: step.run_id,\n p_step_key: step.step_key,\n p_step_output: stepOutput,\n });\n if (rpcError) {\n // Retry once — transient connection errors are common under load\n log.warn({ err: rpcError.message, runId: step.run_id, stepKey: step.step_key }, \"accumulate_step_output RPC error, retrying once\");\n const { error: retryError } = await supabase.rpc(\"accumulate_step_output\", {\n p_run_id: step.run_id,\n p_step_key: step.step_key,\n p_step_output: stepOutput,\n });\n if (retryError) {\n // Final fallback: advisory-lock-guarded RPC prevents parallel step race conditions\n log.warn({ err: retryError.message, runId: step.run_id, stepKey: step.step_key }, \"accumulate_step_output retry failed, using locked fallback\");\n const { error: lockError } = await supabase.rpc(\"accumulate_step_output_locked\", {\n p_run_id: step.run_id,\n p_step_key: step.step_key,\n p_step_output: stepOutput,\n });\n if (lockError) {\n // P0 FIX: Throw so the step is marked as failed, not falsely as success\n throw new Error(`Failed to accumulate step output after all fallbacks: ${lockError.message}`);\n }\n }\n }\n\n // Checkpoint — snapshot state after each step for replay/debugging\n if (result.success) {\n const { error: cpError } = await supabase.from(\"workflow_checkpoints\").insert({\n run_id: step.run_id, step_run_id: step.step_run_id, step_key: step.step_key,\n step_outputs: { ...(step.step_outputs || {}), [step.step_key]: { output: result.output, status: \"success\", duration_ms: durationMs } },\n trigger_payload: step.trigger_payload,\n sequence_number: Object.keys(step.step_outputs || {}).length + 1,\n });\n if (cpError) log.warn({ err: cpError.message, runId: step.run_id, stepKey: step.step_key }, \"checkpoint insert failed\");\n }\n\n // Telemetry → ClickHouse\n queueSpan(auditRowToSpan({\n action: `workflow.step.${result.success ? \"completed\" : \"failed\"}`,\n severity: result.success ? \"info\" : \"error\",\n store_id: step.store_id, resource_type: \"workflow_step_run\",\n resource_id: step.step_run_id, source: \"workflow_engine\", duration_ms: durationMs,\n request_id: traceId || null,\n service_name: \"workflow-engine\", span_kind: \"INTERNAL\",\n status_code: result.success ? \"OK\" : \"ERROR\",\n start_time: new Date(Date.now() - durationMs).toISOString(),\n end_time: new Date().toISOString(),\n error_type: result.error ? classifyErrorType(result.error) : undefined,\n details: { workflow_id: step.workflow_id, run_id: step.run_id, step_key: step.step_key, step_type: step.step_type, attempt: step.attempt_count },\n error_message: result.error || null,\n }));\n\n // Surface step errors to clients via SSE broadcast + structured error_details\n if (!result.success && result.error) {\n await surfaceStepError(supabase, step, result.error);\n }\n\n // Child steps (parallel/for_each) — just save result, parent handles advancement\n if (step.parent_step_run_id) {\n // If child failed and has retries left, retry it (respects retry_policy)\n if (!result.success && step.attempt_count < step.max_attempts) {\n const retryPolicy = step.step_config.retry_policy as { backoff_type?: string; backoff_base_seconds?: number; max_backoff_seconds?: number } | undefined;\n const backoffType = retryPolicy?.backoff_type || \"exponential\";\n const baseDelay = retryPolicy?.backoff_base_seconds || step.retry_delay_seconds || 10;\n const maxBackoff = retryPolicy?.max_backoff_seconds || 300;\n let backoffDelay: number;\n switch (backoffType) {\n case \"fixed\": backoffDelay = baseDelay; break;\n case \"linear\": backoffDelay = baseDelay * step.attempt_count; break;\n default: backoffDelay = baseDelay * Math.pow(2, step.attempt_count - 1); break;\n }\n backoffDelay = Math.min(backoffDelay, maxBackoff);\n // P3 FIX: Add jitter (50%-100% of computed delay) to prevent thundering herd\n backoffDelay *= (0.5 + Math.random() * 0.5);\n await supabase.from(\"workflow_step_runs\").update({\n status: \"retrying\",\n next_retry_at: new Date(Date.now() + backoffDelay * 1000).toISOString(),\n }).eq(\"id\", step.step_run_id);\n }\n return; // Parent's processWaitingSteps handles advancement\n }\n\n // Handle failure — configurable retry policy\n if (!result.success) {\n if (step.attempt_count < step.max_attempts) {\n // Check retry_on filter — only retry if error matches pattern (if configured)\n const retryPolicy = step.step_config.retry_policy as { backoff_type?: string; backoff_base_seconds?: number; max_backoff_seconds?: number; retry_on?: string[] } | undefined;\n const retryOn = retryPolicy?.retry_on;\n const shouldRetry = !retryOn?.length || retryOn.some(pattern => result.error?.includes(pattern));\n\n if (shouldRetry) {\n const backoffType = retryPolicy?.backoff_type || \"exponential\";\n const baseDelay = retryPolicy?.backoff_base_seconds || step.retry_delay_seconds || 10;\n const maxBackoff = retryPolicy?.max_backoff_seconds || 300; // 5 min cap\n let backoffDelay: number;\n switch (backoffType) {\n case \"fixed\": backoffDelay = baseDelay; break;\n case \"linear\": backoffDelay = baseDelay * step.attempt_count; break;\n default: backoffDelay = baseDelay * Math.pow(2, step.attempt_count - 1); break; // exponential\n }\n backoffDelay = Math.min(backoffDelay, maxBackoff);\n // P3 FIX: Add jitter (50%-100% of computed delay) to prevent thundering herd\n backoffDelay *= (0.5 + Math.random() * 0.5);\n await supabase.from(\"workflow_step_runs\").update({\n status: \"retrying\",\n next_retry_at: new Date(Date.now() + backoffDelay * 1000).toISOString(),\n }).eq(\"id\", step.step_run_id);\n await logWorkflowEvent(supabase, step.run_id, \"step_retrying\", {\n step_key: step.step_key, attempt: step.attempt_count, backoff_type: backoffType, delay_seconds: backoffDelay,\n }, step.step_run_id);\n return;\n }\n // retry_on filter didn't match — fall through to failure handling\n }\n\n if (step.on_failure) {\n await createNextStepRunByKey(supabase, step.run_id, step.workflow_id, step.on_failure);\n } else {\n await completeWorkflowRun(supabase, step.run_id, step.workflow_id, step.store_id, \"failed\", result.error, step.step_key);\n }\n return;\n }\n\n // Advance — condition steps use branch, otherwise on_success\n const nextStepKey = result.branch || step.on_success;\n if (!nextStepKey) {\n await checkWorkflowCompletion(supabase, step.run_id, step.workflow_id);\n return;\n }\n await createNextStepRunByKey(supabase, step.run_id, step.workflow_id, nextStepKey);\n}\n\n// ============================================================================\n// WORKFLOW ADVANCEMENT HELPERS\n// ============================================================================\n\n// P1 FIX: Per-run in-memory cache for versioned steps (30s TTL)\n// Prevents 4x redundant DB calls per step execution\n// P0 FIX: Capped at 500 entries with LRU eviction to prevent unbounded memory growth\nconst VERSION_CACHE_MAX_SIZE = 500;\nconst versionedStepsCache = new Map<string, { data: any[] | null; expiresAt: number }>();\nconst VERSION_CACHE_TTL_MS = 30_000;\n\nexport function clearStepCache(): void {\n versionedStepsCache.clear();\n}\n\n/** Insert into cache with LRU eviction when size exceeds limit */\nfunction versionedStepsCacheSet(key: string, value: { data: any[] | null; expiresAt: number }): void {\n // If key already exists, delete first so re-insertion moves it to end (most recent)\n if (versionedStepsCache.has(key)) {\n versionedStepsCache.delete(key);\n }\n versionedStepsCache.set(key, value);\n // Evict oldest entries (Map iteration order = insertion order) if over limit\n if (versionedStepsCache.size > VERSION_CACHE_MAX_SIZE) {\n const excess = versionedStepsCache.size - VERSION_CACHE_MAX_SIZE;\n let removed = 0;\n for (const k of versionedStepsCache.keys()) {\n if (removed >= excess) break;\n versionedStepsCache.delete(k);\n removed++;\n }\n }\n}\n\n// Periodic cleanup to prevent memory leaks\nsetInterval(() => {\n const now = Date.now();\n for (const [key, entry] of versionedStepsCache) {\n if (now > entry.expiresAt) versionedStepsCache.delete(key);\n }\n}, 60_000);\n\n/**\n * Load the versioned steps array for a run. Returns null if no version.\n * Uses per-run in-memory cache with 30s TTL.\n */\nasync function loadVersionedSteps(\n supabase: SupabaseClient, runId: string,\n): Promise<any[] | null> {\n const cached = versionedStepsCache.get(runId);\n if (cached && Date.now() < cached.expiresAt) return cached.data;\n\n const { data: run } = await supabase.from(\"workflow_runs\")\n .select(\"version_id\").eq(\"id\", runId).single();\n if (!run?.version_id) {\n versionedStepsCacheSet(runId, { data: null, expiresAt: Date.now() + VERSION_CACHE_TTL_MS });\n return null;\n }\n\n const { data: version } = await supabase.from(\"workflow_versions\")\n .select(\"steps\").eq(\"id\", run.version_id).single();\n const result = (version?.steps && Array.isArray(version.steps)) ? version.steps as any[] : null;\n versionedStepsCacheSet(runId, { data: result, expiresAt: Date.now() + VERSION_CACHE_TTL_MS });\n return result;\n}\n\n/**\n * Apply versioned overrides to a claimed step. If the run has a version_id,\n * replaces step_config, on_success, on_failure with values from the snapshot.\n */\nasync function applyVersionOverrides(supabase: SupabaseClient, step: StepClaim): Promise<void> {\n const versionedSteps = await loadVersionedSteps(supabase, step.run_id);\n if (!versionedSteps) return;\n\n const vStep = versionedSteps.find((s: any) => s.step_key === step.step_key);\n if (vStep) {\n step.step_config = vStep.step_config || step.step_config;\n step.on_success = vStep.on_success ?? step.on_success;\n step.on_failure = vStep.on_failure ?? step.on_failure;\n }\n}\n\n/**\n * Resolve a step definition by key. If the run has a version_id, load from\n * the versioned snapshot. Otherwise, load from the live workflow_steps table.\n */\nasync function resolveStepDef(\n supabase: SupabaseClient, runId: string, workflowId: string, stepKey: string,\n): Promise<{ id: string; step_key: string; step_type: string; max_retries: number } | null> {\n const versionedSteps = await loadVersionedSteps(supabase, runId);\n\n if (versionedSteps) {\n const step = versionedSteps.find((s: any) => s.step_key === stepKey);\n if (step) {\n return { id: step.id, step_key: step.step_key, step_type: step.step_type, max_retries: step.max_retries ?? 3 };\n }\n return null;\n }\n\n // Live table\n const { data } = await supabase.from(\"workflow_steps\")\n .select(\"id, step_key, step_type, max_retries\")\n .eq(\"workflow_id\", workflowId).eq(\"step_key\", stepKey).single();\n return data;\n}\n\nasync function createNextStepRunByKey(\n supabase: SupabaseClient, runId: string, workflowId: string, stepKey: string,\n): Promise<string | null> {\n const nextStep = await resolveStepDef(supabase, runId, workflowId, stepKey);\n\n if (!nextStep) {\n log.error({ stepKey, workflowId }, \"step not found in workflow\");\n const { data: run } = await supabase.from(\"workflow_runs\").select(\"store_id\").eq(\"id\", runId).single();\n await completeWorkflowRun(supabase, runId, workflowId, run?.store_id, \"failed\", `Step '${stepKey}' not found`);\n return null;\n }\n\n // Check step count limit\n const { data: run } = await supabase.from(\"workflow_runs\")\n .select(\"store_id\").eq(\"id\", runId).single();\n const { count } = await supabase.from(\"workflow_step_runs\")\n .select(\"id\", { count: \"exact\", head: true }).eq(\"run_id\", runId);\n\n const { data: wf } = await supabase.from(\"workflows\")\n .select(\"max_steps_per_run\").eq(\"id\", workflowId).single();\n\n if ((count || 0) >= (wf?.max_steps_per_run || 50)) {\n await completeWorkflowRun(supabase, runId, workflowId, run?.store_id, \"failed\", `Step limit exceeded (${wf?.max_steps_per_run || 50})`);\n return null;\n }\n\n const { data: inserted } = await supabase.from(\"workflow_step_runs\").insert({\n run_id: runId, step_id: nextStep.id, step_key: nextStep.step_key,\n step_type: nextStep.step_type, status: \"pending\", max_attempts: nextStep.max_retries ?? 3,\n }).select(\"id\").single();\n\n return inserted?.id || null;\n}\n\n// ============================================================================\n// PHASE 1: INLINE EXECUTION — execute steps immediately, no 5s wait\n// ============================================================================\n\n/**\n * Claim a single pending step for a specific run using atomic RPC.\n * P0 FIX: Uses claim_step_for_run RPC with FOR UPDATE SKIP LOCKED + attempt_count increment.\n * Replaces the old SELECT-then-UPDATE pattern that never incremented attempt_count (infinite retries).\n */\nasync function claimStepForRun(\n supabase: SupabaseClient, runId: string,\n): Promise<StepClaim | null> {\n const { data, error } = await supabase.rpc(\"claim_step_for_run\", { p_run_id: runId });\n\n if (error) {\n log.error({ err: error.message, runId }, \"claim_step_for_run RPC failed\");\n return null;\n }\n\n // RPC returns an array of rows; we expect 0 or 1\n const row = Array.isArray(data) ? data[0] : data;\n if (!row) return null;\n\n return {\n step_run_id: row.step_run_id,\n run_id: row.run_id,\n workflow_id: row.workflow_id,\n store_id: row.store_id,\n step_id: row.step_id,\n step_key: row.step_key,\n step_type: row.step_type,\n step_config: row.step_config || {},\n on_success: row.on_success,\n on_failure: row.on_failure,\n timeout_seconds: row.timeout_seconds || 60,\n input_schema: row.input_schema,\n step_outputs: row.step_outputs || {},\n trigger_payload: row.trigger_payload || {},\n attempt_count: row.attempt_count || 1,\n max_attempts: row.max_attempts || 3,\n max_steps_per_run: row.max_steps_per_run || 50,\n input: row.input,\n parent_step_run_id: row.parent_step_run_id,\n retry_delay_seconds: row.retry_delay_seconds || 10,\n };\n}\n\n/**\n * Execute the first pending step of a run inline, then chain subsequent steps.\n * Depth guard prevents unbounded recursion — worker loop catches anything left.\n */\nexport async function executeInlineChain(\n supabase: SupabaseClient, runId: string, depth: number = 0, traceId?: string,\n): Promise<void> {\n if (depth >= MAX_INLINE_DEPTH) {\n log.warn({ runId, depthLimit: MAX_INLINE_DEPTH }, \"inline depth limit reached, deferring to worker\");\n return;\n }\n\n // Resolve traceId from run record if not passed (first depth only to avoid repeated queries)\n if (!traceId && depth === 0) {\n const { data: runData } = await supabase.from(\"workflow_runs\")\n .select(\"trace_id\").eq(\"id\", runId).single();\n traceId = runData?.trace_id || undefined;\n }\n\n // H1 FIX: Claim step specifically for this run — cannot steal from other runs\n const step = await claimStepForRun(supabase, runId);\n if (!step) return; // No pending steps for this run\n\n // Phase 4: Override step_config/on_success/on_failure from version snapshot\n await applyVersionOverrides(supabase, step);\n\n try {\n await executeAndAdvance(supabase, step, traceId);\n } catch (err) {\n const errMsg = sanitizeError(err);\n log.error({ stepKey: step.step_key, runId, err: errMsg }, \"inline step execution error\");\n await supabase.from(\"workflow_step_runs\").update({\n status: \"failed\", error_message: errMsg,\n completed_at: new Date().toISOString(), duration_ms: 0,\n }).eq(\"id\", step.step_run_id);\n // Surface error to clients (SSE broadcast + structured error_details on step run)\n await surfaceStepError(supabase, step, errMsg);\n return;\n }\n\n // Steps that go async (delay, sub_workflow, parallel, for_each, approval) don't chain\n const asyncTypes = new Set([\"delay\", \"sub_workflow\", \"parallel\", \"for_each\", \"approval\", \"waitpoint\"]);\n if (asyncTypes.has(step.step_type)) return;\n\n // Chain to next step\n await executeInlineChain(supabase, runId, depth + 1, traceId);\n}\n\nasync function checkWorkflowCompletion(\n supabase: SupabaseClient, runId: string, workflowId: string,\n): Promise<void> {\n // P1 FIX: Single atomic query to count all step statuses — eliminates race windows\n // between multiple queries that could see inconsistent state\n const { data: allSteps } = await supabase.from(\"workflow_step_runs\")\n .select(\"step_key, step_id, status, error_message\")\n .eq(\"run_id\", runId);\n\n if (!allSteps?.length) {\n // No steps at all — mark as success (empty workflow)\n const { data: run } = await supabase.from(\"workflow_runs\").select(\"store_id\").eq(\"id\", runId).single();\n await completeWorkflowRun(supabase, runId, workflowId, run?.store_id, \"success\");\n return;\n }\n\n // Count in-memory from single query result\n const activeStatuses = new Set([\"pending\", \"running\", \"retrying\", \"waiting\"]);\n const activeSteps = allSteps.filter(s => activeStatuses.has(s.status));\n if (activeSteps.length > 0) return; // Still in progress\n\n // All steps are terminal — determine outcome\n const skippedSteps = allSteps.filter(s => s.status === \"skipped\");\n const failedSteps = allSteps.filter(s => s.status === \"failed\");\n\n // Filter to unhandled failures — steps where on_failure is null (no error handler)\n // M14 FIX: Use versioned step defs when available\n let failed: typeof failedSteps = [];\n if (failedSteps.length) {\n const versionedSteps = await loadVersionedSteps(supabase, runId);\n\n if (versionedSteps) {\n // Use versioned definitions\n const vStepMap = new Map(versionedSteps.map((s: any) => [s.step_key, s]));\n failed = failedSteps.filter(s => {\n const vStep = vStepMap.get(s.step_key);\n return !vStep?.on_failure;\n });\n } else {\n // Fall back to live table\n const stepIds = failedSteps.map(s => s.step_id).filter(Boolean);\n if (stepIds.length) {\n const { data: stepDefs } = await supabase.from(\"workflow_steps\")\n .select(\"id, on_failure\").in(\"id\", stepIds);\n const defMap = new Map((stepDefs || []).map(d => [d.id, d]));\n\n failed = failedSteps.filter(s => {\n const def = defMap.get(s.step_id);\n return !def?.on_failure;\n });\n }\n }\n }\n\n const { data: run } = await supabase.from(\"workflow_runs\").select(\"store_id\").eq(\"id\", runId).single();\n\n if (failed.length) {\n await completeWorkflowRun(supabase, runId, workflowId, run?.store_id, \"failed\", failed[0].error_message, failed[0].step_key);\n } else if (skippedSteps.length) {\n // All remaining steps were skipped (circuit breaker) — fail the run\n await completeWorkflowRun(supabase, runId, workflowId, run?.store_id, \"failed\",\n `${skippedSteps.length} step(s) skipped by circuit breaker`, skippedSteps[0].step_key);\n } else {\n await completeWorkflowRun(supabase, runId, workflowId, run?.store_id, \"success\");\n }\n}\n\nexport async function completeWorkflowRun(\n supabase: SupabaseClient, runId: string, workflowId: string, storeId: string | undefined,\n status: \"success\" | \"failed\" | \"cancelled\" | \"timed_out\",\n errorMessage?: string | null, errorStepKey?: string | null, traceId?: string,\n): Promise<void> {\n const { data: run } = await supabase.from(\"workflow_runs\")\n .select(\"started_at, trace_id, metadata\").eq(\"id\", runId).single();\n const durationMs = run?.started_at ? Date.now() - new Date(run.started_at).getTime() : null;\n const resolvedTraceId = traceId || run?.trace_id || null;\n\n // Aggregate error_count and error_log from failed step runs\n const { data: failedStepRuns } = await supabase.from(\"workflow_step_runs\")\n .select(\"step_key, step_type, error_message, error_details\")\n .eq(\"run_id\", runId)\n .eq(\"status\", \"failed\");\n\n const errorCount = failedStepRuns?.length || 0;\n const errorLog = (failedStepRuns || []).map(sr => ({\n step_name: sr.step_key,\n step_type: sr.step_type,\n error_message: sr.error_message,\n ...(sr.error_details ? { details: sr.error_details } : {}),\n }));\n\n const updatedMetadata = {\n ...((run?.metadata as Record<string, unknown>) || {}),\n error_count: errorCount,\n ...(errorLog.length ? { error_log: errorLog } : {}),\n };\n\n // Guard against double-completion: only update if still running\n const { data: updatedRows, error: updateErr } = await supabase.from(\"workflow_runs\").update({\n status, error_message: errorMessage || null, error_step_key: errorStepKey || null,\n completed_at: new Date().toISOString(), duration_ms: durationMs, current_step_key: null,\n metadata: updatedMetadata,\n }).eq(\"id\", runId).eq(\"status\", \"running\").select(\"id\");\n\n if (updateErr) {\n log.warn({ err: updateErr.message, runId, status }, \"completeWorkflowRun update failed\");\n return;\n }\n if (!updatedRows || updatedRows.length === 0) {\n log.warn({ runId, status }, \"completeWorkflowRun skipped — run already completed by another caller\");\n return;\n }\n\n // Cancel remaining pending steps\n await supabase.from(\"workflow_step_runs\").update({ status: \"cancelled\" })\n .eq(\"run_id\", runId).in(\"status\", [\"pending\", \"retrying\", \"waiting\"]);\n\n // Event journal — run completed\n await logWorkflowEvent(supabase, runId, `run_${status}`, {\n workflow_id: workflowId, duration_ms: durationMs,\n ...(errorMessage ? { error: errorMessage } : {}),\n });\n\n // Circuit breaker\n if (workflowId) await handleWorkflowCircuitBreaker(supabase, workflowId, status === \"success\", errorMessage);\n\n // Telemetry → ClickHouse\n queueSpan(auditRowToSpan({\n action: `workflow.run.${status}`, severity: status === \"success\" ? \"info\" : \"error\",\n store_id: storeId || null, resource_type: \"workflow_run\", resource_id: runId,\n source: \"workflow_engine\", duration_ms: durationMs,\n request_id: resolvedTraceId,\n service_name: \"workflow-engine\", span_kind: \"INTERNAL\",\n status_code: status === \"success\" ? \"OK\" : \"ERROR\",\n start_time: new Date(Date.now() - (durationMs || 0)).toISOString(),\n end_time: new Date().toISOString(),\n error_type: errorMessage ? classifyErrorType(errorMessage) : undefined,\n details: { workflow_id: workflowId, run_id: runId },\n error_message: errorMessage || null,\n }));\n\n // Error notifications\n if (status === \"failed\" && workflowId) {\n await sendErrorNotification(supabase, workflowId, runId, storeId, errorMessage, errorStepKey);\n // Auto-archive to Dead Letter Queue\n if (storeId) {\n try {\n await archiveToDlq(supabase, runId, workflowId, storeId);\n } catch (e: any) {\n log.warn({ err: e?.message, runId }, \"archiveToDlq failed\");\n }\n }\n }\n}\n\nasync function sendErrorNotification(\n supabase: SupabaseClient, workflowId: string, runId: string,\n storeId: string | undefined, errorMessage?: string | null, errorStepKey?: string | null,\n): Promise<void> {\n const { data: wf } = await supabase.from(\"workflows\")\n .select(\"name, on_error_webhook_url, on_error_email\").eq(\"id\", workflowId).single();\n if (!wf) return;\n\n const errorPayload = {\n event: \"workflow.run.failed\",\n workflow_id: workflowId, workflow_name: wf.name,\n run_id: runId, error_message: errorMessage, error_step: errorStepKey,\n timestamp: new Date().toISOString(),\n };\n\n // Webhook notification (with SSRF protection)\n const errorWebhookSsrf = wf.on_error_webhook_url ? await validateUrl(wf.on_error_webhook_url) : \"no URL\";\n if (wf.on_error_webhook_url && !errorWebhookSsrf) {\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 10_000);\n await fetch(wf.on_error_webhook_url, {\n method: \"POST\", headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(errorPayload), signal: controller.signal,\n });\n clearTimeout(timer);\n } catch (err) {\n log.error({ err: sanitizeError(err), workflowId }, \"error notification webhook failed\");\n }\n }\n\n // Email notification\n if (wf.on_error_email && _executeTool && storeId) {\n try {\n await _executeTool(supabase, \"email\", {\n action: \"send\", to: wf.on_error_email,\n subject: `Workflow \"${wf.name}\" failed`,\n text: `Workflow \"${wf.name}\" failed at step \"${errorStepKey || \"unknown\"}\".\\n\\nError: ${errorMessage || \"Unknown error\"}\\n\\nRun ID: ${runId}\\nTime: ${new Date().toISOString()}`,\n }, storeId);\n } catch (err) {\n log.error({ err: sanitizeError(err), workflowId }, \"error notification email failed\");\n }\n }\n}\n\n// ============================================================================\n// WEBHOOK INGESTION\n// ============================================================================\n\nexport async function handleWebhookIngestion(\n supabase: SupabaseClient, slug: string, rawBody: string, headers: Record<string, string>,\n storeId?: string,\n): Promise<{ status: number; body: Record<string, unknown> }> {\n // P0 FIX: Multi-tenancy — scope webhook lookup by store_id when available\n let endpointQuery = supabase.from(\"webhook_endpoints\")\n .select(\"*\").eq(\"slug\", slug).eq(\"is_active\", true);\n if (storeId) {\n endpointQuery = endpointQuery.eq(\"store_id\", storeId);\n }\n const { data: endpoints } = await endpointQuery.limit(1);\n const endpoint = endpoints?.[0];\n if (!endpoint) return { status: 404, body: { error: \"Webhook endpoint not found\" } };\n\n // Rate limit — in-memory sliding window (no DB round-trip)\n const now = Date.now();\n let counter = webhookRateCounters.get(endpoint.id);\n if (!counter) { counter = { timestamps: [] }; webhookRateCounters.set(endpoint.id, counter); }\n counter.timestamps = counter.timestamps.filter(t => t > now - 60_000);\n if (counter.timestamps.length >= endpoint.max_requests_per_minute) {\n return { status: 429, body: { error: \"Rate limit exceeded\" } };\n }\n counter.timestamps.push(now);\n\n // HMAC verification\n if (endpoint.verify_signature) {\n const signature = headers[\"x-webhook-signature\"] || headers[\"x-hub-signature-256\"] || \"\";\n if (!signature) return { status: 401, body: { error: \"Missing signature\" } };\n\n const expected = `sha256=${createHmac(\"sha256\", endpoint.signing_secret).update(rawBody).digest(\"hex\")}`;\n try {\n const sigBuf = Buffer.from(signature);\n const expBuf = Buffer.from(expected);\n if (sigBuf.length !== expBuf.length || !timingSafeEqual(sigBuf, expBuf)) {\n return { status: 401, body: { error: \"Invalid signature\" } };\n }\n } catch { return { status: 401, body: { error: \"Invalid signature\" } }; }\n }\n\n // P3 FIX: Reject oversized payloads before parsing to prevent memory exhaustion\n const MAX_TRIGGER_PAYLOAD_BYTES = 10_000_000; // 10MB\n if (rawBody.length > MAX_TRIGGER_PAYLOAD_BYTES) {\n return { status: 413, body: { error: `Trigger payload too large (${rawBody.length} bytes, max 10MB)` } };\n }\n\n let payload: Record<string, unknown>;\n try { payload = JSON.parse(rawBody); } catch { payload = { raw: rawBody }; }\n\n if (endpoint.payload_transform && typeof endpoint.payload_transform === \"object\") {\n payload = resolveTemplate(endpoint.payload_transform, { steps: {}, trigger: payload }) as Record<string, unknown>;\n }\n\n // Update stats\n await supabase.from(\"webhook_endpoints\").update({\n last_received_at: new Date().toISOString(),\n total_received: (endpoint.total_received || 0) + 1,\n }).eq(\"id\", endpoint.id);\n\n // Telemetry → ClickHouse\n queueSpan(auditRowToSpan({\n action: \"webhook.received\", severity: \"info\", store_id: endpoint.store_id,\n resource_type: \"webhook_endpoint\", resource_id: endpoint.id, source: \"webhook\",\n service_name: \"workflow-engine\", span_kind: \"SERVER\", status_code: \"OK\",\n start_time: new Date().toISOString(), end_time: new Date().toISOString(),\n input_bytes: rawBody.length,\n details: { slug, workflow_id: endpoint.workflow_id },\n }));\n\n // Start workflow\n const { data: startResult } = await supabase.rpc(\"start_workflow_run\", {\n p_workflow_id: endpoint.workflow_id, p_store_id: endpoint.store_id,\n p_trigger_type: \"webhook\", p_trigger_payload: payload,\n });\n if (!startResult?.success) {\n return { status: 422, body: { error: startResult?.error || \"Failed to start workflow\" } };\n }\n\n const runId = startResult.run_id;\n\n // Sync response — poll until workflow completes or timeout\n if (endpoint.sync_response) {\n const timeoutMs = (endpoint.sync_timeout_seconds || 30) * 1000;\n const deadline = Date.now() + timeoutMs;\n\n while (Date.now() < deadline) {\n await new Promise(r => setTimeout(r, 500));\n\n const { data: run } = await supabase.from(\"workflow_runs\")\n .select(\"status, step_outputs, error_message\").eq(\"id\", runId).single();\n\n if (run?.status === \"success\") {\n return { status: 200, body: { success: true, run_id: runId, output: run.step_outputs } };\n }\n if (run?.status === \"failed\") {\n return { status: 422, body: { success: false, run_id: runId, error: run.error_message, output: run.step_outputs } };\n }\n }\n\n return { status: 202, body: { success: true, run_id: runId, status: \"running\", message: \"Workflow still in progress\" } };\n }\n\n return { status: 200, body: { success: true, run_id: runId, deduplicated: startResult.deduplicated || false } };\n}\n"],"mappings":"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","ignoreList":[]}
|