whale-code 6.5.6 → 6.5.8
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 +15 -3
- package/bin/whale-code.js +23 -0
- package/dist/cli/__tests__/print-mode-streaming.test.js +270 -0
- package/dist/cli/__tests__/print-mode.basic-output.test.js +230 -0
- package/dist/cli/__tests__/print-mode.session-errors.test.js +252 -0
- package/dist/cli/__tests__/print-mode.test.js +273 -0
- package/dist/cli/__tests__/serve-mode-messages.test.js +338 -0
- package/dist/cli/__tests__/serve-mode.messages.part2.test.js +266 -0
- package/dist/cli/__tests__/serve-mode.messages.test.js +277 -0
- package/dist/cli/__tests__/serve-mode.startup-http.test.js +279 -0
- package/dist/cli/__tests__/serve-mode.test.js +345 -0
- package/dist/cli/app.d.ts +1 -0
- package/dist/cli/app.js +8 -2
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/chat/ChatApp.d.ts +8 -36
- package/dist/cli/chat/ChatApp.js +135 -450
- package/dist/cli/chat/ChatApp.js.map +1 -1
- package/dist/cli/chat/ChatInput.d.ts +3 -2
- package/dist/cli/chat/ChatInput.js +37 -14
- package/dist/cli/chat/ChatInput.js.map +1 -1
- package/dist/cli/chat/ImsgManager.d.ts +20 -0
- package/dist/cli/chat/ImsgManager.js +341 -0
- package/dist/cli/chat/ImsgManager.js.map +1 -0
- package/dist/cli/chat/MarkdownText.d.ts +2 -1
- package/dist/cli/chat/MarkdownText.js +12 -8
- package/dist/cli/chat/MarkdownText.js.map +1 -1
- package/dist/cli/chat/MemoryManager.js +3 -2
- package/dist/cli/chat/MemoryManager.js.map +1 -1
- package/dist/cli/chat/MessageList.d.ts +1 -1
- package/dist/cli/chat/MessageList.js +119 -114
- package/dist/cli/chat/MessageList.js.map +1 -1
- package/dist/cli/chat/NodeManager.js +57 -170
- package/dist/cli/chat/NodeManager.js.map +1 -1
- package/dist/cli/chat/OverlayContext.d.ts +27 -0
- package/dist/cli/chat/OverlayContext.js +2 -0
- package/dist/cli/chat/OverlayContext.js.map +1 -0
- package/dist/cli/chat/PlanApproval.js +3 -2
- package/dist/cli/chat/PlanApproval.js.map +1 -1
- package/dist/cli/chat/RewindConfirmation.d.ts +12 -0
- package/dist/cli/chat/RewindConfirmation.js +243 -0
- package/dist/cli/chat/RewindConfirmation.js.map +1 -0
- package/dist/cli/chat/RewindViewer.js +5 -4
- package/dist/cli/chat/RewindViewer.js.map +1 -1
- package/dist/cli/chat/SessionManager.js +3 -2
- package/dist/cli/chat/SessionManager.js.map +1 -1
- package/dist/cli/chat/SlashMenu.d.ts +7 -24
- package/dist/cli/chat/SlashMenu.js +14 -183
- package/dist/cli/chat/SlashMenu.js.map +1 -1
- package/dist/cli/chat/StatusBar.d.ts +5 -2
- package/dist/cli/chat/StatusBar.js +80 -65
- package/dist/cli/chat/StatusBar.js.map +1 -1
- package/dist/cli/chat/StreamingText.d.ts +2 -1
- package/dist/cli/chat/StreamingText.js +2 -2
- package/dist/cli/chat/StreamingText.js.map +1 -1
- package/dist/cli/chat/SubagentPanel.d.ts +6 -6
- package/dist/cli/chat/SubagentPanel.js +159 -537
- package/dist/cli/chat/SubagentPanel.js.map +1 -1
- package/dist/cli/chat/TeamPanel.js +2 -30
- package/dist/cli/chat/TeamPanel.js.map +1 -1
- package/dist/cli/chat/ToolIndicator.d.ts +7 -23
- package/dist/cli/chat/ToolIndicator.js +543 -1443
- package/dist/cli/chat/ToolIndicator.js.map +1 -1
- package/dist/cli/chat/chat-input-menu-handler.d.ts +32 -0
- package/dist/cli/chat/components/LiveArea.d.ts +12 -0
- package/dist/cli/chat/components/LiveArea.js +252 -0
- package/dist/cli/chat/components/LiveArea.js.map +1 -0
- package/dist/cli/chat/components/OverlayRouter.d.ts +13 -0
- package/dist/cli/chat/components/OverlayRouter.js +257 -0
- package/dist/cli/chat/components/OverlayRouter.js.map +1 -0
- package/dist/cli/chat/components/StaticMessages.d.ts +9 -0
- package/dist/cli/chat/components/StaticMessages.js +132 -0
- package/dist/cli/chat/components/StaticMessages.js.map +1 -0
- package/dist/cli/chat/hooks/agent-loop-events.d.ts +77 -0
- package/dist/cli/chat/hooks/agent-loop-events.js +171 -0
- package/dist/cli/chat/hooks/agent-loop-events.js.map +1 -0
- package/dist/cli/chat/hooks/slash-command-config-system.d.ts +11 -0
- package/dist/cli/chat/hooks/slash-command-config-system.js +177 -0
- package/dist/cli/chat/hooks/slash-command-config-system.js.map +1 -0
- package/dist/cli/chat/hooks/slash-command-handlers-system.d.ts +12 -0
- package/dist/cli/chat/hooks/slash-command-handlers-system.js +127 -0
- package/dist/cli/chat/hooks/slash-command-handlers-system.js.map +1 -0
- package/dist/cli/chat/hooks/slash-command-handlers.d.ts +21 -0
- package/dist/cli/chat/hooks/slash-command-handlers.js +222 -0
- package/dist/cli/chat/hooks/slash-command-handlers.js.map +1 -0
- package/dist/cli/chat/hooks/slash-imsg-handlers.js +148 -0
- package/dist/cli/chat/hooks/slash-imsg-handlers.js.map +1 -0
- package/dist/cli/chat/hooks/slash-node-handlers.d.ts +26 -0
- package/dist/cli/chat/hooks/slash-node-handlers.js +226 -0
- package/dist/cli/chat/hooks/slash-node-handlers.js.map +1 -0
- package/dist/cli/chat/hooks/useAgentLoop.d.ts +2 -21
- package/dist/cli/chat/hooks/useAgentLoop.js +258 -401
- package/dist/cli/chat/hooks/useAgentLoop.js.map +1 -1
- package/dist/cli/chat/hooks/useElapsedClock.d.ts +19 -0
- package/dist/cli/chat/hooks/useElapsedClock.js +80 -0
- package/dist/cli/chat/hooks/useElapsedClock.js.map +1 -0
- package/dist/cli/chat/hooks/useOverlayHandlers.d.ts +23 -0
- package/dist/cli/chat/hooks/useOverlayHandlers.js +125 -0
- package/dist/cli/chat/hooks/useOverlayHandlers.js.map +1 -0
- package/dist/cli/chat/hooks/useSlashCommands.d.ts +14 -22
- package/dist/cli/chat/hooks/useSlashCommands.js +99 -720
- package/dist/cli/chat/hooks/useSlashCommands.js.map +1 -1
- package/dist/cli/chat/hooks/useStreamingReducer.d.ts +66 -0
- package/dist/cli/chat/imsg-manager-render.d.ts +29 -0
- package/dist/cli/chat/imsg-manager-render.js +294 -0
- package/dist/cli/chat/imsg-manager-render.js.map +1 -0
- package/dist/cli/chat/slash-commands.d.ts +37 -0
- package/dist/cli/chat/slash-commands.js +194 -0
- package/dist/cli/chat/slash-commands.js.map +1 -0
- package/dist/cli/chat/store.d.ts +115 -0
- package/dist/cli/chat/store.js +177 -0
- package/dist/cli/chat/store.js.map +1 -0
- package/dist/cli/chat/tool-indicator-helpers.d.ts +14 -0
- package/dist/cli/chat/tool-indicator-helpers.js +167 -0
- package/dist/cli/chat/tool-indicator-helpers.js.map +1 -0
- package/dist/cli/chat/tool-indicator-summary.d.ts +6 -0
- package/dist/cli/chat/tool-indicator-summary.js +103 -0
- package/dist/cli/chat/tool-indicator-summary.js.map +1 -0
- package/dist/cli/chat/tool-indicator-types.d.ts +66 -0
- package/dist/cli/chat/tool-indicator-types.js +177 -0
- package/dist/cli/chat/tool-indicator-types.js.map +1 -0
- package/dist/cli/commands/__tests__/config-cmd.test.js +270 -0
- package/dist/cli/commands/__tests__/doctor.test.js +257 -0
- package/dist/cli/commands/__tests__/imsg-node-bridge.test.js +99 -0
- package/dist/cli/commands/__tests__/imsg-utils.test.js +73 -0
- package/dist/cli/commands/__tests__/init.test.js +214 -0
- package/dist/cli/commands/__tests__/mcp.test.js +287 -0
- package/dist/cli/commands/imsg-config.d.ts +31 -0
- package/dist/cli/commands/imsg-config.js +104 -0
- package/dist/cli/commands/imsg-config.js.map +1 -0
- package/dist/cli/commands/imsg-node-bridge.d.ts +25 -0
- package/dist/cli/commands/imsg-node-bridge.js +229 -0
- package/dist/cli/commands/imsg-node-bridge.js.map +1 -0
- package/dist/cli/commands/imsg-utils.d.ts +14 -0
- package/dist/cli/commands/imsg-utils.js +42 -0
- package/dist/cli/commands/imsg-utils.js.map +1 -0
- package/dist/cli/commands/imsg-watcher-helpers.d.ts +40 -0
- package/dist/cli/commands/imsg-watcher-helpers.js +184 -0
- package/dist/cli/commands/imsg-watcher-helpers.js.map +1 -0
- package/dist/cli/commands/imsg-watcher.d.ts +11 -0
- package/dist/cli/commands/imsg-watcher.js +230 -0
- package/dist/cli/commands/imsg-watcher.js.map +1 -0
- package/dist/cli/commands/imsg.d.ts +14 -0
- package/dist/cli/commands/imsg.js +181 -0
- package/dist/cli/commands/imsg.js.map +1 -0
- package/dist/cli/commands/sessions.d.ts +9 -0
- package/dist/cli/commands/sessions.js +93 -0
- package/dist/cli/commands/sessions.js.map +1 -0
- package/dist/cli/login/LoginApp.js +3 -0
- package/dist/cli/login/LoginApp.js.map +1 -1
- package/dist/cli/serve-mode-persistence.d.ts +18 -0
- package/dist/cli/serve-mode-persistence.js +157 -0
- package/dist/cli/serve-mode-persistence.js.map +1 -0
- package/dist/cli/serve-mode-query.d.ts +9 -0
- package/dist/cli/serve-mode-query.js +247 -0
- package/dist/cli/serve-mode-query.js.map +1 -0
- package/dist/cli/serve-mode-types.d.ts +29 -0
- package/dist/cli/serve-mode-types.js +56 -0
- package/dist/cli/serve-mode-types.js.map +1 -0
- package/dist/cli/services/__tests__/agent-definitions.test.js +153 -0
- package/dist/cli/services/__tests__/agent-events-global.test.js +39 -0
- package/dist/cli/services/__tests__/agent-events.part2.test.js +113 -0
- package/dist/cli/services/__tests__/agent-events.test.js +157 -0
- package/dist/cli/services/__tests__/agent-loop-auth.test.js +392 -0
- package/dist/cli/services/__tests__/agent-loop-budget.test.js +389 -0
- package/dist/cli/services/__tests__/agent-loop-tools-lifecycle.test.js +430 -0
- package/dist/cli/services/__tests__/agent-loop-tools-maxturns.test.js +486 -0
- package/dist/cli/services/__tests__/agent-loop-utils-execution.test.js +528 -0
- package/dist/cli/services/__tests__/agent-loop-utils-helpers.test.js +466 -0
- package/dist/cli/services/__tests__/agent-worker-base-execute.test.js +257 -0
- package/dist/cli/services/__tests__/agent-worker-base-helpers.test.js +198 -0
- package/dist/cli/services/__tests__/agent-worker-base.test.js +278 -0
- package/dist/cli/services/__tests__/auth-service-exports.test.js +41 -0
- package/dist/cli/services/__tests__/auth-service.part2.test.js +169 -0
- package/dist/cli/services/__tests__/auth-service.test.js +242 -0
- package/dist/cli/services/__tests__/background-processes.test.js +282 -0
- package/dist/cli/services/__tests__/claude-md-loader.test.js +134 -0
- package/dist/cli/services/__tests__/config-store.test.js +247 -0
- package/dist/cli/services/__tests__/debug-log.test.js +199 -0
- package/dist/cli/services/__tests__/edge-cases-caching.test.js +174 -0
- package/dist/cli/services/__tests__/edge-cases-compaction-core.test.js +226 -0
- package/dist/cli/services/__tests__/edge-cases-compaction-openai.test.js +152 -0
- package/dist/cli/services/__tests__/edge-cases-compaction-shapes.test.js +53 -0
- package/dist/cli/services/__tests__/edge-cases-compaction-thinking.test.js +226 -0
- package/dist/cli/services/__tests__/edge-cases-compaction.test.js +131 -0
- package/dist/cli/services/__tests__/edge-cases-paths.test.js +86 -0
- package/dist/cli/services/__tests__/error-logger-messages.test.js +81 -0
- package/dist/cli/services/__tests__/error-logger-transport.test.js +119 -0
- package/dist/cli/services/__tests__/error-logger.test.js +264 -0
- package/dist/cli/services/__tests__/file-history.test.js +136 -0
- package/dist/cli/services/__tests__/git-context-cache-reset.test.js +223 -0
- package/dist/cli/services/__tests__/git-context.test.js +241 -0
- package/dist/cli/services/__tests__/interactive-tools-execute.test.js +166 -0
- package/dist/cli/services/__tests__/interactive-tools-plan.test.js +197 -0
- package/dist/cli/services/__tests__/interactive-tools.part2.test.js +168 -0
- package/dist/cli/services/__tests__/interactive-tools.test.js +179 -0
- package/dist/cli/services/__tests__/keybinding-manager.test.js +205 -0
- package/dist/cli/services/__tests__/local-tools-dispatch.test.js +404 -0
- package/dist/cli/services/__tests__/local-tools.test.js +238 -0
- package/dist/cli/services/__tests__/lsp-manager.test.js +364 -0
- package/dist/cli/services/__tests__/mcp-client-connect-disconnect.test.js +310 -0
- package/dist/cli/services/__tests__/mcp-client.test.js +93 -0
- package/dist/cli/services/__tests__/memory-manager.test.js +154 -0
- package/dist/cli/services/__tests__/model-manager-utils.test.js +154 -0
- package/dist/cli/services/__tests__/model-manager.test.js +175 -0
- package/dist/cli/services/__tests__/permission-modes.test.js +222 -0
- package/dist/cli/services/__tests__/ripgrep.test.js +328 -0
- package/dist/cli/services/__tests__/server-tools-execute.test.js +317 -0
- package/dist/cli/services/__tests__/server-tools.test.js +272 -0
- package/dist/cli/services/__tests__/session-persistence.test.js +245 -0
- package/dist/cli/services/__tests__/subagent-basic.test.js +489 -0
- package/dist/cli/services/__tests__/subagent-edge.test.js +545 -0
- package/dist/cli/services/__tests__/subagent-prompts.test.js +558 -0
- package/dist/cli/services/__tests__/subagent-worker-errors.test.js +255 -0
- package/dist/cli/services/__tests__/subagent-worker.test.js +242 -0
- package/dist/cli/services/__tests__/system-prompt.test.js +210 -0
- package/dist/cli/services/__tests__/team-lead-comms-messaging.test.js +250 -0
- package/dist/cli/services/__tests__/team-lead-comms-result.test.js +232 -0
- package/dist/cli/services/__tests__/team-lead-comms-stop.test.js +344 -0
- package/dist/cli/services/__tests__/team-lead-comms.test.js +285 -0
- package/dist/cli/services/__tests__/team-lead-create.test.js +327 -0
- package/dist/cli/services/__tests__/team-lead-run.test.js +318 -0
- package/dist/cli/services/__tests__/team-lead-stop.test.js +199 -0
- package/dist/cli/services/__tests__/team-state-comms.test.js +240 -0
- package/dist/cli/services/__tests__/team-state-core.test.js +230 -0
- package/dist/cli/services/__tests__/team-state-tasks-complete-fail-available.test.js +224 -0
- package/dist/cli/services/__tests__/team-state-tasks.test.js +184 -0
- package/dist/cli/services/__tests__/telemetry-ai-metadata.test.js +116 -0
- package/dist/cli/services/__tests__/telemetry.part2.test.js +195 -0
- package/dist/cli/services/__tests__/telemetry.test.js +176 -0
- package/dist/cli/services/agent-event-types.d.ts +148 -0
- package/dist/cli/services/agent-event-types.js +2 -0
- package/dist/cli/services/agent-event-types.js.map +1 -0
- package/dist/cli/services/agent-loop-iteration.d.ts +13 -0
- package/dist/cli/services/agent-loop-setup.d.ts +32 -0
- package/dist/cli/services/agent-loop-shell-summarize.d.ts +11 -0
- package/dist/cli/services/agent-loop-shell-summarize.js +94 -0
- package/dist/cli/services/agent-loop-shell-summarize.js.map +1 -0
- package/dist/cli/services/agent-loop-tools.d.ts +37 -0
- package/dist/cli/services/agent-loop-tools.js +243 -0
- package/dist/cli/services/agent-loop-tools.js.map +1 -0
- package/dist/cli/services/agent-loop-types.d.ts +52 -0
- package/dist/cli/services/agent-loop-types.js +25 -0
- package/dist/cli/services/agent-loop-types.js.map +1 -0
- package/dist/cli/services/agent-loop.d.ts +2 -2
- package/dist/cli/services/agent-loop.js +162 -17
- package/dist/cli/services/agent-loop.js.map +1 -1
- package/dist/cli/services/agent-worker-base-api.d.ts +19 -0
- package/dist/cli/services/agent-worker-base-helpers.d.ts +27 -0
- package/dist/cli/services/agent-worker-base-tools.d.ts +16 -0
- package/dist/cli/services/agent-worker-base-types.d.ts +81 -0
- package/dist/cli/services/agent-worker-base.js +1 -1
- package/dist/cli/services/agent-worker-base.js.map +1 -1
- package/dist/cli/services/auth-service.js +19 -19
- package/dist/cli/services/auth-service.js.map +1 -1
- package/dist/cli/services/background-agents.d.ts +26 -0
- package/dist/cli/services/background-processes-ops.d.ts +24 -0
- package/dist/cli/services/background-processes.d.ts +2 -1
- package/dist/cli/services/background-processes.js +7 -3
- package/dist/cli/services/background-processes.js.map +1 -1
- package/dist/cli/services/background-tool-defs.d.ts +50 -0
- package/dist/cli/services/cli-agent-loop.d.ts +41 -0
- package/dist/cli/services/cli-agent-loop.js +104 -0
- package/dist/cli/services/cli-agent-loop.js.map +1 -0
- package/dist/cli/services/config-modules-model.test.js +133 -0
- package/dist/cli/services/config-modules-permission.test.js +85 -0
- package/dist/cli/services/config-modules-permissions.test.js +85 -0
- package/dist/cli/services/config-modules-session.test.js +297 -0
- package/dist/cli/services/config-store.d.ts +5 -0
- package/dist/cli/services/config-store.js +90 -5
- package/dist/cli/services/config-store.js.map +1 -1
- package/dist/cli/services/error-logger-internals.d.ts +25 -0
- package/dist/cli/services/error-logger-internals.js +111 -0
- package/dist/cli/services/error-logger-internals.js.map +1 -0
- package/dist/cli/services/format-server-response-columns.test.js +265 -0
- package/dist/cli/services/format-server-response-fallback.test.js +65 -0
- package/dist/cli/services/format-server-response-formatters.d.ts +18 -0
- package/dist/cli/services/format-server-response-formatters.js +195 -0
- package/dist/cli/services/format-server-response-formatters.js.map +1 -0
- package/dist/cli/services/format-server-response-primitives-basic.test.js +261 -0
- package/dist/cli/services/format-server-response-primitives-nested.test.js +188 -0
- package/dist/cli/services/format-server-response-primitives.test.js +300 -0
- package/dist/cli/services/format-server-response-realworld.test.js +248 -0
- package/dist/cli/services/format-server-response-values.test.js +247 -0
- package/dist/cli/services/format-server-response.js +5 -3
- package/dist/cli/services/format-server-response.js.map +1 -1
- package/dist/cli/services/hooks-execute.d.ts +47 -0
- package/dist/cli/services/hooks-execute.js +181 -0
- package/dist/cli/services/hooks-execute.js.map +1 -0
- package/dist/cli/services/hooks-runners.test.js +184 -0
- package/dist/cli/services/hooks.glob-load.test.js +233 -0
- package/dist/cli/services/hooks.run-hooks.test.js +184 -0
- package/dist/cli/services/hooks.test.js +233 -0
- package/dist/cli/services/interactive-tool-defs.d.ts +80 -0
- package/dist/cli/services/interactive-tools.d.ts +5 -2
- package/dist/cli/services/interactive-tools.js +47 -33
- package/dist/cli/services/interactive-tools.js.map +1 -1
- package/dist/cli/services/keybinding-manager.d.ts +2 -0
- package/dist/cli/services/keybinding-manager.js +5 -0
- package/dist/cli/services/keybinding-manager.js.map +1 -1
- package/dist/cli/services/local-tools-agent-defs-tasks.d.ts +6 -0
- package/dist/cli/services/local-tools-agent-defs-tasks.js +245 -0
- package/dist/cli/services/local-tools-agent-defs-tasks.js.map +1 -0
- package/dist/cli/services/local-tools-agent-defs-utils.d.ts +6 -0
- package/dist/cli/services/local-tools-agent-defs-utils.js +198 -0
- package/dist/cli/services/local-tools-agent-defs-utils.js.map +1 -0
- package/dist/cli/services/local-tools-agent-defs.d.ts +10 -0
- package/dist/cli/services/local-tools-agent-defs.js +13 -0
- package/dist/cli/services/local-tools-agent-defs.js.map +1 -0
- package/dist/cli/services/local-tools-definitions.d.ts +6 -0
- package/dist/cli/services/local-tools-files.test.js +256 -0
- package/dist/cli/services/local-tools-read-many.d.ts +6 -0
- package/dist/cli/services/local-tools.js +7 -9
- package/dist/cli/services/local-tools.js.map +1 -1
- package/dist/cli/services/lsp-config.d.ts +13 -0
- package/dist/cli/services/lsp-config.js +72 -0
- package/dist/cli/services/lsp-config.js.map +1 -0
- package/dist/cli/services/lsp-formatters.d.ts +11 -0
- package/dist/cli/services/lsp-formatters.js +209 -0
- package/dist/cli/services/lsp-formatters.js.map +1 -0
- package/dist/cli/services/lsp-protocol.d.ts +9 -0
- package/dist/cli/services/lsp-protocol.js +40 -0
- package/dist/cli/services/lsp-protocol.js.map +1 -0
- package/dist/cli/services/lsp-server-docs.d.ts +8 -0
- package/dist/cli/services/lsp-server-docs.js +132 -0
- package/dist/cli/services/lsp-server-docs.js.map +1 -0
- package/dist/cli/services/lsp-server-documents.d.ts +8 -0
- package/dist/cli/services/lsp-server-documents.js +132 -0
- package/dist/cli/services/lsp-server-documents.js.map +1 -0
- package/dist/cli/services/lsp-server.d.ts +40 -0
- package/dist/cli/services/lsp-server.js +270 -0
- package/dist/cli/services/lsp-server.js.map +1 -0
- package/dist/cli/services/model-router.test.js +245 -0
- package/dist/cli/services/permission-modes.js +16 -3
- package/dist/cli/services/permission-modes.js.map +1 -1
- package/dist/cli/services/project-index.d.ts +41 -0
- package/dist/cli/services/project-index.js +286 -0
- package/dist/cli/services/project-index.js.map +1 -0
- package/dist/cli/services/rewind-rewindTo.test.js +202 -0
- package/dist/cli/services/rewind.test.js +175 -0
- package/dist/cli/services/sandbox.test.js +198 -0
- package/dist/cli/services/server-tools-client.d.ts +46 -0
- package/dist/cli/services/server-tools-client.js +211 -0
- package/dist/cli/services/server-tools-client.js.map +1 -0
- package/dist/cli/services/server-tools-media.d.ts +21 -0
- package/dist/cli/services/server-tools-media.js +163 -0
- package/dist/cli/services/server-tools-media.js.map +1 -0
- package/dist/cli/services/server-tools-preprocess.d.ts +23 -0
- package/dist/cli/services/server-tools-preprocess.js +386 -0
- package/dist/cli/services/server-tools-preprocess.js.map +1 -0
- package/dist/cli/services/server-tools.d.ts +2 -0
- package/dist/cli/services/server-tools.js +40 -15
- package/dist/cli/services/server-tools.js.map +1 -1
- package/dist/cli/services/session-client.d.ts +78 -0
- package/dist/cli/services/session-client.js +197 -0
- package/dist/cli/services/session-client.js.map +1 -0
- package/dist/cli/services/session-persistence.d.ts +3 -0
- package/dist/cli/services/session-persistence.js +12 -0
- package/dist/cli/services/session-persistence.js.map +1 -1
- package/dist/cli/services/subagent-execution.d.ts +12 -0
- package/dist/cli/services/subagent-loop-v2.d.ts +36 -0
- package/dist/cli/services/subagent-loop-v2.js +238 -0
- package/dist/cli/services/subagent-loop-v2.js.map +1 -0
- package/dist/cli/services/subagent-tools.d.ts +10 -0
- package/dist/cli/services/subagent-tools.js +96 -0
- package/dist/cli/services/subagent-tools.js.map +1 -0
- package/dist/cli/services/subagent-types.d.ts +57 -0
- package/dist/cli/services/subagent-types.js +218 -0
- package/dist/cli/services/subagent-types.js.map +1 -0
- package/dist/cli/services/subagent.js +3 -2
- package/dist/cli/services/subagent.js.map +1 -1
- package/dist/cli/services/system-prompt.js +26 -3
- package/dist/cli/services/system-prompt.js.map +1 -1
- package/dist/cli/services/team-lead-auto.d.ts +11 -0
- package/dist/cli/services/team-lead-execution.d.ts +28 -0
- package/dist/cli/services/team-lead-types.d.ts +37 -0
- package/dist/cli/services/team-lead-types.js +2 -0
- package/dist/cli/services/team-lead-types.js.map +1 -0
- package/dist/cli/services/team-lead.d.ts +60 -0
- package/dist/cli/services/team-lead.js +148 -11
- package/dist/cli/services/team-lead.js.map +1 -1
- package/dist/cli/services/team-state-members.d.ts +11 -0
- package/dist/cli/services/team-state-members.js +185 -0
- package/dist/cli/services/team-state-members.js.map +1 -0
- package/dist/cli/services/team-state-messaging.d.ts +16 -0
- package/dist/cli/services/team-state-messaging.js +90 -0
- package/dist/cli/services/team-state-messaging.js.map +1 -0
- package/dist/cli/services/team-state-tasks.d.ts +12 -0
- package/dist/cli/services/team-state-tasks.js +23 -0
- package/dist/cli/services/team-state-tasks.js.map +1 -0
- package/dist/cli/services/team-state-types.d.ts +54 -0
- package/dist/cli/services/team-state-types.js +129 -0
- package/dist/cli/services/team-state-types.js.map +1 -0
- package/dist/cli/services/team-state.d.ts +5 -0
- package/dist/cli/services/team-state.js +29 -0
- package/dist/cli/services/team-state.js.map +1 -1
- package/dist/cli/services/teammate-loop.js +557 -0
- package/dist/cli/services/teammate-loop.js.map +1 -0
- package/dist/cli/services/teammate-prompt.d.ts +2 -0
- package/dist/cli/services/teammate-prompt.js +68 -0
- package/dist/cli/services/teammate-prompt.js.map +1 -0
- package/dist/cli/services/teammate-tools.d.ts +6 -0
- package/dist/cli/services/teammate-tools.js +158 -0
- package/dist/cli/services/teammate-tools.js.map +1 -0
- package/dist/cli/services/teammate-types.d.ts +36 -0
- package/dist/cli/services/teammate-types.js +43 -0
- package/dist/cli/services/teammate-types.js.map +1 -0
- package/dist/cli/services/teammate-worker-helpers.d.ts +71 -0
- package/dist/cli/services/teammate-worker-helpers.js +183 -0
- package/dist/cli/services/teammate-worker-helpers.js.map +1 -0
- package/dist/cli/services/teammate-worker-task-cleanup.d.ts +27 -0
- package/dist/cli/services/teammate-worker-task-cleanup.js +91 -0
- package/dist/cli/services/teammate-worker-task-cleanup.js.map +1 -0
- package/dist/cli/services/teammate-worker-task-loop.d.ts +35 -0
- package/dist/cli/services/teammate-worker-task-loop.js +273 -0
- package/dist/cli/services/teammate-worker-task-loop.js.map +1 -0
- package/dist/cli/services/teammate-worker.d.ts +13 -0
- package/dist/cli/services/teammate-worker.js +294 -0
- package/dist/cli/services/teammate-worker.js.map +1 -0
- package/dist/cli/services/telemetry-spans.d.ts +17 -0
- package/dist/cli/services/telemetry-spans.js +172 -0
- package/dist/cli/services/telemetry-spans.js.map +1 -0
- package/dist/cli/services/tools/__tests__/agent-tools-tasks-teams.test.js +250 -0
- package/dist/cli/services/tools/__tests__/agent-tools-teams.test.js +200 -0
- package/dist/cli/services/tools/__tests__/agent-tools.test.js +340 -0
- package/dist/cli/services/tools/__tests__/file-ops-cache.test.js +152 -0
- package/dist/cli/services/tools/__tests__/file-ops-notebook.test.js +249 -0
- package/dist/cli/services/tools/__tests__/file-ops-read.test.js +261 -0
- package/dist/cli/services/tools/__tests__/file-ops-write.test.js +292 -0
- package/dist/cli/services/tools/__tests__/search-tools-rg.test.js +92 -0
- package/dist/cli/services/tools/__tests__/search-tools.part2.test.js +174 -0
- package/dist/cli/services/tools/__tests__/search-tools.test.js +227 -0
- package/dist/cli/services/tools/__tests__/shell-exec-allowed-core.test.js +163 -0
- package/dist/cli/services/tools/__tests__/shell-exec-allowed-extended.test.js +220 -0
- package/dist/cli/services/tools/__tests__/shell-exec-allowed.part2.test.js +215 -0
- package/dist/cli/services/tools/__tests__/shell-exec-allowed.test.js +154 -0
- package/dist/cli/services/tools/__tests__/shell-exec-blocked.test.js +132 -0
- package/dist/cli/services/tools/__tests__/shell-exec-execution.test.js +245 -0
- package/dist/cli/services/tools/__tests__/task-manager-create.test.js +110 -0
- package/dist/cli/services/tools/__tests__/task-manager-crud.test.js +339 -0
- package/dist/cli/services/tools/__tests__/task-manager-list-get.test.js +343 -0
- package/dist/cli/services/tools/__tests__/task-manager-query.test.js +346 -0
- package/dist/cli/services/tools/__tests__/task-manager-routing.test.js +58 -0
- package/dist/cli/services/tools/__tests__/task-manager-update.test.js +224 -0
- package/dist/cli/services/tools/__tests__/task-manager.test.js +159 -0
- package/dist/cli/services/tools/__tests__/web-tools-html-search.test.js +227 -0
- package/dist/cli/services/tools/__tests__/web-tools.test.js +285 -0
- package/dist/cli/services/tools/agent-tools-tasks.d.ts +10 -0
- package/dist/cli/services/tools/agent-tools-tasks.js +216 -0
- package/dist/cli/services/tools/agent-tools-tasks.js.map +1 -0
- package/dist/cli/services/tools/agent-tools-team.d.ts +8 -0
- package/dist/cli/services/tools/agent-tools-team.js +101 -0
- package/dist/cli/services/tools/agent-tools-team.js.map +1 -0
- package/dist/cli/services/tools/agent-tools.js +115 -42
- package/dist/cli/services/tools/agent-tools.js.map +1 -1
- package/dist/cli/services/tools/file-ops-notebook.d.ts +9 -0
- package/dist/cli/services/tools/file-ops-notebook.js +186 -0
- package/dist/cli/services/tools/file-ops-notebook.js.map +1 -0
- package/dist/cli/services/tools/file-ops-read.d.ts +11 -0
- package/dist/cli/services/tools/file-ops-read.js +237 -0
- package/dist/cli/services/tools/file-ops-read.js.map +1 -0
- package/dist/cli/services/tools/file-ops-write.d.ts +8 -0
- package/dist/cli/services/tools/file-ops-write.js +260 -0
- package/dist/cli/services/tools/file-ops-write.js.map +1 -0
- package/dist/cli/services/tools/file-ops.d.ts +1 -0
- package/dist/cli/services/tools/file-ops.js +167 -0
- package/dist/cli/services/tools/file-ops.js.map +1 -1
- package/dist/cli/services/tools/html-to-text.d.ts +6 -0
- package/dist/cli/services/tools/html-to-text.js +118 -0
- package/dist/cli/services/tools/html-to-text.js.map +1 -0
- package/dist/cli/services/tools/shell-exec.test.js +148 -0
- package/dist/cli/services/tools/ssrf-guard.d.ts +6 -0
- package/dist/cli/services/tools/ssrf-guard.js +80 -0
- package/dist/cli/services/tools/ssrf-guard.js.map +1 -0
- package/dist/cli/setup/SetupComponents.d.ts +10 -0
- package/dist/cli/setup/SetupComponents.js +144 -0
- package/dist/cli/setup/SetupComponents.js.map +1 -0
- package/dist/cli/setup/setup-cli-targets.d.ts +9 -0
- package/dist/cli/setup/setup-cli-targets.js +49 -0
- package/dist/cli/setup/setup-cli-targets.js.map +1 -0
- package/dist/cli/shared/InlineErrorBoundary.d.ts +22 -0
- package/dist/cli/shared/InlineErrorBoundary.js +35 -0
- package/dist/cli/shared/InlineErrorBoundary.js.map +1 -0
- package/dist/cli/shared/MatrixIntro.js +2 -1
- package/dist/cli/shared/MatrixIntro.js.map +1 -1
- package/dist/cli/shared/SharedTick.d.ts +10 -0
- package/dist/cli/shared/SpinnerSlot.d.ts +16 -8
- package/dist/cli/shared/SpinnerSlot.js +122 -29
- package/dist/cli/shared/SpinnerSlot.js.map +1 -1
- package/dist/cli/shared/WhaleBanner.js +3 -2
- package/dist/cli/shared/WhaleBanner.js.map +1 -1
- package/dist/cli/shared/__tests__/markdown.test.js +188 -0
- package/dist/cli/shared/format-utils.d.ts +16 -0
- package/dist/cli/shared/format-utils.js +121 -0
- package/dist/cli/shared/format-utils.js.map +1 -0
- package/dist/cli/shared/markdown-chart.d.ts +8 -0
- package/dist/cli/shared/markdown-chart.js +92 -0
- package/dist/cli/shared/markdown-chart.js.map +1 -0
- package/dist/cli/shared/markdown-diff.d.ts +15 -0
- package/dist/cli/shared/markdown-diff.js +205 -0
- package/dist/cli/shared/markdown-diff.js.map +1 -0
- package/dist/cli/shared/markdown-helpers.d.ts +33 -0
- package/dist/cli/shared/markdown-helpers.js +129 -0
- package/dist/cli/shared/markdown-helpers.js.map +1 -0
- package/dist/cli/shared/markdown-table.d.ts +10 -0
- package/dist/cli/shared/markdown-table.js +227 -0
- package/dist/cli/shared/markdown-table.js.map +1 -0
- package/dist/cli/shared/markdown.d.ts +2 -6
- package/dist/cli/shared/markdown.js +8 -115
- package/dist/cli/shared/markdown.js.map +1 -1
- package/dist/cli/shared/useLatestRef.d.ts +11 -0
- package/dist/cli/shared/useLatestRef.js +34 -0
- package/dist/cli/shared/useLatestRef.js.map +1 -0
- package/dist/cli/shared/useSyncState.d.ts +11 -0
- package/dist/cli/shared/useSyncState.js +39 -0
- package/dist/cli/shared/useSyncState.js.map +1 -0
- package/dist/cli/stores/StoreApp.js +3 -1
- package/dist/cli/stores/StoreApp.js.map +1 -1
- package/dist/index-agent.d.ts +11 -0
- package/dist/index-agent.js +83 -0
- package/dist/index-agent.js.map +1 -0
- package/dist/index-auth.d.ts +22 -0
- package/dist/index-auth.js +114 -0
- package/dist/index-auth.js.map +1 -0
- package/dist/index-handlers.d.ts +25 -0
- package/dist/index-handlers.js +164 -0
- package/dist/index-handlers.js.map +1 -0
- package/dist/index-tools.d.ts +22 -0
- package/dist/index-tools.js +115 -0
- package/dist/index-tools.js.map +1 -0
- package/dist/local-agent/__tests__/connection-disconnect.test.js +201 -0
- package/dist/local-agent/__tests__/connection-lifecycle.test.js +289 -0
- package/dist/local-agent/__tests__/connection-msghandling.test.js +311 -0
- package/dist/local-agent/__tests__/connection-reconnect.test.js +230 -0
- package/dist/local-agent/__tests__/connection-toolexec.test.js +253 -0
- package/dist/local-agent/__tests__/discovery.test.js +328 -0
- package/dist/local-agent/__tests__/executor-background.test.js +219 -0
- package/dist/local-agent/__tests__/executor-exec.test.js +221 -0
- package/dist/local-agent/__tests__/executor-jobs-sessions.test.js +220 -0
- package/dist/local-agent/__tests__/executor-system-info.test.js +133 -0
- package/dist/local-agent/__tests__/executor-systeminfo.test.js +109 -0
- package/dist/local-agent/__tests__/executor.test.js +235 -0
- package/dist/local-agent/__tests__/index.test.js +139 -0
- package/dist/local-agent/connection-handlers.d.ts +8 -0
- package/dist/local-agent/connection-handlers.js +112 -0
- package/dist/local-agent/connection-handlers.js.map +1 -0
- package/dist/local-agent/connection-tools.d.ts +8 -0
- package/dist/local-agent/connection-tools.js +111 -0
- package/dist/local-agent/connection-tools.js.map +1 -0
- package/dist/local-agent/executor-jobs.d.ts +12 -0
- package/dist/local-agent/executor-jobs.js +143 -0
- package/dist/local-agent/executor-jobs.js.map +1 -0
- package/dist/local-agent/executor.d.ts +3 -0
- package/dist/local-agent/executor.js +2 -2
- package/dist/local-agent/executor.js.map +1 -1
- package/dist/node/__tests__/cli-channels.test.js +293 -0
- package/dist/node/__tests__/cli-config-edge.test.js +154 -0
- package/dist/node/__tests__/cli-config.test.js +215 -0
- package/dist/node/__tests__/config.test.js +292 -0
- package/dist/node/__tests__/runtime-heartbeat.test.js +153 -0
- package/dist/node/__tests__/runtime-lifecycle-init.test.js +263 -0
- package/dist/node/__tests__/runtime-lifecycle-stats.test.js +180 -0
- package/dist/node/__tests__/runtime-lifecycle.test.js +305 -0
- package/dist/node/__tests__/runtime-relay.test.js +341 -0
- package/dist/node/adapters/__tests__/base.test.js +286 -0
- package/dist/node/adapters/__tests__/discord.test.js +284 -0
- package/dist/node/adapters/__tests__/email-send.test.js +295 -0
- package/dist/node/adapters/__tests__/email.inbound-send.test.js +217 -0
- package/dist/node/adapters/__tests__/email.lifecycle.test.js +211 -0
- package/dist/node/adapters/__tests__/email.test.js +290 -0
- package/dist/node/adapters/__tests__/email.webhook-send.test.js +251 -0
- package/dist/node/adapters/__tests__/imessage-filter.test.js +183 -0
- package/dist/node/adapters/__tests__/imessage-lifecycle.test.js +215 -0
- package/dist/node/adapters/__tests__/imessage-send-restart.test.js +227 -0
- package/dist/node/adapters/__tests__/slack.part2.test.js +135 -0
- package/dist/node/adapters/__tests__/slack.test.js +241 -0
- package/dist/node/adapters/__tests__/sms-extras.test.js +108 -0
- package/dist/node/adapters/__tests__/sms-lifecycle.test.js +203 -0
- package/dist/node/adapters/__tests__/sms-messaging.test.js +266 -0
- package/dist/node/adapters/__tests__/sms.part2.test.js +174 -0
- package/dist/node/adapters/__tests__/sms.test.js +253 -0
- package/dist/node/adapters/__tests__/telegram-polling.test.js +256 -0
- package/dist/node/adapters/__tests__/telegram-send.test.js +166 -0
- package/dist/node/adapters/__tests__/webchat-inbound.test.js +188 -0
- package/dist/node/adapters/__tests__/webchat-outbound.test.js +178 -0
- package/dist/node/adapters/__tests__/whatsapp-inbound.test.js +200 -0
- package/dist/node/adapters/__tests__/whatsapp-send.test.js +212 -0
- package/dist/node/adapters/__tests__/whatsapp.test.js +280 -0
- package/dist/node/adapters/discord-gateway.d.ts +42 -0
- package/dist/node/adapters/discord-gateway.js +169 -0
- package/dist/node/adapters/discord-gateway.js.map +1 -0
- package/dist/node/adapters/imessage.d.ts +11 -0
- package/dist/node/adapters/imessage.js +23 -6
- package/dist/node/adapters/imessage.js.map +1 -1
- package/dist/node/cli-channels.d.ts +6 -0
- package/dist/node/cli-channels.js +229 -0
- package/dist/node/cli-channels.js.map +1 -0
- package/dist/node/cli-node.d.ts +9 -0
- package/dist/node/cli-node.js +186 -0
- package/dist/node/cli-node.js.map +1 -0
- package/dist/node/cli-portal.d.ts +11 -0
- package/dist/node/cli-portal.js +503 -0
- package/dist/node/cli-portal.js.map +1 -0
- package/dist/node/portal/portal-target.d.ts +16 -0
- package/dist/node/portal/portal-target.js +102 -0
- package/dist/node/portal/portal-target.js.map +1 -0
- package/dist/node/portal/protocol-frames.d.ts +33 -0
- package/dist/node/portal/protocol-frames.js +170 -0
- package/dist/node/portal/protocol-frames.js.map +1 -0
- package/dist/node/runtime-network.d.ts +25 -0
- package/dist/node/runtime-network.js +226 -0
- package/dist/node/runtime-network.js.map +1 -0
- package/dist/node/runtime-utils.d.ts +27 -0
- package/dist/node/runtime-utils.js +99 -0
- package/dist/node/runtime-utils.js.map +1 -0
- package/dist/node/runtime.d.ts +1 -0
- package/dist/node/runtime.js +71 -1
- package/dist/node/runtime.js.map +1 -1
- package/dist/node/task-runner.d.ts +33 -0
- package/dist/node/task-runner.js +276 -0
- package/dist/node/task-runner.js.map +1 -0
- package/dist/server/__tests__/gateway-fast-fail.test.js +160 -0
- package/dist/server/__tests__/local-agent-gateway.test.js +186 -0
- package/dist/server/__tests__/proxy-handlers-delegation.test.js +240 -0
- package/dist/server/__tests__/proxy-handlers-validation.test.js +211 -0
- package/dist/server/__tests__/proxy-handlers.part2.test.js +240 -0
- package/dist/server/__tests__/proxy-handlers.test.js +213 -0
- package/dist/server/__tests__/strip-base64-e2e.test.js +303 -0
- package/dist/server/__tests__/strip-base64.test.js +256 -0
- package/dist/server/__tests__/tool-router-agent-tools.test.js +324 -0
- package/dist/server/__tests__/tool-router-execute-core.test.js +357 -0
- package/dist/server/__tests__/tool-router-execute-permissions.test.js +332 -0
- package/dist/server/__tests__/tool-router-execute.test.js +348 -0
- package/dist/server/__tests__/tool-router-load.test.js +432 -0
- package/dist/server/__tests__/tool-router-permissions.test.js +359 -0
- package/dist/server/__tests__/tool-router-registry-cache.test.js +383 -0
- package/dist/server/__tests__/tool-router-registry-handlers.test.js +272 -0
- package/dist/server/__tests__/tool-router-registry.test.js +331 -0
- package/dist/server/__tests__/validation-inventory.test.js +250 -0
- package/dist/server/__tests__/validation-misc.test.js +243 -0
- package/dist/server/__tests__/validation-supply-chain.test.js +188 -0
- package/dist/server/__tests__/worker.test.js +265 -0
- package/dist/server/handlers/__test-utils__/test-db.d.ts +2 -0
- package/dist/server/handlers/__test-utils__/test-db.js +14 -1
- package/dist/server/handlers/__test-utils__/test-db.js.map +1 -1
- package/dist/server/handlers/__tests__/conversation-lock.test.js +117 -0
- package/dist/server/handlers/__tests__/e2e/auth-cross-platform-login.e2e.test.js +268 -0
- package/dist/server/handlers/__tests__/e2e/auth-cross-platform-tokens.e2e.test.js +264 -0
- package/dist/server/handlers/__tests__/e2e/email-pipeline-send.e2e.test.js +214 -0
- package/dist/server/handlers/__tests__/e2e/email-pipeline-threads.e2e.test.js +168 -0
- package/dist/server/handlers/__tests__/e2e/error-logging-pipeline-dedup.e2e.test.js +229 -0
- package/dist/server/handlers/__tests__/e2e/error-logging-pipeline.e2e.test.js +239 -0
- package/dist/server/handlers/__tests__/e2e/error-logging-rate-limit.e2e.test.js +150 -0
- package/dist/server/handlers/__tests__/e2e/inventory-sync-guards.e2e.test.js +177 -0
- package/dist/server/handlers/__tests__/e2e/inventory-sync.e2e.test.js +228 -0
- package/dist/server/handlers/__tests__/e2e/inventory-sync.part2.e2e.test.js +188 -0
- package/dist/server/handlers/__tests__/e2e/order-lifecycle-fulfillment.e2e.test.js +295 -0
- package/dist/server/handlers/__tests__/e2e/order-lifecycle.e2e.test.js +277 -0
- package/dist/server/handlers/__tests__/e2e/order-lifecycle.fulfillment.e2e.test.js +307 -0
- package/dist/server/handlers/__tests__/e2e/order-lifecycle.setup.e2e.test.js +177 -0
- package/dist/server/handlers/__tests__/e2e/storefront-checkout-cart.e2e.test.js +255 -0
- package/dist/server/handlers/__tests__/e2e/storefront-checkout-webhook.e2e.test.js +231 -0
- package/dist/server/handlers/__tests__/e2e/workflow-execution-failures.e2e.test.js +235 -0
- package/dist/server/handlers/__tests__/e2e/workflow-execution.e2e.test.js +294 -0
- package/dist/server/handlers/__tests__/e2e/workflow-security.e2e.test.js +311 -0
- package/dist/server/handlers/__tests__/e2e/workflow-security.part2.e2e.test.js +267 -0
- package/dist/server/handlers/__tests__/workflow-cache.test.js +237 -0
- package/dist/server/handlers/analytics-errors-edge.test.js +173 -0
- package/dist/server/handlers/analytics.js +88 -1
- package/dist/server/handlers/analytics.js.map +1 -1
- package/dist/server/handlers/analytics.test.js +280 -0
- package/dist/server/handlers/api-docs-examples-ext.d.ts +9 -0
- package/dist/server/handlers/api-docs-examples-ext.js +278 -0
- package/dist/server/handlers/api-docs-examples-ext.js.map +1 -0
- package/dist/server/handlers/api-docs-examples.d.ts +8 -0
- package/dist/server/handlers/api-docs-examples.js +221 -0
- package/dist/server/handlers/api-docs-examples.js.map +1 -0
- package/dist/server/handlers/api-docs-sections-ext.d.ts +2 -0
- package/dist/server/handlers/api-docs-sections-ext.js +497 -0
- package/dist/server/handlers/api-docs-sections-ext.js.map +1 -0
- package/dist/server/handlers/api-docs-sections.d.ts +21 -0
- package/dist/server/handlers/api-docs-sections.js +293 -0
- package/dist/server/handlers/api-docs-sections.js.map +1 -0
- package/dist/server/handlers/api-docs.d.ts +2 -0
- package/dist/server/handlers/api-docs.js +177 -0
- package/dist/server/handlers/api-docs.js.map +1 -1
- package/dist/server/handlers/api-keys.part2.test.js +157 -0
- package/dist/server/handlers/api-keys.test.js +161 -0
- package/dist/server/handlers/billing-core.d.ts +28 -0
- package/dist/server/handlers/billing-core.js +126 -0
- package/dist/server/handlers/billing-core.js.map +1 -0
- package/dist/server/handlers/billing-routes.d.ts +9 -0
- package/dist/server/handlers/billing-routes.js +243 -0
- package/dist/server/handlers/billing-routes.js.map +1 -0
- package/dist/server/handlers/billing-routes.test.js +123 -0
- package/dist/server/handlers/billing.test.js +215 -0
- package/dist/server/handlers/browser-actions-errors.test.js +94 -0
- package/dist/server/handlers/browser-actions.d.ts +35 -0
- package/dist/server/handlers/browser-actions.js +171 -0
- package/dist/server/handlers/browser-actions.js.map +1 -0
- package/dist/server/handlers/browser-actions.part2.test.js +190 -0
- package/dist/server/handlers/browser-actions.test.js +190 -0
- package/dist/server/handlers/browser-captcha.d.ts +6 -0
- package/dist/server/handlers/browser-captcha.js +172 -0
- package/dist/server/handlers/browser-captcha.js.map +1 -0
- package/dist/server/handlers/browser-lifecycle.d.ts +9 -0
- package/dist/server/handlers/browser-lifecycle.js +142 -0
- package/dist/server/handlers/browser-lifecycle.js.map +1 -0
- package/dist/server/handlers/browser-validation.test.js +257 -0
- package/dist/server/handlers/catalog-advanced.d.ts +9 -0
- package/dist/server/handlers/catalog-advanced.js +352 -0
- package/dist/server/handlers/catalog-advanced.js.map +1 -0
- package/dist/server/handlers/catalog-categories.d.ts +5 -0
- package/dist/server/handlers/catalog-categories.js +181 -0
- package/dist/server/handlers/catalog-categories.js.map +1 -0
- package/dist/server/handlers/catalog-products.d.ts +5 -0
- package/dist/server/handlers/catalog-products.js +404 -0
- package/dist/server/handlers/catalog-products.js.map +1 -0
- package/dist/server/handlers/catalog-schemas.d.ts +5 -0
- package/dist/server/handlers/catalog-schemas.js +426 -0
- package/dist/server/handlers/catalog-schemas.js.map +1 -0
- package/dist/server/handlers/catalog.test.js +297 -0
- package/dist/server/handlers/comms-documents-advanced.d.ts +8 -0
- package/dist/server/handlers/comms-documents-advanced.js +159 -0
- package/dist/server/handlers/comms-documents-advanced.js.map +1 -0
- package/dist/server/handlers/comms-documents.d.ts +10 -0
- package/dist/server/handlers/comms-documents.js +445 -0
- package/dist/server/handlers/comms-documents.js.map +1 -0
- package/dist/server/handlers/comms-email.d.ts +10 -0
- package/dist/server/handlers/comms-email.js +492 -0
- package/dist/server/handlers/comms-email.js.map +1 -0
- package/dist/server/handlers/comms-pdf-generation.d.ts +8 -0
- package/dist/server/handlers/comms-pdf-generation.js +327 -0
- package/dist/server/handlers/comms-pdf-generation.js.map +1 -0
- package/dist/server/handlers/comms-pdf-helpers.d.ts +9 -0
- package/dist/server/handlers/comms-pdf-helpers.js +126 -0
- package/dist/server/handlers/comms-pdf-helpers.js.map +1 -0
- package/dist/server/handlers/comms-shared.d.ts +3 -0
- package/dist/server/handlers/comms-shared.js +28 -0
- package/dist/server/handlers/comms-shared.js.map +1 -0
- package/dist/server/handlers/comms.test.js +289 -0
- package/dist/server/handlers/creations-actions.d.ts +21 -0
- package/dist/server/handlers/creations-actions.js +250 -0
- package/dist/server/handlers/creations-actions.js.map +1 -0
- package/dist/server/handlers/creations-advanced-collections.test.js +214 -0
- package/dist/server/handlers/creations-advanced-generate.test.js +142 -0
- package/dist/server/handlers/creations-advanced.test.js +171 -0
- package/dist/server/handlers/creations-collections-preview.test.js +214 -0
- package/dist/server/handlers/creations-crud.d.ts +35 -0
- package/dist/server/handlers/creations-crud.js +248 -0
- package/dist/server/handlers/creations-crud.js.map +1 -0
- package/dist/server/handlers/creations-crud.test.js +260 -0
- package/dist/server/handlers/creations-generate.d.ts +21 -0
- package/dist/server/handlers/creations-generate.js +256 -0
- package/dist/server/handlers/creations-generate.js.map +1 -0
- package/dist/server/handlers/creations-mutations.test.js +197 -0
- package/dist/server/handlers/crm-customers-read.d.ts +58 -0
- package/dist/server/handlers/crm-customers-read.js +208 -0
- package/dist/server/handlers/crm-customers-read.js.map +1 -0
- package/dist/server/handlers/crm-customers-write.d.ts +54 -0
- package/dist/server/handlers/crm-customers-write.js +414 -0
- package/dist/server/handlers/crm-customers-write.js.map +1 -0
- package/dist/server/handlers/crm-utils.d.ts +6 -0
- package/dist/server/handlers/crm-utils.js +19 -0
- package/dist/server/handlers/crm-utils.js.map +1 -0
- package/dist/server/handlers/crm.test.js +179 -0
- package/dist/server/handlers/discovery-advertise.d.ts +18 -0
- package/dist/server/handlers/discovery-advertise.js +101 -0
- package/dist/server/handlers/discovery-advertise.js.map +1 -0
- package/dist/server/handlers/discovery-advertise.test.js +185 -0
- package/dist/server/handlers/discovery-scan.d.ts +19 -0
- package/dist/server/handlers/discovery-scan.js +107 -0
- package/dist/server/handlers/discovery-scan.js.map +1 -0
- package/dist/server/handlers/discovery-scan.test.js +233 -0
- package/dist/server/handlers/embeddings-embed-search.test.js +196 -0
- package/dist/server/handlers/embeddings-index-delete-stats.test.js +140 -0
- package/dist/server/handlers/embeddings-search.test.js +221 -0
- package/dist/server/handlers/embeddings.test.js +137 -0
- package/dist/server/handlers/enrichment-breach.d.ts +8 -0
- package/dist/server/handlers/enrichment-breach.js +266 -0
- package/dist/server/handlers/enrichment-breach.js.map +1 -0
- package/dist/server/handlers/enrichment-data.d.ts +13 -0
- package/dist/server/handlers/enrichment-data.js +145 -0
- package/dist/server/handlers/enrichment-data.js.map +1 -0
- package/dist/server/handlers/enrichment-enrich.d.ts +6 -0
- package/dist/server/handlers/enrichment-enrich.js +235 -0
- package/dist/server/handlers/enrichment-enrich.js.map +1 -0
- package/dist/server/handlers/enrichment-helpers.d.ts +10 -0
- package/dist/server/handlers/enrichment-helpers.js +17 -0
- package/dist/server/handlers/enrichment-helpers.js.map +1 -0
- package/dist/server/handlers/enrichment-mutations.test.js +240 -0
- package/dist/server/handlers/enrichment-queries.test.js +181 -0
- package/dist/server/handlers/enrichment-validation.test.js +177 -0
- package/dist/server/handlers/enrichment-writes.d.ts +16 -0
- package/dist/server/handlers/enrichment-writes.js +226 -0
- package/dist/server/handlers/enrichment-writes.js.map +1 -0
- package/dist/server/handlers/image-gen-actions.d.ts +18 -0
- package/dist/server/handlers/image-gen-actions.js +183 -0
- package/dist/server/handlers/image-gen-actions.js.map +1 -0
- package/dist/server/handlers/image-gen-providers.d.ts +29 -0
- package/dist/server/handlers/image-gen-providers.js +161 -0
- package/dist/server/handlers/image-gen-providers.js.map +1 -0
- package/dist/server/handlers/image-gen.test.js +205 -0
- package/dist/server/handlers/inventory-audit.d.ts +10 -0
- package/dist/server/handlers/inventory-audit.js +90 -0
- package/dist/server/handlers/inventory-audit.js.map +1 -0
- package/dist/server/handlers/inventory-helpers.d.ts +8 -0
- package/dist/server/handlers/inventory-helpers.js +19 -0
- package/dist/server/handlers/inventory-helpers.js.map +1 -0
- package/dist/server/handlers/inventory-query.d.ts +67 -0
- package/dist/server/handlers/inventory-query.js +299 -0
- package/dist/server/handlers/inventory-query.js.map +1 -0
- package/dist/server/handlers/inventory.test.js +380 -0
- package/dist/server/handlers/kali-background.test.js +222 -0
- package/dist/server/handlers/kali-errors.test.js +92 -0
- package/dist/server/handlers/kali-validation.test.js +234 -0
- package/dist/server/handlers/llm-providers-actions.test.js +220 -0
- package/dist/server/handlers/llm-providers-anthropic.test.js +239 -0
- package/dist/server/handlers/llm-providers-clients.d.ts +6 -0
- package/dist/server/handlers/llm-providers-clients.js +296 -0
- package/dist/server/handlers/llm-providers-clients.js.map +1 -0
- package/dist/server/handlers/llm-providers-credentials.d.ts +3 -0
- package/dist/server/handlers/llm-providers-credentials.js +109 -0
- package/dist/server/handlers/llm-providers-credentials.js.map +1 -0
- package/dist/server/handlers/llm-providers-failover.test.js +232 -0
- package/dist/server/handlers/llm-providers-models.d.ts +67 -0
- package/dist/server/handlers/llm-providers-models.js +213 -0
- package/dist/server/handlers/llm-providers-models.js.map +1 -0
- package/dist/server/handlers/llm-providers-providers.test.js +300 -0
- package/dist/server/handlers/llm-providers-validation.test.js +239 -0
- package/dist/server/handlers/local-agent-tools.test.js +224 -0
- package/dist/server/handlers/local-agent.test.js +198 -0
- package/dist/server/handlers/local-agent.tools-status.test.js +204 -0
- package/dist/server/handlers/local-agent.validation-exec.test.js +182 -0
- package/dist/server/handlers/media-actions.d.ts +14 -0
- package/dist/server/handlers/media-actions.js +398 -0
- package/dist/server/handlers/media-actions.js.map +1 -0
- package/dist/server/handlers/media-crud.d.ts +9 -0
- package/dist/server/handlers/media-crud.js +365 -0
- package/dist/server/handlers/media-crud.js.map +1 -0
- package/dist/server/handlers/media-upload.d.ts +4 -0
- package/dist/server/handlers/media-upload.js +179 -0
- package/dist/server/handlers/media-upload.js.map +1 -0
- package/dist/server/handlers/media-utils.d.ts +14 -0
- package/dist/server/handlers/media-utils.js +33 -0
- package/dist/server/handlers/media-utils.js.map +1 -0
- package/dist/server/handlers/meta-ads-advanced.d.ts +46 -0
- package/dist/server/handlers/meta-ads-advanced.js +222 -0
- package/dist/server/handlers/meta-ads-advanced.js.map +1 -0
- package/dist/server/handlers/meta-ads-audience-rules.test.js +243 -0
- package/dist/server/handlers/meta-ads-audience-targeting.test.js +205 -0
- package/dist/server/handlers/meta-ads-audiences-targeting.test.js +383 -0
- package/dist/server/handlers/meta-ads-audiences.d.ts +48 -0
- package/dist/server/handlers/meta-ads-audiences.js +214 -0
- package/dist/server/handlers/meta-ads-audiences.js.map +1 -0
- package/dist/server/handlers/meta-ads-crud-ads.test.js +136 -0
- package/dist/server/handlers/meta-ads-crud-campaigns.test.js +189 -0
- package/dist/server/handlers/meta-ads-crud-create.test.js +303 -0
- package/dist/server/handlers/meta-ads-crud-list-update.test.js +259 -0
- package/dist/server/handlers/meta-ads-crud-read.d.ts +78 -0
- package/dist/server/handlers/meta-ads-crud-read.js +204 -0
- package/dist/server/handlers/meta-ads-crud-read.js.map +1 -0
- package/dist/server/handlers/meta-ads-crud-write.d.ts +105 -0
- package/dist/server/handlers/meta-ads-crud-write.js +390 -0
- package/dist/server/handlers/meta-ads-crud-write.js.map +1 -0
- package/dist/server/handlers/meta-ads-crud.d.ts +9 -0
- package/dist/server/handlers/meta-ads-crud.js +12 -0
- package/dist/server/handlers/meta-ads-crud.js.map +1 -0
- package/dist/server/handlers/meta-ads-delete-publish-sync.test.js +282 -0
- package/dist/server/handlers/meta-ads-graph-api.d.ts +25 -0
- package/dist/server/handlers/meta-ads-graph-api.js +155 -0
- package/dist/server/handlers/meta-ads-graph-api.js.map +1 -0
- package/dist/server/handlers/meta-ads-insights.test.js +80 -0
- package/dist/server/handlers/meta-ads-list-get.test.js +237 -0
- package/dist/server/handlers/meta-ads-media.d.ts +16 -0
- package/dist/server/handlers/meta-ads-media.js +205 -0
- package/dist/server/handlers/meta-ads-media.js.map +1 -0
- package/dist/server/handlers/meta-ads-pixels-rules.d.ts +127 -0
- package/dist/server/handlers/meta-ads-pixels-rules.js +463 -0
- package/dist/server/handlers/meta-ads-pixels-rules.js.map +1 -0
- package/dist/server/handlers/meta-ads-publish-ad.d.ts +11 -0
- package/dist/server/handlers/meta-ads-publish-ad.js +229 -0
- package/dist/server/handlers/meta-ads-publish-ad.js.map +1 -0
- package/dist/server/handlers/meta-ads-publish-delete.test.js +254 -0
- package/dist/server/handlers/meta-ads-publish-helpers.js +117 -0
- package/dist/server/handlers/meta-ads-publish-helpers.js.map +1 -0
- package/dist/server/handlers/meta-ads-publish-sync.test.js +205 -0
- package/dist/server/handlers/meta-ads-publish.d.ts +14 -0
- package/dist/server/handlers/meta-ads-publish.js +194 -0
- package/dist/server/handlers/meta-ads-publish.js.map +1 -0
- package/dist/server/handlers/meta-ads-publish.test.js +254 -0
- package/dist/server/handlers/meta-ads-sync-insights.test.js +184 -0
- package/dist/server/handlers/meta-ads-targeting.d.ts +27 -0
- package/dist/server/handlers/meta-ads-targeting.js +323 -0
- package/dist/server/handlers/meta-ads-targeting.js.map +1 -0
- package/dist/server/handlers/meta-ads-types.d.ts +49 -0
- package/dist/server/handlers/meta-ads-types.js +59 -0
- package/dist/server/handlers/meta-ads-types.js.map +1 -0
- package/dist/server/handlers/meta-ads-update.test.js +117 -0
- package/dist/server/handlers/meta-ads.d.ts +25 -0
- package/dist/server/handlers/meta-ads.js +392 -3
- package/dist/server/handlers/meta-ads.js.map +1 -1
- package/dist/server/handlers/nodes-channels.test.js +413 -0
- package/dist/server/handlers/nodes-events.test.js +131 -0
- package/dist/server/handlers/nodes-handlers-channels-messages.d.ts +20 -0
- package/dist/server/handlers/nodes-handlers-channels-messages.js +314 -0
- package/dist/server/handlers/nodes-handlers-channels-messages.js.map +1 -0
- package/dist/server/handlers/nodes-handlers-channels.d.ts +19 -0
- package/dist/server/handlers/nodes-handlers-channels.js +225 -0
- package/dist/server/handlers/nodes-handlers-channels.js.map +1 -0
- package/dist/server/handlers/nodes-handlers-mgmt.d.ts +33 -0
- package/dist/server/handlers/nodes-handlers-mgmt.js +418 -0
- package/dist/server/handlers/nodes-handlers-mgmt.js.map +1 -0
- package/dist/server/handlers/nodes-list-delete.test.js +171 -0
- package/dist/server/handlers/nodes-messages-delivery.test.js +208 -0
- package/dist/server/handlers/nodes-messages.test.js +211 -0
- package/dist/server/handlers/nodes-register.test.js +277 -0
- package/dist/server/handlers/nodes-routes-channels.d.ts +9 -0
- package/dist/server/handlers/nodes-routes-channels.js +217 -0
- package/dist/server/handlers/nodes-routes-channels.js.map +1 -0
- package/dist/server/handlers/nodes-routes-crud.d.ts +9 -0
- package/dist/server/handlers/nodes-routes-crud.js +290 -0
- package/dist/server/handlers/nodes-routes-crud.js.map +1 -0
- package/dist/server/handlers/nodes-routes-delivery.d.ts +9 -0
- package/dist/server/handlers/nodes-routes-delivery.js +226 -0
- package/dist/server/handlers/nodes-routes-delivery.js.map +1 -0
- package/dist/server/handlers/nodes-routes-messages.d.ts +9 -0
- package/dist/server/handlers/nodes-routes-messages.js +218 -0
- package/dist/server/handlers/nodes-routes-messages.js.map +1 -0
- package/dist/server/handlers/nodes-routes-register.d.ts +9 -0
- package/dist/server/handlers/nodes-routes-register.js +239 -0
- package/dist/server/handlers/nodes-routes-register.js.map +1 -0
- package/dist/server/handlers/nodes-types.d.ts +82 -0
- package/dist/server/handlers/nodes-types.js +220 -0
- package/dist/server/handlers/nodes-types.js.map +1 -0
- package/dist/server/handlers/nodes-utils.d.ts +70 -0
- package/dist/server/handlers/nodes-utils.js +214 -0
- package/dist/server/handlers/nodes-utils.js.map +1 -0
- package/dist/server/handlers/nodes.test.js +353 -0
- package/dist/server/handlers/operations.test.js +136 -0
- package/dist/server/handlers/platform-telemetry.d.ts +10 -0
- package/dist/server/handlers/platform-telemetry.js +372 -0
- package/dist/server/handlers/platform-telemetry.js.map +1 -0
- package/dist/server/handlers/platform-telemetry.test.js +200 -0
- package/dist/server/handlers/platform-websearch.test.js +160 -0
- package/dist/server/handlers/sessions-handlers.d.ts +23 -0
- package/dist/server/handlers/sessions-handlers.js +374 -0
- package/dist/server/handlers/sessions-handlers.js.map +1 -0
- package/dist/server/handlers/storefront-cart.d.ts +31 -0
- package/dist/server/handlers/storefront-cart.js +381 -0
- package/dist/server/handlers/storefront-cart.js.map +1 -0
- package/dist/server/handlers/storefront.test.js +329 -0
- package/dist/server/handlers/supply-chain-transfers.d.ts +10 -0
- package/dist/server/handlers/supply-chain-transfers.js +214 -0
- package/dist/server/handlers/supply-chain-transfers.js.map +1 -0
- package/dist/server/handlers/supply-chain-utils.d.ts +2 -0
- package/dist/server/handlers/supply-chain-utils.js +21 -0
- package/dist/server/handlers/supply-chain-utils.js.map +1 -0
- package/dist/server/handlers/supply-chain.test.js +347 -0
- package/dist/server/handlers/transcription.test.js +118 -0
- package/dist/server/handlers/video-gen-providers.d.ts +30 -0
- package/dist/server/handlers/video-gen-providers.js +205 -0
- package/dist/server/handlers/video-gen-providers.js.map +1 -0
- package/dist/server/handlers/video-gen-sora.d.ts +5 -0
- package/dist/server/handlers/video-gen-sora.js +87 -0
- package/dist/server/handlers/video-gen-sora.js.map +1 -0
- package/dist/server/handlers/video-gen-veo.js +114 -0
- package/dist/server/handlers/video-gen-veo.js.map +1 -0
- package/dist/server/handlers/video-gen.test.js +146 -0
- package/dist/server/handlers/voice-handlers-audio.d.ts +9 -0
- package/dist/server/handlers/voice-handlers-audio.js +229 -0
- package/dist/server/handlers/voice-handlers-audio.js.map +1 -0
- package/dist/server/handlers/voice-handlers-music.d.ts +5 -0
- package/dist/server/handlers/voice-handlers-music.js +124 -0
- package/dist/server/handlers/voice-handlers-music.js.map +1 -0
- package/dist/server/handlers/voice-handlers-pvc.d.ts +8 -0
- package/dist/server/handlers/voice-handlers-pvc.js +345 -0
- package/dist/server/handlers/voice-handlers-pvc.js.map +1 -0
- package/dist/server/handlers/voice-handlers-tts.d.ts +5 -0
- package/dist/server/handlers/voice-handlers-tts.js +142 -0
- package/dist/server/handlers/voice-handlers-tts.js.map +1 -0
- package/dist/server/handlers/voice-handlers-voices.d.ts +8 -0
- package/dist/server/handlers/voice-handlers-voices.js +321 -0
- package/dist/server/handlers/voice-handlers-voices.js.map +1 -0
- package/dist/server/handlers/voice-utils.d.ts +32 -0
- package/dist/server/handlers/voice-utils.js +281 -0
- package/dist/server/handlers/voice-utils.js.map +1 -0
- package/dist/server/handlers/voice.test.js +153 -0
- package/dist/server/handlers/workflow-crud-advanced.d.ts +8 -0
- package/dist/server/handlers/workflow-crud-advanced.js +275 -0
- package/dist/server/handlers/workflow-crud-advanced.js.map +1 -0
- package/dist/server/handlers/workflow-crud-core.d.ts +8 -0
- package/dist/server/handlers/workflow-crud-core.js +286 -0
- package/dist/server/handlers/workflow-crud-core.js.map +1 -0
- package/dist/server/handlers/workflow-crud-events.d.ts +8 -0
- package/dist/server/handlers/workflow-crud-events.js +483 -0
- package/dist/server/handlers/workflow-crud-events.js.map +1 -0
- package/dist/server/handlers/workflow-crud-runs-lifecycle.d.ts +8 -0
- package/dist/server/handlers/workflow-crud-runs-lifecycle.js +231 -0
- package/dist/server/handlers/workflow-crud-runs-lifecycle.js.map +1 -0
- package/dist/server/handlers/workflow-crud-runs-versioning.d.ts +8 -0
- package/dist/server/handlers/workflow-crud-runs-versioning.js +319 -0
- package/dist/server/handlers/workflow-crud-runs-versioning.js.map +1 -0
- package/dist/server/handlers/workflow-crud-runs.d.ts +8 -0
- package/dist/server/handlers/workflow-crud-runs.js +18 -0
- package/dist/server/handlers/workflow-crud-runs.js.map +1 -0
- package/dist/server/handlers/workflow-steps-advancement.d.ts +13 -0
- package/dist/server/handlers/workflow-steps-advancement.js +197 -0
- package/dist/server/handlers/workflow-steps-advancement.js.map +1 -0
- package/dist/server/handlers/workflow-steps-circuit-breaker.d.ts +7 -0
- package/dist/server/handlers/workflow-steps-circuit-breaker.js +131 -0
- package/dist/server/handlers/workflow-steps-circuit-breaker.js.map +1 -0
- package/dist/server/handlers/workflow-steps-completion.d.ts +5 -0
- package/dist/server/handlers/workflow-steps-completion.js +254 -0
- package/dist/server/handlers/workflow-steps-completion.js.map +1 -0
- package/dist/server/handlers/workflow-steps-cron.d.ts +4 -0
- package/dist/server/handlers/workflow-steps-cron.js +259 -0
- package/dist/server/handlers/workflow-steps-cron.js.map +1 -0
- package/dist/server/handlers/workflow-steps-engine-execute.d.ts +3 -0
- package/dist/server/handlers/workflow-steps-engine-execute.js +388 -0
- package/dist/server/handlers/workflow-steps-engine-execute.js.map +1 -0
- package/dist/server/handlers/workflow-steps-engine-inline.d.ts +2 -0
- package/dist/server/handlers/workflow-steps-engine-inline.js +91 -0
- package/dist/server/handlers/workflow-steps-engine-inline.js.map +1 -0
- package/dist/server/handlers/workflow-steps-engine-persist.d.ts +5 -0
- package/dist/server/handlers/workflow-steps-engine-persist.js +192 -0
- package/dist/server/handlers/workflow-steps-engine-persist.js.map +1 -0
- package/dist/server/handlers/workflow-steps-engine-process.d.ts +7 -0
- package/dist/server/handlers/workflow-steps-engine-process.js +290 -0
- package/dist/server/handlers/workflow-steps-engine-process.js.map +1 -0
- package/dist/server/handlers/workflow-steps-engine.d.ts +3 -0
- package/dist/server/handlers/workflow-steps-engine.js +10 -0
- package/dist/server/handlers/workflow-steps-engine.js.map +1 -0
- package/dist/server/handlers/workflow-steps-executors-llm.d.ts +7 -0
- package/dist/server/handlers/workflow-steps-executors-llm.js +265 -0
- package/dist/server/handlers/workflow-steps-executors-llm.js.map +1 -0
- package/dist/server/handlers/workflow-steps-executors.d.ts +9 -0
- package/dist/server/handlers/workflow-steps-executors.js +188 -0
- package/dist/server/handlers/workflow-steps-executors.js.map +1 -0
- package/dist/server/handlers/workflow-steps-maintenance.d.ts +4 -0
- package/dist/server/handlers/workflow-steps-maintenance.js +256 -0
- package/dist/server/handlers/workflow-steps-maintenance.js.map +1 -0
- package/dist/server/handlers/workflow-steps-types.d.ts +84 -0
- package/dist/server/handlers/workflow-steps-types.js +179 -0
- package/dist/server/handlers/workflow-steps-types.js.map +1 -0
- package/dist/server/handlers/workflow-steps-webhook.d.ts +5 -0
- package/dist/server/handlers/workflow-steps-webhook.js +179 -0
- package/dist/server/handlers/workflow-steps-webhook.js.map +1 -0
- package/dist/server/handlers/workflow-steps.test.js +330 -0
- package/dist/server/handlers/workflows-extras.test.js +65 -0
- package/dist/server/handlers/workflows.part2.test.js +170 -0
- package/dist/server/handlers/workflows.test.js +281 -0
- package/dist/server/index.js +81 -1720
- package/dist/server/index.js.map +1 -1
- package/dist/server/lib/__tests__/batch-client-conversion-jsonl.test.js +171 -0
- package/dist/server/lib/__tests__/batch-client-polling.test.js +292 -0
- package/dist/server/lib/__tests__/batch-client-queue.test.js +270 -0
- package/dist/server/lib/__tests__/clickhouse-buffer.test.js +236 -0
- package/dist/server/lib/__tests__/code-worker-edge-cases.test.js +118 -0
- package/dist/server/lib/__tests__/code-worker-pool-execute.test.js +193 -0
- package/dist/server/lib/__tests__/code-worker-pool-execution.test.js +165 -0
- package/dist/server/lib/__tests__/code-worker-pool-init.test.js +131 -0
- package/dist/server/lib/__tests__/code-worker-pool.test.js +194 -0
- package/dist/server/lib/__tests__/code-worker-sandbox-ops.test.js +123 -0
- package/dist/server/lib/__tests__/code-worker-sandbox.test.js +217 -0
- package/dist/server/lib/__tests__/code-worker.test.js +179 -0
- package/dist/server/lib/__tests__/compaction-service-generate.test.js +229 -0
- package/dist/server/lib/__tests__/compaction-service.test.js +319 -0
- package/dist/server/lib/__tests__/otel.test.js +146 -0
- package/dist/server/lib/__tests__/prompt-sanitizer-validation.test.js +165 -0
- package/dist/server/lib/__tests__/prompt-sanitizer.sanitize.test.js +343 -0
- package/dist/server/lib/__tests__/prompt-sanitizer.test.js +328 -0
- package/dist/server/lib/__tests__/prompt-sanitizer.validate-tool.test.js +145 -0
- package/dist/server/lib/__tests__/provider-capabilities.test.js +263 -0
- package/dist/server/lib/__tests__/provider-failover-routing.test.js +145 -0
- package/dist/server/lib/__tests__/provider-failover-state.test.js +131 -0
- package/dist/server/lib/__tests__/rate-limiter-budgets.test.js +216 -0
- package/dist/server/lib/__tests__/rate-limiter.budgets-tools.test.js +113 -0
- package/dist/server/lib/__tests__/rate-limiter.check-request.test.js +141 -0
- package/dist/server/lib/__tests__/rate-limiter.stats-lifecycle.test.js +135 -0
- package/dist/server/lib/__tests__/rate-limiter.test.js +207 -0
- package/dist/server/lib/__tests__/server-agent-loop-abort-conditions.test.js +544 -0
- package/dist/server/lib/__tests__/server-agent-loop-abort.part2.test.js +504 -0
- package/dist/server/lib/__tests__/server-agent-loop-abort.test.js +396 -0
- package/dist/server/lib/__tests__/server-agent-loop-compaction.test.js +397 -0
- package/dist/server/lib/__tests__/server-agent-loop-failover.test.js +356 -0
- package/dist/server/lib/__tests__/server-agent-loop-features-caching.test.js +519 -0
- package/dist/server/lib/__tests__/server-agent-loop-features-edges.test.js +512 -0
- package/dist/server/lib/__tests__/server-subagent-bailout.test.js +194 -0
- package/dist/server/lib/__tests__/server-subagent-basics.test.js +348 -0
- package/dist/server/lib/__tests__/server-subagent-errors-abort.test.js +319 -0
- package/dist/server/lib/__tests__/server-subagent-errors-progress.test.js +253 -0
- package/dist/server/lib/__tests__/server-subagent-errors.part2.test.js +253 -0
- package/dist/server/lib/__tests__/server-subagent-errors.test.js +319 -0
- package/dist/server/lib/__tests__/session-checkpoint-load.test.js +275 -0
- package/dist/server/lib/__tests__/session-checkpoint-save.test.js +159 -0
- package/dist/server/lib/__tests__/ssrf-guard.test.js +93 -0
- package/dist/server/lib/__tests__/supabase-client.test.js +111 -0
- package/dist/server/lib/__tests__/template-resolver.test.js +317 -0
- package/dist/server/lib/__tests__/utils-timeout.test.js +49 -0
- package/dist/server/lib/__tests__/utils.test.js +322 -0
- package/dist/server/lib/agent-loop-executor.d.ts +7 -0
- package/dist/server/lib/agent-loop-executor.js +224 -0
- package/dist/server/lib/agent-loop-executor.js.map +1 -0
- package/dist/server/lib/agent-loop-turn.d.ts +53 -0
- package/dist/server/lib/agent-loop-turn.js +166 -0
- package/dist/server/lib/agent-loop-turn.js.map +1 -0
- package/dist/server/lib/agent-loop-types.d.ts +118 -0
- package/dist/server/lib/agent-loop-types.js +53 -0
- package/dist/server/lib/agent-loop-types.js.map +1 -0
- package/dist/server/lib/batch-client-anthropic.d.ts +10 -0
- package/dist/server/lib/batch-client-anthropic.js +144 -0
- package/dist/server/lib/batch-client-anthropic.js.map +1 -0
- package/dist/server/lib/batch-client-openai.d.ts +10 -0
- package/dist/server/lib/batch-client-openai.js +172 -0
- package/dist/server/lib/batch-client-openai.js.map +1 -0
- package/dist/server/lib/batch-client-types.d.ts +54 -0
- package/dist/server/lib/batch-client-types.js +27 -0
- package/dist/server/lib/batch-client-types.js.map +1 -0
- package/dist/server/lib/coa-renderer-components.d.ts +15 -0
- package/dist/server/lib/coa-renderer-components.js +361 -0
- package/dist/server/lib/coa-renderer-components.js.map +1 -0
- package/dist/server/lib/coa-renderer-pages.d.ts +15 -0
- package/dist/server/lib/coa-renderer-pages.js +467 -0
- package/dist/server/lib/coa-renderer-pages.js.map +1 -0
- package/dist/server/lib/coa-renderer-styles.d.ts +525 -0
- package/dist/server/lib/coa-renderer-styles.js +540 -0
- package/dist/server/lib/coa-renderer-styles.js.map +1 -0
- package/dist/server/lib/coa-renderer-tokens.d.ts +107 -0
- package/dist/server/lib/coa-renderer-tokens.js +46 -0
- package/dist/server/lib/coa-renderer-tokens.js.map +1 -0
- package/dist/server/lib/pdf-renderer-calc.d.ts +7 -0
- package/dist/server/lib/pdf-renderer-calc.js +272 -0
- package/dist/server/lib/pdf-renderer-calc.js.map +1 -0
- package/dist/server/lib/pdf-renderer-generation.d.ts +73 -0
- package/dist/server/lib/pdf-renderer-generation.js +298 -0
- package/dist/server/lib/pdf-renderer-generation.js.map +1 -0
- package/dist/server/lib/pdf-renderer-layout.d.ts +2 -0
- package/dist/server/lib/pdf-renderer-layout.js +144 -0
- package/dist/server/lib/pdf-renderer-layout.js.map +1 -0
- package/dist/server/lib/pdf-renderer-validation.d.ts +14 -0
- package/dist/server/lib/pdf-renderer-validation.js +220 -0
- package/dist/server/lib/pdf-renderer-validation.js.map +1 -0
- package/dist/server/lib/react-pdf-layout-elements.d.ts +8 -0
- package/dist/server/lib/react-pdf-layout-elements.js +366 -0
- package/dist/server/lib/react-pdf-layout-elements.js.map +1 -0
- package/dist/server/lib/react-pdf-layout-labels.d.ts +38 -0
- package/dist/server/lib/react-pdf-layout-labels.js +217 -0
- package/dist/server/lib/react-pdf-layout-labels.js.map +1 -0
- package/dist/server/lib/server-agent-loop-init.d.ts +28 -0
- package/dist/server/lib/server-agent-loop-init.js +138 -0
- package/dist/server/lib/server-agent-loop-init.js.map +1 -0
- package/dist/server/lib/server-agent-loop-v2.d.ts +110 -0
- package/dist/server/lib/server-agent-loop-v2.js +340 -0
- package/dist/server/lib/server-agent-loop-v2.js.map +1 -0
- package/dist/server/lib/server-agent-loop.js +2 -1
- package/dist/server/lib/server-agent-loop.js.map +1 -1
- package/dist/server/lib/server-subagent-loop.d.ts +3 -0
- package/dist/server/lib/server-subagent-loop.js +267 -0
- package/dist/server/lib/server-subagent-loop.js.map +1 -0
- package/dist/server/lib/session-types.d.ts +106 -0
- package/dist/server/lib/session-types.js +2 -0
- package/dist/server/lib/session-types.js.map +1 -0
- package/dist/server/local-agent-gateway-api.d.ts +34 -0
- package/dist/server/local-agent-gateway-api.js +156 -0
- package/dist/server/local-agent-gateway-api.js.map +1 -0
- package/dist/server/local-agent-gateway-handler.d.ts +3 -0
- package/dist/server/local-agent-gateway-handler.js +292 -0
- package/dist/server/local-agent-gateway-handler.js.map +1 -0
- package/dist/server/local-agent-gateway-init.d.ts +21 -0
- package/dist/server/local-agent-gateway-init.js +143 -0
- package/dist/server/local-agent-gateway-init.js.map +1 -0
- package/dist/server/local-agent-gateway-messages.d.ts +12 -0
- package/dist/server/local-agent-gateway-messages.js +108 -0
- package/dist/server/local-agent-gateway-messages.js.map +1 -0
- package/dist/server/local-agent-gateway-stats.d.ts +53 -0
- package/dist/server/local-agent-gateway-stats.js +129 -0
- package/dist/server/local-agent-gateway-stats.js.map +1 -0
- package/dist/server/local-agent-gateway-types.d.ts +94 -0
- package/dist/server/local-agent-gateway-types.js +78 -0
- package/dist/server/local-agent-gateway-types.js.map +1 -0
- package/dist/server/local-agent-gateway.d.ts +6 -0
- package/dist/server/local-agent-gateway.js +40 -0
- package/dist/server/local-agent-gateway.js.map +1 -1
- package/dist/server/providers/__tests__/anthropic-adapter.test.js +228 -0
- package/dist/server/providers/__tests__/anthropic-betas-toolchoice.test.js +257 -0
- package/dist/server/providers/__tests__/anthropic-errors.test.js +262 -0
- package/dist/server/providers/__tests__/anthropic-stream-core.test.js +275 -0
- package/dist/server/providers/__tests__/anthropic-streaming-betas.test.js +247 -0
- package/dist/server/providers/__tests__/anthropic-streaming-core.test.js +275 -0
- package/dist/server/providers/__tests__/bedrock-config.test.js +177 -0
- package/dist/server/providers/__tests__/bedrock-stream-behavior-streaming.test.js +272 -0
- package/dist/server/providers/__tests__/bedrock-stream-behavior-toolchoice.test.js +214 -0
- package/dist/server/providers/__tests__/bedrock-stream-behavior.part2.test.js +165 -0
- package/dist/server/providers/__tests__/bedrock-stream-behavior.test.js +309 -0
- package/dist/server/providers/__tests__/bedrock-stream-body-credentials.test.js +170 -0
- package/dist/server/providers/__tests__/bedrock-stream-body-extras.test.js +183 -0
- package/dist/server/providers/__tests__/bedrock-stream-body-request.test.js +305 -0
- package/dist/server/providers/__tests__/bedrock-stream-body.part2.test.js +305 -0
- package/dist/server/providers/__tests__/bedrock-stream-body.test.js +175 -0
- package/dist/server/providers/__tests__/bedrock-stream-errors.test.js +165 -0
- package/dist/server/providers/__tests__/gemini-config-methods.test.js +182 -0
- package/dist/server/providers/__tests__/gemini-config-streaming.test.js +257 -0
- package/dist/server/providers/__tests__/gemini-conversion-messages.test.js +247 -0
- package/dist/server/providers/__tests__/gemini-conversion-schema.test.js +365 -0
- package/dist/server/providers/__tests__/gemini-tools-choice.test.js +221 -0
- package/dist/server/providers/__tests__/gemini-tools-fn.test.js +252 -0
- package/dist/server/providers/__tests__/openai-config.test.js +194 -0
- package/dist/server/providers/__tests__/openai-conversion.test.js +276 -0
- package/dist/server/providers/__tests__/openai-messages.test.js +261 -0
- package/dist/server/providers/__tests__/openai-streaming.test.js +394 -0
- package/dist/server/providers/__tests__/openai-tools-cache.test.js +227 -0
- package/dist/server/providers/__tests__/registry.test.js +183 -0
- package/dist/server/providers/__tests__/shared.test.js +297 -0
- package/dist/server/providers/gemini-conversion.d.ts +17 -0
- package/dist/server/providers/gemini-conversion.js +185 -0
- package/dist/server/providers/gemini-conversion.js.map +1 -0
- package/dist/server/providers/gemini-streaming.d.ts +18 -0
- package/dist/server/providers/gemini-streaming.js +187 -0
- package/dist/server/providers/gemini-streaming.js.map +1 -0
- package/dist/server/providers/openai-adapter.d.ts +15 -0
- package/dist/server/providers/openai-adapter.js +423 -0
- package/dist/server/providers/openai-adapter.js.map +1 -0
- package/dist/server/providers/openai-conversion.d.ts +21 -0
- package/dist/server/providers/openai-conversion.js +191 -0
- package/dist/server/providers/openai-conversion.js.map +1 -0
- package/dist/server/server-agent.d.ts +21 -0
- package/dist/server/server-agent.js +162 -0
- package/dist/server/server-agent.js.map +1 -0
- package/dist/server/server-chat.d.ts +6 -0
- package/dist/server/server-chat.js +210 -0
- package/dist/server/server-chat.js.map +1 -0
- package/dist/server/server-cost-guard.d.ts +16 -0
- package/dist/server/server-cost-guard.js +141 -0
- package/dist/server/server-cost-guard.js.map +1 -0
- package/dist/server/server-executors.d.ts +10 -0
- package/dist/server/server-executors.js +110 -0
- package/dist/server/server-executors.js.map +1 -0
- package/dist/server/server-helpers.d.ts +49 -0
- package/dist/server/server-helpers.js +210 -0
- package/dist/server/server-helpers.js.map +1 -0
- package/dist/server/server-persist.d.ts +43 -0
- package/dist/server/server-persist.js +249 -0
- package/dist/server/server-persist.js.map +1 -0
- package/dist/server/server-rate-limit.d.ts +9 -0
- package/dist/server/server-rate-limit.js +77 -0
- package/dist/server/server-rate-limit.js.map +1 -0
- package/dist/server/server-routes-approvals.d.ts +4 -0
- package/dist/server/server-routes-approvals.js +238 -0
- package/dist/server/server-routes-approvals.js.map +1 -0
- package/dist/server/server-routes-auth.d.ts +7 -0
- package/dist/server/server-routes-auth.js +532 -0
- package/dist/server/server-routes-auth.js.map +1 -0
- package/dist/server/server-routes-events.d.ts +4 -0
- package/dist/server/server-routes-events.js +167 -0
- package/dist/server/server-routes-events.js.map +1 -0
- package/dist/server/server-routes-public.d.ts +24 -0
- package/dist/server/server-routes-public.js +453 -0
- package/dist/server/server-routes-public.js.map +1 -0
- package/dist/server/server-routes-waitpoints.d.ts +4 -0
- package/dist/server/server-routes-waitpoints.js +190 -0
- package/dist/server/server-routes-waitpoints.js.map +1 -0
- package/dist/server/server-routes-webchat.d.ts +14 -0
- package/dist/server/server-routes-webchat.js +307 -0
- package/dist/server/server-routes-webchat.js.map +1 -0
- package/dist/server/server-routes-workflows.d.ts +5 -0
- package/dist/server/server-routes-workflows.js +289 -0
- package/dist/server/server-routes-workflows.js.map +1 -0
- package/dist/server/server-sse.d.ts +13 -0
- package/dist/server/server-sse.js +197 -0
- package/dist/server/server-sse.js.map +1 -0
- package/dist/server/server-store-circuit-breaker.d.ts +32 -0
- package/dist/server/server-store-circuit-breaker.js +211 -0
- package/dist/server/server-store-circuit-breaker.js.map +1 -0
- package/dist/server/server-store.d.ts +5 -0
- package/dist/server/server-store.js +71 -0
- package/dist/server/server-store.js.map +1 -0
- package/dist/server/server-trace.d.ts +41 -0
- package/dist/server/server-trace.js +133 -0
- package/dist/server/server-trace.js.map +1 -0
- package/dist/server/server-worker.d.ts +4 -0
- package/dist/server/server-worker.js +127 -0
- package/dist/server/server-worker.js.map +1 -0
- package/dist/server/session-events.d.ts +27 -0
- package/dist/server/session-events.js +69 -0
- package/dist/server/session-events.js.map +1 -0
- package/dist/server/session-manager.d.ts +52 -0
- package/dist/server/session-manager.js +502 -0
- package/dist/server/session-manager.js.map +1 -0
- package/dist/server/tool-router-discovery.d.ts +33 -0
- package/dist/server/tool-router-discovery.js +218 -0
- package/dist/server/tool-router-discovery.js.map +1 -0
- package/dist/server/tool-router-types.d.ts +91 -0
- package/dist/server/tool-router-types.js +336 -0
- package/dist/server/tool-router-types.js.map +1 -0
- package/dist/server/tool-router-user-tools.d.ts +16 -0
- package/dist/server/tool-router-user-tools.js +269 -0
- package/dist/server/tool-router-user-tools.js.map +1 -0
- package/dist/server/validation-schemas.d.ts +12 -0
- package/dist/server/validation-schemas.js +251 -0
- package/dist/server/validation-schemas.js.map +1 -0
- package/dist/shared/agent-core-config.d.ts +12 -0
- package/dist/shared/agent-core-config.js +77 -0
- package/dist/shared/agent-core-config.js.map +1 -0
- package/dist/shared/agent-core-config.test.js +132 -0
- package/dist/shared/agent-core-context-thinking.test.js +293 -0
- package/dist/shared/agent-core-loop-calls.test.js +174 -0
- package/dist/shared/agent-core-loop-detector-bail.test.js +201 -0
- package/dist/shared/agent-core-loop-detector.test.js +195 -0
- package/dist/shared/agent-core-loop-errors.test.js +258 -0
- package/dist/shared/agent-core-loop.d.ts +53 -0
- package/dist/shared/agent-core-loop.js +251 -0
- package/dist/shared/agent-core-loop.js.map +1 -0
- package/dist/shared/agent-core-pricing.test.js +191 -0
- package/dist/shared/agent-core-sanitize-retry.test.js +129 -0
- package/dist/shared/agent-core-tools.d.ts +32 -0
- package/dist/shared/agent-core-tools.js +323 -0
- package/dist/shared/agent-core-tools.js.map +1 -0
- package/dist/shared/agent-core-types.d.ts +182 -0
- package/dist/shared/agent-core-types.js +265 -0
- package/dist/shared/agent-core-types.js.map +1 -0
- package/dist/shared/agent-core.js +1 -1
- package/dist/shared/agent-core.js.map +1 -1
- package/dist/shared/agent-loop-base.d.ts +130 -0
- package/dist/shared/agent-loop-base.js +347 -0
- package/dist/shared/agent-loop-base.js.map +1 -0
- package/dist/shared/api-client-build-request.test.js +228 -0
- package/dist/shared/api-client-build-system-caching.test.js +107 -0
- package/dist/shared/api-client-build.test.js +223 -0
- package/dist/shared/api-client-config.d.ts +21 -0
- package/dist/shared/api-client-helpers.d.ts +57 -0
- package/dist/shared/api-client-helpers.test.js +261 -0
- package/dist/shared/api-client-proxy-happy.test.js +255 -0
- package/dist/shared/api-client-proxy-retry.test.js +307 -0
- package/dist/shared/api-client-proxy.d.ts +26 -0
- package/dist/shared/api-client-proxy.test.js +255 -0
- package/dist/shared/api-client-retry.test.js +307 -0
- package/dist/shared/api-client-system-trimming.test.js +261 -0
- package/dist/shared/api-client-trimming.d.ts +36 -0
- package/dist/shared/api-client.js.map +1 -1
- package/dist/shared/api-client.test.js +228 -0
- package/dist/shared/compaction-thinking.test.js +315 -0
- package/dist/shared/compaction-trimming.test.js +223 -0
- package/dist/shared/exec-validator.d.ts +29 -0
- package/dist/shared/exec-validator.js +106 -0
- package/dist/shared/exec-validator.js.map +1 -0
- package/dist/shared/imsg-constants.d.ts +8 -0
- package/dist/shared/imsg-constants.js +13 -0
- package/dist/shared/imsg-constants.js.map +1 -0
- package/dist/shared/sse-parser-callbacks.test.js +422 -0
- package/dist/shared/sse-parser-collect.test.js +252 -0
- package/dist/shared/sse-parser-e2e.test.js +558 -0
- package/dist/shared/sse-parser-parse.test.js +253 -0
- package/dist/shared/tool-dispatch-advanced-batch-build.test.js +405 -0
- package/dist/shared/tool-dispatch-advanced.test.js +320 -0
- package/dist/shared/tool-dispatch-basic.test.js +278 -0
- package/dist/shared/tool-dispatch-content.d.ts +14 -0
- package/dist/shared/tool-dispatch-parallel.test.js +378 -0
- package/dist/shared/tool-dispatch.js +1 -1
- package/dist/shared/tool-dispatch.js.map +1 -1
- package/dist/webchat/__tests__/widget-messaging.test.js +323 -0
- package/dist/webchat/__tests__/widget.test.js +273 -0
- package/dist/webchat/widget-styles.d.ts +7 -0
- package/dist/webchat/widget-styles.js +11 -0
- package/dist/webchat/widget-styles.js.map +1 -0
- package/package.json +7 -5
- package/src/cli/services/builtin-skills/verify.md +72 -0
- package/vendor/ink/build/ink.js +33 -10
- package/vendor/ink/build/log-update.js +11 -4
- package/whale-logo.png +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-ads.js","names":["queueSpan","auditRowToSpan","META_API_VERSION","META_BASE","VALID_GOALS","OUTCOME_AWARENESS","OUTCOME_TRAFFIC","OUTCOME_ENGAGEMENT","OUTCOME_LEADS","OUTCOME_APP_PROMOTION","OUTCOME_SALES","defaultGoal","objective","validateGoal","goal","valid","includes","billingEvent","metaStatus","status","isLocalId","id","test","enc","v","encodeURIComponent","formBody","params","token","parts","k","Object","entries","undefined","push","JSON","stringify","String","join","parseMetaError","body","path","json","parse","err","error","userMsg","error_user_msg","message","code","slice","graphGet","fields","extra","url","res","fetch","ok","text","Error","page1","Array","isArray","data","all","next","paging","pages","r","j","graphPost","method","headers","graphDelete","getIntegration","sb","storeId","from","select","eq","limit","single","access_token_encrypted","ad_account_id","token_expires_at","expiresAt","Date","toISOString","accessToken","adAccountId","pageId","page_id","pixelId","pixel_id","instagramAccountId","instagram_business_id","tokenExpiresAt","pageTokenCache","Map","getPageToken","int","cacheKey","cached","get","now","fetchedAt","result","pageToken","access_token","set","size","delete","keys","resolveAudienceIds","ids","length","in","filter","meta_audience_id","map","resolveLocations","locations","geo","countries","regions","cities","zips","loc","trimmed","trim","toUpperCase","results","key","best","type","radius","distance_unit","geo_markets","resolveInterests","interests","resolved","term","name","buildTargeting","raw","fallback","geo_locations","targeting_automation","advantage_audience","t","simpleLocs","locs","locations_v2","markets","split","s","age_min","Math","max","Number","age_max","min","genders","simpleInts","flexible_spec","ints","interests_v2","i","custom_audiences","excluded_custom_audiences","publisher_platforms","facebook_positions","instagram_positions","audience_network_positions","messenger_positions","uploadImage","images","first","values","hash","uploadVideo","videoUrl","videoId","errors","e","downloadRes","blob","form","FormData","append","Promise","resolve","setTimeout","phase","processing_phase","buildStorySpec","creative","imageHash","metaVideoId","carouselHashes","childAttachments","card","child","link_url","link","headline","description","video_id","image_hash","image_url","picture","call_to_action","value","linkData","child_attachments","multi_share_optimized","link_data","isVideo","object_type","vid","title","video_data","publishCampaign","campaignId","c","meta_campaign_id","metaCampaignId","special_ad_categories","is_cbo","is_adset_budget_sharing_enabled","daily_budget","round","lifetime_budget","campaign_bid_strategy","bid_strategy","start_time","stop_time","metaId","update","meta_account_id","last_synced_at","publishAdSet","adSetId","as_","meta_ad_set_id","metaAdSetId","campaignUUID","camp","pub","isCBO","campaignHasCBO","mc","optGoal","optimization_goal","targetingSpec","targeting","pp","fp","ip","anp","mp","campaign_id","billing_event","bs","bid_amount","end_time","adset_schedule","schedule","pacing_type","frequency_control_specs","fcs","promoted_object","po","is_dynamic_creative","publishAd","adId","ad","meta_ad_id","metaAdId","creativeId","creative_id","adSetUUID","adSet","isCarousel","carousel_cards","isDynamic","asset_feed_spec","wantsVideo","video_url","videoWarning","cardHash","cardVideoId","oss","crResult","object_story_spec","adResult","adset_id","spec","img","crParams","lead_form_id","ossObj","lead_gen_form_id","warning","handleMetaAds","args","success","action","row","store_id","crypto","randomUUID","insert","ad_set_id","hasVideo","wantPublish","auto_publish","campRow","e1","adSetName","ad_set_name","adSetRow","e2","adName","ad_name","e3","pubResult","finalCamp","finalAdSet","finalAd","published","campaign","ad_set","meta_ids","ad_id","pubErr","publish_error","hint","q","order","ascending","count","sets","ad_sets","ads","u","existing","prev","table","metaIdCol","record","metaDeleted","console","warn","deleted","meta_deleted","resource_type","resource_id","details","source","severity","service_name","span_kind","status_code","stats","effective_status","budget_remaining","breakdowns","ins","raw_insights","d","spend","impressions","clicks","reach","cpc","cpm","ctr","refreshed","datePreset","date_preset","format","ad_format","subtype","metaParams","customer_file_source","pixelForAudience","rule","inclusions","operator","rules","event_sources","retention_seconds","retention_days","prefill","metaAudienceId","audience_type","audiences","aud","upsert","approximate_count","updated_at","onConflict","ignoreDuplicates","then","audience_id","sourceId","source_audience_id","source_id","country","ratio","sourceMetaId","origin_audience_id","lookalike_spec","questions","privacyUrl","privacy_policy_url","privacy_policy","link_text","follow_up_action_url","follow_up_action_text","context_card","thank_you_page","metaFormId","meta_form_id","formId","form_id","pixels","px","meta_pixel_id","last_fired_time","is_active","is_unavailable","metaPixelId","pixelInfo","byId","maybeSingle","byMetaId","event_source_id","custom_event_type","i_contains","default_conversion_value","metaConversionId","meta_conversion_id","evaluationSpec","evaluation_spec","executionSpec","execution_spec","entityType","entity_type","scheduleSpec","schedule_spec","schedule_type","evalSpecFinal","filters","hasEntityFilter","some","f","field","hasTimePreset","metaRuleId","meta_rule_id","rule_id","resolvedTargeting","optimize_for","estimate","query","targeting_type","validTypes","searchType"],"sources":["../../../src/server/handlers/meta-ads.ts"],"sourcesContent":["/**\n * Meta Ads Handler — campaign/ad set/ad CRUD + publish to Meta Graph API.\n *\n * V2 features added:\n * - Reporting breakdowns (age, gender, placement, device, region)\n * - Ad preview URLs\n * - Custom audiences (website, customer list, lookalike)\n * - Lead forms (instant form creation + lead retrieval)\n * - Conversion tracking (pixels, custom conversions)\n * - Ad rules / automation (auto-pause, auto-budget)\n * - Ad scheduling / dayparting\n * - Placement control (Feed, Stories, Reels, etc.)\n * - Frequency capping\n * - Campaign Budget Optimization (CBO)\n * - Carousel ads (multi-card)\n * - Dynamic creative (multi-asset optimization)\n * - Reach estimation / audience insights\n *\n * Lessons baked in from live testing against Meta Marketing API v21:\n * - Budget lives on ad sets, NOT campaigns (unless CBO is enabled)\n * - is_adset_budget_sharing_enabled: false required on campaign publish (non-CBO)\n * - bid_strategy always required on ad set publish (even LOWEST_COST)\n * - targeting_automation.advantage_audience: 0 required (Advantage+ flag)\n * - DRAFT status invalid for Meta — always mapped to PAUSED\n * - special_ad_categories only used at publish time (not a DB column)\n * - Video URLs uploaded to Meta during publish → video_id\n * - Image URLs uploaded to Meta during publish → image_hash\n */\n\nimport type { SupabaseClient } from \"@supabase/supabase-js\";\nimport { queueSpan, auditRowToSpan } from \"../lib/clickhouse-buffer.js\";\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\nconst META_API_VERSION = \"v21.0\";\nconst META_BASE = `https://graph.facebook.com/${META_API_VERSION}`;\n\n/** Valid optimization goals per campaign objective (Meta Marketing API v21). */\nconst VALID_GOALS: Record<string, string[]> = {\n OUTCOME_AWARENESS: [\"REACH\", \"IMPRESSIONS\", \"AD_RECALL_LIFT\", \"THRUPLAY\"],\n OUTCOME_TRAFFIC: [\"LINK_CLICKS\", \"LANDING_PAGE_VIEWS\", \"REACH\", \"IMPRESSIONS\"],\n OUTCOME_ENGAGEMENT: [\"THRUPLAY\", \"POST_ENGAGEMENT\", \"VIDEO_VIEWS\", \"REACH\"],\n OUTCOME_LEADS: [\"LEAD_GENERATION\", \"LINK_CLICKS\", \"QUALITY_LEAD\", \"REACH\"],\n OUTCOME_APP_PROMOTION: [\"APP_INSTALLS\", \"LINK_CLICKS\", \"APP_EVENTS\", \"VALUE\"],\n OUTCOME_SALES: [\"OFFSITE_CONVERSIONS\", \"LINK_CLICKS\", \"VALUE\", \"REACH\"],\n};\n\n/** Default optimization goal per objective. */\nfunction defaultGoal(objective: string): string {\n return VALID_GOALS[objective]?.[0] ?? \"LINK_CLICKS\";\n}\n\n/** Validate goal against objective, falling back to the best default. */\nfunction validateGoal(goal: string, objective: string): string {\n const valid = VALID_GOALS[objective];\n if (!valid) return goal;\n return valid.includes(goal) ? goal : valid[0];\n}\n\n/** Billing event depends on optimization goal. */\nfunction billingEvent(goal: string): string {\n return goal === \"THRUPLAY\" ? \"THRUPLAY\" : \"IMPRESSIONS\";\n}\n\n/** Map any status to Meta-valid status. Meta only accepts ACTIVE/PAUSED/DELETED/ARCHIVED. */\nfunction metaStatus(status?: string | null): string {\n if (!status || status === \"DRAFT\") return \"PAUSED\";\n return status;\n}\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface MetaIntegration {\n accessToken: string;\n adAccountId: string;\n pageId: string | null;\n pixelId: string | null;\n instagramAccountId: string | null;\n tokenExpiresAt: string | null;\n}\n\ninterface Creative {\n object_type?: string;\n title?: string;\n body?: string;\n image_url?: string;\n video_url?: string;\n thumbnail_url?: string;\n call_to_action?: string;\n link_url?: string;\n video_id?: string;\n page_id?: string;\n carousel_cards?: CarouselCard[];\n asset_feed_spec?: Record<string, unknown>;\n lead_form_id?: string;\n}\n\ninterface CarouselCard {\n headline?: string;\n description?: string;\n image_url?: string;\n video_url?: string;\n link_url?: string;\n call_to_action?: string;\n}\n\n// ============================================================================\n// GRAPH API — low-level Meta helpers\n// ============================================================================\n\n/** Real Meta IDs are purely numeric. Local/Supabase IDs contain non-digit chars. */\nfunction isLocalId(id: string | null | undefined): boolean {\n if (!id) return true;\n return /[^0-9]/.test(id);\n}\n\n/** RFC 3986 percent-encode. */\nfunction enc(v: string): string {\n return encodeURIComponent(v);\n}\n\n/** Build form-encoded body from params object + access_token. */\nfunction formBody(params: Record<string, unknown>, token: string): string {\n const parts: string[] = [`access_token=${enc(token)}`];\n for (const [k, v] of Object.entries(params)) {\n if (v === null || v === undefined) continue;\n parts.push(`${k}=${enc(typeof v === \"object\" ? JSON.stringify(v) : String(v))}`);\n }\n return parts.join(\"&\");\n}\n\n/**\n * Parse Meta API error responses into human-readable messages.\n * Extracts error_user_msg when available (much better than raw JSON).\n */\nfunction parseMetaError(body: string, path: string, status: number): string {\n try {\n const json = JSON.parse(body);\n const err = json.error || {};\n const userMsg = err.error_user_msg || err.message || \"Unknown error\";\n const code = err.code ? ` (code ${err.code})` : \"\";\n return `Meta API ${path}: ${userMsg}${code}`;\n } catch {\n return `Meta API ${path}: ${status} — ${body.slice(0, 300)}`;\n }\n}\n\n/** GET from Meta Graph API with auto-pagination. */\nasync function graphGet(\n path: string,\n fields: string,\n token: string,\n extra?: string,\n): Promise<Record<string, unknown>> {\n let url = `${META_BASE}/${path}?fields=${fields}&access_token=${enc(token)}&limit=200`;\n if (extra) url += `&${extra}`;\n\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n throw new Error(parseMetaError(body, path, res.status));\n }\n const page1 = (await res.json()) as Record<string, unknown>;\n\n // Single-object response — return as-is\n if (!Array.isArray(page1.data)) return page1;\n\n // List response — paginate up to 20 pages\n const all = [...(page1.data as Record<string, unknown>[])];\n let next = (page1.paging as Record<string, unknown>)?.next as string | undefined;\n let pages = 1;\n while (next && pages < 20) {\n const r = await fetch(next);\n if (!r.ok) break;\n const j = (await r.json()) as Record<string, unknown>;\n if (Array.isArray(j.data)) all.push(...(j.data as Record<string, unknown>[]));\n next = (j.paging as Record<string, unknown>)?.next as string | undefined;\n pages++;\n }\n return { data: all };\n}\n\n/** POST to Meta Graph API with form encoding. */\nasync function graphPost(\n path: string,\n params: Record<string, unknown>,\n token: string,\n): Promise<Record<string, unknown>> {\n const res = await fetch(`${META_BASE}/${path}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: formBody(params, token),\n });\n if (!res.ok) {\n const body = await res.text();\n throw new Error(parseMetaError(body, path, res.status));\n }\n return (await res.json()) as Record<string, unknown>;\n}\n\n/** DELETE from Meta Graph API. */\nasync function graphDelete(\n path: string,\n token: string,\n): Promise<Record<string, unknown>> {\n const res = await fetch(`${META_BASE}/${path}?access_token=${enc(token)}`, {\n method: \"DELETE\",\n });\n if (!res.ok) {\n const body = await res.text();\n throw new Error(parseMetaError(body, path, res.status));\n }\n return (await res.json()) as Record<string, unknown>;\n}\n\n// ============================================================================\n// CREDENTIALS\n// ============================================================================\n\nasync function getIntegration(sb: SupabaseClient, storeId: string): Promise<MetaIntegration> {\n const { data, error } = await sb\n .from(\"meta_integrations\")\n .select(\"access_token_encrypted, ad_account_id, page_id, pixel_id, instagram_business_id, token_expires_at, status\")\n .eq(\"store_id\", storeId)\n .limit(1)\n .single();\n if (error || !data?.access_token_encrypted || !data?.ad_account_id) {\n throw new Error(\"Meta not connected. Go to Settings → Meta Connection to link your account.\");\n }\n // Warn if token is expired (but still return it — some operations may work with refresh)\n if (data.token_expires_at) {\n const expiresAt = new Date(data.token_expires_at);\n if (expiresAt < new Date()) {\n throw new Error(`Meta access token expired at ${expiresAt.toISOString()}. Reconnect in the CRM app (Settings → Meta Connection).`);\n }\n }\n return {\n accessToken: data.access_token_encrypted,\n adAccountId: data.ad_account_id,\n pageId: data.page_id || null,\n pixelId: data.pixel_id || null,\n instagramAccountId: data.instagram_business_id || null,\n tokenExpiresAt: data.token_expires_at || null,\n };\n}\n\n/** Page Access Token cache (user token → page token). Avoids re-fetching every call. */\nconst pageTokenCache = new Map<string, { token: string; fetchedAt: number }>();\n\n/**\n * Exchange user access token for a Page Access Token.\n * Required for lead forms, page-level APIs, and some creative operations.\n * Cached for 5 minutes.\n */\nasync function getPageToken(int: MetaIntegration): Promise<string> {\n if (!int.pageId) throw new Error(\"No Facebook Page linked. Add page_id in Meta Connection settings.\");\n\n const cacheKey = `${int.pageId}:${int.accessToken.slice(-10)}`;\n const cached = pageTokenCache.get(cacheKey);\n if (cached && Date.now() - cached.fetchedAt < 300_000) return cached.token;\n\n const result = await graphGet(int.pageId, \"access_token\", int.accessToken);\n const pageToken = result.access_token as string;\n if (!pageToken) throw new Error(\"Could not get Page Access Token. Ensure your token has pages_manage_ads permission.\");\n\n pageTokenCache.set(cacheKey, { token: pageToken, fetchedAt: Date.now() });\n // Evict old entries\n if (pageTokenCache.size > 20) pageTokenCache.delete([...pageTokenCache.keys()][0]);\n\n return pageToken;\n}\n\n// ============================================================================\n// TARGETING BUILDER — smart resolution from natural language\n// ============================================================================\n\nasync function resolveAudienceIds(\n sb: SupabaseClient,\n ids: string[],\n): Promise<Array<{ id: string }>> {\n if (!ids.length) return [];\n const { data } = await sb\n .from(\"meta_audiences\")\n .select(\"id, meta_audience_id\")\n .in(\"id\", ids);\n return (data || [])\n .filter((r: { meta_audience_id?: string }) => r.meta_audience_id)\n .map((r: { meta_audience_id: string }) => ({ id: r.meta_audience_id }));\n}\n\n/**\n * Resolve natural-language location strings to Meta geo_locations.\n * Accepts: [\"Charlotte, NC\", \"US\", \"New York\", \"90210\"]\n * Returns: { countries: [...], cities: [...], regions: [...], zips: [...] }\n */\nasync function resolveLocations(\n int: MetaIntegration,\n locations: string[],\n): Promise<Record<string, unknown>> {\n const geo: Record<string, unknown> = {};\n const countries: string[] = [];\n const regions: Array<{ key: string }> = [];\n const cities: Array<{ key: string; radius?: number; distance_unit?: string }> = [];\n const zips: Array<{ key: string }> = [];\n\n for (const loc of locations) {\n const trimmed = loc.trim();\n if (!trimmed) continue;\n\n // 2-letter country code\n if (/^[A-Z]{2}$/i.test(trimmed)) {\n countries.push(trimmed.toUpperCase());\n continue;\n }\n\n // ZIP code (5-digit US)\n if (/^\\d{5}$/.test(trimmed)) {\n try {\n const url = `${META_BASE}/search?type=adgeolocation&q=${enc(trimmed)}&location_types=[\"zip\"]&access_token=${enc(int.accessToken)}&limit=1`;\n const res = await fetch(url);\n if (res.ok) {\n const json = (await res.json()) as Record<string, unknown>;\n const results = json.data as Array<Record<string, unknown>>;\n if (results?.[0]?.key) {\n zips.push({ key: results[0].key as string });\n continue;\n }\n }\n } catch { /* fall through to general search */ }\n zips.push({ key: trimmed });\n continue;\n }\n\n // General search — let Meta figure out if it's a city, region, etc.\n try {\n const url = `${META_BASE}/search?type=adgeolocation&q=${enc(trimmed)}&access_token=${enc(int.accessToken)}&limit=3`;\n const res = await fetch(url);\n if (!res.ok) continue;\n const json = (await res.json()) as Record<string, unknown>;\n const results = json.data as Array<Record<string, unknown>>;\n if (!results?.length) continue;\n\n const best = results[0];\n const key = best.key as string;\n const type = best.type as string;\n\n switch (type) {\n case \"country\": countries.push(key); break;\n case \"region\": regions.push({ key }); break;\n case \"city\": cities.push({ key, radius: 25, distance_unit: \"mile\" }); break;\n case \"zip\": zips.push({ key }); break;\n case \"geo_market\": (geo.geo_markets as Array<{ key: string }> || (geo.geo_markets = [])); (geo.geo_markets as Array<{ key: string }>).push({ key }); break;\n default:\n if (key) cities.push({ key, radius: 25, distance_unit: \"mile\" });\n }\n } catch { /* skip unresolvable locations */ }\n }\n\n if (countries.length) geo.countries = countries;\n if (regions.length) geo.regions = regions;\n if (cities.length) geo.cities = cities;\n if (zips.length) geo.zips = zips;\n\n // Fallback: if nothing resolved, default to US\n if (!Object.keys(geo).length) geo.countries = [\"US\"];\n\n return geo;\n}\n\n/**\n * Resolve natural-language interest strings to Meta interest IDs.\n * Accepts: [\"streetwear\", \"hip hop music\", \"cannabis\"]\n */\nasync function resolveInterests(\n int: MetaIntegration,\n interests: string[],\n): Promise<Array<{ id: string; name: string }>> {\n const resolved: Array<{ id: string; name: string }> = [];\n\n for (const term of interests) {\n const trimmed = term.trim();\n if (!trimmed) continue;\n\n try {\n const url = `${META_BASE}/search?type=adinterest&q=${enc(trimmed)}&access_token=${enc(int.accessToken)}&limit=3`;\n const res = await fetch(url);\n if (!res.ok) continue;\n const json = (await res.json()) as Record<string, unknown>;\n const results = json.data as Array<Record<string, unknown>>;\n\n if (results?.length) {\n const best = results[0];\n if (best.id && best.name) {\n resolved.push({ id: String(best.id), name: best.name as string });\n }\n }\n } catch { /* skip unresolvable interests */ }\n }\n\n return resolved;\n}\n\n/**\n * Convert targeting args → Meta API targeting spec.\n * Accepts THREE formats (auto-detected).\n */\nasync function buildTargeting(\n sb: SupabaseClient,\n raw: Record<string, unknown> | string | null | undefined,\n int?: MetaIntegration | null,\n): Promise<Record<string, unknown>> {\n const fallback = {\n geo_locations: { countries: [\"US\"] },\n targeting_automation: { advantage_audience: 0 },\n };\n\n let t: Record<string, unknown>;\n if (!raw) return fallback;\n if (typeof raw === \"string\") {\n try { t = JSON.parse(raw); } catch { return fallback; }\n } else {\n t = raw;\n }\n\n // Already in Meta format (synced from Meta) — ensure advantage_audience is set\n if (t.geo_locations) {\n if (!t.targeting_automation) t.targeting_automation = { advantage_audience: 0 };\n return t;\n }\n\n const result: Record<string, unknown> = {};\n\n // === LOCATIONS ===\n const simpleLocs = t.locations as string[] | undefined;\n if (Array.isArray(simpleLocs) && simpleLocs.length > 0 && typeof simpleLocs[0] === \"string\" && int) {\n result.geo_locations = await resolveLocations(int, simpleLocs);\n } else {\n const locs = t.locations_v2 as Array<{ key: string; type: string }> | undefined;\n if (Array.isArray(locs) && locs.length > 0) {\n const geo: Record<string, unknown> = {};\n const countries: string[] = [];\n const regions: Array<{ key: string }> = [];\n const cities: Array<{ key: string }> = [];\n const zips: Array<{ key: string }> = [];\n const markets: Array<{ key: string }> = [];\n\n for (const loc of locs) {\n if (!loc.key || !loc.type) continue;\n switch (loc.type) {\n case \"country\": countries.push(loc.key); break;\n case \"region\": regions.push({ key: loc.key }); break;\n case \"city\": cities.push({ key: loc.key }); break;\n case \"zip\": zips.push({ key: loc.key }); break;\n case \"geo_market\": markets.push({ key: loc.key }); break;\n default: countries.push(loc.key);\n }\n }\n if (countries.length) geo.countries = countries;\n if (regions.length) geo.regions = regions;\n if (cities.length) geo.cities = cities;\n if (zips.length) geo.zips = zips;\n if (markets.length) geo.geo_markets = markets;\n result.geo_locations = geo;\n } else if (typeof t.locations === \"string\" && t.locations) {\n result.geo_locations = { countries: (t.locations as string).split(\",\").map(s => s.trim().toUpperCase()) };\n } else {\n result.geo_locations = { countries: [\"US\"] };\n }\n }\n\n // === DEMOGRAPHICS ===\n if (t.age_min != null) result.age_min = Math.max(Number(t.age_min) || 18, 13);\n if (t.age_max != null) result.age_max = Math.min(Number(t.age_max) || 65, 65);\n if (t.genders === \"male\") result.genders = [1];\n else if (t.genders === \"female\") result.genders = [2];\n\n // === INTERESTS ===\n const simpleInts = t.interests as string[] | undefined;\n if (Array.isArray(simpleInts) && simpleInts.length > 0 && typeof simpleInts[0] === \"string\" && int) {\n const resolved = await resolveInterests(int, simpleInts);\n if (resolved.length) result.flexible_spec = [{ interests: resolved }];\n } else {\n const ints = t.interests_v2 as Array<{ id?: string; name?: string }> | undefined;\n if (Array.isArray(ints) && ints.length > 0) {\n const valid = ints.filter(i => i.id && i.name).map(i => ({ id: i.id, name: i.name }));\n if (valid.length) result.flexible_spec = [{ interests: valid }];\n }\n }\n\n // === CUSTOM AUDIENCES ===\n if (typeof t.custom_audiences === \"string\" && t.custom_audiences) {\n const resolved = await resolveAudienceIds(sb, t.custom_audiences.split(\",\").map(s => s.trim()));\n if (resolved.length) result.custom_audiences = resolved;\n } else if (Array.isArray(t.custom_audiences)) {\n result.custom_audiences = t.custom_audiences;\n }\n\n // === EXCLUDED AUDIENCES ===\n if (typeof t.excluded_custom_audiences === \"string\" && t.excluded_custom_audiences) {\n const resolved = await resolveAudienceIds(sb, t.excluded_custom_audiences.split(\",\").map(s => s.trim()));\n if (resolved.length) result.excluded_custom_audiences = resolved;\n }\n\n // === Required: Advantage audience flag ===\n result.targeting_automation = { advantage_audience: 0 };\n\n // === PUBLISHER PLATFORMS (placement control) ===\n if (Array.isArray(t.publisher_platforms)) {\n result.publisher_platforms = t.publisher_platforms;\n }\n if (Array.isArray(t.facebook_positions)) {\n result.facebook_positions = t.facebook_positions;\n }\n if (Array.isArray(t.instagram_positions)) {\n result.instagram_positions = t.instagram_positions;\n }\n if (Array.isArray(t.audience_network_positions)) {\n result.audience_network_positions = t.audience_network_positions;\n }\n if (Array.isArray(t.messenger_positions)) {\n result.messenger_positions = t.messenger_positions;\n }\n\n return result;\n}\n\n// ============================================================================\n// MEDIA UPLOAD\n// ============================================================================\n\n/** Upload image URL to Meta → returns image_hash. */\nasync function uploadImage(int: MetaIntegration, url: string): Promise<string | null> {\n try {\n const r = await graphPost(`${int.adAccountId}/adimages`, { url }, int.accessToken);\n const images = r.images as Record<string, Record<string, string>> | undefined;\n if (images) {\n const first = Object.values(images)[0];\n if (first?.hash) return first.hash;\n }\n return null;\n } catch {\n return null;\n }\n}\n\n/**\n * Upload video URL to Meta → returns video_id.\n * Meta's async video upload: POST the URL, poll until ready.\n */\nasync function uploadVideo(int: MetaIntegration, videoUrl: string): Promise<string> {\n let videoId: string | null = null;\n const errors: string[] = [];\n\n // --- Strategy 1: file_url via query params ---\n try {\n const url = `${META_BASE}/${int.adAccountId}/advideos?access_token=${enc(int.accessToken)}&file_url=${enc(videoUrl)}`;\n const res = await fetch(url, { method: \"POST\" });\n if (res.ok) {\n const json = (await res.json()) as Record<string, unknown>;\n videoId = json.id as string;\n } else {\n errors.push(`advideos/file_url: ${(await res.text()).slice(0, 200)}`);\n }\n } catch (e) {\n errors.push(`advideos/file_url: ${e instanceof Error ? e.message : String(e)}`);\n }\n\n // --- Strategy 2: binary upload via FormData ---\n if (!videoId) {\n try {\n const downloadRes = await fetch(videoUrl);\n if (!downloadRes.ok) throw new Error(`download failed: ${downloadRes.status}`);\n const blob = await downloadRes.blob();\n\n const form = new FormData();\n form.append(\"access_token\", int.accessToken);\n form.append(\"source\", blob, \"video.mp4\");\n\n const res = await fetch(`${META_BASE}/${int.adAccountId}/advideos`, { method: \"POST\", body: form });\n if (res.ok) {\n const json = (await res.json()) as Record<string, unknown>;\n videoId = json.id as string;\n } else {\n errors.push(`advideos/binary: ${(await res.text()).slice(0, 200)}`);\n }\n } catch (e) {\n errors.push(`advideos/binary: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n\n // --- Strategy 3: Page video upload ---\n if (!videoId && int.pageId) {\n try {\n const downloadRes = await fetch(videoUrl);\n if (!downloadRes.ok) throw new Error(`download failed: ${downloadRes.status}`);\n const blob = await downloadRes.blob();\n\n const form = new FormData();\n form.append(\"access_token\", int.accessToken);\n form.append(\"source\", blob, \"video.mp4\");\n form.append(\"published\", \"false\");\n form.append(\"no_story\", \"true\");\n\n const res = await fetch(`${META_BASE}/${int.pageId}/videos`, { method: \"POST\", body: form });\n if (res.ok) {\n const json = (await res.json()) as Record<string, unknown>;\n videoId = json.id as string;\n } else {\n errors.push(`page/videos: ${(await res.text()).slice(0, 200)}`);\n }\n } catch (e) {\n errors.push(`page/videos: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n\n if (!videoId) {\n throw new Error(`Video upload failed. Tried 3 strategies:\\n${errors.join(\"\\n\")}`);\n }\n\n // Poll for processing (up to 90s)\n for (let i = 0; i < 18; i++) {\n await new Promise(resolve => setTimeout(resolve, 5000));\n try {\n const s = await graphGet(videoId, \"status\", int.accessToken);\n const phase = (s.status as Record<string, unknown>)?.processing_phase as string | undefined;\n if (phase === \"ready\" || phase === \"complete\") return videoId;\n if (phase === \"error\") throw new Error(`Meta video processing failed for ${videoId}`);\n } catch (e) {\n if (e instanceof Error && e.message.includes(\"processing failed\")) throw e;\n }\n }\n return videoId;\n}\n\n// ============================================================================\n// OBJECT STORY SPEC\n// ============================================================================\n\nfunction buildStorySpec(\n creative: Creative | null,\n pageId: string,\n imageHash?: string | null,\n metaVideoId?: string | null,\n carouselHashes?: Array<{ hash?: string | null; videoId?: string | null; card: CarouselCard }>,\n): Record<string, unknown> {\n // --- CAROUSEL ---\n if (carouselHashes && carouselHashes.length > 0) {\n const childAttachments = carouselHashes.map(({ hash, videoId, card }) => {\n const child: Record<string, unknown> = {};\n if (card.link_url) child.link = card.link_url;\n if (card.headline) child.name = card.headline;\n if (card.description) child.description = card.description;\n if (videoId) {\n child.video_id = videoId;\n if (hash) child.image_hash = hash;\n } else if (hash) {\n child.image_hash = hash;\n } else if (card.image_url) {\n child.picture = card.image_url;\n }\n if (card.call_to_action && card.link_url) {\n child.call_to_action = { type: card.call_to_action, value: { link: card.link_url } };\n }\n return child;\n });\n\n const linkData: Record<string, unknown> = {\n child_attachments: childAttachments,\n multi_share_optimized: true,\n };\n if (creative?.link_url) linkData.link = creative.link_url;\n if (creative?.body) linkData.message = creative.body;\n\n return { page_id: pageId, link_data: linkData };\n }\n\n const isVideo = metaVideoId || creative?.object_type?.toUpperCase() === \"VIDEO\";\n\n if (isVideo && (metaVideoId || creative?.video_id)) {\n const vid: Record<string, unknown> = { video_id: metaVideoId || creative!.video_id };\n if (creative?.body) vid.message = creative.body;\n if (creative?.title) vid.title = creative.title;\n if (imageHash) vid.image_hash = imageHash;\n else if (creative?.image_url) vid.image_url = creative.image_url;\n if (creative?.call_to_action && creative?.link_url) {\n vid.call_to_action = { type: creative.call_to_action, value: { link: creative.link_url } };\n }\n return { page_id: pageId, video_data: vid };\n }\n\n const link: Record<string, unknown> = {};\n if (creative?.link_url) link.link = creative.link_url;\n if (creative?.body) link.message = creative.body;\n if (creative?.title) link.name = creative.title;\n if (imageHash) link.image_hash = imageHash;\n else if (creative?.image_url) link.picture = creative.image_url;\n if (creative?.call_to_action && creative?.link_url) {\n link.call_to_action = { type: creative.call_to_action, value: { link: creative.link_url } };\n }\n return { page_id: pageId, link_data: link };\n}\n\n// ============================================================================\n// PUBLISH PIPELINE\n// ============================================================================\n\nasync function publishCampaign(\n sb: SupabaseClient,\n storeId: string,\n campaignId: string,\n): Promise<{ metaCampaignId: string }> {\n const { data: c, error } = await sb\n .from(\"meta_campaigns\").select(\"*\").eq(\"id\", campaignId).single();\n if (error || !c) throw new Error(`Campaign not found: ${campaignId}`);\n\n // Already published — skip\n if (!isLocalId(c.meta_campaign_id)) return { metaCampaignId: c.meta_campaign_id };\n\n const int = await getIntegration(sb, storeId);\n\n const params: Record<string, unknown> = {\n name: c.name || \"Campaign\",\n objective: c.objective || \"OUTCOME_AWARENESS\",\n status: \"PAUSED\",\n special_ad_categories: [\"NONE\"],\n };\n\n // CBO: budget at campaign level\n if (c.is_cbo) {\n params.is_adset_budget_sharing_enabled = true;\n if (c.daily_budget > 0) params.daily_budget = Math.round(c.daily_budget * 100);\n if (c.lifetime_budget > 0) params.lifetime_budget = Math.round(c.lifetime_budget * 100);\n if (c.campaign_bid_strategy) params.bid_strategy = c.campaign_bid_strategy;\n } else {\n params.is_adset_budget_sharing_enabled = false;\n }\n\n if (c.start_time) params.start_time = c.start_time;\n if (c.stop_time) params.stop_time = c.stop_time;\n\n const result = await graphPost(`${int.adAccountId}/campaigns`, params, int.accessToken);\n\n const metaId = result.id as string;\n if (!metaId) throw new Error(\"Meta returned no campaign ID\");\n\n await sb.from(\"meta_campaigns\").update({\n meta_campaign_id: metaId,\n meta_account_id: int.adAccountId,\n last_synced_at: new Date().toISOString(),\n }).eq(\"id\", campaignId);\n\n return { metaCampaignId: metaId };\n}\n\nasync function publishAdSet(\n sb: SupabaseClient,\n storeId: string,\n adSetId: string,\n): Promise<{ metaAdSetId: string; metaCampaignId: string }> {\n const { data: as_, error } = await sb\n .from(\"meta_ad_sets\").select(\"*\").eq(\"id\", adSetId).single();\n if (error || !as_) throw new Error(`Ad set not found: ${adSetId}`);\n\n if (!isLocalId(as_.meta_ad_set_id)) {\n return { metaAdSetId: as_.meta_ad_set_id, metaCampaignId: \"\" };\n }\n\n const int = await getIntegration(sb, storeId);\n\n // Cascade: publish parent campaign if needed\n const campaignUUID = as_.meta_campaign_id;\n if (!campaignUUID) throw new Error(\"Ad set has no campaign reference\");\n\n const { data: camp } = await sb\n .from(\"meta_campaigns\").select(\"*\").eq(\"id\", campaignUUID).single();\n if (!camp) throw new Error(`Parent campaign not found: ${campaignUUID}`);\n\n let metaCampaignId = camp.meta_campaign_id || \"\";\n if (isLocalId(metaCampaignId)) {\n const pub = await publishCampaign(sb, storeId, campaignUUID);\n metaCampaignId = pub.metaCampaignId;\n }\n\n // CBO detection: check if campaign has budget on Meta\n const isCBO = !!camp.is_cbo;\n let campaignHasCBO = isCBO;\n if (!isCBO) {\n try {\n const mc = await graphGet(metaCampaignId, \"daily_budget,lifetime_budget,bid_strategy\", int.accessToken);\n if ((mc.daily_budget as string) || (mc.lifetime_budget as string)) {\n campaignHasCBO = true;\n if ((mc.bid_strategy as string) && mc.bid_strategy !== \"LOWEST_COST_WITHOUT_CAP\") {\n await graphPost(metaCampaignId, { bid_strategy: \"LOWEST_COST_WITHOUT_CAP\" }, int.accessToken);\n }\n }\n } catch { /* proceed without CBO check */ }\n }\n\n const optGoal = validateGoal(\n as_.optimization_goal || \"LINK_CLICKS\",\n camp.objective || \"OUTCOME_AWARENESS\",\n );\n\n // Build targeting with placement control\n const targetingSpec = await buildTargeting(sb, as_.targeting, int);\n\n // Merge placement config from ad set columns into targeting\n if (as_.publisher_platforms) {\n const pp = typeof as_.publisher_platforms === \"string\"\n ? JSON.parse(as_.publisher_platforms) : as_.publisher_platforms;\n if (Array.isArray(pp) && pp.length) targetingSpec.publisher_platforms = pp;\n }\n if (as_.facebook_positions) {\n const fp = typeof as_.facebook_positions === \"string\"\n ? JSON.parse(as_.facebook_positions) : as_.facebook_positions;\n if (Array.isArray(fp) && fp.length) targetingSpec.facebook_positions = fp;\n }\n if (as_.instagram_positions) {\n const ip = typeof as_.instagram_positions === \"string\"\n ? JSON.parse(as_.instagram_positions) : as_.instagram_positions;\n if (Array.isArray(ip) && ip.length) targetingSpec.instagram_positions = ip;\n }\n if (as_.audience_network_positions) {\n const anp = typeof as_.audience_network_positions === \"string\"\n ? JSON.parse(as_.audience_network_positions) : as_.audience_network_positions;\n if (Array.isArray(anp) && anp.length) targetingSpec.audience_network_positions = anp;\n }\n if (as_.messenger_positions) {\n const mp = typeof as_.messenger_positions === \"string\"\n ? JSON.parse(as_.messenger_positions) : as_.messenger_positions;\n if (Array.isArray(mp) && mp.length) targetingSpec.messenger_positions = mp;\n }\n\n const params: Record<string, unknown> = {\n campaign_id: metaCampaignId,\n name: as_.name || \"Ad Set\",\n billing_event: billingEvent(optGoal),\n optimization_goal: optGoal,\n status: \"PAUSED\",\n targeting: targetingSpec,\n };\n\n if (!campaignHasCBO) {\n // Ad set level budget + bid strategy (always required for non-CBO)\n if (as_.daily_budget > 0) params.daily_budget = Math.round(as_.daily_budget * 100);\n if (as_.lifetime_budget > 0) params.lifetime_budget = Math.round(as_.lifetime_budget * 100);\n const bs = as_.bid_strategy || \"LOWEST_COST_WITHOUT_CAP\";\n params.bid_strategy = bs;\n if (bs !== \"LOWEST_COST_WITHOUT_CAP\" && as_.bid_amount > 0) {\n params.bid_amount = Math.round(as_.bid_amount * 100);\n }\n }\n\n if (as_.start_time) params.start_time = as_.start_time;\n if (as_.end_time) {\n params.end_time = as_.end_time;\n } else if (!campaignHasCBO && as_.lifetime_budget > 0) {\n params.end_time = new Date(Date.now() + 30 * 86400000).toISOString();\n }\n\n // --- Ad scheduling / dayparting ---\n if (as_.adset_schedule) {\n const schedule = typeof as_.adset_schedule === \"string\"\n ? JSON.parse(as_.adset_schedule) : as_.adset_schedule;\n if (Array.isArray(schedule) && schedule.length) {\n params.adset_schedule = schedule;\n // Dayparting requires lifetime budget or pacing_type USER_DEFINED\n params.pacing_type = [\"day_parting\"];\n }\n }\n\n // --- Frequency capping ---\n if (as_.frequency_control_specs) {\n const fcs = typeof as_.frequency_control_specs === \"string\"\n ? JSON.parse(as_.frequency_control_specs) : as_.frequency_control_specs;\n if (Array.isArray(fcs) && fcs.length) {\n params.frequency_control_specs = fcs;\n }\n }\n\n // --- Promoted object (conversion tracking) ---\n if (as_.promoted_object) {\n const po = typeof as_.promoted_object === \"string\"\n ? JSON.parse(as_.promoted_object) : as_.promoted_object;\n if (po && typeof po === \"object\" && Object.keys(po).length) {\n params.promoted_object = po;\n }\n }\n\n // --- Dynamic creative flag ---\n if (as_.is_dynamic_creative) {\n params.is_dynamic_creative = true;\n }\n\n const result = await graphPost(`${int.adAccountId}/adsets`, params, int.accessToken);\n const metaId = result.id as string;\n if (!metaId) throw new Error(\"Meta returned no ad set ID\");\n\n await sb.from(\"meta_ad_sets\").update({\n meta_ad_set_id: metaId,\n last_synced_at: new Date().toISOString(),\n }).eq(\"id\", adSetId);\n\n return { metaAdSetId: metaId, metaCampaignId };\n}\n\nasync function publishAd(\n sb: SupabaseClient,\n storeId: string,\n adId: string,\n): Promise<{ metaAdId: string; creativeId: string; metaAdSetId: string; metaCampaignId: string }> {\n const { data: ad, error } = await sb\n .from(\"meta_ads\").select(\"*\").eq(\"id\", adId).single();\n if (error || !ad) throw new Error(`Ad not found: ${adId}`);\n\n if (!isLocalId(ad.meta_ad_id)) {\n return { metaAdId: ad.meta_ad_id, creativeId: ad.creative_id || \"\", metaAdSetId: \"\", metaCampaignId: \"\" };\n }\n\n const int = await getIntegration(sb, storeId);\n\n // Cascade: publish parent ad set (which cascades to campaign)\n const adSetUUID = ad.meta_ad_set_id;\n if (!adSetUUID) throw new Error(\"Ad has no ad set reference\");\n\n const { data: adSet } = await sb\n .from(\"meta_ad_sets\").select(\"*\").eq(\"id\", adSetUUID).single();\n if (!adSet) throw new Error(`Parent ad set not found: ${adSetUUID}`);\n\n let metaAdSetId = adSet.meta_ad_set_id || \"\";\n let metaCampaignId = \"\";\n if (isLocalId(metaAdSetId)) {\n const pub = await publishAdSet(sb, storeId, adSetUUID);\n metaAdSetId = pub.metaAdSetId;\n metaCampaignId = pub.metaCampaignId;\n }\n\n if (!int.pageId) throw new Error(\"No Facebook Page linked. Add page_id in Meta Connection settings.\");\n\n const creative = (ad.creative || {}) as Creative;\n const isCarousel = Array.isArray(creative.carousel_cards) && creative.carousel_cards.length > 0;\n const isDynamic = !!creative.asset_feed_spec;\n const wantsVideo = !!(creative.video_url || creative.video_id || creative.object_type?.toUpperCase() === \"VIDEO\");\n\n let imageHash: string | null = null;\n let metaVideoId: string | null = null;\n let videoWarning: string | null = null;\n\n // --- CAROUSEL: upload each card's media ---\n if (isCarousel) {\n const carouselHashes: Array<{ hash?: string | null; videoId?: string | null; card: CarouselCard }> = [];\n\n for (const card of creative.carousel_cards!) {\n let cardHash: string | null = null;\n let cardVideoId: string | null = null;\n\n if (card.video_url) {\n try {\n cardVideoId = await uploadVideo(int, card.video_url);\n } catch { /* skip video, fall to image */ }\n if (card.image_url) cardHash = await uploadImage(int, card.image_url);\n } else if (card.image_url) {\n cardHash = await uploadImage(int, card.image_url);\n }\n carouselHashes.push({ hash: cardHash, videoId: cardVideoId, card });\n }\n\n const oss = buildStorySpec(creative, int.pageId, null, null, carouselHashes);\n const crResult = await graphPost(\n `${int.adAccountId}/adcreatives`,\n { name: `${ad.name || \"Ad\"} Creative`, object_story_spec: oss },\n int.accessToken,\n );\n const creativeId = crResult.id as string;\n if (!creativeId) throw new Error(\"Meta returned no creative ID\");\n\n const adResult = await graphPost(\n `${int.adAccountId}/ads`,\n {\n name: ad.name || \"Ad\",\n adset_id: metaAdSetId,\n creative: { creative_id: creativeId },\n status: metaStatus(ad.status),\n },\n int.accessToken,\n );\n const metaAdId = adResult.id as string;\n if (!metaAdId) throw new Error(\"Meta returned no ad ID\");\n\n await sb.from(\"meta_ads\").update({\n meta_ad_id: metaAdId,\n creative_id: creativeId,\n last_synced_at: new Date().toISOString(),\n }).eq(\"id\", adId);\n\n return { metaAdId, creativeId, metaAdSetId, metaCampaignId };\n }\n\n // --- DYNAMIC CREATIVE: asset_feed_spec ---\n if (isDynamic && creative.asset_feed_spec) {\n const spec = creative.asset_feed_spec;\n\n // Upload images in the asset feed\n if (Array.isArray(spec.images)) {\n for (const img of spec.images as Array<Record<string, unknown>>) {\n if (img.url && !img.hash) {\n const hash = await uploadImage(int, img.url as string);\n if (hash) { img.hash = hash; delete img.url; }\n }\n }\n }\n\n const crParams: Record<string, unknown> = {\n name: `${ad.name || \"Ad\"} Dynamic Creative`,\n asset_feed_spec: spec,\n object_story_spec: { page_id: int.pageId, link_data: { link: creative.link_url || \"\" } },\n };\n\n const crResult = await graphPost(`${int.adAccountId}/adcreatives`, crParams, int.accessToken);\n const creativeId = crResult.id as string;\n if (!creativeId) throw new Error(\"Meta returned no creative ID\");\n\n const adResult = await graphPost(\n `${int.adAccountId}/ads`,\n {\n name: ad.name || \"Ad\",\n adset_id: metaAdSetId,\n creative: { creative_id: creativeId },\n status: metaStatus(ad.status),\n },\n int.accessToken,\n );\n const metaAdId = adResult.id as string;\n if (!metaAdId) throw new Error(\"Meta returned no ad ID\");\n\n await sb.from(\"meta_ads\").update({\n meta_ad_id: metaAdId,\n creative_id: creativeId,\n last_synced_at: new Date().toISOString(),\n }).eq(\"id\", adId);\n\n return { metaAdId, creativeId, metaAdSetId, metaCampaignId };\n }\n\n // --- STANDARD (single image/video) ---\n if (wantsVideo && creative.video_url) {\n try {\n metaVideoId = await uploadVideo(int, creative.video_url);\n } catch (e) {\n videoWarning = `Video upload failed (${e instanceof Error ? e.message.slice(0, 150) : \"unknown\"}). Published as image ad instead. To fix: add ads_management and pages_manage_posts permissions to your Meta App.`;\n }\n if (creative.image_url) {\n imageHash = await uploadImage(int, creative.image_url);\n }\n } else if (wantsVideo && creative.video_id) {\n metaVideoId = creative.video_id;\n if (creative.image_url) imageHash = await uploadImage(int, creative.image_url);\n } else if (creative.image_url) {\n imageHash = await uploadImage(int, creative.image_url);\n }\n\n // Create creative on Meta\n const oss = buildStorySpec(creative, int.pageId, imageHash, metaVideoId);\n const crParams: Record<string, unknown> = {\n name: `${ad.name || \"Ad\"} Creative`,\n object_story_spec: oss,\n };\n\n // Attach lead form if specified\n if (creative.lead_form_id) {\n const ossObj = oss as Record<string, unknown>;\n if (ossObj.link_data) {\n ossObj.link_data = { ...(ossObj.link_data as Record<string, unknown>), lead_gen_form_id: creative.lead_form_id };\n }\n crParams.object_story_spec = ossObj;\n }\n\n const crResult = await graphPost(`${int.adAccountId}/adcreatives`, crParams, int.accessToken);\n const creativeId = crResult.id as string;\n if (!creativeId) throw new Error(\"Meta returned no creative ID\");\n\n // Create ad\n const adResult = await graphPost(\n `${int.adAccountId}/ads`,\n {\n name: ad.name || \"Ad\",\n adset_id: metaAdSetId,\n creative: { creative_id: creativeId },\n status: metaStatus(ad.status),\n },\n int.accessToken,\n );\n const metaAdId = adResult.id as string;\n if (!metaAdId) throw new Error(\"Meta returned no ad ID\");\n\n await sb.from(\"meta_ads\").update({\n meta_ad_id: metaAdId,\n creative_id: creativeId,\n last_synced_at: new Date().toISOString(),\n }).eq(\"id\", adId);\n\n return {\n metaAdId, creativeId, metaAdSetId, metaCampaignId,\n ...(videoWarning && { warning: videoWarning }),\n };\n}\n\n// ============================================================================\n// MAIN HANDLER\n// ============================================================================\n\nexport async function handleMetaAds(\n sb: SupabaseClient,\n args: Record<string, unknown>,\n storeId?: string,\n) {\n if (!storeId) return { success: false, error: \"store_id required\" };\n const action = args.action as string;\n\n try {\n switch (action) {\n // ==================================================================\n // CREATE\n // ==================================================================\n\n case \"create_campaign\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name required\" };\n\n const row: Record<string, unknown> = {\n store_id: storeId,\n meta_campaign_id: `local_${crypto.randomUUID().slice(0, 8)}`,\n meta_account_id: \"draft\",\n name,\n objective: (args.objective as string) || \"OUTCOME_AWARENESS\",\n status: \"DRAFT\",\n };\n if (args.daily_budget) row.daily_budget = Number(args.daily_budget);\n if (args.lifetime_budget) row.lifetime_budget = Number(args.lifetime_budget);\n if (args.start_time) row.start_time = args.start_time;\n if (args.stop_time) row.stop_time = args.stop_time;\n // CBO support\n if (args.is_cbo === true) row.is_cbo = true;\n if (args.campaign_bid_strategy) row.campaign_bid_strategy = args.campaign_bid_strategy;\n\n const { data, error } = await sb.from(\"meta_campaigns\").insert(row).select().single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n case \"create_ad_set\": {\n const campaignId = args.campaign_id as string;\n const name = args.name as string;\n if (!campaignId) return { success: false, error: \"campaign_id required\" };\n if (!name) return { success: false, error: \"name required\" };\n\n const { data: camp } = await sb\n .from(\"meta_campaigns\").select(\"id, objective\")\n .eq(\"id\", campaignId).eq(\"store_id\", storeId).single();\n if (!camp) return { success: false, error: `Campaign not found: ${campaignId}` };\n\n const optGoal = args.optimization_goal\n ? validateGoal(args.optimization_goal as string, camp.objective || \"OUTCOME_AWARENESS\")\n : defaultGoal(camp.objective || \"OUTCOME_AWARENESS\");\n\n const row: Record<string, unknown> = {\n store_id: storeId,\n meta_ad_set_id: `local_${crypto.randomUUID().slice(0, 8)}`,\n meta_campaign_id: campaignId,\n name,\n optimization_goal: optGoal,\n billing_event: billingEvent(optGoal),\n status: \"DRAFT\",\n };\n if (args.daily_budget) row.daily_budget = Number(args.daily_budget);\n if (args.lifetime_budget) row.lifetime_budget = Number(args.lifetime_budget);\n if (args.bid_strategy) row.bid_strategy = args.bid_strategy;\n if (args.bid_amount) row.bid_amount = Number(args.bid_amount);\n if (args.start_time) row.start_time = args.start_time;\n if (args.end_time) row.end_time = args.end_time;\n if (args.targeting) {\n row.targeting = typeof args.targeting === \"string\" ? args.targeting : JSON.stringify(args.targeting);\n }\n // V2: scheduling, placements, frequency, conversions, dynamic creative\n if (args.adset_schedule) {\n row.adset_schedule = typeof args.adset_schedule === \"string\"\n ? args.adset_schedule : JSON.stringify(args.adset_schedule);\n }\n if (args.publisher_platforms) {\n row.publisher_platforms = typeof args.publisher_platforms === \"string\"\n ? args.publisher_platforms : JSON.stringify(args.publisher_platforms);\n }\n if (args.facebook_positions) {\n row.facebook_positions = typeof args.facebook_positions === \"string\"\n ? args.facebook_positions : JSON.stringify(args.facebook_positions);\n }\n if (args.instagram_positions) {\n row.instagram_positions = typeof args.instagram_positions === \"string\"\n ? args.instagram_positions : JSON.stringify(args.instagram_positions);\n }\n if (args.audience_network_positions) {\n row.audience_network_positions = typeof args.audience_network_positions === \"string\"\n ? args.audience_network_positions : JSON.stringify(args.audience_network_positions);\n }\n if (args.messenger_positions) {\n row.messenger_positions = typeof args.messenger_positions === \"string\"\n ? args.messenger_positions : JSON.stringify(args.messenger_positions);\n }\n if (args.frequency_control_specs) {\n row.frequency_control_specs = typeof args.frequency_control_specs === \"string\"\n ? args.frequency_control_specs : JSON.stringify(args.frequency_control_specs);\n }\n if (args.promoted_object) {\n row.promoted_object = typeof args.promoted_object === \"string\"\n ? args.promoted_object : JSON.stringify(args.promoted_object);\n }\n if (args.is_dynamic_creative === true) row.is_dynamic_creative = true;\n\n const { data, error } = await sb.from(\"meta_ad_sets\").insert(row).select().single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n case \"create_ad\": {\n const adSetId = args.ad_set_id as string;\n const name = args.name as string;\n if (!adSetId) return { success: false, error: \"ad_set_id required\" };\n if (!name) return { success: false, error: \"name required\" };\n\n const { data: adSet } = await sb\n .from(\"meta_ad_sets\").select(\"id\")\n .eq(\"id\", adSetId).eq(\"store_id\", storeId).single();\n if (!adSet) return { success: false, error: `Ad set not found: ${adSetId}` };\n\n const hasVideo = !!(args.video_url as string);\n const creative: Creative = {\n title: (args.headline as string) || undefined,\n body: (args.body as string) || undefined,\n image_url: (args.image_url as string) || undefined,\n video_url: (args.video_url as string) || undefined,\n link_url: (args.link_url as string) || undefined,\n call_to_action: (args.call_to_action as string) || \"LEARN_MORE\",\n object_type: hasVideo ? \"VIDEO\" : \"SHARE\",\n video_id: (args.video_id as string) || undefined,\n };\n\n // V2: carousel cards\n if (args.carousel_cards && Array.isArray(args.carousel_cards)) {\n creative.carousel_cards = args.carousel_cards as CarouselCard[];\n creative.object_type = \"SHARE\";\n }\n\n // V2: dynamic creative asset feed\n if (args.asset_feed_spec && typeof args.asset_feed_spec === \"object\") {\n creative.asset_feed_spec = args.asset_feed_spec as Record<string, unknown>;\n }\n\n // V2: lead form\n if (args.lead_form_id) {\n creative.lead_form_id = args.lead_form_id as string;\n }\n\n const { data, error } = await sb.from(\"meta_ads\").insert({\n store_id: storeId,\n meta_ad_id: `local_${crypto.randomUUID().slice(0, 8)}`,\n meta_ad_set_id: adSetId,\n name,\n creative,\n status: \"DRAFT\",\n }).select().single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n // ==================================================================\n // CREATE FULL — campaign + ad set + ad in one call\n // ==================================================================\n\n case \"create_full\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name required (used as campaign name)\" };\n\n const objective = (args.objective as string) || \"OUTCOME_AWARENESS\";\n const optGoal = args.optimization_goal\n ? validateGoal(args.optimization_goal as string, objective)\n : defaultGoal(objective);\n const wantPublish = args.auto_publish === true;\n\n // 1. Campaign\n const campRow: Record<string, unknown> = {\n store_id: storeId,\n meta_campaign_id: `local_${crypto.randomUUID().slice(0, 8)}`,\n meta_account_id: \"draft\",\n name,\n objective,\n status: \"DRAFT\",\n };\n if (args.daily_budget) campRow.daily_budget = Number(args.daily_budget);\n if (args.lifetime_budget) campRow.lifetime_budget = Number(args.lifetime_budget);\n if (args.start_time) campRow.start_time = args.start_time;\n if (args.stop_time) campRow.stop_time = args.stop_time;\n if (args.is_cbo === true) campRow.is_cbo = true;\n if (args.campaign_bid_strategy) campRow.campaign_bid_strategy = args.campaign_bid_strategy;\n\n const { data: camp, error: e1 } = await sb.from(\"meta_campaigns\")\n .insert(campRow).select().single();\n if (e1) return { success: false, error: `Campaign: ${e1.message}` };\n\n // 2. Ad Set\n const adSetName = (args.ad_set_name as string) || `${name} — Ad Set`;\n const adSetRow: Record<string, unknown> = {\n store_id: storeId,\n meta_ad_set_id: `local_${crypto.randomUUID().slice(0, 8)}`,\n meta_campaign_id: camp!.id,\n name: adSetName,\n optimization_goal: optGoal,\n billing_event: billingEvent(optGoal),\n status: \"DRAFT\",\n };\n // Budget goes on ad set (unless CBO)\n if (!campRow.is_cbo && args.daily_budget) adSetRow.daily_budget = Number(args.daily_budget);\n if (!campRow.is_cbo && args.lifetime_budget) adSetRow.lifetime_budget = Number(args.lifetime_budget);\n if (args.bid_strategy) adSetRow.bid_strategy = args.bid_strategy;\n if (args.start_time) adSetRow.start_time = args.start_time;\n if (args.end_time) adSetRow.end_time = args.end_time;\n if (args.targeting) {\n adSetRow.targeting = typeof args.targeting === \"string\"\n ? args.targeting : JSON.stringify(args.targeting);\n }\n // V2 ad set fields\n if (args.adset_schedule) {\n adSetRow.adset_schedule = typeof args.adset_schedule === \"string\"\n ? args.adset_schedule : JSON.stringify(args.adset_schedule);\n }\n if (args.publisher_platforms) {\n adSetRow.publisher_platforms = typeof args.publisher_platforms === \"string\"\n ? args.publisher_platforms : JSON.stringify(args.publisher_platforms);\n }\n if (args.facebook_positions) {\n adSetRow.facebook_positions = typeof args.facebook_positions === \"string\"\n ? args.facebook_positions : JSON.stringify(args.facebook_positions);\n }\n if (args.instagram_positions) {\n adSetRow.instagram_positions = typeof args.instagram_positions === \"string\"\n ? args.instagram_positions : JSON.stringify(args.instagram_positions);\n }\n if (args.frequency_control_specs) {\n adSetRow.frequency_control_specs = typeof args.frequency_control_specs === \"string\"\n ? args.frequency_control_specs : JSON.stringify(args.frequency_control_specs);\n }\n if (args.promoted_object) {\n adSetRow.promoted_object = typeof args.promoted_object === \"string\"\n ? args.promoted_object : JSON.stringify(args.promoted_object);\n }\n if (args.is_dynamic_creative === true) adSetRow.is_dynamic_creative = true;\n\n const { data: adSet, error: e2 } = await sb.from(\"meta_ad_sets\")\n .insert(adSetRow).select().single();\n if (e2) return { success: false, error: `Ad set: ${e2.message}` };\n\n // 3. Ad\n const hasVideo = !!(args.video_url as string);\n const adName = (args.ad_name as string) || `${name} — Ad`;\n const creative: Creative = {\n title: (args.headline as string) || undefined,\n body: (args.body as string) || undefined,\n image_url: (args.image_url as string) || undefined,\n video_url: (args.video_url as string) || undefined,\n link_url: (args.link_url as string) || undefined,\n call_to_action: (args.call_to_action as string) || \"LEARN_MORE\",\n object_type: hasVideo ? \"VIDEO\" : \"SHARE\",\n video_id: (args.video_id as string) || undefined,\n };\n if (args.carousel_cards && Array.isArray(args.carousel_cards)) {\n creative.carousel_cards = args.carousel_cards as CarouselCard[];\n creative.object_type = \"SHARE\";\n }\n if (args.asset_feed_spec && typeof args.asset_feed_spec === \"object\") {\n creative.asset_feed_spec = args.asset_feed_spec as Record<string, unknown>;\n }\n if (args.lead_form_id) {\n creative.lead_form_id = args.lead_form_id as string;\n }\n\n const { data: ad, error: e3 } = await sb.from(\"meta_ads\").insert({\n store_id: storeId,\n meta_ad_id: `local_${crypto.randomUUID().slice(0, 8)}`,\n meta_ad_set_id: adSet!.id,\n name: adName,\n creative,\n status: \"DRAFT\",\n }).select().single();\n if (e3) return { success: false, error: `Ad: ${e3.message}` };\n\n // 4. Auto-publish if requested\n if (wantPublish) {\n try {\n const pubResult = await publishAd(sb, storeId, ad!.id);\n const { data: finalCamp } = await sb.from(\"meta_campaigns\").select(\"*\").eq(\"id\", camp!.id).single();\n const { data: finalAdSet } = await sb.from(\"meta_ad_sets\").select(\"*\").eq(\"id\", adSet!.id).single();\n const { data: finalAd } = await sb.from(\"meta_ads\").select(\"*\").eq(\"id\", ad!.id).single();\n\n return {\n success: true,\n published: true,\n data: {\n campaign: finalCamp,\n ad_set: finalAdSet,\n ad: finalAd,\n meta_ids: {\n campaign_id: pubResult.metaCampaignId,\n ad_set_id: pubResult.metaAdSetId,\n creative_id: pubResult.creativeId,\n ad_id: pubResult.metaAdId,\n },\n ...((\"warning\" in pubResult) && { warning: (pubResult as Record<string, unknown>).warning }),\n },\n };\n } catch (pubErr) {\n return {\n success: true,\n published: false,\n data: {\n campaign: camp,\n ad_set: adSet,\n ad: ad,\n publish_error: pubErr instanceof Error ? pubErr.message : String(pubErr),\n hint: \"Drafts created. Fix the error and retry: publish(type=ad, id=\" + ad!.id + \")\",\n },\n };\n }\n }\n\n return {\n success: true,\n published: false,\n data: {\n campaign: camp,\n ad_set: adSet,\n ad: ad,\n hint: \"Created as drafts. Set auto_publish=true to publish immediately, or call publish(type=ad, id=\" + ad!.id + \").\",\n },\n };\n }\n\n // ==================================================================\n // READ\n // ==================================================================\n\n case \"list_campaigns\": {\n let q = sb.from(\"meta_campaigns\").select(\"*\")\n .eq(\"store_id\", storeId).order(\"created_at\", { ascending: false });\n if (args.status) q = q.eq(\"status\", args.status);\n q = q.limit((args.limit as number) || 25);\n const { data, error } = await q;\n if (error) return { success: false, error: error.message };\n return { success: true, count: data?.length ?? 0, data };\n }\n\n case \"list_ad_sets\": {\n let q = sb.from(\"meta_ad_sets\").select(\"*\")\n .eq(\"store_id\", storeId).order(\"created_at\", { ascending: false });\n if (args.campaign_id) q = q.eq(\"meta_campaign_id\", args.campaign_id);\n if (args.status) q = q.eq(\"status\", args.status);\n q = q.limit((args.limit as number) || 25);\n const { data, error } = await q;\n if (error) return { success: false, error: error.message };\n return { success: true, count: data?.length ?? 0, data };\n }\n\n case \"list_ads\": {\n let q = sb.from(\"meta_ads\").select(\"*\")\n .eq(\"store_id\", storeId).order(\"created_at\", { ascending: false });\n if (args.ad_set_id) q = q.eq(\"meta_ad_set_id\", args.ad_set_id);\n if (args.status) q = q.eq(\"status\", args.status);\n q = q.limit((args.limit as number) || 25);\n const { data, error } = await q;\n if (error) return { success: false, error: error.message };\n return { success: true, count: data?.length ?? 0, data };\n }\n\n case \"get_campaign\": {\n const id = (args.campaign_id || args.id) as string;\n if (!id) return { success: false, error: \"campaign_id required\" };\n const { data: c, error } = await sb.from(\"meta_campaigns\").select(\"*\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n if (error) return { success: false, error: error.message };\n const { data: sets } = await sb.from(\"meta_ad_sets\").select(\"*\")\n .eq(\"meta_campaign_id\", id).order(\"created_at\", { ascending: false });\n return { success: true, data: { ...c, ad_sets: sets || [] } };\n }\n\n case \"get_ad_set\": {\n const id = (args.ad_set_id || args.id) as string;\n if (!id) return { success: false, error: \"ad_set_id required\" };\n const { data: s, error } = await sb.from(\"meta_ad_sets\").select(\"*\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n if (error) return { success: false, error: error.message };\n const { data: ads } = await sb.from(\"meta_ads\").select(\"*\")\n .eq(\"meta_ad_set_id\", id).order(\"created_at\", { ascending: false });\n return { success: true, data: { ...s, ads: ads || [] } };\n }\n\n case \"get_ad\": {\n const id = (args.ad_id || args.id) as string;\n if (!id) return { success: false, error: \"ad_id required\" };\n const { data, error } = await sb.from(\"meta_ads\").select(\"*\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n // ==================================================================\n // UPDATE\n // ==================================================================\n\n case \"update_campaign\": {\n const id = (args.campaign_id || args.id) as string;\n if (!id) return { success: false, error: \"campaign_id required\" };\n const u: Record<string, unknown> = {};\n if (args.name !== undefined) u.name = args.name;\n if (args.objective !== undefined) u.objective = args.objective;\n if (args.daily_budget !== undefined) u.daily_budget = Number(args.daily_budget);\n if (args.lifetime_budget !== undefined) u.lifetime_budget = Number(args.lifetime_budget);\n if (args.status !== undefined) u.status = args.status;\n if (args.start_time !== undefined) u.start_time = args.start_time;\n if (args.stop_time !== undefined) u.stop_time = args.stop_time;\n if (args.is_cbo !== undefined) u.is_cbo = args.is_cbo;\n if (args.campaign_bid_strategy !== undefined) u.campaign_bid_strategy = args.campaign_bid_strategy;\n if (!Object.keys(u).length) return { success: false, error: \"No fields to update\" };\n const { data, error } = await sb.from(\"meta_campaigns\").update(u)\n .eq(\"id\", id).eq(\"store_id\", storeId).select().single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n case \"update_ad_set\": {\n const id = (args.ad_set_id || args.id) as string;\n if (!id) return { success: false, error: \"ad_set_id required\" };\n const u: Record<string, unknown> = {};\n if (args.name !== undefined) u.name = args.name;\n if (args.daily_budget !== undefined) u.daily_budget = Number(args.daily_budget);\n if (args.lifetime_budget !== undefined) u.lifetime_budget = Number(args.lifetime_budget);\n if (args.optimization_goal !== undefined) u.optimization_goal = args.optimization_goal;\n if (args.bid_strategy !== undefined) u.bid_strategy = args.bid_strategy;\n if (args.bid_amount !== undefined) u.bid_amount = Number(args.bid_amount);\n if (args.status !== undefined) u.status = args.status;\n if (args.start_time !== undefined) u.start_time = args.start_time;\n if (args.end_time !== undefined) u.end_time = args.end_time;\n if (args.targeting !== undefined) {\n u.targeting = typeof args.targeting === \"string\" ? args.targeting : JSON.stringify(args.targeting);\n }\n // V2 fields\n if (args.adset_schedule !== undefined) {\n u.adset_schedule = typeof args.adset_schedule === \"string\"\n ? args.adset_schedule : JSON.stringify(args.adset_schedule);\n }\n if (args.publisher_platforms !== undefined) {\n u.publisher_platforms = typeof args.publisher_platforms === \"string\"\n ? args.publisher_platforms : JSON.stringify(args.publisher_platforms);\n }\n if (args.facebook_positions !== undefined) {\n u.facebook_positions = typeof args.facebook_positions === \"string\"\n ? args.facebook_positions : JSON.stringify(args.facebook_positions);\n }\n if (args.instagram_positions !== undefined) {\n u.instagram_positions = typeof args.instagram_positions === \"string\"\n ? args.instagram_positions : JSON.stringify(args.instagram_positions);\n }\n if (args.audience_network_positions !== undefined) {\n u.audience_network_positions = typeof args.audience_network_positions === \"string\"\n ? args.audience_network_positions : JSON.stringify(args.audience_network_positions);\n }\n if (args.messenger_positions !== undefined) {\n u.messenger_positions = typeof args.messenger_positions === \"string\"\n ? args.messenger_positions : JSON.stringify(args.messenger_positions);\n }\n if (args.frequency_control_specs !== undefined) {\n u.frequency_control_specs = typeof args.frequency_control_specs === \"string\"\n ? args.frequency_control_specs : JSON.stringify(args.frequency_control_specs);\n }\n if (args.promoted_object !== undefined) {\n u.promoted_object = typeof args.promoted_object === \"string\"\n ? args.promoted_object : JSON.stringify(args.promoted_object);\n }\n if (args.is_dynamic_creative !== undefined) u.is_dynamic_creative = args.is_dynamic_creative;\n if (!Object.keys(u).length) return { success: false, error: \"No fields to update\" };\n const { data, error } = await sb.from(\"meta_ad_sets\").update(u)\n .eq(\"id\", id).eq(\"store_id\", storeId).select().single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n case \"update_ad\": {\n const id = (args.ad_id || args.id) as string;\n if (!id) return { success: false, error: \"ad_id required\" };\n const u: Record<string, unknown> = {};\n if (args.name !== undefined) u.name = args.name;\n if (args.status !== undefined) u.status = args.status;\n // Merge creative fields\n if (args.headline !== undefined || args.body !== undefined || args.image_url !== undefined ||\n args.video_url !== undefined || args.link_url !== undefined ||\n args.call_to_action !== undefined || args.video_id !== undefined ||\n args.carousel_cards !== undefined || args.asset_feed_spec !== undefined ||\n args.lead_form_id !== undefined) {\n const { data: existing } = await sb.from(\"meta_ads\").select(\"creative\").eq(\"id\", id).single();\n const prev = (existing?.creative || {}) as Creative;\n u.creative = {\n ...prev,\n ...(args.headline !== undefined && { title: args.headline }),\n ...(args.body !== undefined && { body: args.body }),\n ...(args.image_url !== undefined && { image_url: args.image_url }),\n ...(args.video_url !== undefined && { video_url: args.video_url, object_type: \"VIDEO\" }),\n ...(args.link_url !== undefined && { link_url: args.link_url }),\n ...(args.call_to_action !== undefined && { call_to_action: args.call_to_action }),\n ...(args.video_id !== undefined && { video_id: args.video_id, object_type: \"VIDEO\" }),\n ...(args.carousel_cards !== undefined && { carousel_cards: args.carousel_cards }),\n ...(args.asset_feed_spec !== undefined && { asset_feed_spec: args.asset_feed_spec }),\n ...(args.lead_form_id !== undefined && { lead_form_id: args.lead_form_id }),\n };\n }\n if (!Object.keys(u).length) return { success: false, error: \"No fields to update\" };\n const { data, error } = await sb.from(\"meta_ads\").update(u)\n .eq(\"id\", id).eq(\"store_id\", storeId).select().single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n // ==================================================================\n // DELETE\n // ==================================================================\n\n case \"delete\": {\n const id = args.id as string;\n const type = args.type as string;\n if (!id) return { success: false, error: \"id required\" };\n if (!type) return { success: false, error: \"type required (campaign, ad_set, ad)\" };\n const table = type === \"campaign\" ? \"meta_campaigns\"\n : type === \"ad_set\" ? \"meta_ad_sets\"\n : type === \"ad\" ? \"meta_ads\" : null;\n const metaIdCol = type === \"campaign\" ? \"meta_campaign_id\"\n : type === \"ad_set\" ? \"meta_ad_set_id\"\n : type === \"ad\" ? \"meta_ad_id\" : null;\n if (!table || !metaIdCol) return { success: false, error: `Invalid type: ${type}` };\n\n const { data: record } = await sb.from(table).select(metaIdCol).eq(\"id\", id).single();\n const metaId = (record as Record<string, unknown>)?.[metaIdCol] as string | undefined;\n let metaDeleted = false;\n if (metaId && !isLocalId(metaId)) {\n const int = await getIntegration(sb, storeId);\n if (int) {\n try {\n await graphPost(metaId, { status: \"DELETED\" }, int.accessToken);\n metaDeleted = true;\n } catch (e: unknown) {\n console.warn(`[meta_ads] Meta delete failed for ${metaId}:`, e);\n }\n }\n }\n\n const { error } = await sb.from(table).delete().eq(\"id\", id).eq(\"store_id\", storeId);\n if (error) return { success: false, error: error.message };\n return { success: true, data: { deleted: id, type, meta_deleted: metaDeleted } };\n }\n\n // ==================================================================\n // PUBLISH\n // ==================================================================\n\n case \"publish\": {\n const type = args.type as string;\n const id = args.id as string;\n if (!type) return { success: false, error: \"type required (campaign, ad_set, ad)\" };\n if (!id) return { success: false, error: \"id required\" };\n\n let result: unknown;\n switch (type) {\n case \"campaign\": result = await publishCampaign(sb, storeId, id); break;\n case \"ad_set\": result = await publishAdSet(sb, storeId, id); break;\n case \"ad\": result = await publishAd(sb, storeId, id); break;\n default: return { success: false, error: `Invalid type: ${type}` };\n }\n\n // Telemetry → ClickHouse (fire-and-forget)\n queueSpan(auditRowToSpan({\n store_id: storeId,\n action: `meta_publish_${type}`,\n resource_type: `meta_${type === \"ad_set\" ? \"ad_set\" : type}`,\n resource_id: id,\n details: result,\n source: \"agent_chat\",\n severity: \"info\",\n service_name: \"agent-server\", span_kind: \"INTERNAL\", status_code: \"OK\",\n start_time: new Date().toISOString(), end_time: new Date().toISOString(),\n }));\n\n return { success: true, data: result };\n }\n\n // ==================================================================\n // SYNC — pull latest stats from Meta (with optional breakdowns)\n // ==================================================================\n\n case \"sync\": {\n const id = (args.campaign_id || args.id) as string;\n if (!id) return { success: false, error: \"campaign_id required\" };\n\n const { data: c } = await sb.from(\"meta_campaigns\").select(\"meta_campaign_id\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n if (!c) return { success: false, error: `Campaign not found: ${id}` };\n if (isLocalId(c.meta_campaign_id)) return { success: false, error: \"Campaign not published yet. Publish first.\" };\n\n const int = await getIntegration(sb, storeId);\n const stats = await graphGet(\n c.meta_campaign_id,\n \"name,status,effective_status,daily_budget,lifetime_budget,budget_remaining,start_time,stop_time\",\n int.accessToken,\n );\n\n const u: Record<string, unknown> = { last_synced_at: new Date().toISOString() };\n if (stats.status) u.status = stats.status;\n if (stats.effective_status) u.effective_status = stats.effective_status;\n if (stats.daily_budget) u.daily_budget = Number(stats.daily_budget) / 100;\n if (stats.lifetime_budget) u.lifetime_budget = Number(stats.lifetime_budget) / 100;\n if (stats.budget_remaining) u.budget_remaining = Number(stats.budget_remaining) / 100;\n\n // Insights (with optional breakdowns)\n try {\n const breakdowns = args.breakdowns as string | undefined;\n let extra = \"date_preset=maximum\";\n if (breakdowns) extra += `&breakdowns=${enc(breakdowns)}`;\n\n const ins = await graphGet(`${c.meta_campaign_id}/insights`,\n \"spend,impressions,clicks,reach,cpc,cpm,ctr,actions\", int.accessToken, extra);\n const results = ins.data as Array<Record<string, unknown>>;\n\n if (breakdowns && results?.length) {\n // Return breakdown data without saving to DB (too granular)\n u.raw_insights = results;\n } else {\n const d = results?.[0];\n if (d) {\n if (d.spend) u.spend = Number(d.spend);\n if (d.impressions) u.impressions = Number(d.impressions);\n if (d.clicks) u.clicks = Number(d.clicks);\n if (d.reach) u.reach = Number(d.reach);\n if (d.cpc) u.cpc = Number(d.cpc);\n if (d.cpm) u.cpm = Number(d.cpm);\n if (d.ctr) u.ctr = Number(d.ctr);\n u.raw_insights = d;\n }\n }\n } catch { /* insights may not exist yet */ }\n\n await sb.from(\"meta_campaigns\").update(u).eq(\"id\", id);\n const { data: refreshed } = await sb.from(\"meta_campaigns\").select(\"*\").eq(\"id\", id).single();\n return { success: true, data: refreshed };\n }\n\n // ==================================================================\n // INSIGHTS BREAKDOWN — detailed performance by dimension\n // ==================================================================\n\n case \"insights_breakdown\": {\n const id = (args.campaign_id || args.ad_set_id || args.ad_id || args.id) as string;\n if (!id) return { success: false, error: \"campaign_id, ad_set_id, or ad_id required\" };\n const breakdowns = (args.breakdowns as string) || \"age,gender\";\n\n // Determine which table to look up the Meta ID\n let metaId: string | null = null;\n if (args.campaign_id || (!args.ad_set_id && !args.ad_id)) {\n const { data } = await sb.from(\"meta_campaigns\").select(\"meta_campaign_id\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n metaId = data?.meta_campaign_id;\n } else if (args.ad_set_id) {\n const { data } = await sb.from(\"meta_ad_sets\").select(\"meta_ad_set_id\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n metaId = data?.meta_ad_set_id;\n } else if (args.ad_id) {\n const { data } = await sb.from(\"meta_ads\").select(\"meta_ad_id\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n metaId = data?.meta_ad_id;\n }\n\n if (!metaId || isLocalId(metaId)) {\n return { success: false, error: \"Entity not published yet. Publish first.\" };\n }\n\n const int = await getIntegration(sb, storeId);\n const datePreset = (args.date_preset as string) || \"last_30d\";\n const fields = (args.fields as string) || \"spend,impressions,clicks,reach,cpc,cpm,ctr,actions,cost_per_action_type\";\n\n const extra = `breakdowns=${enc(breakdowns)}&date_preset=${enc(datePreset)}`;\n const ins = await graphGet(`${metaId}/insights`, fields, int.accessToken, extra);\n\n return { success: true, data: ins.data || [] };\n }\n\n // ==================================================================\n // AD PREVIEW — get preview URLs\n // ==================================================================\n\n case \"ad_preview\": {\n const id = (args.ad_id || args.id) as string;\n if (!id) return { success: false, error: \"ad_id required\" };\n\n const { data: ad } = await sb.from(\"meta_ads\").select(\"meta_ad_id\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n if (!ad) return { success: false, error: `Ad not found: ${id}` };\n if (isLocalId(ad.meta_ad_id)) {\n return { success: false, error: \"Ad not published yet. Publish first to get preview.\" };\n }\n\n const int = await getIntegration(sb, storeId);\n const format = (args.ad_format as string) || \"DESKTOP_FEED_STANDARD\";\n\n const url = `${META_BASE}/${ad.meta_ad_id}/previews?ad_format=${enc(format)}&access_token=${enc(int.accessToken)}`;\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n return { success: false, error: parseMetaError(body, \"previews\", res.status) };\n }\n const json = (await res.json()) as Record<string, unknown>;\n return { success: true, data: json.data || [] };\n }\n\n // ==================================================================\n // CUSTOM AUDIENCES\n // ==================================================================\n\n case \"create_audience\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name required\" };\n\n const int = await getIntegration(sb, storeId);\n const subtype = (args.subtype as string) || \"CUSTOM\";\n\n const metaParams: Record<string, unknown> = {\n name,\n subtype,\n description: (args.description as string) || \"\",\n customer_file_source: (args.customer_file_source as string) || \"USER_PROVIDED_ONLY\",\n };\n\n // Website audience (requires pixel)\n if (subtype === \"WEBSITE\") {\n const pixelForAudience = (args.pixel_id as string) || int.pixelId;\n if (!pixelForAudience) return { success: false, error: \"pixel_id required for website audiences (none configured — set one in Settings → Meta Connection)\" };\n metaParams.rule = args.rule || { inclusions: { operator: \"or\", rules: [{ event_sources: [{ id: pixelForAudience, type: \"pixel\" }], retention_seconds: (Number(args.retention_days) || 30) * 86400 }] } };\n if (args.retention_days) metaParams.retention_days = Number(args.retention_days);\n if (args.prefill) metaParams.prefill = true;\n }\n\n // Engagement audience\n if (subtype === \"ENGAGEMENT\") {\n metaParams.rule = args.rule;\n }\n\n const result = await graphPost(`${int.adAccountId}/customaudiences`, metaParams, int.accessToken);\n const metaAudienceId = result.id as string;\n\n // Save to local DB\n const { data, error } = await sb.from(\"meta_audiences\").insert({\n store_id: storeId,\n meta_audience_id: metaAudienceId || null,\n name,\n description: (args.description as string) || null,\n audience_type: \"custom\",\n subtype,\n rule: args.rule || null,\n customer_file_source: (args.customer_file_source as string) || null,\n retention_days: args.retention_days ? Number(args.retention_days) : null,\n }).select().single();\n if (error) return { success: false, error: error.message };\n\n return { success: true, data: { ...data, meta_audience_id: metaAudienceId } };\n }\n\n case \"list_audiences\": {\n // Fetch from Meta for live data\n const int = await getIntegration(sb, storeId);\n const fields = \"id,name,description,subtype,approximate_count,delivery_status,operation_status,time_created,time_updated\";\n const result = await graphGet(`${int.adAccountId}/customaudiences`, fields, int.accessToken);\n\n // Also sync to local DB\n const audiences = (result.data || []) as Array<Record<string, unknown>>;\n for (const aud of audiences) {\n await sb.from(\"meta_audiences\").upsert({\n store_id: storeId,\n meta_audience_id: aud.id as string,\n name: aud.name as string,\n description: (aud.description as string) || null,\n subtype: (aud.subtype as string) || null,\n approximate_count: aud.approximate_count ? Number(aud.approximate_count) : null,\n updated_at: new Date().toISOString(),\n }, { onConflict: \"meta_audience_id\", ignoreDuplicates: false }).then(() => {});\n }\n\n return { success: true, count: audiences.length, data: audiences };\n }\n\n case \"get_audience\": {\n const id = (args.audience_id || args.id) as string;\n if (!id) return { success: false, error: \"audience_id required\" };\n\n // Check if it's a local UUID or Meta ID\n let metaId = id;\n if (isLocalId(id)) {\n const { data } = await sb.from(\"meta_audiences\").select(\"meta_audience_id\")\n .eq(\"id\", id).single();\n if (!data?.meta_audience_id) return { success: false, error: `Audience not found: ${id}` };\n metaId = data.meta_audience_id;\n }\n\n const int = await getIntegration(sb, storeId);\n const fields = \"id,name,description,subtype,approximate_count,delivery_status,operation_status,rule,lookalike_spec,time_created,time_updated\";\n const result = await graphGet(metaId, fields, int.accessToken);\n return { success: true, data: result };\n }\n\n case \"delete_audience\": {\n const id = (args.audience_id || args.id) as string;\n if (!id) return { success: false, error: \"audience_id required\" };\n\n let metaId = id;\n if (isLocalId(id)) {\n const { data } = await sb.from(\"meta_audiences\").select(\"meta_audience_id\")\n .eq(\"id\", id).single();\n if (data?.meta_audience_id) metaId = data.meta_audience_id;\n }\n\n const int = await getIntegration(sb, storeId);\n let metaDeleted = false;\n if (!isLocalId(metaId)) {\n try {\n await graphDelete(metaId, int.accessToken);\n metaDeleted = true;\n } catch { /* continue */ }\n }\n\n // Delete from local DB\n if (isLocalId(id)) {\n await sb.from(\"meta_audiences\").delete().eq(\"id\", id);\n } else {\n await sb.from(\"meta_audiences\").delete().eq(\"meta_audience_id\", id).eq(\"store_id\", storeId);\n }\n\n return { success: true, data: { deleted: id, meta_deleted: metaDeleted } };\n }\n\n case \"create_lookalike\": {\n const sourceId = (args.source_audience_id || args.source_id) as string;\n if (!sourceId) return { success: false, error: \"source_audience_id required (Meta audience ID)\" };\n\n const int = await getIntegration(sb, storeId);\n const name = (args.name as string) || `Lookalike — ${sourceId}`;\n const country = (args.country as string) || \"US\";\n const ratio = Number(args.ratio) || 0.01; // 1% default\n\n // Resolve source Meta ID if local UUID given\n let sourceMetaId = sourceId;\n if (isLocalId(sourceId)) {\n const { data } = await sb.from(\"meta_audiences\").select(\"meta_audience_id\")\n .eq(\"id\", sourceId).single();\n if (!data?.meta_audience_id) return { success: false, error: `Source audience not found: ${sourceId}` };\n sourceMetaId = data.meta_audience_id;\n }\n\n const result = await graphPost(`${int.adAccountId}/customaudiences`, {\n name,\n subtype: \"LOOKALIKE\",\n origin_audience_id: sourceMetaId,\n lookalike_spec: JSON.stringify({\n type: \"custom_ratio\",\n ratio,\n country,\n }),\n }, int.accessToken);\n\n const metaAudienceId = result.id as string;\n\n // Save to local DB\n const { data, error } = await sb.from(\"meta_audiences\").insert({\n store_id: storeId,\n meta_audience_id: metaAudienceId || null,\n name,\n audience_type: \"lookalike\",\n subtype: \"LOOKALIKE\",\n lookalike_spec: { source_id: sourceMetaId, country, ratio },\n }).select().single();\n if (error) return { success: false, error: error.message };\n\n return { success: true, data: { ...data, meta_audience_id: metaAudienceId } };\n }\n\n // ==================================================================\n // LEAD FORMS\n // ==================================================================\n\n case \"create_lead_form\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name required\" };\n\n const int = await getIntegration(sb, storeId);\n if (!int.pageId) return { success: false, error: \"No Facebook Page linked. Required for lead forms.\" };\n\n const questions = (args.questions as Array<Record<string, unknown>>) || [\n { type: \"FULL_NAME\" },\n { type: \"EMAIL\" },\n { type: \"PHONE\" },\n ];\n\n const privacyUrl = (args.privacy_policy_url as string) || \"https://example.com/privacy\";\n\n const metaParams: Record<string, unknown> = {\n name,\n questions: JSON.stringify(questions),\n privacy_policy_url: privacyUrl,\n privacy_policy: JSON.stringify({ url: privacyUrl, link_text: \"Privacy Policy\" }),\n follow_up_action_url: privacyUrl,\n follow_up_action_text: \"Visit Website\",\n };\n\n if (args.context_card) {\n metaParams.context_card = JSON.stringify(args.context_card);\n }\n\n if (args.thank_you_page) {\n metaParams.thank_you_page = JSON.stringify(args.thank_you_page);\n }\n\n const pageToken = await getPageToken(int);\n const result = await graphPost(`${int.pageId}/leadgen_forms`, metaParams, pageToken);\n const metaFormId = result.id as string;\n\n const { data, error } = await sb.from(\"meta_lead_forms\").insert({\n store_id: storeId,\n meta_form_id: metaFormId || null,\n page_id: int.pageId,\n name,\n questions,\n privacy_policy: args.privacy_policy_url ? { url: args.privacy_policy_url } : null,\n context_card: args.context_card || null,\n thank_you_page: args.thank_you_page || null,\n }).select().single();\n if (error) return { success: false, error: error.message };\n\n return { success: true, data: { ...data, meta_form_id: metaFormId } };\n }\n\n case \"list_lead_forms\": {\n const int = await getIntegration(sb, storeId);\n if (!int.pageId) return { success: false, error: \"No Facebook Page linked.\" };\n\n const pageToken = await getPageToken(int);\n const fields = \"id,name,status,questions,privacy_policy_url,created_time,leads_count\";\n const result = await graphGet(`${int.pageId}/leadgen_forms`, fields, pageToken);\n return { success: true, data: result.data || [] };\n }\n\n case \"get_leads\": {\n const formId = (args.form_id || args.lead_form_id) as string;\n if (!formId) return { success: false, error: \"form_id required (Meta lead form ID)\" };\n\n // Resolve local UUID to Meta ID\n let metaFormId = formId;\n if (isLocalId(formId)) {\n const { data } = await sb.from(\"meta_lead_forms\").select(\"meta_form_id\")\n .eq(\"id\", formId).single();\n if (!data?.meta_form_id) return { success: false, error: `Lead form not found: ${formId}` };\n metaFormId = data.meta_form_id;\n }\n\n const int = await getIntegration(sb, storeId);\n const pageToken = await getPageToken(int);\n const fields = \"id,created_time,field_data,ad_id,ad_name,campaign_id,campaign_name\";\n const result = await graphGet(`${metaFormId}/leads`, fields, pageToken);\n return { success: true, data: result.data || [] };\n }\n\n // ==================================================================\n // CONVERSION TRACKING — Pixels & Custom Conversions\n // ==================================================================\n\n case \"list_pixels\": {\n const int = await getIntegration(sb, storeId);\n const fields = \"id,name,code,last_fired_time,is_unavailable,creation_time\";\n const result = await graphGet(`${int.adAccountId}/adspixels`, fields, int.accessToken);\n const pixels = (result.data || []) as Array<Record<string, unknown>>;\n\n // Sync to local DB\n for (const px of pixels) {\n await sb.from(\"meta_pixels\").upsert({\n store_id: storeId,\n meta_pixel_id: px.id as string,\n name: px.name as string,\n code: (px.code as string) || null,\n last_fired_time: (px.last_fired_time as string) || null,\n is_active: !(px.is_unavailable as boolean),\n }, { onConflict: \"meta_pixel_id\", ignoreDuplicates: false }).then(() => {});\n }\n\n return { success: true, count: pixels.length, data: pixels };\n }\n\n case \"create_pixel\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name required\" };\n\n const int = await getIntegration(sb, storeId);\n\n // 1. Create pixel on Meta\n const result = await graphPost(`${int.adAccountId}/adspixels`, { name }, int.accessToken);\n const metaPixelId = result.id as string;\n if (!metaPixelId) return { success: false, error: \"Meta did not return a pixel ID\" };\n\n // 2. Fetch full pixel info (including code snippet)\n const pixelInfo = await graphGet(metaPixelId, \"id,name,code,last_fired_time\", int.accessToken);\n\n // 3. Save to local DB\n const { data, error } = await sb.from(\"meta_pixels\").insert({\n store_id: storeId,\n meta_pixel_id: metaPixelId,\n name,\n code: (pixelInfo.code as string) || null,\n is_active: true,\n }).select().single();\n if (error) return { success: false, error: error.message };\n\n return {\n success: true,\n data: { ...data, meta_pixel_id: metaPixelId, code: pixelInfo.code || null },\n message: `Pixel \"${name}\" created on Meta (ID: ${metaPixelId}). Install the pixel code on your website to start tracking.`,\n };\n }\n\n case \"delete_pixel\": {\n const pixelId = (args.pixel_id || args.id) as string;\n if (!pixelId) return { success: false, error: \"pixel_id required (local UUID or meta_pixel_id)\" };\n\n // Try to find by local UUID first, then by meta_pixel_id\n let row: Record<string, unknown> | null = null;\n const { data: byId } = await sb.from(\"meta_pixels\").select(\"*\").eq(\"id\", pixelId).maybeSingle();\n if (byId) {\n row = byId;\n } else {\n const { data: byMetaId } = await sb.from(\"meta_pixels\").select(\"*\").eq(\"meta_pixel_id\", pixelId).eq(\"store_id\", storeId).maybeSingle();\n row = byMetaId;\n }\n\n if (!row) return { success: false, error: `Pixel not found: ${pixelId}` };\n\n // Delete from local DB (Meta pixels can't be deleted via API, only archived)\n const { error } = await sb.from(\"meta_pixels\").delete().eq(\"id\", row.id as string);\n if (error) return { success: false, error: error.message };\n\n return { success: true, message: `Pixel \"${row.name}\" removed from store.` };\n }\n\n case \"create_custom_conversion\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name required\" };\n\n const int = await getIntegration(sb, storeId);\n const pixelId = (args.pixel_id as string) || int.pixelId;\n if (!pixelId) return { success: false, error: \"pixel_id required (none configured — set one in Settings → Meta Connection)\" };\n\n const metaParams: Record<string, unknown> = {\n name,\n event_source_id: pixelId,\n custom_event_type: (args.custom_event_type as string) || \"OTHER\",\n rule: JSON.stringify(args.rule || { url: { i_contains: \"\" } }),\n };\n if (args.default_conversion_value) {\n metaParams.default_conversion_value = Number(args.default_conversion_value);\n }\n\n const result = await graphPost(`${int.adAccountId}/customconversions`, metaParams, int.accessToken);\n const metaConversionId = result.id as string;\n\n const { data, error } = await sb.from(\"meta_custom_conversions\").insert({\n store_id: storeId,\n meta_conversion_id: metaConversionId || null,\n name,\n pixel_id: pixelId,\n rule: args.rule || null,\n default_conversion_value: args.default_conversion_value ? Number(args.default_conversion_value) : null,\n custom_event_type: (args.custom_event_type as string) || \"OTHER\",\n }).select().single();\n if (error) return { success: false, error: error.message };\n\n return { success: true, data: { ...data, meta_conversion_id: metaConversionId } };\n }\n\n case \"list_custom_conversions\": {\n const int = await getIntegration(sb, storeId);\n const fields = \"id,name,pixel,custom_event_type,rule,default_conversion_value,creation_time,last_fired_time\";\n const result = await graphGet(`${int.adAccountId}/customconversions`, fields, int.accessToken);\n return { success: true, data: result.data || [] };\n }\n\n // ==================================================================\n // AD RULES / AUTOMATION\n // ==================================================================\n\n case \"create_rule\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name required\" };\n\n const int = await getIntegration(sb, storeId);\n\n const evaluationSpec = args.evaluation_spec as Record<string, unknown>;\n const executionSpec = args.execution_spec as Record<string, unknown>;\n if (!evaluationSpec) return { success: false, error: \"evaluation_spec required\" };\n if (!executionSpec) return { success: false, error: \"execution_spec required\" };\n\n const entityType = (args.entity_type as string) || \"CAMPAIGN\";\n const scheduleSpec = (args.schedule_spec as Record<string, unknown>) || { schedule_type: \"SEMI_HOURLY\" };\n\n // Meta requires entity_type as a filter inside evaluation_spec.filters\n const evalSpecFinal: Record<string, unknown> = { ...evaluationSpec };\n delete evalSpecFinal.entity_type; // not valid as root key\n if (!evalSpecFinal.filters) evalSpecFinal.filters = [];\n const filters = evalSpecFinal.filters as Array<Record<string, unknown>>;\n const hasEntityFilter = filters.some((f) => f.field === \"entity_type\");\n if (!hasEntityFilter) {\n filters.push({ field: \"entity_type\", value: entityType, operator: \"EQUAL\" });\n }\n const hasTimePreset = filters.some((f) => f.field === \"time_preset\");\n if (!hasTimePreset) {\n filters.push({ field: \"time_preset\", value: \"LAST_7_DAYS\", operator: \"EQUAL\" });\n }\n\n const metaParams: Record<string, unknown> = {\n name,\n evaluation_spec: JSON.stringify(evalSpecFinal),\n execution_spec: JSON.stringify(executionSpec),\n schedule_spec: JSON.stringify(scheduleSpec),\n };\n\n const result = await graphPost(`${int.adAccountId}/adrules_library`, metaParams, int.accessToken);\n const metaRuleId = result.id as string;\n\n const { data, error } = await sb.from(\"meta_ad_rules\").insert({\n store_id: storeId,\n meta_rule_id: metaRuleId || null,\n name,\n evaluation_spec: evalSpecFinal,\n execution_spec: executionSpec,\n schedule_spec: scheduleSpec,\n entity_type: entityType,\n }).select().single();\n if (error) return { success: false, error: error.message };\n\n return { success: true, data: { ...data, meta_rule_id: metaRuleId } };\n }\n\n case \"list_rules\": {\n const int = await getIntegration(sb, storeId);\n const fields = \"id,name,status,evaluation_spec,execution_spec,schedule_spec,created_time,updated_time\";\n const result = await graphGet(`${int.adAccountId}/adrules_library`, fields, int.accessToken);\n return { success: true, data: result.data || [] };\n }\n\n case \"delete_rule\": {\n const id = (args.rule_id || args.id) as string;\n if (!id) return { success: false, error: \"rule_id required\" };\n\n let metaId = id;\n if (isLocalId(id)) {\n const { data } = await sb.from(\"meta_ad_rules\").select(\"meta_rule_id\")\n .eq(\"id\", id).single();\n if (data?.meta_rule_id) metaId = data.meta_rule_id;\n }\n\n const int = await getIntegration(sb, storeId);\n let metaDeleted = false;\n if (!isLocalId(metaId)) {\n try {\n await graphDelete(metaId, int.accessToken);\n metaDeleted = true;\n } catch { /* continue */ }\n }\n\n // Delete from local DB\n if (isLocalId(id)) {\n await sb.from(\"meta_ad_rules\").delete().eq(\"id\", id);\n } else {\n await sb.from(\"meta_ad_rules\").delete().eq(\"meta_rule_id\", id).eq(\"store_id\", storeId);\n }\n\n return { success: true, data: { deleted: id, meta_deleted: metaDeleted } };\n }\n\n // ==================================================================\n // REACH ESTIMATE / AUDIENCE INSIGHTS\n // ==================================================================\n\n case \"reach_estimate\": {\n const int = await getIntegration(sb, storeId);\n\n const targetingSpec = args.targeting as Record<string, unknown>;\n if (!targetingSpec) return { success: false, error: \"targeting required (targeting spec object)\" };\n\n const resolvedTargeting = await buildTargeting(sb, targetingSpec, int);\n\n // Meta v21 uses delivery_estimate with GET, targeting_spec as query param\n const extra = `targeting_spec=${encodeURIComponent(JSON.stringify(resolvedTargeting))}&optimization_goal=${encodeURIComponent((args.optimize_for as string) || \"REACH\")}`;\n const result = await graphGet(\n `${int.adAccountId}/delivery_estimate`,\n \"daily_outcomes_curve,estimate_dau,estimate_ready\",\n int.accessToken,\n extra,\n );\n\n return { success: true, data: result.data || result };\n }\n\n case \"audience_insights\": {\n const id = (args.ad_set_id || args.id) as string;\n if (!id) return { success: false, error: \"ad_set_id required\" };\n\n const { data: adSet } = await sb.from(\"meta_ad_sets\").select(\"meta_ad_set_id, targeting\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n if (!adSet) return { success: false, error: `Ad set not found: ${id}` };\n\n const int = await getIntegration(sb, storeId);\n\n // If published, get delivery insights\n if (!isLocalId(adSet.meta_ad_set_id)) {\n const fields = \"reach,impressions,frequency,actions,age_targeting,gender_targeting\";\n const result = await graphGet(`${adSet.meta_ad_set_id}/insights`,\n fields, int.accessToken, \"breakdowns=age,gender&date_preset=last_30d\");\n return { success: true, data: result.data || [] };\n }\n\n // If draft, estimate reach\n const targeting = adSet.targeting\n ? (typeof adSet.targeting === \"string\" ? JSON.parse(adSet.targeting) : adSet.targeting)\n : null;\n if (!targeting) return { success: false, error: \"No targeting configured on this ad set\" };\n\n const resolvedTargeting = await buildTargeting(sb, targeting, int);\n const extra = `targeting_spec=${encodeURIComponent(JSON.stringify(resolvedTargeting))}&optimization_goal=REACH`;\n const estimate = await graphGet(\n `${int.adAccountId}/delivery_estimate`,\n \"daily_outcomes_curve,estimate_dau,estimate_ready\",\n int.accessToken,\n extra,\n );\n\n return { success: true, data: { type: \"estimate\", ...(Array.isArray(estimate.data) ? estimate.data[0] : estimate) as Record<string, unknown> } };\n }\n\n // ==================================================================\n // SEARCH TARGETING — find valid Meta interest/location IDs\n // ==================================================================\n\n case \"search_targeting\": {\n const query = args.query as string;\n const type = (args.targeting_type as string) || \"adinterest\";\n if (!query) return { success: false, error: \"query required (search term for interests/locations)\" };\n\n const int = await getIntegration(sb, storeId);\n const validTypes = [\"adinterest\", \"adgeolocation\", \"adlocale\", \"adTargetingCategory\"];\n const searchType = validTypes.includes(type) ? type : \"adinterest\";\n\n const url = `${META_BASE}/search?type=${searchType}&q=${enc(query)}&access_token=${enc(int.accessToken)}&limit=25`;\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n return { success: false, error: parseMetaError(body, \"search\", res.status) };\n }\n const json = await res.json() as Record<string, unknown>;\n return { success: true, data: json.data || [] };\n }\n\n // ==================================================================\n // DEFAULT\n // ==================================================================\n\n default:\n return {\n success: false,\n error: `Unknown action: ${action}. Valid: create_campaign, create_ad_set, create_ad, create_full, list_campaigns, list_ad_sets, list_ads, get_campaign, get_ad_set, get_ad, update_campaign, update_ad_set, update_ad, delete, publish, sync, search_targeting, insights_breakdown, ad_preview, create_audience, list_audiences, get_audience, delete_audience, create_lookalike, create_lead_form, list_lead_forms, get_leads, list_pixels, create_custom_conversion, list_custom_conversions, create_rule, list_rules, delete_rule, reach_estimate, audience_insights.`,\n };\n }\n } catch (err) {\n return { success: false, error: err instanceof Error ? err.message : String(err) };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"meta-ads.js","names":["queueSpan","auditRowToSpan","META_API_VERSION","META_BASE","VALID_GOALS","OUTCOME_AWARENESS","OUTCOME_TRAFFIC","OUTCOME_ENGAGEMENT","OUTCOME_LEADS","OUTCOME_APP_PROMOTION","OUTCOME_SALES","PRODUCT_CATALOG_SALES","defaultGoal","objective","validateGoal","goal","valid","includes","billingEvent","metaStatus","status","isLocalId","id","test","enc","v","encodeURIComponent","formBody","params","token","parts","k","Object","entries","undefined","push","JSON","stringify","String","join","parseMetaError","body","path","json","parse","err","error","userMsg","error_user_msg","message","code","slice","graphGet","fields","extra","url","res","fetch","ok","text","Error","page1","Array","isArray","data","all","next","paging","pages","r","j","graphPost","method","headers","graphDelete","getIntegration","sb","storeId","from","select","eq","limit","single","access_token_encrypted","ad_account_id","token_expires_at","expiresAt","Date","toISOString","accessToken","adAccountId","businessId","business_id","pageId","page_id","pixelId","pixel_id","instagramAccountId","instagram_business_id","tokenExpiresAt","pageTokenCache","Map","getPageToken","int","cacheKey","cached","get","now","fetchedAt","result","pageToken","access_token","set","size","delete","keys","resolveAudienceIds","ids","length","in","filter","meta_audience_id","map","resolveLocations","locations","geo","countries","regions","cities","zips","loc","trimmed","trim","toUpperCase","results","key","best","type","radius","distance_unit","geo_markets","resolveInterests","interests","resolved","term","name","buildTargeting","raw","fallback","geo_locations","targeting_automation","advantage_audience","t","simpleLocs","locs","locations_v2","markets","split","s","age_min","Math","max","Number","age_max","min","genders","simpleInts","flexible_spec","ints","interests_v2","i","custom_audiences","excluded_custom_audiences","publisher_platforms","facebook_positions","instagram_positions","audience_network_positions","messenger_positions","uploadImage","images","first","values","hash","uploadVideo","videoUrl","videoId","errors","e","downloadRes","blob","form","FormData","append","Promise","resolve","setTimeout","phase","processing_phase","buildStorySpec","creative","imageHash","metaVideoId","carouselHashes","childAttachments","card","child","link_url","link","headline","description","video_id","image_hash","image_url","picture","call_to_action","value","linkData","child_attachments","multi_share_optimized","link_data","isVideo","object_type","vid","title","video_data","publishCampaign","campaignId","c","meta_campaign_id","metaCampaignId","special_ad_categories","is_cbo","is_adset_budget_sharing_enabled","daily_budget","round","lifetime_budget","campaign_bid_strategy","bid_strategy","start_time","stop_time","metaId","update","meta_account_id","last_synced_at","publishAdSet","adSetId","as_","meta_ad_set_id","metaAdSetId","campaignUUID","camp","pub","isCBO","campaignHasCBO","mc","optGoal","optimization_goal","targetingSpec","targeting","pp","fp","ip","anp","mp","campaign_id","billing_event","bs","bid_amount","end_time","adset_schedule","schedule","pacing_type","frequency_control_specs","fcs","promoted_object","po","is_dynamic_creative","publishAd","adId","ad","meta_ad_id","metaAdId","creativeId","creative_id","adSetUUID","adSet","isCarousel","carousel_cards","isDynamic","asset_feed_spec","wantsVideo","video_url","videoWarning","cardHash","cardVideoId","oss","crResult","object_story_spec","adResult","adset_id","spec","img","crParams","lead_form_id","ossObj","lead_gen_form_id","warning","handleMetaAds","args","success","action","row","store_id","crypto","randomUUID","insert","ad_set_id","hasVideo","wantPublish","auto_publish","campRow","e1","adSetName","ad_set_name","adSetRow","e2","adName","ad_name","e3","pubResult","finalCamp","finalAdSet","finalAd","published","campaign","ad_set","meta_ids","ad_id","pubErr","publish_error","hint","q","order","ascending","count","sets","ad_sets","ads","u","existing","prev","table","metaIdCol","record","metaDeleted","console","warn","deleted","meta_deleted","resource_type","resource_id","details","source","severity","service_name","span_kind","status_code","stats","effective_status","budget_remaining","breakdowns","ins","raw_insights","d","spend","impressions","clicks","reach","cpc","cpm","ctr","refreshed","datePreset","date_preset","format","ad_format","subtype","metaParams","customer_file_source","pixelForAudience","rule","inclusions","operator","rules","event_sources","retention_seconds","retention_days","prefill","metaAudienceId","audience_type","audiences","aud","upsert","approximate_count","updated_at","onConflict","ignoreDuplicates","then","audience_id","sourceId","source_audience_id","source_id","country","ratio","sourceMetaId","origin_audience_id","lookalike_spec","questions","privacyUrl","privacy_policy_url","privacy_policy","link_text","follow_up_action_url","follow_up_action_text","context_card","thank_you_page","metaFormId","meta_form_id","formId","form_id","pixels","px","meta_pixel_id","last_fired_time","is_active","is_unavailable","metaPixelId","pixelInfo","byId","maybeSingle","byMetaId","event_source_id","custom_event_type","i_contains","default_conversion_value","metaConversionId","meta_conversion_id","evaluationSpec","evaluation_spec","executionSpec","execution_spec","entityType","entity_type","scheduleSpec","schedule_spec","schedule_type","evalSpecFinal","filters","hasEntityFilter","some","f","field","hasTimePreset","metaRuleId","meta_rule_id","rule_id","resolvedTargeting","optimize_for","estimate","query","targeting_type","validTypes","searchType","endpoint","URLSearchParams","vertical","toString","metaCatalogId","meta_catalog_id","sync_status","catalogId","catalog_id","catalog","domainRow","domain","products","items","p","vars","product_variations","price","regular_price","retailer_id","availability","stock_status","condition","toFixed","slug","image_link","featured_image","brand","synced","batch","requests","product_count","is_any","meta_product_set_id","elements","bodyElements","el","element_type","font_size","photo","video","button","product_set","product_set_id","body_element_ids","is_published","meta_canvas_id","events","conversions","totalRevenue","reduce","attributed_revenue","byChannel","ch","channel","revenue","total_revenue","parseFloat","avg_order_value","roas","by_channel"],"sources":["../../../src/server/handlers/meta-ads.ts"],"sourcesContent":["/**\n * Meta Ads Handler — campaign/ad set/ad CRUD + publish to Meta Graph API.\n *\n * V2 features added:\n * - Reporting breakdowns (age, gender, placement, device, region)\n * - Ad preview URLs\n * - Custom audiences (website, customer list, lookalike)\n * - Lead forms (instant form creation + lead retrieval)\n * - Conversion tracking (pixels, custom conversions)\n * - Ad rules / automation (auto-pause, auto-budget)\n * - Ad scheduling / dayparting\n * - Placement control (Feed, Stories, Reels, etc.)\n * - Frequency capping\n * - Campaign Budget Optimization (CBO)\n * - Carousel ads (multi-card)\n * - Dynamic creative (multi-asset optimization)\n * - Reach estimation / audience insights\n *\n * Lessons baked in from live testing against Meta Marketing API v21:\n * - Budget lives on ad sets, NOT campaigns (unless CBO is enabled)\n * - is_adset_budget_sharing_enabled: false required on campaign publish (non-CBO)\n * - bid_strategy always required on ad set publish (even LOWEST_COST)\n * - targeting_automation.advantage_audience: 0 required (Advantage+ flag)\n * - DRAFT status invalid for Meta — always mapped to PAUSED\n * - special_ad_categories only used at publish time (not a DB column)\n * - Video URLs uploaded to Meta during publish → video_id\n * - Image URLs uploaded to Meta during publish → image_hash\n */\n\nimport type { SupabaseClient } from \"@supabase/supabase-js\";\nimport { queueSpan, auditRowToSpan } from \"../lib/clickhouse-buffer.js\";\n\n// ============================================================================\n// CONSTANTS\n// ============================================================================\n\nconst META_API_VERSION = \"v21.0\";\nconst META_BASE = `https://graph.facebook.com/${META_API_VERSION}`;\n\n/** Valid optimization goals per campaign objective (Meta Marketing API v21). */\nconst VALID_GOALS: Record<string, string[]> = {\n OUTCOME_AWARENESS: [\"REACH\", \"IMPRESSIONS\", \"AD_RECALL_LIFT\", \"THRUPLAY\"],\n OUTCOME_TRAFFIC: [\"LINK_CLICKS\", \"LANDING_PAGE_VIEWS\", \"REACH\", \"IMPRESSIONS\"],\n OUTCOME_ENGAGEMENT: [\"THRUPLAY\", \"POST_ENGAGEMENT\", \"VIDEO_VIEWS\", \"REACH\"],\n OUTCOME_LEADS: [\"LEAD_GENERATION\", \"LINK_CLICKS\", \"QUALITY_LEAD\", \"REACH\"],\n OUTCOME_APP_PROMOTION: [\"APP_INSTALLS\", \"LINK_CLICKS\", \"APP_EVENTS\", \"VALUE\"],\n OUTCOME_SALES: [\"OFFSITE_CONVERSIONS\", \"LINK_CLICKS\", \"VALUE\", \"REACH\"],\n PRODUCT_CATALOG_SALES: [\"OFFSITE_CONVERSIONS\", \"LINK_CLICKS\", \"VALUE\", \"REACH\"],\n};\n\n/** Default optimization goal per objective. */\nfunction defaultGoal(objective: string): string {\n return VALID_GOALS[objective]?.[0] ?? \"LINK_CLICKS\";\n}\n\n/** Validate goal against objective, falling back to the best default. */\nfunction validateGoal(goal: string, objective: string): string {\n const valid = VALID_GOALS[objective];\n if (!valid) return goal;\n return valid.includes(goal) ? goal : valid[0];\n}\n\n/** Billing event depends on optimization goal. */\nfunction billingEvent(goal: string): string {\n return goal === \"THRUPLAY\" ? \"THRUPLAY\" : \"IMPRESSIONS\";\n}\n\n/** Map any status to Meta-valid status. Meta only accepts ACTIVE/PAUSED/DELETED/ARCHIVED. */\nfunction metaStatus(status?: string | null): string {\n if (!status || status === \"DRAFT\") return \"PAUSED\";\n return status;\n}\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\ninterface MetaIntegration {\n accessToken: string;\n adAccountId: string;\n businessId: string | null;\n pageId: string | null;\n pixelId: string | null;\n instagramAccountId: string | null;\n tokenExpiresAt: string | null;\n}\n\ninterface Creative {\n object_type?: string;\n title?: string;\n body?: string;\n image_url?: string;\n video_url?: string;\n thumbnail_url?: string;\n call_to_action?: string;\n link_url?: string;\n video_id?: string;\n page_id?: string;\n carousel_cards?: CarouselCard[];\n asset_feed_spec?: Record<string, unknown>;\n lead_form_id?: string;\n}\n\ninterface CarouselCard {\n headline?: string;\n description?: string;\n image_url?: string;\n video_url?: string;\n link_url?: string;\n call_to_action?: string;\n}\n\n// ============================================================================\n// GRAPH API — low-level Meta helpers\n// ============================================================================\n\n/** Real Meta IDs are purely numeric. Local/Supabase IDs contain non-digit chars. */\nfunction isLocalId(id: string | null | undefined): boolean {\n if (!id) return true;\n return /[^0-9]/.test(id);\n}\n\n/** RFC 3986 percent-encode. */\nfunction enc(v: string): string {\n return encodeURIComponent(v);\n}\n\n/** Build form-encoded body from params object + access_token. */\nfunction formBody(params: Record<string, unknown>, token: string): string {\n const parts: string[] = [`access_token=${enc(token)}`];\n for (const [k, v] of Object.entries(params)) {\n if (v === null || v === undefined) continue;\n parts.push(`${k}=${enc(typeof v === \"object\" ? JSON.stringify(v) : String(v))}`);\n }\n return parts.join(\"&\");\n}\n\n/**\n * Parse Meta API error responses into human-readable messages.\n * Extracts error_user_msg when available (much better than raw JSON).\n */\nfunction parseMetaError(body: string, path: string, status: number): string {\n try {\n const json = JSON.parse(body);\n const err = json.error || {};\n const userMsg = err.error_user_msg || err.message || \"Unknown error\";\n const code = err.code ? ` (code ${err.code})` : \"\";\n return `Meta API ${path}: ${userMsg}${code}`;\n } catch {\n return `Meta API ${path}: ${status} — ${body.slice(0, 300)}`;\n }\n}\n\n/** GET from Meta Graph API with auto-pagination. */\nasync function graphGet(\n path: string,\n fields: string,\n token: string,\n extra?: string,\n): Promise<Record<string, unknown>> {\n let url = `${META_BASE}/${path}?fields=${fields}&access_token=${enc(token)}&limit=200`;\n if (extra) url += `&${extra}`;\n\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n throw new Error(parseMetaError(body, path, res.status));\n }\n const page1 = (await res.json()) as Record<string, unknown>;\n\n // Single-object response — return as-is\n if (!Array.isArray(page1.data)) return page1;\n\n // List response — paginate up to 20 pages\n const all = [...(page1.data as Record<string, unknown>[])];\n let next = (page1.paging as Record<string, unknown>)?.next as string | undefined;\n let pages = 1;\n while (next && pages < 20) {\n const r = await fetch(next);\n if (!r.ok) break;\n const j = (await r.json()) as Record<string, unknown>;\n if (Array.isArray(j.data)) all.push(...(j.data as Record<string, unknown>[]));\n next = (j.paging as Record<string, unknown>)?.next as string | undefined;\n pages++;\n }\n return { data: all };\n}\n\n/** POST to Meta Graph API with form encoding. */\nasync function graphPost(\n path: string,\n params: Record<string, unknown>,\n token: string,\n): Promise<Record<string, unknown>> {\n const res = await fetch(`${META_BASE}/${path}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: formBody(params, token),\n });\n if (!res.ok) {\n const body = await res.text();\n throw new Error(parseMetaError(body, path, res.status));\n }\n return (await res.json()) as Record<string, unknown>;\n}\n\n/** DELETE from Meta Graph API. */\nasync function graphDelete(\n path: string,\n token: string,\n): Promise<Record<string, unknown>> {\n const res = await fetch(`${META_BASE}/${path}?access_token=${enc(token)}`, {\n method: \"DELETE\",\n });\n if (!res.ok) {\n const body = await res.text();\n throw new Error(parseMetaError(body, path, res.status));\n }\n return (await res.json()) as Record<string, unknown>;\n}\n\n// ============================================================================\n// CREDENTIALS\n// ============================================================================\n\nasync function getIntegration(sb: SupabaseClient, storeId: string): Promise<MetaIntegration> {\n const { data, error } = await sb\n .from(\"meta_integrations\")\n .select(\"access_token_encrypted, ad_account_id, business_id, page_id, pixel_id, instagram_business_id, token_expires_at, status\")\n .eq(\"store_id\", storeId)\n .limit(1)\n .single();\n if (error || !data?.access_token_encrypted || !data?.ad_account_id) {\n throw new Error(\"Meta not connected. Go to Settings → Meta Connection to link your account.\");\n }\n // Warn if token is expired (but still return it — some operations may work with refresh)\n if (data.token_expires_at) {\n const expiresAt = new Date(data.token_expires_at);\n if (expiresAt < new Date()) {\n throw new Error(`Meta access token expired at ${expiresAt.toISOString()}. Reconnect in the CRM app (Settings → Meta Connection).`);\n }\n }\n return {\n accessToken: data.access_token_encrypted,\n adAccountId: data.ad_account_id,\n businessId: data.business_id || null,\n pageId: data.page_id || null,\n pixelId: data.pixel_id || null,\n instagramAccountId: data.instagram_business_id || null,\n tokenExpiresAt: data.token_expires_at || null,\n };\n}\n\n/** Page Access Token cache (user token → page token). Avoids re-fetching every call. */\nconst pageTokenCache = new Map<string, { token: string; fetchedAt: number }>();\n\n/**\n * Exchange user access token for a Page Access Token.\n * Required for lead forms, page-level APIs, and some creative operations.\n * Cached for 5 minutes.\n */\nasync function getPageToken(int: MetaIntegration): Promise<string> {\n if (!int.pageId) throw new Error(\"No Facebook Page linked. Add page_id in Meta Connection settings.\");\n\n const cacheKey = `${int.pageId}:${int.accessToken.slice(-10)}`;\n const cached = pageTokenCache.get(cacheKey);\n if (cached && Date.now() - cached.fetchedAt < 300_000) return cached.token;\n\n const result = await graphGet(int.pageId, \"access_token\", int.accessToken);\n const pageToken = result.access_token as string;\n if (!pageToken) throw new Error(\"Could not get Page Access Token. Ensure your token has pages_manage_ads permission.\");\n\n pageTokenCache.set(cacheKey, { token: pageToken, fetchedAt: Date.now() });\n // Evict old entries\n if (pageTokenCache.size > 20) pageTokenCache.delete([...pageTokenCache.keys()][0]);\n\n return pageToken;\n}\n\n// ============================================================================\n// TARGETING BUILDER — smart resolution from natural language\n// ============================================================================\n\nasync function resolveAudienceIds(\n sb: SupabaseClient,\n ids: string[],\n): Promise<Array<{ id: string }>> {\n if (!ids.length) return [];\n const { data } = await sb\n .from(\"meta_audiences\")\n .select(\"id, meta_audience_id\")\n .in(\"id\", ids);\n return (data || [])\n .filter((r: { meta_audience_id?: string }) => r.meta_audience_id)\n .map((r: { meta_audience_id: string }) => ({ id: r.meta_audience_id }));\n}\n\n/**\n * Resolve natural-language location strings to Meta geo_locations.\n * Accepts: [\"Charlotte, NC\", \"US\", \"New York\", \"90210\"]\n * Returns: { countries: [...], cities: [...], regions: [...], zips: [...] }\n */\nasync function resolveLocations(\n int: MetaIntegration,\n locations: string[],\n): Promise<Record<string, unknown>> {\n const geo: Record<string, unknown> = {};\n const countries: string[] = [];\n const regions: Array<{ key: string }> = [];\n const cities: Array<{ key: string; radius?: number; distance_unit?: string }> = [];\n const zips: Array<{ key: string }> = [];\n\n for (const loc of locations) {\n const trimmed = loc.trim();\n if (!trimmed) continue;\n\n // 2-letter country code\n if (/^[A-Z]{2}$/i.test(trimmed)) {\n countries.push(trimmed.toUpperCase());\n continue;\n }\n\n // ZIP code (5-digit US)\n if (/^\\d{5}$/.test(trimmed)) {\n try {\n const url = `${META_BASE}/search?type=adgeolocation&q=${enc(trimmed)}&location_types=[\"zip\"]&access_token=${enc(int.accessToken)}&limit=1`;\n const res = await fetch(url);\n if (res.ok) {\n const json = (await res.json()) as Record<string, unknown>;\n const results = json.data as Array<Record<string, unknown>>;\n if (results?.[0]?.key) {\n zips.push({ key: results[0].key as string });\n continue;\n }\n }\n } catch { /* fall through to general search */ }\n zips.push({ key: trimmed });\n continue;\n }\n\n // General search — let Meta figure out if it's a city, region, etc.\n try {\n const url = `${META_BASE}/search?type=adgeolocation&q=${enc(trimmed)}&access_token=${enc(int.accessToken)}&limit=3`;\n const res = await fetch(url);\n if (!res.ok) continue;\n const json = (await res.json()) as Record<string, unknown>;\n const results = json.data as Array<Record<string, unknown>>;\n if (!results?.length) continue;\n\n const best = results[0];\n const key = best.key as string;\n const type = best.type as string;\n\n switch (type) {\n case \"country\": countries.push(key); break;\n case \"region\": regions.push({ key }); break;\n case \"city\": cities.push({ key, radius: 25, distance_unit: \"mile\" }); break;\n case \"zip\": zips.push({ key }); break;\n case \"geo_market\": (geo.geo_markets as Array<{ key: string }> || (geo.geo_markets = [])); (geo.geo_markets as Array<{ key: string }>).push({ key }); break;\n default:\n if (key) cities.push({ key, radius: 25, distance_unit: \"mile\" });\n }\n } catch { /* skip unresolvable locations */ }\n }\n\n if (countries.length) geo.countries = countries;\n if (regions.length) geo.regions = regions;\n if (cities.length) geo.cities = cities;\n if (zips.length) geo.zips = zips;\n\n // Fallback: if nothing resolved, default to US\n if (!Object.keys(geo).length) geo.countries = [\"US\"];\n\n return geo;\n}\n\n/**\n * Resolve natural-language interest strings to Meta interest IDs.\n * Accepts: [\"streetwear\", \"hip hop music\", \"cannabis\"]\n */\nasync function resolveInterests(\n int: MetaIntegration,\n interests: string[],\n): Promise<Array<{ id: string; name: string }>> {\n const resolved: Array<{ id: string; name: string }> = [];\n\n for (const term of interests) {\n const trimmed = term.trim();\n if (!trimmed) continue;\n\n try {\n const url = `${META_BASE}/search?type=adinterest&q=${enc(trimmed)}&access_token=${enc(int.accessToken)}&limit=3`;\n const res = await fetch(url);\n if (!res.ok) continue;\n const json = (await res.json()) as Record<string, unknown>;\n const results = json.data as Array<Record<string, unknown>>;\n\n if (results?.length) {\n const best = results[0];\n if (best.id && best.name) {\n resolved.push({ id: String(best.id), name: best.name as string });\n }\n }\n } catch { /* skip unresolvable interests */ }\n }\n\n return resolved;\n}\n\n/**\n * Convert targeting args → Meta API targeting spec.\n * Accepts THREE formats (auto-detected).\n */\nasync function buildTargeting(\n sb: SupabaseClient,\n raw: Record<string, unknown> | string | null | undefined,\n int?: MetaIntegration | null,\n): Promise<Record<string, unknown>> {\n const fallback = {\n geo_locations: { countries: [\"US\"] },\n targeting_automation: { advantage_audience: 0 },\n };\n\n let t: Record<string, unknown>;\n if (!raw) return fallback;\n if (typeof raw === \"string\") {\n try { t = JSON.parse(raw); } catch { return fallback; }\n } else {\n t = raw;\n }\n\n // Already in Meta format (synced from Meta) — ensure advantage_audience is set\n if (t.geo_locations) {\n if (!t.targeting_automation) t.targeting_automation = { advantage_audience: 0 };\n return t;\n }\n\n const result: Record<string, unknown> = {};\n\n // === LOCATIONS ===\n const simpleLocs = t.locations as string[] | undefined;\n if (Array.isArray(simpleLocs) && simpleLocs.length > 0 && typeof simpleLocs[0] === \"string\" && int) {\n result.geo_locations = await resolveLocations(int, simpleLocs);\n } else {\n const locs = t.locations_v2 as Array<{ key: string; type: string }> | undefined;\n if (Array.isArray(locs) && locs.length > 0) {\n const geo: Record<string, unknown> = {};\n const countries: string[] = [];\n const regions: Array<{ key: string }> = [];\n const cities: Array<{ key: string }> = [];\n const zips: Array<{ key: string }> = [];\n const markets: Array<{ key: string }> = [];\n\n for (const loc of locs) {\n if (!loc.key || !loc.type) continue;\n switch (loc.type) {\n case \"country\": countries.push(loc.key); break;\n case \"region\": regions.push({ key: loc.key }); break;\n case \"city\": cities.push({ key: loc.key }); break;\n case \"zip\": zips.push({ key: loc.key }); break;\n case \"geo_market\": markets.push({ key: loc.key }); break;\n default: countries.push(loc.key);\n }\n }\n if (countries.length) geo.countries = countries;\n if (regions.length) geo.regions = regions;\n if (cities.length) geo.cities = cities;\n if (zips.length) geo.zips = zips;\n if (markets.length) geo.geo_markets = markets;\n result.geo_locations = geo;\n } else if (typeof t.locations === \"string\" && t.locations) {\n result.geo_locations = { countries: (t.locations as string).split(\",\").map(s => s.trim().toUpperCase()) };\n } else {\n result.geo_locations = { countries: [\"US\"] };\n }\n }\n\n // === DEMOGRAPHICS ===\n if (t.age_min != null) result.age_min = Math.max(Number(t.age_min) || 18, 13);\n if (t.age_max != null) result.age_max = Math.min(Number(t.age_max) || 65, 65);\n if (t.genders === \"male\") result.genders = [1];\n else if (t.genders === \"female\") result.genders = [2];\n\n // === INTERESTS ===\n const simpleInts = t.interests as string[] | undefined;\n if (Array.isArray(simpleInts) && simpleInts.length > 0 && typeof simpleInts[0] === \"string\" && int) {\n const resolved = await resolveInterests(int, simpleInts);\n if (resolved.length) result.flexible_spec = [{ interests: resolved }];\n } else {\n const ints = t.interests_v2 as Array<{ id?: string; name?: string }> | undefined;\n if (Array.isArray(ints) && ints.length > 0) {\n const valid = ints.filter(i => i.id && i.name).map(i => ({ id: i.id, name: i.name }));\n if (valid.length) result.flexible_spec = [{ interests: valid }];\n }\n }\n\n // === CUSTOM AUDIENCES ===\n if (typeof t.custom_audiences === \"string\" && t.custom_audiences) {\n const resolved = await resolveAudienceIds(sb, t.custom_audiences.split(\",\").map(s => s.trim()));\n if (resolved.length) result.custom_audiences = resolved;\n } else if (Array.isArray(t.custom_audiences)) {\n result.custom_audiences = t.custom_audiences;\n }\n\n // === EXCLUDED AUDIENCES ===\n if (typeof t.excluded_custom_audiences === \"string\" && t.excluded_custom_audiences) {\n const resolved = await resolveAudienceIds(sb, t.excluded_custom_audiences.split(\",\").map(s => s.trim()));\n if (resolved.length) result.excluded_custom_audiences = resolved;\n }\n\n // === Required: Advantage audience flag ===\n result.targeting_automation = { advantage_audience: 0 };\n\n // === PUBLISHER PLATFORMS (placement control) ===\n if (Array.isArray(t.publisher_platforms)) {\n result.publisher_platforms = t.publisher_platforms;\n }\n if (Array.isArray(t.facebook_positions)) {\n result.facebook_positions = t.facebook_positions;\n }\n if (Array.isArray(t.instagram_positions)) {\n result.instagram_positions = t.instagram_positions;\n }\n if (Array.isArray(t.audience_network_positions)) {\n result.audience_network_positions = t.audience_network_positions;\n }\n if (Array.isArray(t.messenger_positions)) {\n result.messenger_positions = t.messenger_positions;\n }\n\n return result;\n}\n\n// ============================================================================\n// MEDIA UPLOAD\n// ============================================================================\n\n/** Upload image URL to Meta → returns image_hash. */\nasync function uploadImage(int: MetaIntegration, url: string): Promise<string | null> {\n try {\n const r = await graphPost(`${int.adAccountId}/adimages`, { url }, int.accessToken);\n const images = r.images as Record<string, Record<string, string>> | undefined;\n if (images) {\n const first = Object.values(images)[0];\n if (first?.hash) return first.hash;\n }\n return null;\n } catch {\n return null;\n }\n}\n\n/**\n * Upload video URL to Meta → returns video_id.\n * Meta's async video upload: POST the URL, poll until ready.\n */\nasync function uploadVideo(int: MetaIntegration, videoUrl: string): Promise<string> {\n let videoId: string | null = null;\n const errors: string[] = [];\n\n // --- Strategy 1: file_url via query params ---\n try {\n const url = `${META_BASE}/${int.adAccountId}/advideos?access_token=${enc(int.accessToken)}&file_url=${enc(videoUrl)}`;\n const res = await fetch(url, { method: \"POST\" });\n if (res.ok) {\n const json = (await res.json()) as Record<string, unknown>;\n videoId = json.id as string;\n } else {\n errors.push(`advideos/file_url: ${(await res.text()).slice(0, 200)}`);\n }\n } catch (e) {\n errors.push(`advideos/file_url: ${e instanceof Error ? e.message : String(e)}`);\n }\n\n // --- Strategy 2: binary upload via FormData ---\n if (!videoId) {\n try {\n const downloadRes = await fetch(videoUrl);\n if (!downloadRes.ok) throw new Error(`download failed: ${downloadRes.status}`);\n const blob = await downloadRes.blob();\n\n const form = new FormData();\n form.append(\"access_token\", int.accessToken);\n form.append(\"source\", blob, \"video.mp4\");\n\n const res = await fetch(`${META_BASE}/${int.adAccountId}/advideos`, { method: \"POST\", body: form });\n if (res.ok) {\n const json = (await res.json()) as Record<string, unknown>;\n videoId = json.id as string;\n } else {\n errors.push(`advideos/binary: ${(await res.text()).slice(0, 200)}`);\n }\n } catch (e) {\n errors.push(`advideos/binary: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n\n // --- Strategy 3: Page video upload ---\n if (!videoId && int.pageId) {\n try {\n const downloadRes = await fetch(videoUrl);\n if (!downloadRes.ok) throw new Error(`download failed: ${downloadRes.status}`);\n const blob = await downloadRes.blob();\n\n const form = new FormData();\n form.append(\"access_token\", int.accessToken);\n form.append(\"source\", blob, \"video.mp4\");\n form.append(\"published\", \"false\");\n form.append(\"no_story\", \"true\");\n\n const res = await fetch(`${META_BASE}/${int.pageId}/videos`, { method: \"POST\", body: form });\n if (res.ok) {\n const json = (await res.json()) as Record<string, unknown>;\n videoId = json.id as string;\n } else {\n errors.push(`page/videos: ${(await res.text()).slice(0, 200)}`);\n }\n } catch (e) {\n errors.push(`page/videos: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n\n if (!videoId) {\n throw new Error(`Video upload failed. Tried 3 strategies:\\n${errors.join(\"\\n\")}`);\n }\n\n // Poll for processing (up to 90s)\n for (let i = 0; i < 18; i++) {\n await new Promise(resolve => setTimeout(resolve, 5000));\n try {\n const s = await graphGet(videoId, \"status\", int.accessToken);\n const phase = (s.status as Record<string, unknown>)?.processing_phase as string | undefined;\n if (phase === \"ready\" || phase === \"complete\") return videoId;\n if (phase === \"error\") throw new Error(`Meta video processing failed for ${videoId}`);\n } catch (e) {\n if (e instanceof Error && e.message.includes(\"processing failed\")) throw e;\n }\n }\n return videoId;\n}\n\n// ============================================================================\n// OBJECT STORY SPEC\n// ============================================================================\n\nfunction buildStorySpec(\n creative: Creative | null,\n pageId: string,\n imageHash?: string | null,\n metaVideoId?: string | null,\n carouselHashes?: Array<{ hash?: string | null; videoId?: string | null; card: CarouselCard }>,\n): Record<string, unknown> {\n // --- CAROUSEL ---\n if (carouselHashes && carouselHashes.length > 0) {\n const childAttachments = carouselHashes.map(({ hash, videoId, card }) => {\n const child: Record<string, unknown> = {};\n if (card.link_url) child.link = card.link_url;\n if (card.headline) child.name = card.headline;\n if (card.description) child.description = card.description;\n if (videoId) {\n child.video_id = videoId;\n if (hash) child.image_hash = hash;\n } else if (hash) {\n child.image_hash = hash;\n } else if (card.image_url) {\n child.picture = card.image_url;\n }\n if (card.call_to_action && card.link_url) {\n child.call_to_action = { type: card.call_to_action, value: { link: card.link_url } };\n }\n return child;\n });\n\n const linkData: Record<string, unknown> = {\n child_attachments: childAttachments,\n multi_share_optimized: true,\n };\n if (creative?.link_url) linkData.link = creative.link_url;\n if (creative?.body) linkData.message = creative.body;\n\n return { page_id: pageId, link_data: linkData };\n }\n\n const isVideo = metaVideoId || creative?.object_type?.toUpperCase() === \"VIDEO\";\n\n if (isVideo && (metaVideoId || creative?.video_id)) {\n const vid: Record<string, unknown> = { video_id: metaVideoId || creative!.video_id };\n if (creative?.body) vid.message = creative.body;\n if (creative?.title) vid.title = creative.title;\n if (imageHash) vid.image_hash = imageHash;\n else if (creative?.image_url) vid.image_url = creative.image_url;\n if (creative?.call_to_action && creative?.link_url) {\n vid.call_to_action = { type: creative.call_to_action, value: { link: creative.link_url } };\n }\n return { page_id: pageId, video_data: vid };\n }\n\n const link: Record<string, unknown> = {};\n if (creative?.link_url) link.link = creative.link_url;\n if (creative?.body) link.message = creative.body;\n if (creative?.title) link.name = creative.title;\n if (imageHash) link.image_hash = imageHash;\n else if (creative?.image_url) link.picture = creative.image_url;\n if (creative?.call_to_action && creative?.link_url) {\n link.call_to_action = { type: creative.call_to_action, value: { link: creative.link_url } };\n }\n return { page_id: pageId, link_data: link };\n}\n\n// ============================================================================\n// PUBLISH PIPELINE\n// ============================================================================\n\nasync function publishCampaign(\n sb: SupabaseClient,\n storeId: string,\n campaignId: string,\n): Promise<{ metaCampaignId: string }> {\n const { data: c, error } = await sb\n .from(\"meta_campaigns\").select(\"*\").eq(\"id\", campaignId).single();\n if (error || !c) throw new Error(`Campaign not found: ${campaignId}`);\n\n // Already published — skip\n if (!isLocalId(c.meta_campaign_id)) return { metaCampaignId: c.meta_campaign_id };\n\n const int = await getIntegration(sb, storeId);\n\n const params: Record<string, unknown> = {\n name: c.name || \"Campaign\",\n objective: c.objective || \"OUTCOME_AWARENESS\",\n status: \"PAUSED\",\n special_ad_categories: [\"NONE\"],\n };\n\n // CBO: budget at campaign level\n if (c.is_cbo) {\n params.is_adset_budget_sharing_enabled = true;\n if (c.daily_budget > 0) params.daily_budget = Math.round(c.daily_budget * 100);\n if (c.lifetime_budget > 0) params.lifetime_budget = Math.round(c.lifetime_budget * 100);\n if (c.campaign_bid_strategy) params.bid_strategy = c.campaign_bid_strategy;\n } else {\n params.is_adset_budget_sharing_enabled = false;\n }\n\n if (c.start_time) params.start_time = c.start_time;\n if (c.stop_time) params.stop_time = c.stop_time;\n\n const result = await graphPost(`${int.adAccountId}/campaigns`, params, int.accessToken);\n\n const metaId = result.id as string;\n if (!metaId) throw new Error(\"Meta returned no campaign ID\");\n\n await sb.from(\"meta_campaigns\").update({\n meta_campaign_id: metaId,\n meta_account_id: int.adAccountId,\n last_synced_at: new Date().toISOString(),\n }).eq(\"id\", campaignId);\n\n return { metaCampaignId: metaId };\n}\n\nasync function publishAdSet(\n sb: SupabaseClient,\n storeId: string,\n adSetId: string,\n): Promise<{ metaAdSetId: string; metaCampaignId: string }> {\n const { data: as_, error } = await sb\n .from(\"meta_ad_sets\").select(\"*\").eq(\"id\", adSetId).single();\n if (error || !as_) throw new Error(`Ad set not found: ${adSetId}`);\n\n if (!isLocalId(as_.meta_ad_set_id)) {\n return { metaAdSetId: as_.meta_ad_set_id, metaCampaignId: \"\" };\n }\n\n const int = await getIntegration(sb, storeId);\n\n // Cascade: publish parent campaign if needed\n const campaignUUID = as_.meta_campaign_id;\n if (!campaignUUID) throw new Error(\"Ad set has no campaign reference\");\n\n const { data: camp } = await sb\n .from(\"meta_campaigns\").select(\"*\").eq(\"id\", campaignUUID).single();\n if (!camp) throw new Error(`Parent campaign not found: ${campaignUUID}`);\n\n let metaCampaignId = camp.meta_campaign_id || \"\";\n if (isLocalId(metaCampaignId)) {\n const pub = await publishCampaign(sb, storeId, campaignUUID);\n metaCampaignId = pub.metaCampaignId;\n }\n\n // CBO detection: check if campaign has budget on Meta\n const isCBO = !!camp.is_cbo;\n let campaignHasCBO = isCBO;\n if (!isCBO) {\n try {\n const mc = await graphGet(metaCampaignId, \"daily_budget,lifetime_budget,bid_strategy\", int.accessToken);\n if ((mc.daily_budget as string) || (mc.lifetime_budget as string)) {\n campaignHasCBO = true;\n if ((mc.bid_strategy as string) && mc.bid_strategy !== \"LOWEST_COST_WITHOUT_CAP\") {\n await graphPost(metaCampaignId, { bid_strategy: \"LOWEST_COST_WITHOUT_CAP\" }, int.accessToken);\n }\n }\n } catch { /* proceed without CBO check */ }\n }\n\n const optGoal = validateGoal(\n as_.optimization_goal || \"LINK_CLICKS\",\n camp.objective || \"OUTCOME_AWARENESS\",\n );\n\n // Build targeting with placement control\n const targetingSpec = await buildTargeting(sb, as_.targeting, int);\n\n // Merge placement config from ad set columns into targeting\n if (as_.publisher_platforms) {\n const pp = typeof as_.publisher_platforms === \"string\"\n ? JSON.parse(as_.publisher_platforms) : as_.publisher_platforms;\n if (Array.isArray(pp) && pp.length) targetingSpec.publisher_platforms = pp;\n }\n if (as_.facebook_positions) {\n const fp = typeof as_.facebook_positions === \"string\"\n ? JSON.parse(as_.facebook_positions) : as_.facebook_positions;\n if (Array.isArray(fp) && fp.length) targetingSpec.facebook_positions = fp;\n }\n if (as_.instagram_positions) {\n const ip = typeof as_.instagram_positions === \"string\"\n ? JSON.parse(as_.instagram_positions) : as_.instagram_positions;\n if (Array.isArray(ip) && ip.length) targetingSpec.instagram_positions = ip;\n }\n if (as_.audience_network_positions) {\n const anp = typeof as_.audience_network_positions === \"string\"\n ? JSON.parse(as_.audience_network_positions) : as_.audience_network_positions;\n if (Array.isArray(anp) && anp.length) targetingSpec.audience_network_positions = anp;\n }\n if (as_.messenger_positions) {\n const mp = typeof as_.messenger_positions === \"string\"\n ? JSON.parse(as_.messenger_positions) : as_.messenger_positions;\n if (Array.isArray(mp) && mp.length) targetingSpec.messenger_positions = mp;\n }\n\n const params: Record<string, unknown> = {\n campaign_id: metaCampaignId,\n name: as_.name || \"Ad Set\",\n billing_event: billingEvent(optGoal),\n optimization_goal: optGoal,\n status: \"PAUSED\",\n targeting: targetingSpec,\n };\n\n if (!campaignHasCBO) {\n // Ad set level budget + bid strategy (always required for non-CBO)\n if (as_.daily_budget > 0) params.daily_budget = Math.round(as_.daily_budget * 100);\n if (as_.lifetime_budget > 0) params.lifetime_budget = Math.round(as_.lifetime_budget * 100);\n const bs = as_.bid_strategy || \"LOWEST_COST_WITHOUT_CAP\";\n params.bid_strategy = bs;\n if (bs !== \"LOWEST_COST_WITHOUT_CAP\" && as_.bid_amount > 0) {\n params.bid_amount = Math.round(as_.bid_amount * 100);\n }\n }\n\n if (as_.start_time) params.start_time = as_.start_time;\n if (as_.end_time) {\n params.end_time = as_.end_time;\n } else if (!campaignHasCBO && as_.lifetime_budget > 0) {\n params.end_time = new Date(Date.now() + 30 * 86400000).toISOString();\n }\n\n // --- Ad scheduling / dayparting ---\n if (as_.adset_schedule) {\n const schedule = typeof as_.adset_schedule === \"string\"\n ? JSON.parse(as_.adset_schedule) : as_.adset_schedule;\n if (Array.isArray(schedule) && schedule.length) {\n params.adset_schedule = schedule;\n // Dayparting requires lifetime budget or pacing_type USER_DEFINED\n params.pacing_type = [\"day_parting\"];\n }\n }\n\n // --- Frequency capping ---\n if (as_.frequency_control_specs) {\n const fcs = typeof as_.frequency_control_specs === \"string\"\n ? JSON.parse(as_.frequency_control_specs) : as_.frequency_control_specs;\n if (Array.isArray(fcs) && fcs.length) {\n params.frequency_control_specs = fcs;\n }\n }\n\n // --- Promoted object (conversion tracking) ---\n if (as_.promoted_object) {\n const po = typeof as_.promoted_object === \"string\"\n ? JSON.parse(as_.promoted_object) : as_.promoted_object;\n if (po && typeof po === \"object\" && Object.keys(po).length) {\n params.promoted_object = po;\n }\n }\n\n // --- Dynamic creative flag ---\n if (as_.is_dynamic_creative) {\n params.is_dynamic_creative = true;\n }\n\n const result = await graphPost(`${int.adAccountId}/adsets`, params, int.accessToken);\n const metaId = result.id as string;\n if (!metaId) throw new Error(\"Meta returned no ad set ID\");\n\n await sb.from(\"meta_ad_sets\").update({\n meta_ad_set_id: metaId,\n last_synced_at: new Date().toISOString(),\n }).eq(\"id\", adSetId);\n\n return { metaAdSetId: metaId, metaCampaignId };\n}\n\nasync function publishAd(\n sb: SupabaseClient,\n storeId: string,\n adId: string,\n): Promise<{ metaAdId: string; creativeId: string; metaAdSetId: string; metaCampaignId: string }> {\n const { data: ad, error } = await sb\n .from(\"meta_ads\").select(\"*\").eq(\"id\", adId).single();\n if (error || !ad) throw new Error(`Ad not found: ${adId}`);\n\n if (!isLocalId(ad.meta_ad_id)) {\n return { metaAdId: ad.meta_ad_id, creativeId: ad.creative_id || \"\", metaAdSetId: \"\", metaCampaignId: \"\" };\n }\n\n const int = await getIntegration(sb, storeId);\n\n // Cascade: publish parent ad set (which cascades to campaign)\n const adSetUUID = ad.meta_ad_set_id;\n if (!adSetUUID) throw new Error(\"Ad has no ad set reference\");\n\n const { data: adSet } = await sb\n .from(\"meta_ad_sets\").select(\"*\").eq(\"id\", adSetUUID).single();\n if (!adSet) throw new Error(`Parent ad set not found: ${adSetUUID}`);\n\n let metaAdSetId = adSet.meta_ad_set_id || \"\";\n let metaCampaignId = \"\";\n if (isLocalId(metaAdSetId)) {\n const pub = await publishAdSet(sb, storeId, adSetUUID);\n metaAdSetId = pub.metaAdSetId;\n metaCampaignId = pub.metaCampaignId;\n }\n\n if (!int.pageId) throw new Error(\"No Facebook Page linked. Add page_id in Meta Connection settings.\");\n\n const creative = (ad.creative || {}) as Creative;\n const isCarousel = Array.isArray(creative.carousel_cards) && creative.carousel_cards.length > 0;\n const isDynamic = !!creative.asset_feed_spec;\n const wantsVideo = !!(creative.video_url || creative.video_id || creative.object_type?.toUpperCase() === \"VIDEO\");\n\n let imageHash: string | null = null;\n let metaVideoId: string | null = null;\n let videoWarning: string | null = null;\n\n // --- CAROUSEL: upload each card's media ---\n if (isCarousel) {\n const carouselHashes: Array<{ hash?: string | null; videoId?: string | null; card: CarouselCard }> = [];\n\n for (const card of creative.carousel_cards!) {\n let cardHash: string | null = null;\n let cardVideoId: string | null = null;\n\n if (card.video_url) {\n try {\n cardVideoId = await uploadVideo(int, card.video_url);\n } catch { /* skip video, fall to image */ }\n if (card.image_url) cardHash = await uploadImage(int, card.image_url);\n } else if (card.image_url) {\n cardHash = await uploadImage(int, card.image_url);\n }\n carouselHashes.push({ hash: cardHash, videoId: cardVideoId, card });\n }\n\n const oss = buildStorySpec(creative, int.pageId, null, null, carouselHashes);\n const crResult = await graphPost(\n `${int.adAccountId}/adcreatives`,\n { name: `${ad.name || \"Ad\"} Creative`, object_story_spec: oss },\n int.accessToken,\n );\n const creativeId = crResult.id as string;\n if (!creativeId) throw new Error(\"Meta returned no creative ID\");\n\n const adResult = await graphPost(\n `${int.adAccountId}/ads`,\n {\n name: ad.name || \"Ad\",\n adset_id: metaAdSetId,\n creative: { creative_id: creativeId },\n status: metaStatus(ad.status),\n },\n int.accessToken,\n );\n const metaAdId = adResult.id as string;\n if (!metaAdId) throw new Error(\"Meta returned no ad ID\");\n\n await sb.from(\"meta_ads\").update({\n meta_ad_id: metaAdId,\n creative_id: creativeId,\n last_synced_at: new Date().toISOString(),\n }).eq(\"id\", adId);\n\n return { metaAdId, creativeId, metaAdSetId, metaCampaignId };\n }\n\n // --- DYNAMIC CREATIVE: asset_feed_spec ---\n if (isDynamic && creative.asset_feed_spec) {\n const spec = creative.asset_feed_spec;\n\n // Upload images in the asset feed\n if (Array.isArray(spec.images)) {\n for (const img of spec.images as Array<Record<string, unknown>>) {\n if (img.url && !img.hash) {\n const hash = await uploadImage(int, img.url as string);\n if (hash) { img.hash = hash; delete img.url; }\n }\n }\n }\n\n const crParams: Record<string, unknown> = {\n name: `${ad.name || \"Ad\"} Dynamic Creative`,\n asset_feed_spec: spec,\n object_story_spec: { page_id: int.pageId, link_data: { link: creative.link_url || \"\" } },\n };\n\n const crResult = await graphPost(`${int.adAccountId}/adcreatives`, crParams, int.accessToken);\n const creativeId = crResult.id as string;\n if (!creativeId) throw new Error(\"Meta returned no creative ID\");\n\n const adResult = await graphPost(\n `${int.adAccountId}/ads`,\n {\n name: ad.name || \"Ad\",\n adset_id: metaAdSetId,\n creative: { creative_id: creativeId },\n status: metaStatus(ad.status),\n },\n int.accessToken,\n );\n const metaAdId = adResult.id as string;\n if (!metaAdId) throw new Error(\"Meta returned no ad ID\");\n\n await sb.from(\"meta_ads\").update({\n meta_ad_id: metaAdId,\n creative_id: creativeId,\n last_synced_at: new Date().toISOString(),\n }).eq(\"id\", adId);\n\n return { metaAdId, creativeId, metaAdSetId, metaCampaignId };\n }\n\n // --- STANDARD (single image/video) ---\n if (wantsVideo && creative.video_url) {\n try {\n metaVideoId = await uploadVideo(int, creative.video_url);\n } catch (e) {\n videoWarning = `Video upload failed (${e instanceof Error ? e.message.slice(0, 150) : \"unknown\"}). Published as image ad instead. To fix: add ads_management and pages_manage_posts permissions to your Meta App.`;\n }\n if (creative.image_url) {\n imageHash = await uploadImage(int, creative.image_url);\n }\n } else if (wantsVideo && creative.video_id) {\n metaVideoId = creative.video_id;\n if (creative.image_url) imageHash = await uploadImage(int, creative.image_url);\n } else if (creative.image_url) {\n imageHash = await uploadImage(int, creative.image_url);\n }\n\n // Create creative on Meta\n const oss = buildStorySpec(creative, int.pageId, imageHash, metaVideoId);\n const crParams: Record<string, unknown> = {\n name: `${ad.name || \"Ad\"} Creative`,\n object_story_spec: oss,\n };\n\n // Attach lead form if specified\n if (creative.lead_form_id) {\n const ossObj = oss as Record<string, unknown>;\n if (ossObj.link_data) {\n ossObj.link_data = { ...(ossObj.link_data as Record<string, unknown>), lead_gen_form_id: creative.lead_form_id };\n }\n crParams.object_story_spec = ossObj;\n }\n\n const crResult = await graphPost(`${int.adAccountId}/adcreatives`, crParams, int.accessToken);\n const creativeId = crResult.id as string;\n if (!creativeId) throw new Error(\"Meta returned no creative ID\");\n\n // Create ad\n const adResult = await graphPost(\n `${int.adAccountId}/ads`,\n {\n name: ad.name || \"Ad\",\n adset_id: metaAdSetId,\n creative: { creative_id: creativeId },\n status: metaStatus(ad.status),\n },\n int.accessToken,\n );\n const metaAdId = adResult.id as string;\n if (!metaAdId) throw new Error(\"Meta returned no ad ID\");\n\n await sb.from(\"meta_ads\").update({\n meta_ad_id: metaAdId,\n creative_id: creativeId,\n last_synced_at: new Date().toISOString(),\n }).eq(\"id\", adId);\n\n return {\n metaAdId, creativeId, metaAdSetId, metaCampaignId,\n ...(videoWarning && { warning: videoWarning }),\n };\n}\n\n// ============================================================================\n// MAIN HANDLER\n// ============================================================================\n\nexport async function handleMetaAds(\n sb: SupabaseClient,\n args: Record<string, unknown>,\n storeId?: string,\n) {\n if (!storeId) return { success: false, error: \"store_id required\" };\n const action = args.action as string;\n\n try {\n switch (action) {\n // ==================================================================\n // CREATE\n // ==================================================================\n\n case \"create_campaign\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name required\" };\n\n const row: Record<string, unknown> = {\n store_id: storeId,\n meta_campaign_id: `local_${crypto.randomUUID().slice(0, 8)}`,\n meta_account_id: \"draft\",\n name,\n objective: (args.objective as string) || \"OUTCOME_AWARENESS\",\n status: \"DRAFT\",\n };\n if (args.daily_budget) row.daily_budget = Number(args.daily_budget);\n if (args.lifetime_budget) row.lifetime_budget = Number(args.lifetime_budget);\n if (args.start_time) row.start_time = args.start_time;\n if (args.stop_time) row.stop_time = args.stop_time;\n // CBO support\n if (args.is_cbo === true) row.is_cbo = true;\n if (args.campaign_bid_strategy) row.campaign_bid_strategy = args.campaign_bid_strategy;\n\n const { data, error } = await sb.from(\"meta_campaigns\").insert(row).select().single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n case \"create_ad_set\": {\n const campaignId = args.campaign_id as string;\n const name = args.name as string;\n if (!campaignId) return { success: false, error: \"campaign_id required\" };\n if (!name) return { success: false, error: \"name required\" };\n\n const { data: camp } = await sb\n .from(\"meta_campaigns\").select(\"id, objective\")\n .eq(\"id\", campaignId).eq(\"store_id\", storeId).single();\n if (!camp) return { success: false, error: `Campaign not found: ${campaignId}` };\n\n const optGoal = args.optimization_goal\n ? validateGoal(args.optimization_goal as string, camp.objective || \"OUTCOME_AWARENESS\")\n : defaultGoal(camp.objective || \"OUTCOME_AWARENESS\");\n\n const row: Record<string, unknown> = {\n store_id: storeId,\n meta_ad_set_id: `local_${crypto.randomUUID().slice(0, 8)}`,\n meta_campaign_id: campaignId,\n name,\n optimization_goal: optGoal,\n billing_event: billingEvent(optGoal),\n status: \"DRAFT\",\n };\n if (args.daily_budget) row.daily_budget = Number(args.daily_budget);\n if (args.lifetime_budget) row.lifetime_budget = Number(args.lifetime_budget);\n if (args.bid_strategy) row.bid_strategy = args.bid_strategy;\n if (args.bid_amount) row.bid_amount = Number(args.bid_amount);\n if (args.start_time) row.start_time = args.start_time;\n if (args.end_time) row.end_time = args.end_time;\n if (args.targeting) {\n row.targeting = typeof args.targeting === \"string\" ? args.targeting : JSON.stringify(args.targeting);\n }\n // V2: scheduling, placements, frequency, conversions, dynamic creative\n if (args.adset_schedule) {\n row.adset_schedule = typeof args.adset_schedule === \"string\"\n ? args.adset_schedule : JSON.stringify(args.adset_schedule);\n }\n if (args.publisher_platforms) {\n row.publisher_platforms = typeof args.publisher_platforms === \"string\"\n ? args.publisher_platforms : JSON.stringify(args.publisher_platforms);\n }\n if (args.facebook_positions) {\n row.facebook_positions = typeof args.facebook_positions === \"string\"\n ? args.facebook_positions : JSON.stringify(args.facebook_positions);\n }\n if (args.instagram_positions) {\n row.instagram_positions = typeof args.instagram_positions === \"string\"\n ? args.instagram_positions : JSON.stringify(args.instagram_positions);\n }\n if (args.audience_network_positions) {\n row.audience_network_positions = typeof args.audience_network_positions === \"string\"\n ? args.audience_network_positions : JSON.stringify(args.audience_network_positions);\n }\n if (args.messenger_positions) {\n row.messenger_positions = typeof args.messenger_positions === \"string\"\n ? args.messenger_positions : JSON.stringify(args.messenger_positions);\n }\n if (args.frequency_control_specs) {\n row.frequency_control_specs = typeof args.frequency_control_specs === \"string\"\n ? args.frequency_control_specs : JSON.stringify(args.frequency_control_specs);\n }\n if (args.promoted_object) {\n row.promoted_object = typeof args.promoted_object === \"string\"\n ? args.promoted_object : JSON.stringify(args.promoted_object);\n }\n if (args.is_dynamic_creative === true) row.is_dynamic_creative = true;\n\n const { data, error } = await sb.from(\"meta_ad_sets\").insert(row).select().single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n case \"create_ad\": {\n const adSetId = args.ad_set_id as string;\n const name = args.name as string;\n if (!adSetId) return { success: false, error: \"ad_set_id required\" };\n if (!name) return { success: false, error: \"name required\" };\n\n const { data: adSet } = await sb\n .from(\"meta_ad_sets\").select(\"id\")\n .eq(\"id\", adSetId).eq(\"store_id\", storeId).single();\n if (!adSet) return { success: false, error: `Ad set not found: ${adSetId}` };\n\n const hasVideo = !!(args.video_url as string);\n const creative: Creative = {\n title: (args.headline as string) || undefined,\n body: (args.body as string) || undefined,\n image_url: (args.image_url as string) || undefined,\n video_url: (args.video_url as string) || undefined,\n link_url: (args.link_url as string) || undefined,\n call_to_action: (args.call_to_action as string) || \"LEARN_MORE\",\n object_type: hasVideo ? \"VIDEO\" : \"SHARE\",\n video_id: (args.video_id as string) || undefined,\n };\n\n // V2: carousel cards\n if (args.carousel_cards && Array.isArray(args.carousel_cards)) {\n creative.carousel_cards = args.carousel_cards as CarouselCard[];\n creative.object_type = \"SHARE\";\n }\n\n // V2: dynamic creative asset feed\n if (args.asset_feed_spec && typeof args.asset_feed_spec === \"object\") {\n creative.asset_feed_spec = args.asset_feed_spec as Record<string, unknown>;\n }\n\n // V2: lead form\n if (args.lead_form_id) {\n creative.lead_form_id = args.lead_form_id as string;\n }\n\n const { data, error } = await sb.from(\"meta_ads\").insert({\n store_id: storeId,\n meta_ad_id: `local_${crypto.randomUUID().slice(0, 8)}`,\n meta_ad_set_id: adSetId,\n name,\n creative,\n status: \"DRAFT\",\n }).select().single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n // ==================================================================\n // CREATE FULL — campaign + ad set + ad in one call\n // ==================================================================\n\n case \"create_full\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name required (used as campaign name)\" };\n\n const objective = (args.objective as string) || \"OUTCOME_AWARENESS\";\n const optGoal = args.optimization_goal\n ? validateGoal(args.optimization_goal as string, objective)\n : defaultGoal(objective);\n const wantPublish = args.auto_publish === true;\n\n // 1. Campaign\n const campRow: Record<string, unknown> = {\n store_id: storeId,\n meta_campaign_id: `local_${crypto.randomUUID().slice(0, 8)}`,\n meta_account_id: \"draft\",\n name,\n objective,\n status: \"DRAFT\",\n };\n if (args.daily_budget) campRow.daily_budget = Number(args.daily_budget);\n if (args.lifetime_budget) campRow.lifetime_budget = Number(args.lifetime_budget);\n if (args.start_time) campRow.start_time = args.start_time;\n if (args.stop_time) campRow.stop_time = args.stop_time;\n if (args.is_cbo === true) campRow.is_cbo = true;\n if (args.campaign_bid_strategy) campRow.campaign_bid_strategy = args.campaign_bid_strategy;\n\n const { data: camp, error: e1 } = await sb.from(\"meta_campaigns\")\n .insert(campRow).select().single();\n if (e1) return { success: false, error: `Campaign: ${e1.message}` };\n\n // 2. Ad Set\n const adSetName = (args.ad_set_name as string) || `${name} — Ad Set`;\n const adSetRow: Record<string, unknown> = {\n store_id: storeId,\n meta_ad_set_id: `local_${crypto.randomUUID().slice(0, 8)}`,\n meta_campaign_id: camp!.id,\n name: adSetName,\n optimization_goal: optGoal,\n billing_event: billingEvent(optGoal),\n status: \"DRAFT\",\n };\n // Budget goes on ad set (unless CBO)\n if (!campRow.is_cbo && args.daily_budget) adSetRow.daily_budget = Number(args.daily_budget);\n if (!campRow.is_cbo && args.lifetime_budget) adSetRow.lifetime_budget = Number(args.lifetime_budget);\n if (args.bid_strategy) adSetRow.bid_strategy = args.bid_strategy;\n if (args.start_time) adSetRow.start_time = args.start_time;\n if (args.end_time) adSetRow.end_time = args.end_time;\n if (args.targeting) {\n adSetRow.targeting = typeof args.targeting === \"string\"\n ? args.targeting : JSON.stringify(args.targeting);\n }\n // V2 ad set fields\n if (args.adset_schedule) {\n adSetRow.adset_schedule = typeof args.adset_schedule === \"string\"\n ? args.adset_schedule : JSON.stringify(args.adset_schedule);\n }\n if (args.publisher_platforms) {\n adSetRow.publisher_platforms = typeof args.publisher_platforms === \"string\"\n ? args.publisher_platforms : JSON.stringify(args.publisher_platforms);\n }\n if (args.facebook_positions) {\n adSetRow.facebook_positions = typeof args.facebook_positions === \"string\"\n ? args.facebook_positions : JSON.stringify(args.facebook_positions);\n }\n if (args.instagram_positions) {\n adSetRow.instagram_positions = typeof args.instagram_positions === \"string\"\n ? args.instagram_positions : JSON.stringify(args.instagram_positions);\n }\n if (args.frequency_control_specs) {\n adSetRow.frequency_control_specs = typeof args.frequency_control_specs === \"string\"\n ? args.frequency_control_specs : JSON.stringify(args.frequency_control_specs);\n }\n if (args.promoted_object) {\n adSetRow.promoted_object = typeof args.promoted_object === \"string\"\n ? args.promoted_object : JSON.stringify(args.promoted_object);\n }\n if (args.is_dynamic_creative === true) adSetRow.is_dynamic_creative = true;\n\n const { data: adSet, error: e2 } = await sb.from(\"meta_ad_sets\")\n .insert(adSetRow).select().single();\n if (e2) return { success: false, error: `Ad set: ${e2.message}` };\n\n // 3. Ad\n const hasVideo = !!(args.video_url as string);\n const adName = (args.ad_name as string) || `${name} — Ad`;\n const creative: Creative = {\n title: (args.headline as string) || undefined,\n body: (args.body as string) || undefined,\n image_url: (args.image_url as string) || undefined,\n video_url: (args.video_url as string) || undefined,\n link_url: (args.link_url as string) || undefined,\n call_to_action: (args.call_to_action as string) || \"LEARN_MORE\",\n object_type: hasVideo ? \"VIDEO\" : \"SHARE\",\n video_id: (args.video_id as string) || undefined,\n };\n if (args.carousel_cards && Array.isArray(args.carousel_cards)) {\n creative.carousel_cards = args.carousel_cards as CarouselCard[];\n creative.object_type = \"SHARE\";\n }\n if (args.asset_feed_spec && typeof args.asset_feed_spec === \"object\") {\n creative.asset_feed_spec = args.asset_feed_spec as Record<string, unknown>;\n }\n if (args.lead_form_id) {\n creative.lead_form_id = args.lead_form_id as string;\n }\n\n const { data: ad, error: e3 } = await sb.from(\"meta_ads\").insert({\n store_id: storeId,\n meta_ad_id: `local_${crypto.randomUUID().slice(0, 8)}`,\n meta_ad_set_id: adSet!.id,\n name: adName,\n creative,\n status: \"DRAFT\",\n }).select().single();\n if (e3) return { success: false, error: `Ad: ${e3.message}` };\n\n // 4. Auto-publish if requested\n if (wantPublish) {\n try {\n const pubResult = await publishAd(sb, storeId, ad!.id);\n const { data: finalCamp } = await sb.from(\"meta_campaigns\").select(\"*\").eq(\"id\", camp!.id).single();\n const { data: finalAdSet } = await sb.from(\"meta_ad_sets\").select(\"*\").eq(\"id\", adSet!.id).single();\n const { data: finalAd } = await sb.from(\"meta_ads\").select(\"*\").eq(\"id\", ad!.id).single();\n\n return {\n success: true,\n published: true,\n data: {\n campaign: finalCamp,\n ad_set: finalAdSet,\n ad: finalAd,\n meta_ids: {\n campaign_id: pubResult.metaCampaignId,\n ad_set_id: pubResult.metaAdSetId,\n creative_id: pubResult.creativeId,\n ad_id: pubResult.metaAdId,\n },\n ...((\"warning\" in pubResult) && { warning: (pubResult as Record<string, unknown>).warning }),\n },\n };\n } catch (pubErr) {\n return {\n success: true,\n published: false,\n data: {\n campaign: camp,\n ad_set: adSet,\n ad: ad,\n publish_error: pubErr instanceof Error ? pubErr.message : String(pubErr),\n hint: \"Drafts created. Fix the error and retry: publish(type=ad, id=\" + ad!.id + \")\",\n },\n };\n }\n }\n\n return {\n success: true,\n published: false,\n data: {\n campaign: camp,\n ad_set: adSet,\n ad: ad,\n hint: \"Created as drafts. Set auto_publish=true to publish immediately, or call publish(type=ad, id=\" + ad!.id + \").\",\n },\n };\n }\n\n // ==================================================================\n // READ\n // ==================================================================\n\n case \"list_campaigns\": {\n let q = sb.from(\"meta_campaigns\").select(\"*\")\n .eq(\"store_id\", storeId).order(\"created_at\", { ascending: false });\n if (args.status) q = q.eq(\"status\", args.status);\n q = q.limit((args.limit as number) || 25);\n const { data, error } = await q;\n if (error) return { success: false, error: error.message };\n return { success: true, count: data?.length ?? 0, data };\n }\n\n case \"list_ad_sets\": {\n let q = sb.from(\"meta_ad_sets\").select(\"*\")\n .eq(\"store_id\", storeId).order(\"created_at\", { ascending: false });\n if (args.campaign_id) q = q.eq(\"meta_campaign_id\", args.campaign_id);\n if (args.status) q = q.eq(\"status\", args.status);\n q = q.limit((args.limit as number) || 25);\n const { data, error } = await q;\n if (error) return { success: false, error: error.message };\n return { success: true, count: data?.length ?? 0, data };\n }\n\n case \"list_ads\": {\n let q = sb.from(\"meta_ads\").select(\"*\")\n .eq(\"store_id\", storeId).order(\"created_at\", { ascending: false });\n if (args.ad_set_id) q = q.eq(\"meta_ad_set_id\", args.ad_set_id);\n if (args.status) q = q.eq(\"status\", args.status);\n q = q.limit((args.limit as number) || 25);\n const { data, error } = await q;\n if (error) return { success: false, error: error.message };\n return { success: true, count: data?.length ?? 0, data };\n }\n\n case \"get_campaign\": {\n const id = (args.campaign_id || args.id) as string;\n if (!id) return { success: false, error: \"campaign_id required\" };\n const { data: c, error } = await sb.from(\"meta_campaigns\").select(\"*\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n if (error) return { success: false, error: error.message };\n const { data: sets } = await sb.from(\"meta_ad_sets\").select(\"*\")\n .eq(\"meta_campaign_id\", id).order(\"created_at\", { ascending: false });\n return { success: true, data: { ...c, ad_sets: sets || [] } };\n }\n\n case \"get_ad_set\": {\n const id = (args.ad_set_id || args.id) as string;\n if (!id) return { success: false, error: \"ad_set_id required\" };\n const { data: s, error } = await sb.from(\"meta_ad_sets\").select(\"*\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n if (error) return { success: false, error: error.message };\n const { data: ads } = await sb.from(\"meta_ads\").select(\"*\")\n .eq(\"meta_ad_set_id\", id).order(\"created_at\", { ascending: false });\n return { success: true, data: { ...s, ads: ads || [] } };\n }\n\n case \"get_ad\": {\n const id = (args.ad_id || args.id) as string;\n if (!id) return { success: false, error: \"ad_id required\" };\n const { data, error } = await sb.from(\"meta_ads\").select(\"*\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n // ==================================================================\n // UPDATE\n // ==================================================================\n\n case \"update_campaign\": {\n const id = (args.campaign_id || args.id) as string;\n if (!id) return { success: false, error: \"campaign_id required\" };\n const u: Record<string, unknown> = {};\n if (args.name !== undefined) u.name = args.name;\n if (args.objective !== undefined) u.objective = args.objective;\n if (args.daily_budget !== undefined) u.daily_budget = Number(args.daily_budget);\n if (args.lifetime_budget !== undefined) u.lifetime_budget = Number(args.lifetime_budget);\n if (args.status !== undefined) u.status = args.status;\n if (args.start_time !== undefined) u.start_time = args.start_time;\n if (args.stop_time !== undefined) u.stop_time = args.stop_time;\n if (args.is_cbo !== undefined) u.is_cbo = args.is_cbo;\n if (args.campaign_bid_strategy !== undefined) u.campaign_bid_strategy = args.campaign_bid_strategy;\n if (!Object.keys(u).length) return { success: false, error: \"No fields to update\" };\n const { data, error } = await sb.from(\"meta_campaigns\").update(u)\n .eq(\"id\", id).eq(\"store_id\", storeId).select().single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n case \"update_ad_set\": {\n const id = (args.ad_set_id || args.id) as string;\n if (!id) return { success: false, error: \"ad_set_id required\" };\n const u: Record<string, unknown> = {};\n if (args.name !== undefined) u.name = args.name;\n if (args.daily_budget !== undefined) u.daily_budget = Number(args.daily_budget);\n if (args.lifetime_budget !== undefined) u.lifetime_budget = Number(args.lifetime_budget);\n if (args.optimization_goal !== undefined) u.optimization_goal = args.optimization_goal;\n if (args.bid_strategy !== undefined) u.bid_strategy = args.bid_strategy;\n if (args.bid_amount !== undefined) u.bid_amount = Number(args.bid_amount);\n if (args.status !== undefined) u.status = args.status;\n if (args.start_time !== undefined) u.start_time = args.start_time;\n if (args.end_time !== undefined) u.end_time = args.end_time;\n if (args.targeting !== undefined) {\n u.targeting = typeof args.targeting === \"string\" ? args.targeting : JSON.stringify(args.targeting);\n }\n // V2 fields\n if (args.adset_schedule !== undefined) {\n u.adset_schedule = typeof args.adset_schedule === \"string\"\n ? args.adset_schedule : JSON.stringify(args.adset_schedule);\n }\n if (args.publisher_platforms !== undefined) {\n u.publisher_platforms = typeof args.publisher_platforms === \"string\"\n ? args.publisher_platforms : JSON.stringify(args.publisher_platforms);\n }\n if (args.facebook_positions !== undefined) {\n u.facebook_positions = typeof args.facebook_positions === \"string\"\n ? args.facebook_positions : JSON.stringify(args.facebook_positions);\n }\n if (args.instagram_positions !== undefined) {\n u.instagram_positions = typeof args.instagram_positions === \"string\"\n ? args.instagram_positions : JSON.stringify(args.instagram_positions);\n }\n if (args.audience_network_positions !== undefined) {\n u.audience_network_positions = typeof args.audience_network_positions === \"string\"\n ? args.audience_network_positions : JSON.stringify(args.audience_network_positions);\n }\n if (args.messenger_positions !== undefined) {\n u.messenger_positions = typeof args.messenger_positions === \"string\"\n ? args.messenger_positions : JSON.stringify(args.messenger_positions);\n }\n if (args.frequency_control_specs !== undefined) {\n u.frequency_control_specs = typeof args.frequency_control_specs === \"string\"\n ? args.frequency_control_specs : JSON.stringify(args.frequency_control_specs);\n }\n if (args.promoted_object !== undefined) {\n u.promoted_object = typeof args.promoted_object === \"string\"\n ? args.promoted_object : JSON.stringify(args.promoted_object);\n }\n if (args.is_dynamic_creative !== undefined) u.is_dynamic_creative = args.is_dynamic_creative;\n if (!Object.keys(u).length) return { success: false, error: \"No fields to update\" };\n const { data, error } = await sb.from(\"meta_ad_sets\").update(u)\n .eq(\"id\", id).eq(\"store_id\", storeId).select().single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n case \"update_ad\": {\n const id = (args.ad_id || args.id) as string;\n if (!id) return { success: false, error: \"ad_id required\" };\n const u: Record<string, unknown> = {};\n if (args.name !== undefined) u.name = args.name;\n if (args.status !== undefined) u.status = args.status;\n // Merge creative fields\n if (args.headline !== undefined || args.body !== undefined || args.image_url !== undefined ||\n args.video_url !== undefined || args.link_url !== undefined ||\n args.call_to_action !== undefined || args.video_id !== undefined ||\n args.carousel_cards !== undefined || args.asset_feed_spec !== undefined ||\n args.lead_form_id !== undefined) {\n const { data: existing } = await sb.from(\"meta_ads\").select(\"creative\").eq(\"id\", id).single();\n const prev = (existing?.creative || {}) as Creative;\n u.creative = {\n ...prev,\n ...(args.headline !== undefined && { title: args.headline }),\n ...(args.body !== undefined && { body: args.body }),\n ...(args.image_url !== undefined && { image_url: args.image_url }),\n ...(args.video_url !== undefined && { video_url: args.video_url, object_type: \"VIDEO\" }),\n ...(args.link_url !== undefined && { link_url: args.link_url }),\n ...(args.call_to_action !== undefined && { call_to_action: args.call_to_action }),\n ...(args.video_id !== undefined && { video_id: args.video_id, object_type: \"VIDEO\" }),\n ...(args.carousel_cards !== undefined && { carousel_cards: args.carousel_cards }),\n ...(args.asset_feed_spec !== undefined && { asset_feed_spec: args.asset_feed_spec }),\n ...(args.lead_form_id !== undefined && { lead_form_id: args.lead_form_id }),\n };\n }\n if (!Object.keys(u).length) return { success: false, error: \"No fields to update\" };\n const { data, error } = await sb.from(\"meta_ads\").update(u)\n .eq(\"id\", id).eq(\"store_id\", storeId).select().single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n // ==================================================================\n // DELETE\n // ==================================================================\n\n case \"delete\": {\n const id = args.id as string;\n const type = args.type as string;\n if (!id) return { success: false, error: \"id required\" };\n if (!type) return { success: false, error: \"type required (campaign, ad_set, ad)\" };\n const table = type === \"campaign\" ? \"meta_campaigns\"\n : type === \"ad_set\" ? \"meta_ad_sets\"\n : type === \"ad\" ? \"meta_ads\" : null;\n const metaIdCol = type === \"campaign\" ? \"meta_campaign_id\"\n : type === \"ad_set\" ? \"meta_ad_set_id\"\n : type === \"ad\" ? \"meta_ad_id\" : null;\n if (!table || !metaIdCol) return { success: false, error: `Invalid type: ${type}` };\n\n const { data: record } = await sb.from(table).select(metaIdCol).eq(\"id\", id).single();\n const metaId = (record as Record<string, unknown>)?.[metaIdCol] as string | undefined;\n let metaDeleted = false;\n if (metaId && !isLocalId(metaId)) {\n const int = await getIntegration(sb, storeId);\n if (int) {\n try {\n await graphPost(metaId, { status: \"DELETED\" }, int.accessToken);\n metaDeleted = true;\n } catch (e: unknown) {\n console.warn(`[meta_ads] Meta delete failed for ${metaId}:`, e);\n }\n }\n }\n\n const { error } = await sb.from(table).delete().eq(\"id\", id).eq(\"store_id\", storeId);\n if (error) return { success: false, error: error.message };\n return { success: true, data: { deleted: id, type, meta_deleted: metaDeleted } };\n }\n\n // ==================================================================\n // PUBLISH\n // ==================================================================\n\n case \"publish\": {\n const type = args.type as string;\n const id = args.id as string;\n if (!type) return { success: false, error: \"type required (campaign, ad_set, ad)\" };\n if (!id) return { success: false, error: \"id required\" };\n\n let result: unknown;\n switch (type) {\n case \"campaign\": result = await publishCampaign(sb, storeId, id); break;\n case \"ad_set\": result = await publishAdSet(sb, storeId, id); break;\n case \"ad\": result = await publishAd(sb, storeId, id); break;\n default: return { success: false, error: `Invalid type: ${type}` };\n }\n\n // Telemetry → ClickHouse (fire-and-forget)\n queueSpan(auditRowToSpan({\n store_id: storeId,\n action: `meta_publish_${type}`,\n resource_type: `meta_${type === \"ad_set\" ? \"ad_set\" : type}`,\n resource_id: id,\n details: result,\n source: \"agent_chat\",\n severity: \"info\",\n service_name: \"agent-server\", span_kind: \"INTERNAL\", status_code: \"OK\",\n start_time: new Date().toISOString(), end_time: new Date().toISOString(),\n }));\n\n return { success: true, data: result };\n }\n\n // ==================================================================\n // SYNC — pull latest stats from Meta (with optional breakdowns)\n // ==================================================================\n\n case \"sync\": {\n const id = (args.campaign_id || args.id) as string;\n if (!id) return { success: false, error: \"campaign_id required\" };\n\n const { data: c } = await sb.from(\"meta_campaigns\").select(\"meta_campaign_id\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n if (!c) return { success: false, error: `Campaign not found: ${id}` };\n if (isLocalId(c.meta_campaign_id)) return { success: false, error: \"Campaign not published yet. Publish first.\" };\n\n const int = await getIntegration(sb, storeId);\n const stats = await graphGet(\n c.meta_campaign_id,\n \"name,status,effective_status,daily_budget,lifetime_budget,budget_remaining,start_time,stop_time\",\n int.accessToken,\n );\n\n const u: Record<string, unknown> = { last_synced_at: new Date().toISOString() };\n if (stats.status) u.status = stats.status;\n if (stats.effective_status) u.effective_status = stats.effective_status;\n if (stats.daily_budget) u.daily_budget = Number(stats.daily_budget) / 100;\n if (stats.lifetime_budget) u.lifetime_budget = Number(stats.lifetime_budget) / 100;\n if (stats.budget_remaining) u.budget_remaining = Number(stats.budget_remaining) / 100;\n\n // Insights (with optional breakdowns)\n try {\n const breakdowns = args.breakdowns as string | undefined;\n let extra = \"date_preset=maximum\";\n if (breakdowns) extra += `&breakdowns=${enc(breakdowns)}`;\n\n const ins = await graphGet(`${c.meta_campaign_id}/insights`,\n \"spend,impressions,clicks,reach,cpc,cpm,ctr,actions\", int.accessToken, extra);\n const results = ins.data as Array<Record<string, unknown>>;\n\n if (breakdowns && results?.length) {\n // Return breakdown data without saving to DB (too granular)\n u.raw_insights = results;\n } else {\n const d = results?.[0];\n if (d) {\n if (d.spend) u.spend = Number(d.spend);\n if (d.impressions) u.impressions = Number(d.impressions);\n if (d.clicks) u.clicks = Number(d.clicks);\n if (d.reach) u.reach = Number(d.reach);\n if (d.cpc) u.cpc = Number(d.cpc);\n if (d.cpm) u.cpm = Number(d.cpm);\n if (d.ctr) u.ctr = Number(d.ctr);\n u.raw_insights = d;\n }\n }\n } catch { /* insights may not exist yet */ }\n\n await sb.from(\"meta_campaigns\").update(u).eq(\"id\", id);\n const { data: refreshed } = await sb.from(\"meta_campaigns\").select(\"*\").eq(\"id\", id).single();\n return { success: true, data: refreshed };\n }\n\n // ==================================================================\n // INSIGHTS BREAKDOWN — detailed performance by dimension\n // ==================================================================\n\n case \"insights_breakdown\": {\n const id = (args.campaign_id || args.ad_set_id || args.ad_id || args.id) as string;\n if (!id) return { success: false, error: \"campaign_id, ad_set_id, or ad_id required\" };\n const breakdowns = (args.breakdowns as string) || \"age,gender\";\n\n // Determine which table to look up the Meta ID\n let metaId: string | null = null;\n if (args.campaign_id || (!args.ad_set_id && !args.ad_id)) {\n const { data } = await sb.from(\"meta_campaigns\").select(\"meta_campaign_id\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n metaId = data?.meta_campaign_id;\n } else if (args.ad_set_id) {\n const { data } = await sb.from(\"meta_ad_sets\").select(\"meta_ad_set_id\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n metaId = data?.meta_ad_set_id;\n } else if (args.ad_id) {\n const { data } = await sb.from(\"meta_ads\").select(\"meta_ad_id\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n metaId = data?.meta_ad_id;\n }\n\n if (!metaId || isLocalId(metaId)) {\n return { success: false, error: \"Entity not published yet. Publish first.\" };\n }\n\n const int = await getIntegration(sb, storeId);\n const datePreset = (args.date_preset as string) || \"last_30d\";\n const fields = (args.fields as string) || \"spend,impressions,clicks,reach,cpc,cpm,ctr,actions,cost_per_action_type\";\n\n const extra = `breakdowns=${enc(breakdowns)}&date_preset=${enc(datePreset)}`;\n const ins = await graphGet(`${metaId}/insights`, fields, int.accessToken, extra);\n\n return { success: true, data: ins.data || [] };\n }\n\n // ==================================================================\n // AD PREVIEW — get preview URLs\n // ==================================================================\n\n case \"ad_preview\": {\n const id = (args.ad_id || args.id) as string;\n if (!id) return { success: false, error: \"ad_id required\" };\n\n const { data: ad } = await sb.from(\"meta_ads\").select(\"meta_ad_id\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n if (!ad) return { success: false, error: `Ad not found: ${id}` };\n if (isLocalId(ad.meta_ad_id)) {\n return { success: false, error: \"Ad not published yet. Publish first to get preview.\" };\n }\n\n const int = await getIntegration(sb, storeId);\n const format = (args.ad_format as string) || \"DESKTOP_FEED_STANDARD\";\n\n const url = `${META_BASE}/${ad.meta_ad_id}/previews?ad_format=${enc(format)}&access_token=${enc(int.accessToken)}`;\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n return { success: false, error: parseMetaError(body, \"previews\", res.status) };\n }\n const json = (await res.json()) as Record<string, unknown>;\n return { success: true, data: json.data || [] };\n }\n\n // ==================================================================\n // CUSTOM AUDIENCES\n // ==================================================================\n\n case \"create_audience\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name required\" };\n\n const int = await getIntegration(sb, storeId);\n const subtype = (args.subtype as string) || \"CUSTOM\";\n\n const metaParams: Record<string, unknown> = {\n name,\n subtype,\n description: (args.description as string) || \"\",\n customer_file_source: (args.customer_file_source as string) || \"USER_PROVIDED_ONLY\",\n };\n\n // Website audience (requires pixel)\n if (subtype === \"WEBSITE\") {\n const pixelForAudience = (args.pixel_id as string) || int.pixelId;\n if (!pixelForAudience) return { success: false, error: \"pixel_id required for website audiences (none configured — set one in Settings → Meta Connection)\" };\n metaParams.rule = args.rule || { inclusions: { operator: \"or\", rules: [{ event_sources: [{ id: pixelForAudience, type: \"pixel\" }], retention_seconds: (Number(args.retention_days) || 30) * 86400 }] } };\n if (args.retention_days) metaParams.retention_days = Number(args.retention_days);\n if (args.prefill) metaParams.prefill = true;\n }\n\n // Engagement audience\n if (subtype === \"ENGAGEMENT\") {\n metaParams.rule = args.rule;\n }\n\n const result = await graphPost(`${int.adAccountId}/customaudiences`, metaParams, int.accessToken);\n const metaAudienceId = result.id as string;\n\n // Save to local DB\n const { data, error } = await sb.from(\"meta_audiences\").insert({\n store_id: storeId,\n meta_audience_id: metaAudienceId || null,\n name,\n description: (args.description as string) || null,\n audience_type: \"custom\",\n subtype,\n rule: args.rule || null,\n customer_file_source: (args.customer_file_source as string) || null,\n retention_days: args.retention_days ? Number(args.retention_days) : null,\n }).select().single();\n if (error) return { success: false, error: error.message };\n\n return { success: true, data: { ...data, meta_audience_id: metaAudienceId } };\n }\n\n case \"list_audiences\": {\n // Fetch from Meta for live data\n const int = await getIntegration(sb, storeId);\n const fields = \"id,name,description,subtype,approximate_count,delivery_status,operation_status,time_created,time_updated\";\n const result = await graphGet(`${int.adAccountId}/customaudiences`, fields, int.accessToken);\n\n // Also sync to local DB\n const audiences = (result.data || []) as Array<Record<string, unknown>>;\n for (const aud of audiences) {\n await sb.from(\"meta_audiences\").upsert({\n store_id: storeId,\n meta_audience_id: aud.id as string,\n name: aud.name as string,\n description: (aud.description as string) || null,\n subtype: (aud.subtype as string) || null,\n approximate_count: aud.approximate_count ? Number(aud.approximate_count) : null,\n updated_at: new Date().toISOString(),\n }, { onConflict: \"meta_audience_id\", ignoreDuplicates: false }).then(() => {});\n }\n\n return { success: true, count: audiences.length, data: audiences };\n }\n\n case \"get_audience\": {\n const id = (args.audience_id || args.id) as string;\n if (!id) return { success: false, error: \"audience_id required\" };\n\n // Check if it's a local UUID or Meta ID\n let metaId = id;\n if (isLocalId(id)) {\n const { data } = await sb.from(\"meta_audiences\").select(\"meta_audience_id\")\n .eq(\"id\", id).single();\n if (!data?.meta_audience_id) return { success: false, error: `Audience not found: ${id}` };\n metaId = data.meta_audience_id;\n }\n\n const int = await getIntegration(sb, storeId);\n const fields = \"id,name,description,subtype,approximate_count,delivery_status,operation_status,rule,lookalike_spec,time_created,time_updated\";\n const result = await graphGet(metaId, fields, int.accessToken);\n return { success: true, data: result };\n }\n\n case \"delete_audience\": {\n const id = (args.audience_id || args.id) as string;\n if (!id) return { success: false, error: \"audience_id required\" };\n\n let metaId = id;\n if (isLocalId(id)) {\n const { data } = await sb.from(\"meta_audiences\").select(\"meta_audience_id\")\n .eq(\"id\", id).single();\n if (data?.meta_audience_id) metaId = data.meta_audience_id;\n }\n\n const int = await getIntegration(sb, storeId);\n let metaDeleted = false;\n if (!isLocalId(metaId)) {\n try {\n await graphDelete(metaId, int.accessToken);\n metaDeleted = true;\n } catch { /* continue */ }\n }\n\n // Delete from local DB\n if (isLocalId(id)) {\n await sb.from(\"meta_audiences\").delete().eq(\"id\", id);\n } else {\n await sb.from(\"meta_audiences\").delete().eq(\"meta_audience_id\", id).eq(\"store_id\", storeId);\n }\n\n return { success: true, data: { deleted: id, meta_deleted: metaDeleted } };\n }\n\n case \"create_lookalike\": {\n const sourceId = (args.source_audience_id || args.source_id) as string;\n if (!sourceId) return { success: false, error: \"source_audience_id required (Meta audience ID)\" };\n\n const int = await getIntegration(sb, storeId);\n const name = (args.name as string) || `Lookalike — ${sourceId}`;\n const country = (args.country as string) || \"US\";\n const ratio = Number(args.ratio) || 0.01; // 1% default\n\n // Resolve source Meta ID if local UUID given\n let sourceMetaId = sourceId;\n if (isLocalId(sourceId)) {\n const { data } = await sb.from(\"meta_audiences\").select(\"meta_audience_id\")\n .eq(\"id\", sourceId).single();\n if (!data?.meta_audience_id) return { success: false, error: `Source audience not found: ${sourceId}` };\n sourceMetaId = data.meta_audience_id;\n }\n\n const result = await graphPost(`${int.adAccountId}/customaudiences`, {\n name,\n subtype: \"LOOKALIKE\",\n origin_audience_id: sourceMetaId,\n lookalike_spec: JSON.stringify({\n type: \"custom_ratio\",\n ratio,\n country,\n }),\n }, int.accessToken);\n\n const metaAudienceId = result.id as string;\n\n // Save to local DB\n const { data, error } = await sb.from(\"meta_audiences\").insert({\n store_id: storeId,\n meta_audience_id: metaAudienceId || null,\n name,\n audience_type: \"lookalike\",\n subtype: \"LOOKALIKE\",\n lookalike_spec: { source_id: sourceMetaId, country, ratio },\n }).select().single();\n if (error) return { success: false, error: error.message };\n\n return { success: true, data: { ...data, meta_audience_id: metaAudienceId } };\n }\n\n // ==================================================================\n // LEAD FORMS\n // ==================================================================\n\n case \"create_lead_form\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name required\" };\n\n const int = await getIntegration(sb, storeId);\n if (!int.pageId) return { success: false, error: \"No Facebook Page linked. Required for lead forms.\" };\n\n const questions = (args.questions as Array<Record<string, unknown>>) || [\n { type: \"FULL_NAME\" },\n { type: \"EMAIL\" },\n { type: \"PHONE\" },\n ];\n\n const privacyUrl = (args.privacy_policy_url as string) || \"https://example.com/privacy\";\n\n const metaParams: Record<string, unknown> = {\n name,\n questions: JSON.stringify(questions),\n privacy_policy_url: privacyUrl,\n privacy_policy: JSON.stringify({ url: privacyUrl, link_text: \"Privacy Policy\" }),\n follow_up_action_url: privacyUrl,\n follow_up_action_text: \"Visit Website\",\n };\n\n if (args.context_card) {\n metaParams.context_card = JSON.stringify(args.context_card);\n }\n\n if (args.thank_you_page) {\n metaParams.thank_you_page = JSON.stringify(args.thank_you_page);\n }\n\n const pageToken = await getPageToken(int);\n const result = await graphPost(`${int.pageId}/leadgen_forms`, metaParams, pageToken);\n const metaFormId = result.id as string;\n\n const { data, error } = await sb.from(\"meta_lead_forms\").insert({\n store_id: storeId,\n meta_form_id: metaFormId || null,\n page_id: int.pageId,\n name,\n questions,\n privacy_policy: args.privacy_policy_url ? { url: args.privacy_policy_url } : null,\n context_card: args.context_card || null,\n thank_you_page: args.thank_you_page || null,\n }).select().single();\n if (error) return { success: false, error: error.message };\n\n return { success: true, data: { ...data, meta_form_id: metaFormId } };\n }\n\n case \"list_lead_forms\": {\n const int = await getIntegration(sb, storeId);\n if (!int.pageId) return { success: false, error: \"No Facebook Page linked.\" };\n\n const pageToken = await getPageToken(int);\n const fields = \"id,name,status,questions,privacy_policy_url,created_time,leads_count\";\n const result = await graphGet(`${int.pageId}/leadgen_forms`, fields, pageToken);\n return { success: true, data: result.data || [] };\n }\n\n case \"get_leads\": {\n const formId = (args.form_id || args.lead_form_id) as string;\n if (!formId) return { success: false, error: \"form_id required (Meta lead form ID)\" };\n\n // Resolve local UUID to Meta ID\n let metaFormId = formId;\n if (isLocalId(formId)) {\n const { data } = await sb.from(\"meta_lead_forms\").select(\"meta_form_id\")\n .eq(\"id\", formId).single();\n if (!data?.meta_form_id) return { success: false, error: `Lead form not found: ${formId}` };\n metaFormId = data.meta_form_id;\n }\n\n const int = await getIntegration(sb, storeId);\n const pageToken = await getPageToken(int);\n const fields = \"id,created_time,field_data,ad_id,ad_name,campaign_id,campaign_name\";\n const result = await graphGet(`${metaFormId}/leads`, fields, pageToken);\n return { success: true, data: result.data || [] };\n }\n\n // ==================================================================\n // CONVERSION TRACKING — Pixels & Custom Conversions\n // ==================================================================\n\n case \"list_pixels\": {\n const int = await getIntegration(sb, storeId);\n const fields = \"id,name,code,last_fired_time,is_unavailable,creation_time\";\n const result = await graphGet(`${int.adAccountId}/adspixels`, fields, int.accessToken);\n const pixels = (result.data || []) as Array<Record<string, unknown>>;\n\n // Sync to local DB\n for (const px of pixels) {\n await sb.from(\"meta_pixels\").upsert({\n store_id: storeId,\n meta_pixel_id: px.id as string,\n name: px.name as string,\n code: (px.code as string) || null,\n last_fired_time: (px.last_fired_time as string) || null,\n is_active: !(px.is_unavailable as boolean),\n }, { onConflict: \"meta_pixel_id\", ignoreDuplicates: false }).then(() => {});\n }\n\n return { success: true, count: pixels.length, data: pixels };\n }\n\n case \"create_pixel\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name required\" };\n\n const int = await getIntegration(sb, storeId);\n\n // 1. Create pixel on Meta\n const result = await graphPost(`${int.adAccountId}/adspixels`, { name }, int.accessToken);\n const metaPixelId = result.id as string;\n if (!metaPixelId) return { success: false, error: \"Meta did not return a pixel ID\" };\n\n // 2. Fetch full pixel info (including code snippet)\n const pixelInfo = await graphGet(metaPixelId, \"id,name,code,last_fired_time\", int.accessToken);\n\n // 3. Save to local DB\n const { data, error } = await sb.from(\"meta_pixels\").insert({\n store_id: storeId,\n meta_pixel_id: metaPixelId,\n name,\n code: (pixelInfo.code as string) || null,\n is_active: true,\n }).select().single();\n if (error) return { success: false, error: error.message };\n\n return {\n success: true,\n data: { ...data, meta_pixel_id: metaPixelId, code: pixelInfo.code || null },\n message: `Pixel \"${name}\" created on Meta (ID: ${metaPixelId}). Install the pixel code on your website to start tracking.`,\n };\n }\n\n case \"delete_pixel\": {\n const pixelId = (args.pixel_id || args.id) as string;\n if (!pixelId) return { success: false, error: \"pixel_id required (local UUID or meta_pixel_id)\" };\n\n // Try to find by local UUID first, then by meta_pixel_id\n let row: Record<string, unknown> | null = null;\n const { data: byId } = await sb.from(\"meta_pixels\").select(\"*\").eq(\"id\", pixelId).maybeSingle();\n if (byId) {\n row = byId;\n } else {\n const { data: byMetaId } = await sb.from(\"meta_pixels\").select(\"*\").eq(\"meta_pixel_id\", pixelId).eq(\"store_id\", storeId).maybeSingle();\n row = byMetaId;\n }\n\n if (!row) return { success: false, error: `Pixel not found: ${pixelId}` };\n\n // Delete from local DB (Meta pixels can't be deleted via API, only archived)\n const { error } = await sb.from(\"meta_pixels\").delete().eq(\"id\", row.id as string);\n if (error) return { success: false, error: error.message };\n\n return { success: true, message: `Pixel \"${row.name}\" removed from store.` };\n }\n\n case \"create_custom_conversion\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name required\" };\n\n const int = await getIntegration(sb, storeId);\n const pixelId = (args.pixel_id as string) || int.pixelId;\n if (!pixelId) return { success: false, error: \"pixel_id required (none configured — set one in Settings → Meta Connection)\" };\n\n const metaParams: Record<string, unknown> = {\n name,\n event_source_id: pixelId,\n custom_event_type: (args.custom_event_type as string) || \"OTHER\",\n rule: JSON.stringify(args.rule || { url: { i_contains: \"\" } }),\n };\n if (args.default_conversion_value) {\n metaParams.default_conversion_value = Number(args.default_conversion_value);\n }\n\n const result = await graphPost(`${int.adAccountId}/customconversions`, metaParams, int.accessToken);\n const metaConversionId = result.id as string;\n\n const { data, error } = await sb.from(\"meta_custom_conversions\").insert({\n store_id: storeId,\n meta_conversion_id: metaConversionId || null,\n name,\n pixel_id: pixelId,\n rule: args.rule || null,\n default_conversion_value: args.default_conversion_value ? Number(args.default_conversion_value) : null,\n custom_event_type: (args.custom_event_type as string) || \"OTHER\",\n }).select().single();\n if (error) return { success: false, error: error.message };\n\n return { success: true, data: { ...data, meta_conversion_id: metaConversionId } };\n }\n\n case \"list_custom_conversions\": {\n const int = await getIntegration(sb, storeId);\n const fields = \"id,name,pixel,custom_event_type,rule,default_conversion_value,creation_time,last_fired_time\";\n const result = await graphGet(`${int.adAccountId}/customconversions`, fields, int.accessToken);\n return { success: true, data: result.data || [] };\n }\n\n // ==================================================================\n // AD RULES / AUTOMATION\n // ==================================================================\n\n case \"create_rule\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name required\" };\n\n const int = await getIntegration(sb, storeId);\n\n const evaluationSpec = args.evaluation_spec as Record<string, unknown>;\n const executionSpec = args.execution_spec as Record<string, unknown>;\n if (!evaluationSpec) return { success: false, error: \"evaluation_spec required\" };\n if (!executionSpec) return { success: false, error: \"execution_spec required\" };\n\n const entityType = (args.entity_type as string) || \"CAMPAIGN\";\n const scheduleSpec = (args.schedule_spec as Record<string, unknown>) || { schedule_type: \"SEMI_HOURLY\" };\n\n // Meta requires entity_type as a filter inside evaluation_spec.filters\n const evalSpecFinal: Record<string, unknown> = { ...evaluationSpec };\n delete evalSpecFinal.entity_type; // not valid as root key\n if (!evalSpecFinal.filters) evalSpecFinal.filters = [];\n const filters = evalSpecFinal.filters as Array<Record<string, unknown>>;\n const hasEntityFilter = filters.some((f) => f.field === \"entity_type\");\n if (!hasEntityFilter) {\n filters.push({ field: \"entity_type\", value: entityType, operator: \"EQUAL\" });\n }\n const hasTimePreset = filters.some((f) => f.field === \"time_preset\");\n if (!hasTimePreset) {\n filters.push({ field: \"time_preset\", value: \"LAST_7_DAYS\", operator: \"EQUAL\" });\n }\n\n const metaParams: Record<string, unknown> = {\n name,\n evaluation_spec: JSON.stringify(evalSpecFinal),\n execution_spec: JSON.stringify(executionSpec),\n schedule_spec: JSON.stringify(scheduleSpec),\n };\n\n const result = await graphPost(`${int.adAccountId}/adrules_library`, metaParams, int.accessToken);\n const metaRuleId = result.id as string;\n\n const { data, error } = await sb.from(\"meta_ad_rules\").insert({\n store_id: storeId,\n meta_rule_id: metaRuleId || null,\n name,\n evaluation_spec: evalSpecFinal,\n execution_spec: executionSpec,\n schedule_spec: scheduleSpec,\n entity_type: entityType,\n }).select().single();\n if (error) return { success: false, error: error.message };\n\n return { success: true, data: { ...data, meta_rule_id: metaRuleId } };\n }\n\n case \"list_rules\": {\n const int = await getIntegration(sb, storeId);\n const fields = \"id,name,status,evaluation_spec,execution_spec,schedule_spec,created_time,updated_time\";\n const result = await graphGet(`${int.adAccountId}/adrules_library`, fields, int.accessToken);\n return { success: true, data: result.data || [] };\n }\n\n case \"delete_rule\": {\n const id = (args.rule_id || args.id) as string;\n if (!id) return { success: false, error: \"rule_id required\" };\n\n let metaId = id;\n if (isLocalId(id)) {\n const { data } = await sb.from(\"meta_ad_rules\").select(\"meta_rule_id\")\n .eq(\"id\", id).single();\n if (data?.meta_rule_id) metaId = data.meta_rule_id;\n }\n\n const int = await getIntegration(sb, storeId);\n let metaDeleted = false;\n if (!isLocalId(metaId)) {\n try {\n await graphDelete(metaId, int.accessToken);\n metaDeleted = true;\n } catch { /* continue */ }\n }\n\n // Delete from local DB\n if (isLocalId(id)) {\n await sb.from(\"meta_ad_rules\").delete().eq(\"id\", id);\n } else {\n await sb.from(\"meta_ad_rules\").delete().eq(\"meta_rule_id\", id).eq(\"store_id\", storeId);\n }\n\n return { success: true, data: { deleted: id, meta_deleted: metaDeleted } };\n }\n\n // ==================================================================\n // REACH ESTIMATE / AUDIENCE INSIGHTS\n // ==================================================================\n\n case \"reach_estimate\": {\n const int = await getIntegration(sb, storeId);\n\n const targetingSpec = args.targeting as Record<string, unknown>;\n if (!targetingSpec) return { success: false, error: \"targeting required (targeting spec object)\" };\n\n const resolvedTargeting = await buildTargeting(sb, targetingSpec, int);\n\n // Meta v21 uses delivery_estimate with GET, targeting_spec as query param\n const extra = `targeting_spec=${encodeURIComponent(JSON.stringify(resolvedTargeting))}&optimization_goal=${encodeURIComponent((args.optimize_for as string) || \"REACH\")}`;\n const result = await graphGet(\n `${int.adAccountId}/delivery_estimate`,\n \"daily_outcomes_curve,estimate_dau,estimate_ready\",\n int.accessToken,\n extra,\n );\n\n return { success: true, data: result.data || result };\n }\n\n case \"audience_insights\": {\n const id = (args.ad_set_id || args.id) as string;\n if (!id) return { success: false, error: \"ad_set_id required\" };\n\n const { data: adSet } = await sb.from(\"meta_ad_sets\").select(\"meta_ad_set_id, targeting\")\n .eq(\"id\", id).eq(\"store_id\", storeId).single();\n if (!adSet) return { success: false, error: `Ad set not found: ${id}` };\n\n const int = await getIntegration(sb, storeId);\n\n // If published, get delivery insights\n if (!isLocalId(adSet.meta_ad_set_id)) {\n const fields = \"reach,impressions,frequency,actions,age_targeting,gender_targeting\";\n const result = await graphGet(`${adSet.meta_ad_set_id}/insights`,\n fields, int.accessToken, \"breakdowns=age,gender&date_preset=last_30d\");\n return { success: true, data: result.data || [] };\n }\n\n // If draft, estimate reach\n const targeting = adSet.targeting\n ? (typeof adSet.targeting === \"string\" ? JSON.parse(adSet.targeting) : adSet.targeting)\n : null;\n if (!targeting) return { success: false, error: \"No targeting configured on this ad set\" };\n\n const resolvedTargeting = await buildTargeting(sb, targeting, int);\n const extra = `targeting_spec=${encodeURIComponent(JSON.stringify(resolvedTargeting))}&optimization_goal=REACH`;\n const estimate = await graphGet(\n `${int.adAccountId}/delivery_estimate`,\n \"daily_outcomes_curve,estimate_dau,estimate_ready\",\n int.accessToken,\n extra,\n );\n\n return { success: true, data: { type: \"estimate\", ...(Array.isArray(estimate.data) ? estimate.data[0] : estimate) as Record<string, unknown> } };\n }\n\n // ==================================================================\n // SEARCH TARGETING — find valid Meta interest/location IDs\n // ==================================================================\n\n case \"search_targeting\": {\n const query = args.query as string;\n const type = (args.targeting_type as string) || \"adinterest\";\n if (!query) return { success: false, error: \"query required (search term for interests/locations)\" };\n\n const int = await getIntegration(sb, storeId);\n const validTypes = [\"adinterest\", \"adgeolocation\", \"adlocale\", \"adTargetingCategory\"];\n const searchType = validTypes.includes(type) ? type : \"adinterest\";\n\n const url = `${META_BASE}/search?type=${searchType}&q=${enc(query)}&access_token=${enc(int.accessToken)}&limit=25`;\n const res = await fetch(url);\n if (!res.ok) {\n const body = await res.text();\n return { success: false, error: parseMetaError(body, \"search\", res.status) };\n }\n const json = await res.json() as Record<string, unknown>;\n return { success: true, data: json.data || [] };\n }\n\n // ==================================================================\n // PHASE 4: PRODUCT CATALOG, CANVAS, ATTRIBUTION\n // ==================================================================\n\n case \"create_catalog\": {\n const name = (args.name as string) || \"Product Catalog\";\n const int = await getIntegration(sb, storeId);\n const businessId = int.businessId;\n const endpoint = businessId\n ? `/${businessId}/owned_product_catalogs`\n : `/${int.adAccountId}/product_catalogs`;\n const res = await fetch(`${META_BASE}${endpoint}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams({ access_token: int.accessToken, name, vertical: \"commerce\" }).toString(),\n });\n const json = await res.json() as Record<string, unknown>;\n if (json.error) return { success: false, error: parseMetaError(JSON.stringify(json), \"create_catalog\", res.status) };\n const metaCatalogId = json.id as string;\n const { data, error } = await sb.from(\"meta_catalogs\").insert({\n store_id: storeId, meta_catalog_id: metaCatalogId, name, sync_status: \"pending\",\n }).select().single();\n if (error) return { success: false, error: error.message };\n return { success: true, data: { ...data, meta_catalog_id: metaCatalogId } };\n }\n\n case \"list_catalogs\": {\n const { data, error } = await sb.from(\"meta_catalogs\")\n .select(\"*\").eq(\"store_id\", storeId).order(\"created_at\", { ascending: false });\n if (error) return { success: false, error: error.message };\n return { success: true, data: data || [] };\n }\n\n case \"sync_catalog\": {\n const catalogId = args.catalog_id as string;\n if (!catalogId) return { success: false, error: \"catalog_id required\" };\n const { data: catalog } = await sb.from(\"meta_catalogs\")\n .select(\"*\").eq(\"id\", catalogId).single();\n if (!catalog?.meta_catalog_id) return { success: false, error: \"Catalog not found or not published\" };\n const int = await getIntegration(sb, storeId);\n await sb.from(\"meta_catalogs\")\n .update({ sync_status: \"syncing\", updated_at: new Date().toISOString() })\n .eq(\"id\", catalogId);\n const { data: domainRow } = await sb.from(\"store_domains\")\n .select(\"domain\").eq(\"store_id\", storeId).eq(\"is_primary\", true).single();\n const domain = domainRow?.domain || \"example.com\";\n const { data: products } = await sb.from(\"products\")\n .select(\"id, name, slug, description, sku, featured_image, stock_status, product_variations(regular_price, sale_price)\")\n .eq(\"store_id\", storeId).eq(\"status\", \"published\").limit(5000);\n if (!products?.length) {\n await sb.from(\"meta_catalogs\").update({ sync_status: \"failed\", error: \"No products\" }).eq(\"id\", catalogId);\n return { success: false, error: \"No published products found\" };\n }\n const items: Record<string, unknown>[] = [];\n for (const p of products) {\n const vars = (p.product_variations as Array<{ regular_price: number; sale_price: number | null }>) || [];\n const price = vars[0]?.regular_price || 0;\n if (price <= 0) continue;\n items.push({\n method: \"UPDATE\", retailer_id: p.id,\n data: {\n id: p.id, title: p.name || \"Untitled\",\n description: (p.description || p.name || \"\").slice(0, 5000),\n availability: p.stock_status === \"instock\" ? \"in stock\" : \"out of stock\",\n condition: \"new\", price: `${price.toFixed(2)} USD`,\n link: `https://${domain}/products/${p.slug}`,\n image_link: p.featured_image || `https://${domain}/placeholder.png`,\n brand: domain.split(\".\")[0],\n },\n });\n }\n let synced = 0;\n for (let i = 0; i < items.length; i += 500) {\n const batch = items.slice(i, i + 500);\n await fetch(`${META_BASE}/${catalog.meta_catalog_id}/batch`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams({\n access_token: int.accessToken,\n requests: JSON.stringify(batch),\n }).toString(),\n });\n synced += batch.length;\n }\n await sb.from(\"meta_catalogs\").update({\n sync_status: \"synced\", product_count: synced,\n last_synced_at: new Date().toISOString(), error: null,\n }).eq(\"id\", catalogId);\n return { success: true, synced, meta_catalog_id: catalog.meta_catalog_id };\n }\n\n case \"create_product_set\": {\n const catalogId = args.catalog_id as string;\n const name = (args.name as string) || \"All Products\";\n const filter = args.filter || { retailer_id: { is_any: true } };\n if (!catalogId) return { success: false, error: \"catalog_id required\" };\n const { data: catalog } = await sb.from(\"meta_catalogs\")\n .select(\"meta_catalog_id\").eq(\"id\", catalogId).single();\n if (!catalog?.meta_catalog_id) return { success: false, error: \"Catalog not found\" };\n const int = await getIntegration(sb, storeId);\n const res = await fetch(`${META_BASE}/${catalog.meta_catalog_id}/product_sets`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams({\n access_token: int.accessToken, name,\n filter: JSON.stringify(filter),\n }).toString(),\n });\n const json = await res.json() as Record<string, unknown>;\n if (json.error) return { success: false, error: parseMetaError(JSON.stringify(json), \"product_set\", res.status) };\n const { data, error } = await sb.from(\"meta_product_sets\").insert({\n store_id: storeId, catalog_id: catalogId,\n meta_product_set_id: json.id as string, name, filter,\n }).select().single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n case \"list_product_sets\": {\n const catalogId = args.catalog_id as string;\n if (!catalogId) return { success: false, error: \"catalog_id required\" };\n const { data, error } = await sb.from(\"meta_product_sets\")\n .select(\"*\").eq(\"catalog_id\", catalogId).order(\"created_at\", { ascending: false });\n if (error) return { success: false, error: error.message };\n return { success: true, data: data || [] };\n }\n\n case \"create_canvas\": {\n const name = (args.name as string) || \"Instant Experience\";\n const elements = (args.elements as Array<Record<string, unknown>>) || [];\n const int = await getIntegration(sb, storeId);\n const pageId = int.pageId;\n if (!pageId) return { success: false, error: \"No Facebook Page linked\" };\n const bodyElements = elements.map((el) => {\n switch (el.type) {\n case \"header\": return { element_type: \"HEADER\", text: { text: el.text || \"\", font_size: \"large\" } };\n case \"photo\": return { element_type: \"PHOTO\", photo: { url: el.url || \"\" } };\n case \"video\": return { element_type: \"VIDEO\", video: { url: el.url || \"\" } };\n case \"text\": return { element_type: \"TEXT\", text: { text: el.text || \"\" } };\n case \"button\": return { element_type: \"BUTTON\", button: { title: el.title || \"Shop Now\", action: { type: \"web_url\", url: el.url || \"\" } } };\n case \"product_set\": return { element_type: \"PRODUCT_SET\", product_set: { product_set_id: el.product_set_id || \"\" } };\n default: return { element_type: \"TEXT\", text: { text: String(el.text || \"\") } };\n }\n });\n const res = await fetch(`${META_BASE}/${pageId}/canvas`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams({\n access_token: int.accessToken, name,\n body_element_ids: JSON.stringify(bodyElements),\n is_published: \"true\",\n }).toString(),\n });\n const json = await res.json() as Record<string, unknown>;\n if (json.error) return { success: false, error: parseMetaError(JSON.stringify(json), \"canvas\", res.status) };\n const { data, error } = await sb.from(\"meta_canvas\").insert({\n store_id: storeId, meta_canvas_id: json.id as string, name, elements, status: \"published\",\n }).select().single();\n if (error) return { success: false, error: error.message };\n return { success: true, data };\n }\n\n case \"list_canvases\": {\n const { data, error } = await sb.from(\"meta_canvas\")\n .select(\"*\").eq(\"store_id\", storeId).order(\"created_at\", { ascending: false });\n if (error) return { success: false, error: error.message };\n return { success: true, data: data || [] };\n }\n\n case \"attribution_report\": {\n const campaignId = args.campaign_id as string;\n let query = sb.from(\"marketing_campaign_events\")\n .select(\"id, campaign_id, channel, attributed_revenue, created_at, event_type\")\n .eq(\"store_id\", storeId).eq(\"event_type\", \"converted\")\n .order(\"created_at\", { ascending: false });\n if (campaignId) query = query.eq(\"campaign_id\", campaignId);\n const { data: events, error } = await query.limit(1000);\n if (error) return { success: false, error: error.message };\n const conversions = events?.length || 0;\n const totalRevenue = (events || []).reduce((s, e) => s + (e.attributed_revenue || 0), 0);\n const byChannel: Record<string, { count: number; revenue: number }> = {};\n for (const e of events || []) {\n const ch = e.channel || \"unknown\";\n if (!byChannel[ch]) byChannel[ch] = { count: 0, revenue: 0 };\n byChannel[ch].count += 1;\n byChannel[ch].revenue += e.attributed_revenue || 0;\n }\n return {\n success: true,\n data: {\n conversions, total_revenue: parseFloat(totalRevenue.toFixed(2)),\n avg_order_value: conversions > 0 ? parseFloat((totalRevenue / conversions).toFixed(2)) : 0,\n roas: 0, by_channel: byChannel,\n },\n };\n }\n\n // ==================================================================\n // DEFAULT\n // ==================================================================\n\n default:\n return {\n success: false,\n error: `Unknown action: ${action}. Valid: create_campaign, create_ad_set, create_ad, create_full, list_campaigns, list_ad_sets, list_ads, get_campaign, get_ad_set, get_ad, update_campaign, update_ad_set, update_ad, delete, publish, sync, search_targeting, insights_breakdown, ad_preview, create_audience, list_audiences, get_audience, delete_audience, create_lookalike, create_lead_form, list_lead_forms, get_leads, list_pixels, create_custom_conversion, list_custom_conversions, create_rule, list_rules, delete_rule, reach_estimate, audience_insights, create_catalog, list_catalogs, sync_catalog, create_product_set, list_product_sets, create_canvas, list_canvases, attribution_report.`,\n };\n }\n } catch (err) {\n return { success: false, error: err instanceof Error ? err.message : String(err) };\n }\n}\n"],"mappings":"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","ignoreList":[]}
|