whale-code 6.5.11 → 6.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (613) hide show
  1. package/dist/cli/chat/ChatApp.js +7 -11
  2. package/dist/cli/chat/ChatApp.js.map +1 -1
  3. package/dist/cli/chat/ChatInput.js +7 -3
  4. package/dist/cli/chat/ChatInput.js.map +1 -1
  5. package/dist/cli/chat/MessageList.js +5 -6
  6. package/dist/cli/chat/MessageList.js.map +1 -1
  7. package/dist/cli/chat/StatusBar.d.ts +2 -2
  8. package/dist/cli/chat/StatusBar.js +90 -160
  9. package/dist/cli/chat/StatusBar.js.map +1 -1
  10. package/dist/cli/chat/components/LiveArea.js +78 -115
  11. package/dist/cli/chat/components/LiveArea.js.map +1 -1
  12. package/dist/cli/chat/components/StaticMessages.js +60 -79
  13. package/dist/cli/chat/components/StaticMessages.js.map +1 -1
  14. package/dist/cli/chat/hooks/useAgentLoop.js +45 -37
  15. package/dist/cli/chat/hooks/useAgentLoop.js.map +1 -1
  16. package/dist/cli/chat/store.d.ts +12 -0
  17. package/dist/cli/chat/store.js +19 -0
  18. package/dist/cli/chat/store.js.map +1 -1
  19. package/dist/cli/services/agent-loop-tools.js +10 -1
  20. package/dist/cli/services/agent-loop-tools.js.map +1 -1
  21. package/dist/cli/services/cli-agent-loop.js +3 -2
  22. package/dist/cli/services/cli-agent-loop.js.map +1 -1
  23. package/dist/cli/services/config-store.js +4 -3
  24. package/dist/cli/services/config-store.js.map +1 -1
  25. package/dist/cli/services/memory-manager.js +2 -2
  26. package/dist/cli/services/memory-manager.js.map +1 -1
  27. package/dist/cli/services/permission-modes.js +14 -10
  28. package/dist/cli/services/permission-modes.js.map +1 -1
  29. package/dist/cli/services/session-client.js +2 -1
  30. package/dist/cli/services/session-client.js.map +1 -1
  31. package/dist/cli/services/session-persistence.js +14 -6
  32. package/dist/cli/services/session-persistence.js.map +1 -1
  33. package/dist/cli/shared/SpinnerSlot.js +4 -1
  34. package/dist/cli/shared/SpinnerSlot.js.map +1 -1
  35. package/dist/server/handlers/browser-lifecycle.js +10 -0
  36. package/dist/server/handlers/browser-lifecycle.js.map +1 -1
  37. package/dist/server/handlers/browser.js +16 -1
  38. package/dist/server/handlers/browser.js.map +1 -1
  39. package/dist/server/handlers/campaigns.js +11 -0
  40. package/dist/server/handlers/campaigns.js.map +1 -1
  41. package/dist/server/handlers/catalog-products.js +19 -5
  42. package/dist/server/handlers/catalog-products.js.map +1 -1
  43. package/dist/server/handlers/catalog.js +42 -8
  44. package/dist/server/handlers/catalog.js.map +1 -1
  45. package/dist/server/handlers/clickhouse.js +4 -4
  46. package/dist/server/handlers/clickhouse.js.map +1 -1
  47. package/dist/server/handlers/comms-email.js +70 -8
  48. package/dist/server/handlers/comms-email.js.map +1 -1
  49. package/dist/server/handlers/comms.js +63 -21
  50. package/dist/server/handlers/comms.js.map +1 -1
  51. package/dist/server/handlers/coupons.js +141 -77
  52. package/dist/server/handlers/coupons.js.map +1 -1
  53. package/dist/server/handlers/google-ads.js +280 -8
  54. package/dist/server/handlers/google-ads.js.map +1 -1
  55. package/dist/server/handlers/remove-bg.d.ts +33 -0
  56. package/dist/server/handlers/remove-bg.js +698 -44
  57. package/dist/server/handlers/remove-bg.js.map +1 -1
  58. package/dist/server/handlers/supply-chain.js +93 -1
  59. package/dist/server/handlers/supply-chain.js.map +1 -1
  60. package/dist/server/handlers/workflow-steps-types.d.ts +1 -1
  61. package/dist/server/handlers/workflow-steps-types.js +7 -1
  62. package/dist/server/handlers/workflow-steps-types.js.map +1 -1
  63. package/dist/server/handlers/workflow-steps.js +1 -1
  64. package/dist/server/handlers/workflow-steps.js.map +1 -1
  65. package/dist/server/index.js +122 -29
  66. package/dist/server/index.js.map +1 -1
  67. package/dist/server/lib/agent-loop-turn.js +33 -3
  68. package/dist/server/lib/agent-loop-turn.js.map +1 -1
  69. package/dist/server/lib/agent-loop-types.d.ts +6 -2
  70. package/dist/server/lib/agent-loop-types.js +14 -2
  71. package/dist/server/lib/agent-loop-types.js.map +1 -1
  72. package/dist/server/lib/clickhouse-client.js +4 -2
  73. package/dist/server/lib/clickhouse-client.js.map +1 -1
  74. package/dist/server/lib/code-worker.js +4 -1
  75. package/dist/server/lib/code-worker.js.map +1 -1
  76. package/dist/server/providers/anthropic.js +103 -33
  77. package/dist/server/providers/anthropic.js.map +1 -1
  78. package/dist/server/server-chat.js +2 -2
  79. package/dist/server/server-chat.js.map +1 -1
  80. package/dist/server/server-helpers.d.ts +8 -1
  81. package/dist/server/server-helpers.js +17 -3
  82. package/dist/server/server-helpers.js.map +1 -1
  83. package/dist/server/server-persist.js +34 -21
  84. package/dist/server/server-persist.js.map +1 -1
  85. package/dist/server/server-rate-limit.d.ts +0 -1
  86. package/dist/server/server-rate-limit.js +5 -5
  87. package/dist/server/server-rate-limit.js.map +1 -1
  88. package/dist/server/server-routes-approvals.js +2 -2
  89. package/dist/server/server-routes-approvals.js.map +1 -1
  90. package/dist/server/server-routes-auth.js +2 -2
  91. package/dist/server/server-routes-auth.js.map +1 -1
  92. package/dist/server/server-routes-events.js +2 -2
  93. package/dist/server/server-routes-events.js.map +1 -1
  94. package/dist/server/server-routes-public.js +4 -4
  95. package/dist/server/server-routes-public.js.map +1 -1
  96. package/dist/server/server-routes-webchat.js +3 -3
  97. package/dist/server/server-routes-webchat.js.map +1 -1
  98. package/dist/server/server-store-circuit-breaker.js +1 -1
  99. package/dist/server/server-store-circuit-breaker.js.map +1 -1
  100. package/dist/server/tool-router.js +7 -4
  101. package/dist/server/tool-router.js.map +1 -1
  102. package/dist/server/validation.js +11 -0
  103. package/dist/server/validation.js.map +1 -1
  104. package/dist/shared/api-client.js +38 -11
  105. package/dist/shared/api-client.js.map +1 -1
  106. package/package.json +12 -10
  107. package/vendor/ink/build/ink.js +68 -24
  108. package/vendor/ink/node_modules/react-devtools-core/README.md +152 -0
  109. package/vendor/ink/node_modules/react-devtools-core/backend.js +1 -0
  110. package/vendor/ink/node_modules/react-devtools-core/dist/648.chunk.js +2 -0
  111. package/vendor/ink/node_modules/react-devtools-core/dist/648.chunk.js.map +1 -0
  112. package/vendor/ink/node_modules/react-devtools-core/dist/backend.js +15691 -0
  113. package/vendor/ink/node_modules/react-devtools-core/dist/backend.js.map +1 -0
  114. package/vendor/ink/node_modules/react-devtools-core/dist/importFile.worker.worker.js +2 -0
  115. package/vendor/ink/node_modules/react-devtools-core/dist/importFile.worker.worker.js.map +1 -0
  116. package/vendor/ink/node_modules/react-devtools-core/dist/parseSourceAndMetadata.worker.worker.js +14 -0
  117. package/vendor/ink/node_modules/react-devtools-core/dist/parseSourceAndMetadata.worker.worker.js.map +1 -0
  118. package/vendor/ink/node_modules/react-devtools-core/dist/standalone.js +2 -0
  119. package/vendor/ink/node_modules/react-devtools-core/dist/standalone.js.map +1 -0
  120. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/LICENSE +21 -0
  121. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/README.md +495 -0
  122. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/browser.js +8 -0
  123. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/index.js +10 -0
  124. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/buffer-util.js +129 -0
  125. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/constants.js +10 -0
  126. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/event-target.js +184 -0
  127. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/extension.js +223 -0
  128. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/limiter.js +55 -0
  129. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/permessage-deflate.js +518 -0
  130. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/receiver.js +607 -0
  131. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/sender.js +409 -0
  132. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/stream.js +180 -0
  133. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/validation.js +104 -0
  134. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/websocket-server.js +449 -0
  135. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/lib/websocket.js +1197 -0
  136. package/vendor/ink/node_modules/react-devtools-core/node_modules/ws/package.json +56 -0
  137. package/vendor/ink/node_modules/react-devtools-core/package.json +38 -0
  138. package/vendor/ink/node_modules/react-devtools-core/standalone.js +1 -0
  139. package/dist/cli/__tests__/print-mode-streaming.test.js +0 -270
  140. package/dist/cli/__tests__/print-mode.basic-output.test.js +0 -230
  141. package/dist/cli/__tests__/print-mode.session-errors.test.js +0 -252
  142. package/dist/cli/__tests__/print-mode.test.js +0 -273
  143. package/dist/cli/__tests__/serve-mode-messages.test.js +0 -338
  144. package/dist/cli/__tests__/serve-mode.messages.part2.test.js +0 -266
  145. package/dist/cli/__tests__/serve-mode.messages.test.js +0 -277
  146. package/dist/cli/__tests__/serve-mode.startup-http.test.js +0 -279
  147. package/dist/cli/__tests__/serve-mode.test.js +0 -345
  148. package/dist/cli/chat/NodeManager.d.ts +0 -30
  149. package/dist/cli/chat/NodeManager.js +0 -66
  150. package/dist/cli/chat/NodeManager.js.map +0 -1
  151. package/dist/cli/chat/chat-input-menu-handler.d.ts +0 -32
  152. package/dist/cli/chat/hooks/slash-imsg-handlers.js +0 -148
  153. package/dist/cli/chat/hooks/slash-imsg-handlers.js.map +0 -1
  154. package/dist/cli/chat/hooks/useStreamingReducer.d.ts +0 -66
  155. package/dist/cli/commands/__tests__/config-cmd.test.js +0 -270
  156. package/dist/cli/commands/__tests__/doctor.test.js +0 -257
  157. package/dist/cli/commands/__tests__/imsg-node-bridge.test.js +0 -99
  158. package/dist/cli/commands/__tests__/imsg-utils.test.js +0 -73
  159. package/dist/cli/commands/__tests__/init.test.js +0 -214
  160. package/dist/cli/commands/__tests__/mcp.test.js +0 -287
  161. package/dist/cli/commands/imsg-watcher-helpers.d.ts +0 -40
  162. package/dist/cli/commands/imsg-watcher-helpers.js +0 -184
  163. package/dist/cli/commands/imsg-watcher-helpers.js.map +0 -1
  164. package/dist/cli/commands/imsg-watcher.d.ts +0 -11
  165. package/dist/cli/commands/imsg-watcher.js +0 -230
  166. package/dist/cli/commands/imsg-watcher.js.map +0 -1
  167. package/dist/cli/services/__tests__/agent-definitions.test.js +0 -153
  168. package/dist/cli/services/__tests__/agent-events-global.test.js +0 -39
  169. package/dist/cli/services/__tests__/agent-events.part2.test.js +0 -113
  170. package/dist/cli/services/__tests__/agent-events.test.js +0 -157
  171. package/dist/cli/services/__tests__/agent-loop-auth.test.js +0 -392
  172. package/dist/cli/services/__tests__/agent-loop-budget.test.js +0 -389
  173. package/dist/cli/services/__tests__/agent-loop-tools-lifecycle.test.js +0 -430
  174. package/dist/cli/services/__tests__/agent-loop-tools-maxturns.test.js +0 -486
  175. package/dist/cli/services/__tests__/agent-loop-utils-execution.test.js +0 -528
  176. package/dist/cli/services/__tests__/agent-loop-utils-helpers.test.js +0 -466
  177. package/dist/cli/services/__tests__/agent-worker-base-execute.test.js +0 -257
  178. package/dist/cli/services/__tests__/agent-worker-base-helpers.test.js +0 -198
  179. package/dist/cli/services/__tests__/agent-worker-base.test.js +0 -278
  180. package/dist/cli/services/__tests__/auth-service-exports.test.js +0 -41
  181. package/dist/cli/services/__tests__/auth-service.part2.test.js +0 -169
  182. package/dist/cli/services/__tests__/auth-service.test.js +0 -242
  183. package/dist/cli/services/__tests__/background-processes.test.js +0 -282
  184. package/dist/cli/services/__tests__/claude-md-loader.test.js +0 -134
  185. package/dist/cli/services/__tests__/config-store.test.js +0 -247
  186. package/dist/cli/services/__tests__/debug-log.test.js +0 -199
  187. package/dist/cli/services/__tests__/edge-cases-caching.test.js +0 -174
  188. package/dist/cli/services/__tests__/edge-cases-compaction-core.test.js +0 -226
  189. package/dist/cli/services/__tests__/edge-cases-compaction-openai.test.js +0 -152
  190. package/dist/cli/services/__tests__/edge-cases-compaction-shapes.test.js +0 -53
  191. package/dist/cli/services/__tests__/edge-cases-compaction-thinking.test.js +0 -226
  192. package/dist/cli/services/__tests__/edge-cases-compaction.test.js +0 -131
  193. package/dist/cli/services/__tests__/edge-cases-paths.test.js +0 -86
  194. package/dist/cli/services/__tests__/error-logger-messages.test.js +0 -81
  195. package/dist/cli/services/__tests__/error-logger-transport.test.js +0 -119
  196. package/dist/cli/services/__tests__/error-logger.test.js +0 -264
  197. package/dist/cli/services/__tests__/file-history.test.js +0 -136
  198. package/dist/cli/services/__tests__/git-context-cache-reset.test.js +0 -223
  199. package/dist/cli/services/__tests__/git-context.test.js +0 -241
  200. package/dist/cli/services/__tests__/interactive-tools-execute.test.js +0 -166
  201. package/dist/cli/services/__tests__/interactive-tools-plan.test.js +0 -197
  202. package/dist/cli/services/__tests__/interactive-tools.part2.test.js +0 -168
  203. package/dist/cli/services/__tests__/interactive-tools.test.js +0 -179
  204. package/dist/cli/services/__tests__/keybinding-manager.test.js +0 -205
  205. package/dist/cli/services/__tests__/local-tools-dispatch.test.js +0 -404
  206. package/dist/cli/services/__tests__/local-tools.test.js +0 -238
  207. package/dist/cli/services/__tests__/lsp-manager.test.js +0 -364
  208. package/dist/cli/services/__tests__/mcp-client-connect-disconnect.test.js +0 -310
  209. package/dist/cli/services/__tests__/mcp-client.test.js +0 -93
  210. package/dist/cli/services/__tests__/memory-manager.test.js +0 -154
  211. package/dist/cli/services/__tests__/model-manager-utils.test.js +0 -154
  212. package/dist/cli/services/__tests__/model-manager.test.js +0 -175
  213. package/dist/cli/services/__tests__/permission-modes.test.js +0 -222
  214. package/dist/cli/services/__tests__/ripgrep.test.js +0 -328
  215. package/dist/cli/services/__tests__/server-tools-execute.test.js +0 -317
  216. package/dist/cli/services/__tests__/server-tools.test.js +0 -272
  217. package/dist/cli/services/__tests__/session-persistence.test.js +0 -245
  218. package/dist/cli/services/__tests__/subagent-basic.test.js +0 -489
  219. package/dist/cli/services/__tests__/subagent-edge.test.js +0 -545
  220. package/dist/cli/services/__tests__/subagent-prompts.test.js +0 -558
  221. package/dist/cli/services/__tests__/subagent-worker-errors.test.js +0 -255
  222. package/dist/cli/services/__tests__/subagent-worker.test.js +0 -242
  223. package/dist/cli/services/__tests__/system-prompt.test.js +0 -210
  224. package/dist/cli/services/__tests__/team-lead-comms-messaging.test.js +0 -250
  225. package/dist/cli/services/__tests__/team-lead-comms-result.test.js +0 -232
  226. package/dist/cli/services/__tests__/team-lead-comms-stop.test.js +0 -344
  227. package/dist/cli/services/__tests__/team-lead-comms.test.js +0 -285
  228. package/dist/cli/services/__tests__/team-lead-create.test.js +0 -327
  229. package/dist/cli/services/__tests__/team-lead-run.test.js +0 -318
  230. package/dist/cli/services/__tests__/team-lead-stop.test.js +0 -199
  231. package/dist/cli/services/__tests__/team-state-comms.test.js +0 -240
  232. package/dist/cli/services/__tests__/team-state-core.test.js +0 -230
  233. package/dist/cli/services/__tests__/team-state-tasks-complete-fail-available.test.js +0 -224
  234. package/dist/cli/services/__tests__/team-state-tasks.test.js +0 -184
  235. package/dist/cli/services/__tests__/telemetry-ai-metadata.test.js +0 -116
  236. package/dist/cli/services/__tests__/telemetry.part2.test.js +0 -195
  237. package/dist/cli/services/__tests__/telemetry.test.js +0 -176
  238. package/dist/cli/services/agent-loop-iteration.d.ts +0 -13
  239. package/dist/cli/services/agent-loop-setup.d.ts +0 -32
  240. package/dist/cli/services/agent-worker-base-api.d.ts +0 -19
  241. package/dist/cli/services/agent-worker-base-helpers.d.ts +0 -27
  242. package/dist/cli/services/agent-worker-base-tools.d.ts +0 -16
  243. package/dist/cli/services/agent-worker-base-types.d.ts +0 -81
  244. package/dist/cli/services/background-agents.d.ts +0 -26
  245. package/dist/cli/services/background-processes-ops.d.ts +0 -24
  246. package/dist/cli/services/background-tool-defs.d.ts +0 -50
  247. package/dist/cli/services/config-modules-model.test.js +0 -133
  248. package/dist/cli/services/config-modules-permission.test.js +0 -85
  249. package/dist/cli/services/config-modules-permissions.test.js +0 -85
  250. package/dist/cli/services/config-modules-session.test.js +0 -297
  251. package/dist/cli/services/format-server-response-columns.test.js +0 -265
  252. package/dist/cli/services/format-server-response-fallback.test.js +0 -65
  253. package/dist/cli/services/format-server-response-primitives-basic.test.js +0 -261
  254. package/dist/cli/services/format-server-response-primitives-nested.test.js +0 -188
  255. package/dist/cli/services/format-server-response-primitives.test.js +0 -300
  256. package/dist/cli/services/format-server-response-realworld.test.js +0 -248
  257. package/dist/cli/services/format-server-response-values.test.js +0 -247
  258. package/dist/cli/services/hooks-runners.test.js +0 -184
  259. package/dist/cli/services/hooks.glob-load.test.js +0 -233
  260. package/dist/cli/services/hooks.run-hooks.test.js +0 -184
  261. package/dist/cli/services/hooks.test.js +0 -233
  262. package/dist/cli/services/ink-incremental.d.ts +0 -19
  263. package/dist/cli/services/ink-incremental.js +0 -59
  264. package/dist/cli/services/ink-incremental.js.map +0 -1
  265. package/dist/cli/services/ink-resize-fix.d.ts +0 -18
  266. package/dist/cli/services/ink-resize-fix.js +0 -76
  267. package/dist/cli/services/ink-resize-fix.js.map +0 -1
  268. package/dist/cli/services/ink-sync-output.d.ts +0 -12
  269. package/dist/cli/services/ink-sync-output.js +0 -16
  270. package/dist/cli/services/ink-sync-output.js.map +0 -1
  271. package/dist/cli/services/interactive-tool-defs.d.ts +0 -80
  272. package/dist/cli/services/local-tools-definitions.d.ts +0 -6
  273. package/dist/cli/services/local-tools-files.test.js +0 -256
  274. package/dist/cli/services/local-tools-read-many.d.ts +0 -6
  275. package/dist/cli/services/model-router.test.js +0 -245
  276. package/dist/cli/services/rewind-rewindTo.test.js +0 -202
  277. package/dist/cli/services/rewind.test.js +0 -175
  278. package/dist/cli/services/sandbox.test.js +0 -198
  279. package/dist/cli/services/subagent-execution.d.ts +0 -12
  280. package/dist/cli/services/team-lead-auto.d.ts +0 -11
  281. package/dist/cli/services/team-lead-execution.d.ts +0 -28
  282. package/dist/cli/services/teammate-loop.js +0 -557
  283. package/dist/cli/services/teammate-loop.js.map +0 -1
  284. package/dist/cli/services/tools/__tests__/agent-tools-tasks-teams.test.js +0 -250
  285. package/dist/cli/services/tools/__tests__/agent-tools-teams.test.js +0 -200
  286. package/dist/cli/services/tools/__tests__/agent-tools.test.js +0 -340
  287. package/dist/cli/services/tools/__tests__/file-ops-cache.test.js +0 -152
  288. package/dist/cli/services/tools/__tests__/file-ops-notebook.test.js +0 -249
  289. package/dist/cli/services/tools/__tests__/file-ops-read.test.js +0 -261
  290. package/dist/cli/services/tools/__tests__/file-ops-write.test.js +0 -292
  291. package/dist/cli/services/tools/__tests__/search-tools-rg.test.js +0 -92
  292. package/dist/cli/services/tools/__tests__/search-tools.part2.test.js +0 -174
  293. package/dist/cli/services/tools/__tests__/search-tools.test.js +0 -227
  294. package/dist/cli/services/tools/__tests__/shell-exec-allowed-core.test.js +0 -163
  295. package/dist/cli/services/tools/__tests__/shell-exec-allowed-extended.test.js +0 -220
  296. package/dist/cli/services/tools/__tests__/shell-exec-allowed.part2.test.js +0 -215
  297. package/dist/cli/services/tools/__tests__/shell-exec-allowed.test.js +0 -154
  298. package/dist/cli/services/tools/__tests__/shell-exec-blocked.test.js +0 -132
  299. package/dist/cli/services/tools/__tests__/shell-exec-execution.test.js +0 -245
  300. package/dist/cli/services/tools/__tests__/task-manager-create.test.js +0 -110
  301. package/dist/cli/services/tools/__tests__/task-manager-crud.test.js +0 -339
  302. package/dist/cli/services/tools/__tests__/task-manager-list-get.test.js +0 -343
  303. package/dist/cli/services/tools/__tests__/task-manager-query.test.js +0 -346
  304. package/dist/cli/services/tools/__tests__/task-manager-routing.test.js +0 -58
  305. package/dist/cli/services/tools/__tests__/task-manager-update.test.js +0 -224
  306. package/dist/cli/services/tools/__tests__/task-manager.test.js +0 -159
  307. package/dist/cli/services/tools/__tests__/web-tools-html-search.test.js +0 -227
  308. package/dist/cli/services/tools/__tests__/web-tools.test.js +0 -285
  309. package/dist/cli/services/tools/shell-exec.test.js +0 -148
  310. package/dist/cli/shared/SharedTick.d.ts +0 -10
  311. package/dist/cli/shared/__tests__/markdown.test.js +0 -188
  312. package/dist/local-agent/__tests__/connection-disconnect.test.js +0 -201
  313. package/dist/local-agent/__tests__/connection-lifecycle.test.js +0 -289
  314. package/dist/local-agent/__tests__/connection-msghandling.test.js +0 -311
  315. package/dist/local-agent/__tests__/connection-reconnect.test.js +0 -230
  316. package/dist/local-agent/__tests__/connection-toolexec.test.js +0 -253
  317. package/dist/local-agent/__tests__/discovery.test.js +0 -328
  318. package/dist/local-agent/__tests__/executor-background.test.js +0 -219
  319. package/dist/local-agent/__tests__/executor-exec.test.js +0 -221
  320. package/dist/local-agent/__tests__/executor-jobs-sessions.test.js +0 -220
  321. package/dist/local-agent/__tests__/executor-system-info.test.js +0 -133
  322. package/dist/local-agent/__tests__/executor-systeminfo.test.js +0 -109
  323. package/dist/local-agent/__tests__/executor.test.js +0 -235
  324. package/dist/local-agent/__tests__/index.test.js +0 -139
  325. package/dist/node/__tests__/cli-channels.test.js +0 -293
  326. package/dist/node/__tests__/cli-config-edge.test.js +0 -154
  327. package/dist/node/__tests__/cli-config.test.js +0 -215
  328. package/dist/node/__tests__/config.test.js +0 -292
  329. package/dist/node/__tests__/runtime-heartbeat.test.js +0 -153
  330. package/dist/node/__tests__/runtime-lifecycle-init.test.js +0 -263
  331. package/dist/node/__tests__/runtime-lifecycle-stats.test.js +0 -180
  332. package/dist/node/__tests__/runtime-lifecycle.test.js +0 -305
  333. package/dist/node/__tests__/runtime-relay.test.js +0 -341
  334. package/dist/node/adapters/__tests__/base.test.js +0 -286
  335. package/dist/node/adapters/__tests__/discord.test.js +0 -284
  336. package/dist/node/adapters/__tests__/email-send.test.js +0 -295
  337. package/dist/node/adapters/__tests__/email.inbound-send.test.js +0 -217
  338. package/dist/node/adapters/__tests__/email.lifecycle.test.js +0 -211
  339. package/dist/node/adapters/__tests__/email.test.js +0 -290
  340. package/dist/node/adapters/__tests__/email.webhook-send.test.js +0 -251
  341. package/dist/node/adapters/__tests__/imessage-filter.test.js +0 -183
  342. package/dist/node/adapters/__tests__/imessage-lifecycle.test.js +0 -215
  343. package/dist/node/adapters/__tests__/imessage-send-restart.test.js +0 -227
  344. package/dist/node/adapters/__tests__/slack.part2.test.js +0 -135
  345. package/dist/node/adapters/__tests__/slack.test.js +0 -241
  346. package/dist/node/adapters/__tests__/sms-extras.test.js +0 -108
  347. package/dist/node/adapters/__tests__/sms-lifecycle.test.js +0 -203
  348. package/dist/node/adapters/__tests__/sms-messaging.test.js +0 -266
  349. package/dist/node/adapters/__tests__/sms.part2.test.js +0 -174
  350. package/dist/node/adapters/__tests__/sms.test.js +0 -253
  351. package/dist/node/adapters/__tests__/telegram-polling.test.js +0 -256
  352. package/dist/node/adapters/__tests__/telegram-send.test.js +0 -166
  353. package/dist/node/adapters/__tests__/webchat-inbound.test.js +0 -188
  354. package/dist/node/adapters/__tests__/webchat-outbound.test.js +0 -178
  355. package/dist/node/adapters/__tests__/whatsapp-inbound.test.js +0 -200
  356. package/dist/node/adapters/__tests__/whatsapp-send.test.js +0 -212
  357. package/dist/node/adapters/__tests__/whatsapp.test.js +0 -280
  358. package/dist/server/__tests__/gateway-fast-fail.test.js +0 -160
  359. package/dist/server/__tests__/local-agent-gateway.test.js +0 -186
  360. package/dist/server/__tests__/proxy-handlers-delegation.test.js +0 -240
  361. package/dist/server/__tests__/proxy-handlers-validation.test.js +0 -211
  362. package/dist/server/__tests__/proxy-handlers.part2.test.js +0 -240
  363. package/dist/server/__tests__/proxy-handlers.test.js +0 -213
  364. package/dist/server/__tests__/strip-base64-e2e.test.js +0 -303
  365. package/dist/server/__tests__/strip-base64.test.js +0 -256
  366. package/dist/server/__tests__/tool-router-agent-tools.test.js +0 -324
  367. package/dist/server/__tests__/tool-router-execute-core.test.js +0 -357
  368. package/dist/server/__tests__/tool-router-execute-permissions.test.js +0 -332
  369. package/dist/server/__tests__/tool-router-execute.test.js +0 -348
  370. package/dist/server/__tests__/tool-router-load.test.js +0 -432
  371. package/dist/server/__tests__/tool-router-permissions.test.js +0 -359
  372. package/dist/server/__tests__/tool-router-registry-cache.test.js +0 -383
  373. package/dist/server/__tests__/tool-router-registry-handlers.test.js +0 -272
  374. package/dist/server/__tests__/tool-router-registry.test.js +0 -331
  375. package/dist/server/__tests__/validation-inventory.test.js +0 -250
  376. package/dist/server/__tests__/validation-misc.test.js +0 -243
  377. package/dist/server/__tests__/validation-supply-chain.test.js +0 -188
  378. package/dist/server/__tests__/worker.test.js +0 -265
  379. package/dist/server/handlers/__tests__/conversation-lock.test.js +0 -117
  380. package/dist/server/handlers/__tests__/e2e/auth-cross-platform-login.e2e.test.js +0 -268
  381. package/dist/server/handlers/__tests__/e2e/auth-cross-platform-tokens.e2e.test.js +0 -264
  382. package/dist/server/handlers/__tests__/e2e/email-pipeline-send.e2e.test.js +0 -214
  383. package/dist/server/handlers/__tests__/e2e/email-pipeline-threads.e2e.test.js +0 -168
  384. package/dist/server/handlers/__tests__/e2e/error-logging-pipeline-dedup.e2e.test.js +0 -229
  385. package/dist/server/handlers/__tests__/e2e/error-logging-pipeline.e2e.test.js +0 -239
  386. package/dist/server/handlers/__tests__/e2e/error-logging-rate-limit.e2e.test.js +0 -150
  387. package/dist/server/handlers/__tests__/e2e/inventory-sync-guards.e2e.test.js +0 -177
  388. package/dist/server/handlers/__tests__/e2e/inventory-sync.e2e.test.js +0 -228
  389. package/dist/server/handlers/__tests__/e2e/inventory-sync.part2.e2e.test.js +0 -188
  390. package/dist/server/handlers/__tests__/e2e/order-lifecycle-fulfillment.e2e.test.js +0 -295
  391. package/dist/server/handlers/__tests__/e2e/order-lifecycle.e2e.test.js +0 -277
  392. package/dist/server/handlers/__tests__/e2e/order-lifecycle.fulfillment.e2e.test.js +0 -307
  393. package/dist/server/handlers/__tests__/e2e/order-lifecycle.setup.e2e.test.js +0 -177
  394. package/dist/server/handlers/__tests__/e2e/storefront-checkout-cart.e2e.test.js +0 -255
  395. package/dist/server/handlers/__tests__/e2e/storefront-checkout-webhook.e2e.test.js +0 -231
  396. package/dist/server/handlers/__tests__/e2e/workflow-execution-failures.e2e.test.js +0 -235
  397. package/dist/server/handlers/__tests__/e2e/workflow-execution.e2e.test.js +0 -294
  398. package/dist/server/handlers/__tests__/e2e/workflow-security.e2e.test.js +0 -311
  399. package/dist/server/handlers/__tests__/e2e/workflow-security.part2.e2e.test.js +0 -267
  400. package/dist/server/handlers/__tests__/workflow-cache.test.js +0 -237
  401. package/dist/server/handlers/analytics-errors-edge.test.js +0 -173
  402. package/dist/server/handlers/analytics.test.js +0 -280
  403. package/dist/server/handlers/api-docs-examples-ext.d.ts +0 -9
  404. package/dist/server/handlers/api-docs-examples-ext.js +0 -278
  405. package/dist/server/handlers/api-docs-examples-ext.js.map +0 -1
  406. package/dist/server/handlers/api-docs-examples.d.ts +0 -8
  407. package/dist/server/handlers/api-docs-examples.js +0 -221
  408. package/dist/server/handlers/api-docs-examples.js.map +0 -1
  409. package/dist/server/handlers/api-docs-sections-ext.d.ts +0 -2
  410. package/dist/server/handlers/api-docs-sections-ext.js +0 -497
  411. package/dist/server/handlers/api-docs-sections-ext.js.map +0 -1
  412. package/dist/server/handlers/api-docs-sections.d.ts +0 -21
  413. package/dist/server/handlers/api-docs-sections.js +0 -293
  414. package/dist/server/handlers/api-docs-sections.js.map +0 -1
  415. package/dist/server/handlers/api-keys.part2.test.js +0 -157
  416. package/dist/server/handlers/api-keys.test.js +0 -161
  417. package/dist/server/handlers/billing-routes.test.js +0 -123
  418. package/dist/server/handlers/billing.test.js +0 -215
  419. package/dist/server/handlers/browser-actions-errors.test.js +0 -94
  420. package/dist/server/handlers/browser-actions.part2.test.js +0 -190
  421. package/dist/server/handlers/browser-actions.test.js +0 -190
  422. package/dist/server/handlers/browser-validation.test.js +0 -257
  423. package/dist/server/handlers/catalog.test.js +0 -297
  424. package/dist/server/handlers/comms.test.js +0 -289
  425. package/dist/server/handlers/creations-advanced-collections.test.js +0 -214
  426. package/dist/server/handlers/creations-advanced-generate.test.js +0 -142
  427. package/dist/server/handlers/creations-advanced.test.js +0 -171
  428. package/dist/server/handlers/creations-collections-preview.test.js +0 -214
  429. package/dist/server/handlers/creations-crud.test.js +0 -260
  430. package/dist/server/handlers/creations-mutations.test.js +0 -197
  431. package/dist/server/handlers/crm.test.js +0 -179
  432. package/dist/server/handlers/discovery-advertise.test.js +0 -185
  433. package/dist/server/handlers/discovery-scan.test.js +0 -233
  434. package/dist/server/handlers/embeddings-embed-search.test.js +0 -196
  435. package/dist/server/handlers/embeddings-index-delete-stats.test.js +0 -140
  436. package/dist/server/handlers/embeddings-search.test.js +0 -221
  437. package/dist/server/handlers/embeddings.test.js +0 -137
  438. package/dist/server/handlers/enrichment-breach.d.ts +0 -8
  439. package/dist/server/handlers/enrichment-breach.js +0 -266
  440. package/dist/server/handlers/enrichment-breach.js.map +0 -1
  441. package/dist/server/handlers/enrichment-data.d.ts +0 -13
  442. package/dist/server/handlers/enrichment-data.js +0 -145
  443. package/dist/server/handlers/enrichment-data.js.map +0 -1
  444. package/dist/server/handlers/enrichment-mutations.test.js +0 -240
  445. package/dist/server/handlers/enrichment-queries.test.js +0 -181
  446. package/dist/server/handlers/enrichment-validation.test.js +0 -177
  447. package/dist/server/handlers/enrichment-writes.d.ts +0 -16
  448. package/dist/server/handlers/enrichment-writes.js +0 -226
  449. package/dist/server/handlers/enrichment-writes.js.map +0 -1
  450. package/dist/server/handlers/image-gen.test.js +0 -205
  451. package/dist/server/handlers/inventory.test.js +0 -380
  452. package/dist/server/handlers/kali-background.test.js +0 -222
  453. package/dist/server/handlers/kali-errors.test.js +0 -92
  454. package/dist/server/handlers/kali-validation.test.js +0 -234
  455. package/dist/server/handlers/llm-providers-actions.test.js +0 -220
  456. package/dist/server/handlers/llm-providers-anthropic.test.js +0 -239
  457. package/dist/server/handlers/llm-providers-failover.test.js +0 -232
  458. package/dist/server/handlers/llm-providers-providers.test.js +0 -300
  459. package/dist/server/handlers/llm-providers-validation.test.js +0 -239
  460. package/dist/server/handlers/local-agent-tools.test.js +0 -224
  461. package/dist/server/handlers/local-agent.test.js +0 -198
  462. package/dist/server/handlers/local-agent.tools-status.test.js +0 -204
  463. package/dist/server/handlers/local-agent.validation-exec.test.js +0 -182
  464. package/dist/server/handlers/meta-ads-audience-rules.test.js +0 -243
  465. package/dist/server/handlers/meta-ads-audience-targeting.test.js +0 -205
  466. package/dist/server/handlers/meta-ads-audiences-targeting.test.js +0 -383
  467. package/dist/server/handlers/meta-ads-crud-ads.test.js +0 -136
  468. package/dist/server/handlers/meta-ads-crud-campaigns.test.js +0 -189
  469. package/dist/server/handlers/meta-ads-crud-create.test.js +0 -303
  470. package/dist/server/handlers/meta-ads-crud-list-update.test.js +0 -259
  471. package/dist/server/handlers/meta-ads-delete-publish-sync.test.js +0 -282
  472. package/dist/server/handlers/meta-ads-insights.test.js +0 -80
  473. package/dist/server/handlers/meta-ads-list-get.test.js +0 -237
  474. package/dist/server/handlers/meta-ads-publish-delete.test.js +0 -254
  475. package/dist/server/handlers/meta-ads-publish-helpers.js +0 -117
  476. package/dist/server/handlers/meta-ads-publish-helpers.js.map +0 -1
  477. package/dist/server/handlers/meta-ads-publish-sync.test.js +0 -205
  478. package/dist/server/handlers/meta-ads-publish.test.js +0 -254
  479. package/dist/server/handlers/meta-ads-sync-insights.test.js +0 -184
  480. package/dist/server/handlers/meta-ads-update.test.js +0 -117
  481. package/dist/server/handlers/nodes-channels.test.js +0 -413
  482. package/dist/server/handlers/nodes-events.test.js +0 -131
  483. package/dist/server/handlers/nodes-list-delete.test.js +0 -171
  484. package/dist/server/handlers/nodes-messages-delivery.test.js +0 -208
  485. package/dist/server/handlers/nodes-messages.test.js +0 -211
  486. package/dist/server/handlers/nodes-register.test.js +0 -277
  487. package/dist/server/handlers/nodes.test.js +0 -353
  488. package/dist/server/handlers/operations.test.js +0 -136
  489. package/dist/server/handlers/platform-telemetry.test.js +0 -200
  490. package/dist/server/handlers/platform-websearch.test.js +0 -160
  491. package/dist/server/handlers/storefront.test.js +0 -329
  492. package/dist/server/handlers/supply-chain.test.js +0 -347
  493. package/dist/server/handlers/transcription.test.js +0 -118
  494. package/dist/server/handlers/video-gen-veo.js +0 -114
  495. package/dist/server/handlers/video-gen-veo.js.map +0 -1
  496. package/dist/server/handlers/video-gen.test.js +0 -146
  497. package/dist/server/handlers/voice.test.js +0 -153
  498. package/dist/server/handlers/workflow-steps.test.js +0 -330
  499. package/dist/server/handlers/workflows-extras.test.js +0 -65
  500. package/dist/server/handlers/workflows.part2.test.js +0 -170
  501. package/dist/server/handlers/workflows.test.js +0 -281
  502. package/dist/server/lib/__tests__/batch-client-conversion-jsonl.test.js +0 -171
  503. package/dist/server/lib/__tests__/batch-client-polling.test.js +0 -292
  504. package/dist/server/lib/__tests__/batch-client-queue.test.js +0 -270
  505. package/dist/server/lib/__tests__/clickhouse-buffer.test.js +0 -236
  506. package/dist/server/lib/__tests__/code-worker-edge-cases.test.js +0 -118
  507. package/dist/server/lib/__tests__/code-worker-pool-execute.test.js +0 -193
  508. package/dist/server/lib/__tests__/code-worker-pool-execution.test.js +0 -165
  509. package/dist/server/lib/__tests__/code-worker-pool-init.test.js +0 -131
  510. package/dist/server/lib/__tests__/code-worker-pool.test.js +0 -194
  511. package/dist/server/lib/__tests__/code-worker-sandbox-ops.test.js +0 -123
  512. package/dist/server/lib/__tests__/code-worker-sandbox.test.js +0 -217
  513. package/dist/server/lib/__tests__/code-worker.test.js +0 -179
  514. package/dist/server/lib/__tests__/compaction-service-generate.test.js +0 -229
  515. package/dist/server/lib/__tests__/compaction-service.test.js +0 -319
  516. package/dist/server/lib/__tests__/otel.test.js +0 -146
  517. package/dist/server/lib/__tests__/prompt-sanitizer-validation.test.js +0 -165
  518. package/dist/server/lib/__tests__/prompt-sanitizer.sanitize.test.js +0 -343
  519. package/dist/server/lib/__tests__/prompt-sanitizer.test.js +0 -328
  520. package/dist/server/lib/__tests__/prompt-sanitizer.validate-tool.test.js +0 -145
  521. package/dist/server/lib/__tests__/provider-capabilities.test.js +0 -263
  522. package/dist/server/lib/__tests__/provider-failover-routing.test.js +0 -145
  523. package/dist/server/lib/__tests__/provider-failover-state.test.js +0 -131
  524. package/dist/server/lib/__tests__/rate-limiter-budgets.test.js +0 -216
  525. package/dist/server/lib/__tests__/rate-limiter.budgets-tools.test.js +0 -113
  526. package/dist/server/lib/__tests__/rate-limiter.check-request.test.js +0 -141
  527. package/dist/server/lib/__tests__/rate-limiter.stats-lifecycle.test.js +0 -135
  528. package/dist/server/lib/__tests__/rate-limiter.test.js +0 -207
  529. package/dist/server/lib/__tests__/server-agent-loop-abort-conditions.test.js +0 -544
  530. package/dist/server/lib/__tests__/server-agent-loop-abort.part2.test.js +0 -504
  531. package/dist/server/lib/__tests__/server-agent-loop-abort.test.js +0 -396
  532. package/dist/server/lib/__tests__/server-agent-loop-compaction.test.js +0 -397
  533. package/dist/server/lib/__tests__/server-agent-loop-failover.test.js +0 -356
  534. package/dist/server/lib/__tests__/server-agent-loop-features-caching.test.js +0 -519
  535. package/dist/server/lib/__tests__/server-agent-loop-features-edges.test.js +0 -512
  536. package/dist/server/lib/__tests__/server-subagent-bailout.test.js +0 -194
  537. package/dist/server/lib/__tests__/server-subagent-basics.test.js +0 -348
  538. package/dist/server/lib/__tests__/server-subagent-errors-abort.test.js +0 -319
  539. package/dist/server/lib/__tests__/server-subagent-errors-progress.test.js +0 -253
  540. package/dist/server/lib/__tests__/server-subagent-errors.part2.test.js +0 -253
  541. package/dist/server/lib/__tests__/server-subagent-errors.test.js +0 -319
  542. package/dist/server/lib/__tests__/session-checkpoint-load.test.js +0 -275
  543. package/dist/server/lib/__tests__/session-checkpoint-save.test.js +0 -159
  544. package/dist/server/lib/__tests__/ssrf-guard.test.js +0 -93
  545. package/dist/server/lib/__tests__/supabase-client.test.js +0 -111
  546. package/dist/server/lib/__tests__/template-resolver.test.js +0 -317
  547. package/dist/server/lib/__tests__/utils-timeout.test.js +0 -49
  548. package/dist/server/lib/__tests__/utils.test.js +0 -322
  549. package/dist/server/providers/__tests__/anthropic-adapter.test.js +0 -228
  550. package/dist/server/providers/__tests__/anthropic-betas-toolchoice.test.js +0 -257
  551. package/dist/server/providers/__tests__/anthropic-errors.test.js +0 -262
  552. package/dist/server/providers/__tests__/anthropic-stream-core.test.js +0 -275
  553. package/dist/server/providers/__tests__/anthropic-streaming-betas.test.js +0 -247
  554. package/dist/server/providers/__tests__/anthropic-streaming-core.test.js +0 -275
  555. package/dist/server/providers/__tests__/bedrock-config.test.js +0 -177
  556. package/dist/server/providers/__tests__/bedrock-stream-behavior-streaming.test.js +0 -272
  557. package/dist/server/providers/__tests__/bedrock-stream-behavior-toolchoice.test.js +0 -214
  558. package/dist/server/providers/__tests__/bedrock-stream-behavior.part2.test.js +0 -165
  559. package/dist/server/providers/__tests__/bedrock-stream-behavior.test.js +0 -309
  560. package/dist/server/providers/__tests__/bedrock-stream-body-credentials.test.js +0 -170
  561. package/dist/server/providers/__tests__/bedrock-stream-body-extras.test.js +0 -183
  562. package/dist/server/providers/__tests__/bedrock-stream-body-request.test.js +0 -305
  563. package/dist/server/providers/__tests__/bedrock-stream-body.part2.test.js +0 -305
  564. package/dist/server/providers/__tests__/bedrock-stream-body.test.js +0 -175
  565. package/dist/server/providers/__tests__/bedrock-stream-errors.test.js +0 -165
  566. package/dist/server/providers/__tests__/gemini-config-methods.test.js +0 -182
  567. package/dist/server/providers/__tests__/gemini-config-streaming.test.js +0 -257
  568. package/dist/server/providers/__tests__/gemini-conversion-messages.test.js +0 -247
  569. package/dist/server/providers/__tests__/gemini-conversion-schema.test.js +0 -365
  570. package/dist/server/providers/__tests__/gemini-tools-choice.test.js +0 -221
  571. package/dist/server/providers/__tests__/gemini-tools-fn.test.js +0 -252
  572. package/dist/server/providers/__tests__/openai-config.test.js +0 -194
  573. package/dist/server/providers/__tests__/openai-conversion.test.js +0 -276
  574. package/dist/server/providers/__tests__/openai-messages.test.js +0 -261
  575. package/dist/server/providers/__tests__/openai-streaming.test.js +0 -394
  576. package/dist/server/providers/__tests__/openai-tools-cache.test.js +0 -227
  577. package/dist/server/providers/__tests__/registry.test.js +0 -183
  578. package/dist/server/providers/__tests__/shared.test.js +0 -297
  579. package/dist/shared/agent-core-config.test.js +0 -132
  580. package/dist/shared/agent-core-context-thinking.test.js +0 -293
  581. package/dist/shared/agent-core-loop-calls.test.js +0 -174
  582. package/dist/shared/agent-core-loop-detector-bail.test.js +0 -201
  583. package/dist/shared/agent-core-loop-detector.test.js +0 -195
  584. package/dist/shared/agent-core-loop-errors.test.js +0 -258
  585. package/dist/shared/agent-core-pricing.test.js +0 -191
  586. package/dist/shared/agent-core-sanitize-retry.test.js +0 -129
  587. package/dist/shared/api-client-build-request.test.js +0 -228
  588. package/dist/shared/api-client-build-system-caching.test.js +0 -107
  589. package/dist/shared/api-client-build.test.js +0 -223
  590. package/dist/shared/api-client-config.d.ts +0 -21
  591. package/dist/shared/api-client-helpers.d.ts +0 -57
  592. package/dist/shared/api-client-helpers.test.js +0 -261
  593. package/dist/shared/api-client-proxy-happy.test.js +0 -255
  594. package/dist/shared/api-client-proxy-retry.test.js +0 -307
  595. package/dist/shared/api-client-proxy.d.ts +0 -26
  596. package/dist/shared/api-client-proxy.test.js +0 -255
  597. package/dist/shared/api-client-retry.test.js +0 -307
  598. package/dist/shared/api-client-system-trimming.test.js +0 -261
  599. package/dist/shared/api-client-trimming.d.ts +0 -36
  600. package/dist/shared/api-client.test.js +0 -228
  601. package/dist/shared/compaction-thinking.test.js +0 -315
  602. package/dist/shared/compaction-trimming.test.js +0 -223
  603. package/dist/shared/sse-parser-callbacks.test.js +0 -422
  604. package/dist/shared/sse-parser-collect.test.js +0 -252
  605. package/dist/shared/sse-parser-e2e.test.js +0 -558
  606. package/dist/shared/sse-parser-parse.test.js +0 -253
  607. package/dist/shared/tool-dispatch-advanced-batch-build.test.js +0 -405
  608. package/dist/shared/tool-dispatch-advanced.test.js +0 -320
  609. package/dist/shared/tool-dispatch-basic.test.js +0 -278
  610. package/dist/shared/tool-dispatch-content.d.ts +0 -14
  611. package/dist/shared/tool-dispatch-parallel.test.js +0 -378
  612. package/dist/webchat/__tests__/widget-messaging.test.js +0 -323
  613. package/dist/webchat/__tests__/widget.test.js +0 -273
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","names":["sanitizeFilterValue","handleProducts","sb","args","storeId","sid","action","data","cats","error","catErr","from","select","eq","order","ascending","success","message","count","activeCount","head","neq","archivedCount","categories","product_status_summary","active","archived","tip","offset","q","limit","range","query","sq","String","or","category","category_id","catInput","catVal","matchedCatId","test","ilike","length","id","children","catIds","map","c","in","catalog_id","status","include_archived","featured","undefined","totalCount","flattened","row","rest","category_name","name","total","pid","product_id","product","pErr","single","fieldSchemas","pricingSchemas","inventory","field_schemas","fs","field_schema","pricing_schemas","ps","pricing_schema","insert","store_id","sku","description","short_description","type","cost_price","wholesale_price","stock_quantity","manage_stock","weight","tax_status","tax_class","pricing_data","featured_image","image_gallery","is_wholesale","wholesale_only","minimum_wholesale_quantity","catArg","primary_category_id","pricing_schema_id","field_schema_ids","Array","isArray","rows","fsId","field_schema_id","pricing_schema_ids","psId","productUpdates","inherited","categoryId","cat","upsert","onConflict","fields","schemaKeys","Set","fieldValues","f","key","add","default","agentValues","custom_fields","k","v","Object","entries","has","push","catFieldSchemas","cat2","filter","r","tiers","keys","update","full","updates","agentFV","pfs","fsDef","existing","base","filtered","Boolean","updateCatArg","hard","delete","deleted","parent_id","active_only","catId","fieldAssigns","pricingAssigns","a","sort_order","subcategories","slug","toLowerCase","replace","icon","display_order","i","is_active","public_only","schema_id","assignments","assigned_categories","catalogId","defaultCatalog","is_public","deleted_at","Date","toISOString","quality_tier","store","owner_user_id","vertical","is_default","settings","target","schemaType","schema_type","targetId","target_id","schemaId","targetTable","ownerCheck","ownerErr","schemaTable","schemaCheck","schemaErr","table","fkCol","schemaCol","schema","rebuilt","removed","all","allErr","nameMap","Map","p","normalized","trim","set","get","duplicates","_","products","normalizedName","normalized_name","created_at","skuMap","skuDupes","totalNameDupes","reduce","s","d","totalSkuDupes","lines","group","slice","join","primaryId","primary_product_id","secondaryId","secondary_product_id","primary","secondary","reassignResults","secInv","quantity","priRow","location_id","maybeSingle","updated_at","oiErr","oiCount","order_items","ciErr","ciCount","cart_items","poiErr","poiCount","purchase_order_items","prErr","prCount","product_reviews","fillFields","fills","field","merged","field_fills","merged_product","archived_product","reassign_results","handleCollections","sn"],"sources":["../../../src/server/handlers/catalog.ts"],"sourcesContent":["import type { SupabaseClient } from \"@supabase/supabase-js\";\nimport { sanitizeFilterValue } from \"../lib/utils.js\";\n\n// ============================================================================\n// PRODUCTS — Full product catalog management\n// Products, categories, field schemas, pricing schemas, catalogs, assignments\n// ============================================================================\n\nexport async function handleProducts(sb: SupabaseClient, args: Record<string, unknown>, storeId?: string) {\n const sid = storeId as string;\n switch (args.action) {\n\n // ======================== PRODUCTS ========================\n\n case \"browse\": {\n // Category summary with product counts, price ranges, stock status\n const { data: cats, error: catErr } = await sb.from(\"categories\")\n .select(\"id, name, slug, parent_id, display_order, product_count, catalog_id\")\n .eq(\"store_id\", sid)\n .eq(\"is_active\", true)\n .order(\"display_order\", { ascending: true });\n if (catErr) return { success: false, error: catErr.message };\n\n // Status distribution via count queries\n const { count: activeCount } = await sb.from(\"products\").select(\"id\", { count: \"exact\", head: true }).eq(\"store_id\", sid).neq(\"status\", \"archived\");\n const { count: archivedCount } = await sb.from(\"products\").select(\"id\", { count: \"exact\", head: true }).eq(\"store_id\", sid).eq(\"status\", \"archived\");\n\n return {\n success: true,\n data: {\n categories: cats,\n product_status_summary: { active: activeCount || 0, archived: archivedCount || 0 },\n tip: \"Use products.find with category or status filters to drill into a specific set. Use products.get for full product detail.\"\n }\n };\n }\n\n case \"find\": {\n const offset = args.offset as number || 0;\n let q = sb.from(\"products\")\n .select(\"id, name, sku, status, type, stock_quantity, category:categories!primary_category_id(name)\", { count: \"exact\" })\n .eq(\"store_id\", sid)\n .order(\"created_at\", { ascending: false });\n if (args.limit) {\n q = q.range(offset, offset + (args.limit as number) - 1);\n } else if (offset > 0) {\n q = q.range(offset, offset + 999);\n }\n if (args.query) { const sq = sanitizeFilterValue(String(args.query)); q = q.or(`name.ilike.%${sq}%,sku.ilike.%${sq}%,description.ilike.%${sq}%`); }\n if (args.category || args.category_id) {\n // Accept both category (name or UUID) and category_id (UUID)\n const catInput = (args.category_id || args.category) as string;\n const catVal = sanitizeFilterValue(catInput);\n let matchedCatId: string | null = null;\n if (/^[0-9a-f]{8}-/.test(catVal)) {\n matchedCatId = catVal;\n } else {\n const { data: cats } = await sb.from(\"categories\").select(\"id\").ilike(\"name\", `%${catVal}%`).eq(\"store_id\", sid).limit(1);\n if (cats?.length) matchedCatId = cats[0].id;\n }\n if (matchedCatId) {\n // Include sub-categories (children of the matched category)\n const { data: children } = await sb.from(\"categories\").select(\"id\").eq(\"parent_id\", matchedCatId).eq(\"store_id\", sid);\n const catIds = [matchedCatId, ...(children || []).map(c => c.id)];\n q = q.in(\"primary_category_id\", catIds);\n } else {\n // Category not found — return empty result\n q = q.eq(\"primary_category_id\", \"00000000-0000-0000-0000-000000000000\");\n }\n }\n if (args.catalog_id) q = q.eq(\"catalog_id\", args.catalog_id as string);\n if (args.status) q = q.eq(\"status\", args.status as string);\n // Exclude archived unless explicitly requested or filtering by status\n if (!args.status && !args.include_archived) {\n q = q.neq(\"status\", \"archived\");\n }\n if (args.featured !== undefined) q = q.eq(\"featured\", args.featured as boolean);\n const { data, error, count: totalCount } = await q;\n if (error) return { success: false, error: error.message };\n // Flatten nested category for display\n const flattened = (data || []).map((row: any) => {\n const { category, ...rest } = row;\n return { ...rest, category_name: category?.name || null };\n });\n return { success: true, total: totalCount, count: flattened.length, offset, ...(args.limit ? { limit: args.limit } : {}), data: flattened };\n }\n\n case \"get\": {\n const pid = args.product_id as string;\n const { data: product, error: pErr } = await sb.from(\"products\")\n .select(\"*, category:categories!primary_category_id(id, name, slug)\")\n .eq(\"id\", pid).eq(\"store_id\", sid).neq(\"status\", \"archived\").single();\n if (pErr) return { success: false, error: pErr.message };\n\n const { data: fieldSchemas } = await sb.from(\"product_field_schemas\")\n .select(\"field_schema_id, field_schema:field_schemas!field_schema_id(id, name, fields, icon)\")\n .eq(\"product_id\", pid);\n\n const { data: pricingSchemas } = await sb.from(\"product_pricing_schemas\")\n .select(\"pricing_schema_id, pricing_schema:pricing_schemas!pricing_schema_id(id, name, tiers, quality_tier)\")\n .eq(\"product_id\", pid);\n\n const { data: inventory } = await sb.from(\"inventory\")\n .select(\"id, quantity, location:locations!location_id(id, name)\")\n .eq(\"product_id\", pid).eq(\"store_id\", sid);\n\n return {\n success: true,\n data: {\n ...product,\n field_schemas: fieldSchemas?.map(fs => fs.field_schema) || [],\n pricing_schemas: pricingSchemas?.map(ps => ps.pricing_schema) || [],\n inventory: inventory || []\n }\n };\n }\n\n case \"create\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name is required\" };\n const insert: Record<string, unknown> = { store_id: sid, name };\n if (args.sku) insert.sku = args.sku;\n if (args.description) insert.description = args.description;\n if (args.short_description) insert.short_description = args.short_description;\n if (args.type) insert.type = args.type;\n if (args.status) insert.status = args.status;\n if (args.cost_price !== undefined) insert.cost_price = args.cost_price;\n if (args.wholesale_price !== undefined) insert.wholesale_price = args.wholesale_price;\n if (args.featured !== undefined) insert.featured = args.featured;\n if (args.stock_quantity !== undefined) insert.stock_quantity = args.stock_quantity;\n if (args.manage_stock !== undefined) insert.manage_stock = args.manage_stock;\n if (args.weight !== undefined) insert.weight = args.weight;\n if (args.tax_status) insert.tax_status = args.tax_status;\n if (args.tax_class) insert.tax_class = args.tax_class;\n if (args.catalog_id) insert.catalog_id = args.catalog_id;\n if (args.pricing_data) insert.pricing_data = args.pricing_data;\n // custom_fields NOT inserted directly — schema is the source of truth\n // Agent-provided custom_fields are filtered against schema keys post-insert\n if (args.featured_image !== undefined) insert.featured_image = args.featured_image;\n if (args.image_gallery !== undefined) insert.image_gallery = args.image_gallery;\n if (args.is_wholesale !== undefined) insert.is_wholesale = args.is_wholesale;\n if (args.wholesale_only !== undefined) insert.wholesale_only = args.wholesale_only;\n if (args.minimum_wholesale_quantity !== undefined) insert.minimum_wholesale_quantity = args.minimum_wholesale_quantity;\n const catArg = (args.category || args.primary_category_id || args.category_id) as string | undefined;\n if (catArg) {\n if (/^[0-9a-f]{8}-/.test(catArg)) {\n insert.primary_category_id = catArg;\n } else {\n const { data: cats } = await sb.from(\"categories\").select(\"id\").ilike(\"name\", `%${catArg}%`).eq(\"store_id\", sid).limit(1);\n if (cats?.length) insert.primary_category_id = cats[0].id;\n }\n }\n if (args.pricing_schema_id) insert.pricing_schema_id = args.pricing_schema_id;\n\n const { data, error } = await sb.from(\"products\").insert(insert).select(\"id, name, sku, slug, status, primary_category_id, pricing_schema_id, created_at\").single();\n if (error) return { success: false, error: error.message };\n\n // Explicit schema assignments from args\n if (args.field_schema_ids && Array.isArray(args.field_schema_ids)) {\n const rows = (args.field_schema_ids as string[]).map(fsId => ({ product_id: data.id, field_schema_id: fsId }));\n await sb.from(\"product_field_schemas\").insert(rows);\n }\n if (args.pricing_schema_ids && Array.isArray(args.pricing_schema_ids)) {\n const rows = (args.pricing_schema_ids as string[]).map(psId => ({ product_id: data.id, pricing_schema_id: psId }));\n await sb.from(\"product_pricing_schemas\").insert(rows);\n }\n\n const productUpdates: Record<string, unknown> = {};\n const inherited: string[] = [];\n\n // Auto-inherit field schema from category — ALWAYS merge with schema template\n const categoryId = insert.primary_category_id as string | undefined;\n if (categoryId && !args.field_schema_ids) {\n const { data: cat } = await sb.from(\"categories\").select(\"field_schema_id\").eq(\"id\", categoryId).single();\n if (cat?.field_schema_id) {\n await sb.from(\"product_field_schemas\").upsert(\n { product_id: data.id, field_schema_id: cat.field_schema_id },\n { onConflict: \"product_id,field_schema_id\" }\n );\n // Schema is source of truth — only schema keys allowed\n const { data: fs } = await sb.from(\"field_schemas\").select(\"fields\").eq(\"id\", cat.field_schema_id).single();\n if (fs?.fields && Array.isArray(fs.fields)) {\n const schemaKeys = new Set<string>();\n const fieldValues: Record<string, unknown> = {};\n for (const f of fs.fields) {\n const key = (f as any).key;\n if (key) { schemaKeys.add(key); fieldValues[key] = (f as any).default ?? null; }\n }\n // Only accept agent values for keys that exist in the schema\n const agentValues = (args.custom_fields as Record<string, unknown>) || {};\n for (const [k, v] of Object.entries(agentValues)) {\n if (schemaKeys.has(k)) fieldValues[k] = v;\n }\n productUpdates.custom_fields = fieldValues;\n }\n inherited.push(`field_schema:${cat.field_schema_id}`);\n }\n // Also check junction table for additional schemas\n const { data: catFieldSchemas } = await sb.from(\"category_field_schemas\").select(\"field_schema_id\").eq(\"category_id\", categoryId);\n if (catFieldSchemas?.length) {\n const cat2 = await sb.from(\"categories\").select(\"field_schema_id\").eq(\"id\", categoryId).single();\n const rows = catFieldSchemas.filter(r => r.field_schema_id !== cat2?.data?.field_schema_id).map(r => ({ product_id: data.id, field_schema_id: r.field_schema_id }));\n if (rows.length) await sb.from(\"product_field_schemas\").insert(rows);\n }\n }\n\n // If pricing_schema_id provided, hydrate pricing_data from schema\n if (insert.pricing_schema_id && !args.pricing_data) {\n const { data: ps } = await sb.from(\"pricing_schemas\").select(\"tiers\").eq(\"id\", insert.pricing_schema_id as string).single();\n if (ps?.tiers) productUpdates.pricing_data = ps.tiers;\n }\n\n // Apply any post-insert updates\n if (Object.keys(productUpdates).length > 0) {\n await sb.from(\"products\").update(productUpdates).eq(\"id\", data.id);\n }\n\n // Re-read the full product for response\n const { data: full } = await sb.from(\"products\")\n .select(\"id, name, sku, slug, status, primary_category_id, pricing_schema_id, custom_fields, pricing_data, created_at\")\n .eq(\"id\", data.id).single();\n if (inherited.length && full) (full as any).inherited = inherited;\n\n return { success: true, data: full || data };\n }\n\n case \"update\": {\n const pid = args.product_id as string;\n if (!pid) return { success: false, error: \"product_id is required\" };\n const updates: Record<string, unknown> = {};\n if (args.name !== undefined) updates.name = args.name;\n if (args.sku !== undefined) updates.sku = args.sku;\n if (args.description !== undefined) updates.description = args.description;\n if (args.short_description !== undefined) updates.short_description = args.short_description;\n if (args.type !== undefined) updates.type = args.type;\n if (args.status !== undefined) updates.status = args.status;\n if (args.cost_price !== undefined) updates.cost_price = args.cost_price;\n if (args.wholesale_price !== undefined) updates.wholesale_price = args.wholesale_price;\n if (args.featured !== undefined) updates.featured = args.featured;\n if (args.stock_quantity !== undefined) updates.stock_quantity = args.stock_quantity;\n if (args.manage_stock !== undefined) updates.manage_stock = args.manage_stock;\n if (args.weight !== undefined) updates.weight = args.weight;\n if (args.tax_status !== undefined) updates.tax_status = args.tax_status;\n if (args.tax_class !== undefined) updates.tax_class = args.tax_class;\n if (args.catalog_id !== undefined) updates.catalog_id = args.catalog_id;\n if (args.pricing_schema_id !== undefined) updates.pricing_schema_id = args.pricing_schema_id;\n if (args.pricing_data !== undefined) updates.pricing_data = args.pricing_data;\n // custom_fields filtered to schema keys only (schema = source of truth)\n if (args.custom_fields !== undefined) {\n const agentFV = args.custom_fields as Record<string, unknown>;\n // Look up product's linked field schema to get allowed keys\n const { data: pfs } = await sb.from(\"product_field_schemas\").select(\"field_schema_id\").eq(\"product_id\", pid).limit(1);\n if (pfs?.length) {\n const { data: fsDef } = await sb.from(\"field_schemas\").select(\"fields\").eq(\"id\", pfs[0].field_schema_id).single();\n if (fsDef?.fields && Array.isArray(fsDef.fields)) {\n const { data: existing } = await sb.from(\"products\").select(\"custom_fields\").eq(\"id\", pid).single();\n const base = (existing?.custom_fields as Record<string, unknown>) || {};\n const filtered: Record<string, unknown> = { ...base };\n const schemaKeys = new Set(fsDef.fields.map((f: any) => f.key).filter(Boolean));\n for (const [k, v] of Object.entries(agentFV)) {\n if (schemaKeys.has(k)) filtered[k] = v;\n }\n updates.custom_fields = filtered;\n } else {\n updates.custom_fields = agentFV; // no schema definition found, pass through\n }\n } else {\n updates.custom_fields = agentFV; // no schema linked, pass through\n }\n }\n if (args.is_wholesale !== undefined) updates.is_wholesale = args.is_wholesale;\n if (args.wholesale_only !== undefined) updates.wholesale_only = args.wholesale_only;\n if (args.minimum_wholesale_quantity !== undefined) updates.minimum_wholesale_quantity = args.minimum_wholesale_quantity;\n if (args.featured_image !== undefined) updates.featured_image = args.featured_image;\n if (args.image_gallery !== undefined) updates.image_gallery = args.image_gallery;\n const updateCatArg = (args.category ?? args.primary_category_id ?? args.category_id) as string | undefined;\n if (updateCatArg !== undefined) {\n if (!updateCatArg) { updates.primary_category_id = null; }\n else if (/^[0-9a-f]{8}-/.test(updateCatArg)) { updates.primary_category_id = updateCatArg; }\n else {\n const { data: cats } = await sb.from(\"categories\").select(\"id\").ilike(\"name\", `%${updateCatArg}%`).eq(\"store_id\", sid).limit(1);\n if (cats?.length) updates.primary_category_id = cats[0].id;\n }\n }\n\n const { data, error } = await sb.from(\"products\")\n .update(updates).eq(\"id\", pid).eq(\"store_id\", sid)\n .select(\"id, name, sku, slug, status, cost_price, pricing_schema_id, updated_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"delete\": {\n const pid = args.product_id as string;\n if (!pid) return { success: false, error: \"product_id is required\" };\n if (args.hard === true) {\n const { error } = await sb.from(\"products\").delete().eq(\"id\", pid).eq(\"store_id\", sid);\n return error ? { success: false, error: error.message } : { success: true, data: { id: pid, deleted: true } };\n }\n const { data, error } = await sb.from(\"products\")\n .update({ status: \"archived\" }).eq(\"id\", pid).eq(\"store_id\", sid)\n .select(\"id, name, status\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n // ======================== CATEGORIES ========================\n\n case \"list_categories\": {\n let q = sb.from(\"categories\")\n .select(\"id, name, slug, description, icon, parent_id, display_order, is_active, featured, product_count, catalog_id, field_schema_id, created_at\")\n .eq(\"store_id\", sid)\n .order(\"display_order\", { ascending: true });\n if (args.catalog_id) q = q.eq(\"catalog_id\", args.catalog_id as string);\n if (args.parent_id) q = q.eq(\"parent_id\", args.parent_id as string);\n if (args.active_only !== false) q = q.eq(\"is_active\", true);\n const { data, error } = await q.limit(args.limit as number || 100);\n return error ? { success: false, error: error.message } : { success: true, count: data?.length, data };\n }\n\n case \"get_category\": {\n const catId = args.category_id as string;\n const { data: cat, error: catErr } = await sb.from(\"categories\")\n .select(\"*\").eq(\"id\", catId).eq(\"store_id\", sid).single();\n if (catErr) return { success: false, error: catErr.message };\n\n const { data: fieldAssigns } = await sb.from(\"category_field_schemas\")\n .select(\"sort_order, is_active, field_schema:field_schemas!field_schema_id(id, name, fields, icon)\")\n .eq(\"category_id\", catId).eq(\"is_active\", true).order(\"sort_order\");\n\n const { data: pricingAssigns } = await sb.from(\"category_pricing_schemas\")\n .select(\"sort_order, is_active, pricing_schema:pricing_schemas!pricing_schema_id(id, name, tiers, quality_tier)\")\n .eq(\"category_id\", catId).eq(\"is_active\", true).order(\"sort_order\");\n\n const { data: children } = await sb.from(\"categories\")\n .select(\"id, name, slug, display_order, is_active, product_count\")\n .eq(\"parent_id\", catId).order(\"display_order\");\n\n return {\n success: true,\n data: {\n ...cat,\n field_schemas: fieldAssigns?.map(a => ({ ...a.field_schema, sort_order: a.sort_order })) || [],\n pricing_schemas: pricingAssigns?.map(a => ({ ...a.pricing_schema, sort_order: a.sort_order })) || [],\n subcategories: children || []\n }\n };\n }\n\n case \"create_category\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name is required\" };\n const insert: Record<string, unknown> = { store_id: sid, name, slug: name.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\") };\n if (args.description) insert.description = args.description;\n if (args.icon) insert.icon = args.icon;\n if (args.parent_id) insert.parent_id = args.parent_id;\n if (args.catalog_id) insert.catalog_id = args.catalog_id;\n if (args.display_order !== undefined) insert.display_order = args.display_order;\n if (args.field_schema_id) insert.field_schema_id = args.field_schema_id;\n\n const { data, error } = await sb.from(\"categories\").insert(insert)\n .select(\"id, name, slug, parent_id, catalog_id, display_order, created_at\").single();\n if (error) return { success: false, error: error.message };\n\n if (args.field_schema_ids && Array.isArray(args.field_schema_ids)) {\n const rows = (args.field_schema_ids as string[]).map((fsId, i) => ({ category_id: data.id, field_schema_id: fsId, sort_order: i + 1 }));\n await sb.from(\"category_field_schemas\").insert(rows);\n }\n if (args.pricing_schema_ids && Array.isArray(args.pricing_schema_ids)) {\n const rows = (args.pricing_schema_ids as string[]).map((psId, i) => ({ category_id: data.id, pricing_schema_id: psId, sort_order: i + 1 }));\n await sb.from(\"category_pricing_schemas\").insert(rows);\n }\n\n return { success: true, data };\n }\n\n case \"update_category\": {\n const catId = args.category_id as string;\n if (!catId) return { success: false, error: \"category_id is required\" };\n const updates: Record<string, unknown> = {};\n if (args.name !== undefined) updates.name = args.name;\n if (args.description !== undefined) updates.description = args.description;\n if (args.icon !== undefined) updates.icon = args.icon;\n if (args.parent_id !== undefined) updates.parent_id = args.parent_id;\n if (args.catalog_id !== undefined) updates.catalog_id = args.catalog_id;\n if (args.display_order !== undefined) updates.display_order = args.display_order;\n if (args.is_active !== undefined) updates.is_active = args.is_active;\n if (args.featured !== undefined) updates.featured = args.featured;\n if (args.field_schema_id !== undefined) updates.field_schema_id = args.field_schema_id;\n\n const { data, error } = await sb.from(\"categories\")\n .update(updates).eq(\"id\", catId).eq(\"store_id\", sid)\n .select(\"id, name, slug, is_active, display_order, updated_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"delete_category\": {\n const catId = args.category_id as string;\n if (!catId) return { success: false, error: \"category_id is required\" };\n if (args.hard === true) {\n const { error } = await sb.from(\"categories\").delete().eq(\"id\", catId).eq(\"store_id\", sid);\n return error ? { success: false, error: error.message } : { success: true, data: { id: catId, deleted: true } };\n }\n const { data, error } = await sb.from(\"categories\")\n .update({ is_active: false }).eq(\"id\", catId).eq(\"store_id\", sid)\n .select(\"id, name, is_active\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n // ======================== FIELD SCHEMAS ========================\n\n case \"list_field_schemas\": {\n let q = sb.from(\"field_schemas\")\n .select(\"id, name, slug, description, icon, fields, is_public, is_active, catalog_id, store_id, install_count, created_at\")\n .eq(\"is_active\", true);\n // Show store-owned schemas AND public schemas (prevent IDOR)\n if (args.public_only === true) {\n q = q.eq(\"is_public\", true);\n } else {\n q = q.or(`store_id.eq.${sid},is_public.eq.true`);\n }\n if (args.catalog_id) q = q.eq(\"catalog_id\", args.catalog_id as string);\n if (args.limit) q = q.limit(args.limit as number);\n const { data, error } = await q.order(\"name\");\n return error ? { success: false, error: error.message } : { success: true, count: data?.length, data };\n }\n\n case \"get_field_schema\": {\n const fsId = (args.field_schema_id || args.schema_id) as string;\n if (!fsId) return { success: false, error: \"field_schema_id is required\" };\n // Allow access to own schemas OR public schemas (prevent IDOR)\n const { data, error } = await sb.from(\"field_schemas\").select(\"*\").eq(\"id\", fsId)\n .or(`store_id.eq.${sid},is_public.eq.true`).single();\n if (error) return { success: false, error: error.message };\n\n const { data: assignments } = await sb.from(\"category_field_schemas\")\n .select(\"category:categories!category_id(id, name)\").eq(\"field_schema_id\", fsId).eq(\"is_active\", true);\n\n return { success: true, data: { ...data, assigned_categories: assignments?.map(a => a.category) || [] } };\n }\n\n case \"create_field_schema\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name is required\" };\n if (!args.fields || !Array.isArray(args.fields)) return { success: false, error: \"fields array is required\" };\n\n // Auto-resolve catalog_id: use provided value, or fall back to store's default catalog\n let catalogId = args.catalog_id as string | undefined;\n if (!catalogId) {\n const { data: defaultCatalog } = await sb.from(\"catalogs\")\n .select(\"id\").eq(\"store_id\", sid).eq(\"is_default\", true).single();\n if (defaultCatalog) catalogId = defaultCatalog.id;\n }\n\n const insert: Record<string, unknown> = {\n store_id: sid,\n name,\n slug: name.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\"),\n fields: args.fields\n };\n if (args.description) insert.description = args.description;\n if (args.icon) insert.icon = args.icon;\n if (catalogId) insert.catalog_id = catalogId;\n if (args.is_public !== undefined) insert.is_public = args.is_public;\n\n const { data, error } = await sb.from(\"field_schemas\").insert(insert)\n .select(\"id, name, slug, fields, icon, is_active, catalog_id, created_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"update_field_schema\": {\n const fsId = (args.field_schema_id || args.schema_id) as string;\n if (!fsId) return { success: false, error: \"field_schema_id is required\" };\n const updates: Record<string, unknown> = {};\n if (args.name !== undefined) updates.name = args.name;\n if (args.description !== undefined) updates.description = args.description;\n if (args.icon !== undefined) updates.icon = args.icon;\n if (args.fields !== undefined) updates.fields = args.fields;\n if (args.is_public !== undefined) updates.is_public = args.is_public;\n if (args.is_active !== undefined) updates.is_active = args.is_active;\n if (args.catalog_id !== undefined) updates.catalog_id = args.catalog_id;\n\n // Only allow modification of own schemas (prevent IDOR)\n const { data, error } = await sb.from(\"field_schemas\")\n .update(updates).eq(\"id\", fsId).eq(\"store_id\", sid)\n .select(\"id, name, slug, fields, icon, is_active, catalog_id, updated_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"delete_field_schema\": {\n const fsId = (args.field_schema_id || args.schema_id) as string;\n if (!fsId) return { success: false, error: \"field_schema_id is required\" };\n // Only allow deletion of own schemas (prevent IDOR)\n const { data, error } = await sb.from(\"field_schemas\")\n .update({ is_active: false, deleted_at: new Date().toISOString() }).eq(\"id\", fsId).eq(\"store_id\", sid)\n .select(\"id, name, is_active\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n // ======================== PRICING SCHEMAS ========================\n\n case \"list_pricing_schemas\": {\n let q = sb.from(\"pricing_schemas\")\n .select(\"id, name, slug, description, tiers, quality_tier, is_public, is_active, catalog_id, store_id, install_count, created_at\")\n .eq(\"is_active\", true);\n // Show store-owned schemas AND public schemas (prevent IDOR)\n if (args.public_only === true) {\n q = q.eq(\"is_public\", true);\n } else {\n q = q.or(`store_id.eq.${sid},is_public.eq.true`);\n }\n if (args.catalog_id) q = q.eq(\"catalog_id\", args.catalog_id as string);\n if (args.limit) q = q.limit(args.limit as number);\n const { data, error } = await q.order(\"name\");\n return error ? { success: false, error: error.message } : { success: true, count: data?.length, data };\n }\n\n case \"get_pricing_schema\": {\n const psId = (args.pricing_schema_id || args.schema_id) as string;\n if (!psId) return { success: false, error: \"pricing_schema_id is required\" };\n // Allow access to own schemas OR public schemas (prevent IDOR)\n const { data, error } = await sb.from(\"pricing_schemas\").select(\"*\").eq(\"id\", psId)\n .or(`store_id.eq.${sid},is_public.eq.true`).single();\n if (error) return { success: false, error: error.message };\n\n const { data: assignments } = await sb.from(\"category_pricing_schemas\")\n .select(\"category:categories!category_id(id, name)\").eq(\"pricing_schema_id\", psId).eq(\"is_active\", true);\n\n return { success: true, data: { ...data, assigned_categories: assignments?.map(a => a.category) || [] } };\n }\n\n case \"create_pricing_schema\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name is required\" };\n if (!args.tiers || !Array.isArray(args.tiers)) return { success: false, error: \"tiers array is required\" };\n\n // Auto-resolve catalog_id: use provided value, or fall back to store's default catalog\n let catalogId = args.catalog_id as string | undefined;\n if (!catalogId) {\n const { data: defaultCatalog } = await sb.from(\"catalogs\")\n .select(\"id\").eq(\"store_id\", sid).eq(\"is_default\", true).single();\n if (defaultCatalog) catalogId = defaultCatalog.id;\n }\n\n const insert: Record<string, unknown> = {\n store_id: sid,\n name,\n slug: name.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\"),\n tiers: args.tiers\n };\n if (args.description) insert.description = args.description;\n if (args.quality_tier) insert.quality_tier = args.quality_tier;\n if (catalogId) insert.catalog_id = catalogId;\n if (args.is_public !== undefined) insert.is_public = args.is_public;\n\n const { data, error } = await sb.from(\"pricing_schemas\").insert(insert)\n .select(\"id, name, slug, tiers, quality_tier, is_active, catalog_id, created_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"update_pricing_schema\": {\n const psId = (args.pricing_schema_id || args.schema_id) as string;\n if (!psId) return { success: false, error: \"pricing_schema_id is required\" };\n const updates: Record<string, unknown> = {};\n if (args.name !== undefined) updates.name = args.name;\n if (args.description !== undefined) updates.description = args.description;\n if (args.tiers !== undefined) updates.tiers = args.tiers;\n if (args.quality_tier !== undefined) updates.quality_tier = args.quality_tier;\n if (args.is_public !== undefined) updates.is_public = args.is_public;\n if (args.is_active !== undefined) updates.is_active = args.is_active;\n if (args.catalog_id !== undefined) updates.catalog_id = args.catalog_id;\n\n // Only allow modification of own schemas (prevent IDOR)\n const { data, error } = await sb.from(\"pricing_schemas\")\n .update(updates).eq(\"id\", psId).eq(\"store_id\", sid)\n .select(\"id, name, slug, tiers, quality_tier, is_active, catalog_id, updated_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"delete_pricing_schema\": {\n const psId = (args.pricing_schema_id || args.schema_id) as string;\n if (!psId) return { success: false, error: \"pricing_schema_id is required\" };\n // Only allow deletion of own schemas (prevent IDOR)\n const { data, error } = await sb.from(\"pricing_schemas\")\n .update({ is_active: false, deleted_at: new Date().toISOString() }).eq(\"id\", psId).eq(\"store_id\", sid)\n .select(\"id, name, is_active\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n // ======================== CATALOGS ========================\n\n case \"list_catalogs\": {\n const { data, error } = await sb.from(\"catalogs\")\n .select(\"id, name, slug, description, vertical, is_active, is_default, display_order, created_at\")\n .eq(\"store_id\", sid).order(\"display_order\");\n return error ? { success: false, error: error.message } : { success: true, count: data?.length, data };\n }\n\n case \"create_catalog\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name is required\" };\n // Resolve owner_user_id from store\n const { data: store } = await sb.from(\"stores\").select(\"owner_user_id\").eq(\"id\", sid).single();\n const insert: Record<string, unknown> = {\n store_id: sid, name,\n slug: name.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\"),\n owner_user_id: store?.owner_user_id\n };\n if (args.description) insert.description = args.description;\n if (args.vertical) insert.vertical = args.vertical;\n if (args.is_default !== undefined) insert.is_default = args.is_default;\n if (args.settings) insert.settings = args.settings;\n\n const { data, error } = await sb.from(\"catalogs\").insert(insert)\n .select(\"id, name, slug, vertical, is_default, created_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"update_catalog\": {\n const catId = args.catalog_id as string;\n if (!catId) return { success: false, error: \"catalog_id is required\" };\n const updates: Record<string, unknown> = {};\n if (args.name !== undefined) updates.name = args.name;\n if (args.description !== undefined) updates.description = args.description;\n if (args.vertical !== undefined) updates.vertical = args.vertical;\n if (args.is_active !== undefined) updates.is_active = args.is_active;\n if (args.is_default !== undefined) updates.is_default = args.is_default;\n if (args.settings !== undefined) updates.settings = args.settings;\n if (args.display_order !== undefined) updates.display_order = args.display_order;\n\n const { data, error } = await sb.from(\"catalogs\")\n .update(updates).eq(\"id\", catId).eq(\"store_id\", sid)\n .select(\"id, name, slug, vertical, is_active, is_default, updated_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n // ======================== SCHEMA ASSIGNMENTS ========================\n\n case \"assign_schema\": {\n const target = args.target as string; // \"category\" or \"product\"\n const schemaType = args.schema_type as string; // \"field\" or \"pricing\"\n const targetId = args.target_id as string;\n const schemaId = args.schema_id as string;\n if (!target || !schemaType || !targetId || !schemaId) {\n return { success: false, error: \"target (category|product), schema_type (field|pricing), target_id, and schema_id are required\" };\n }\n\n // Verify target product/category belongs to this store (prevent IDOR)\n const targetTable = target === \"product\" ? \"products\" : \"categories\";\n const { data: ownerCheck, error: ownerErr } = await sb.from(targetTable)\n .select(\"id\").eq(\"id\", targetId).eq(\"store_id\", sid).single();\n if (ownerErr || !ownerCheck) {\n return { success: false, error: `${target} not found or does not belong to this store` };\n }\n\n // Verify schema is accessible (own schema or public)\n const schemaTable = schemaType === \"field\" ? \"field_schemas\" : \"pricing_schemas\";\n const { data: schemaCheck, error: schemaErr } = await sb.from(schemaTable)\n .select(\"id\").eq(\"id\", schemaId).or(`store_id.eq.${sid},is_public.eq.true`).single();\n if (schemaErr || !schemaCheck) {\n return { success: false, error: `${schemaType} schema not found or not accessible` };\n }\n\n const table = target === \"product\"\n ? (schemaType === \"field\" ? \"product_field_schemas\" : \"product_pricing_schemas\")\n : (schemaType === \"field\" ? \"category_field_schemas\" : \"category_pricing_schemas\");\n const fkCol = target === \"product\" ? \"product_id\" : \"category_id\";\n const schemaCol = schemaType === \"field\" ? \"field_schema_id\" : \"pricing_schema_id\";\n\n const row: Record<string, unknown> = { [fkCol]: targetId, [schemaCol]: schemaId };\n if (args.sort_order !== undefined) row.sort_order = args.sort_order;\n\n const { data, error } = await sb.from(table).upsert(row, { onConflict: `${fkCol},${schemaCol}` }).select().single();\n if (error) return { success: false, error: error.message };\n\n // Hydrate product with schema data\n if (target === \"product\") {\n const productUpdates: Record<string, unknown> = {};\n if (schemaType === \"pricing\") {\n const { data: schema } = await sb.from(\"pricing_schemas\").select(\"tiers, quality_tier\").eq(\"id\", schemaId).single();\n productUpdates.pricing_schema_id = schemaId;\n if (schema?.tiers) productUpdates.pricing_data = schema.tiers;\n }\n if (schemaType === \"field\") {\n // Schema is source of truth — rebuild custom_fields from schema keys only\n const { data: schema } = await sb.from(\"field_schemas\").select(\"fields\").eq(\"id\", schemaId).single();\n if (schema?.fields && Array.isArray(schema.fields)) {\n const { data: product } = await sb.from(\"products\").select(\"custom_fields\").eq(\"id\", targetId).eq(\"store_id\", sid).single();\n const existing = (product?.custom_fields as Record<string, unknown>) || {};\n const rebuilt: Record<string, unknown> = {};\n for (const f of schema.fields) {\n const key = (f as any).key;\n if (key) rebuilt[key] = (key in existing) ? existing[key] : ((f as any).default ?? null);\n }\n productUpdates.custom_fields = rebuilt;\n }\n }\n if (Object.keys(productUpdates).length > 0) {\n await sb.from(\"products\").update(productUpdates).eq(\"id\", targetId).eq(\"store_id\", sid);\n }\n }\n\n return { success: true, data };\n }\n\n case \"unassign_schema\": {\n const target = args.target as string;\n const schemaType = args.schema_type as string;\n const targetId = args.target_id as string;\n const schemaId = args.schema_id as string;\n if (!target || !schemaType || !targetId || !schemaId) {\n return { success: false, error: \"target (category|product), schema_type (field|pricing), target_id, and schema_id are required\" };\n }\n\n // Verify target product/category belongs to this store (prevent IDOR)\n const targetTable = target === \"product\" ? \"products\" : \"categories\";\n const { data: ownerCheck, error: ownerErr } = await sb.from(targetTable)\n .select(\"id\").eq(\"id\", targetId).eq(\"store_id\", sid).single();\n if (ownerErr || !ownerCheck) {\n return { success: false, error: `${target} not found or does not belong to this store` };\n }\n\n const table = target === \"product\"\n ? (schemaType === \"field\" ? \"product_field_schemas\" : \"product_pricing_schemas\")\n : (schemaType === \"field\" ? \"category_field_schemas\" : \"category_pricing_schemas\");\n const fkCol = target === \"product\" ? \"product_id\" : \"category_id\";\n const schemaCol = schemaType === \"field\" ? \"field_schema_id\" : \"pricing_schema_id\";\n\n const { error } = await sb.from(table).delete().eq(fkCol, targetId).eq(schemaCol, schemaId);\n return error ? { success: false, error: error.message } : { success: true, data: { removed: true, target, schema_type: schemaType, target_id: targetId, schema_id: schemaId } };\n }\n\n // ======================== PRODUCT DEDUP / MERGE ========================\n\n case \"find_duplicates\": {\n // Find products with similar names (potential duplicates)\n const { data: all, error: allErr } = await sb.from(\"products\")\n .select(\"id, name, sku, status, stock_quantity, cost_price, created_at\")\n .eq(\"store_id\", sid).neq(\"status\", \"archived\")\n .order(\"name\");\n if (allErr) return { success: false, error: allErr.message };\n\n // Group by normalized name (lowercase, trim, strip common suffixes like \"(TEMP)\", \"(OLD)\", \"(COPY)\")\n const nameMap = new Map<string, typeof all>();\n for (const p of all || []) {\n const normalized = (p.name || \"\").toLowerCase().trim()\n .replace(/\\s*\\((temp|old|copy|duplicate|dup|new|v2)\\)\\s*/gi, \"\")\n .replace(/\\s+/g, \" \");\n if (!normalized) continue;\n if (!nameMap.has(normalized)) nameMap.set(normalized, []);\n nameMap.get(normalized)!.push(p);\n }\n\n const duplicates = Array.from(nameMap.entries())\n .filter(([_, products]) => products.length > 1)\n .map(([normalizedName, products]) => ({\n normalized_name: normalizedName,\n count: products.length,\n products: products.map(p => ({\n id: p.id, name: p.name, sku: p.sku, status: p.status,\n stock_quantity: p.stock_quantity, cost_price: p.cost_price, created_at: p.created_at,\n })),\n }));\n\n // Also check by exact SKU match\n const skuMap = new Map<string, typeof all>();\n for (const p of all || []) {\n if (!p.sku) continue;\n const key = p.sku.toLowerCase().trim();\n if (!skuMap.has(key)) skuMap.set(key, []);\n skuMap.get(key)!.push(p);\n }\n const skuDupes = Array.from(skuMap.entries())\n .filter(([_, products]) => products.length > 1)\n .map(([sku, products]) => ({ sku, count: products.length, products }));\n\n // Pre-format as markdown — formatter drops nested products arrays\n const totalNameDupes = duplicates.reduce((s, d) => s + d.count, 0);\n const totalSkuDupes = skuDupes.reduce((s, d) => s + d.count, 0);\n const lines: string[] = [\n `## Duplicate Products`,\n `**By Name**: ${duplicates.length} groups (${totalNameDupes} products) | **By SKU**: ${skuDupes.length} groups (${totalSkuDupes} products)\\n`,\n ];\n if (duplicates.length > 0) {\n lines.push(\"### Name Duplicates\");\n for (const group of duplicates.slice(0, 20)) {\n lines.push(`\\n**\"${group.normalized_name}\"** (${group.count} products):`);\n lines.push(\"| Name | SKU | Status | Stock | Created |\");\n lines.push(\"| --- | --- | --- | ---: | --- |\");\n for (const p of group.products) {\n lines.push(`| ${p.name} | ${p.sku || \"—\"} | ${p.status} | ${p.stock_quantity ?? \"—\"} | ${p.created_at?.slice(0, 10) || \"—\"} |`);\n }\n }\n }\n if (skuDupes.length > 0) {\n lines.push(\"\\n### SKU Duplicates\");\n for (const group of skuDupes.slice(0, 20)) {\n lines.push(`\\n**SKU \"${group.sku}\"** (${group.count} products):`);\n lines.push(\"| Name | SKU | Status | Stock | Created |\");\n lines.push(\"| --- | --- | --- | ---: | --- |\");\n for (const p of group.products) {\n lines.push(`| ${(p as any).name} | ${(p as any).sku || \"—\"} | ${(p as any).status} | ${(p as any).stock_quantity ?? \"—\"} | ${(p as any).created_at?.slice(0, 10) || \"—\"} |`);\n }\n }\n }\n if (duplicates.length === 0 && skuDupes.length === 0) {\n lines.push(\"\\nNo duplicates found.\");\n }\n return { success: true, data: lines.join(\"\\n\") };\n }\n\n case \"merge\": {\n const primaryId = args.primary_product_id as string;\n const secondaryId = args.secondary_product_id as string;\n if (!primaryId || !secondaryId) return { success: false, error: \"primary_product_id and secondary_product_id required\" };\n if (primaryId === secondaryId) return { success: false, error: \"Cannot merge a product with itself\" };\n\n // Verify both exist and belong to this store\n const { data: primary } = await sb.from(\"products\").select(\"*\").eq(\"id\", primaryId).eq(\"store_id\", sid).single();\n const { data: secondary } = await sb.from(\"products\").select(\"*\").eq(\"id\", secondaryId).eq(\"store_id\", sid).single();\n if (!primary) return { success: false, error: `Primary product ${primaryId} not found` };\n if (!secondary) return { success: false, error: `Secondary product ${secondaryId} not found` };\n\n const reassignResults: Record<string, string> = {};\n\n // 1. Consolidate inventory — sum quantities per location\n const { data: secInv } = await sb.from(\"inventory\")\n .select(\"product_id, location_id, quantity\")\n .eq(\"product_id\", secondaryId).eq(\"store_id\", sid);\n if (secInv?.length) {\n for (const row of secInv) {\n if (!row.quantity || row.quantity <= 0) continue;\n // Try to add to existing primary inventory at same location\n const { data: priRow } = await sb.from(\"inventory\")\n .select(\"id, quantity\")\n .eq(\"product_id\", primaryId).eq(\"location_id\", row.location_id).eq(\"store_id\", sid)\n .maybeSingle();\n if (priRow) {\n await sb.from(\"inventory\").update({ quantity: (priRow.quantity || 0) + row.quantity, updated_at: new Date().toISOString() }).eq(\"id\", priRow.id);\n } else {\n await sb.from(\"inventory\").insert({ store_id: sid, product_id: primaryId, location_id: row.location_id, quantity: row.quantity });\n }\n }\n // Zero out secondary inventory\n await sb.from(\"inventory\").update({ quantity: 0 }).eq(\"product_id\", secondaryId).eq(\"store_id\", sid);\n reassignResults.inventory = `consolidated ${secInv.length} location(s)`;\n } else {\n reassignResults.inventory = \"no inventory to consolidate\";\n }\n\n // 2. Reassign order_items\n const { error: oiErr, count: oiCount } = await sb.from(\"order_items\")\n .update({ product_id: primaryId }).eq(\"product_id\", secondaryId);\n reassignResults.order_items = oiErr ? `error: ${oiErr.message}` : `moved ${oiCount ?? 0} rows`;\n\n // 3. Reassign cart_items\n const { error: ciErr, count: ciCount } = await sb.from(\"cart_items\")\n .update({ product_id: primaryId }).eq(\"product_id\", secondaryId);\n reassignResults.cart_items = ciErr ? `error: ${ciErr.message}` : `moved ${ciCount ?? 0} rows`;\n\n // 4. Reassign purchase_order_items\n const { error: poiErr, count: poiCount } = await sb.from(\"purchase_order_items\")\n .update({ product_id: primaryId }).eq(\"product_id\", secondaryId);\n reassignResults.purchase_order_items = poiErr ? `error: ${poiErr.message}` : `moved ${poiCount ?? 0} rows`;\n\n // 5. Reassign product_reviews\n const { error: prErr, count: prCount } = await sb.from(\"product_reviews\")\n .update({ product_id: primaryId }).eq(\"product_id\", secondaryId);\n reassignResults.product_reviews = prErr ? `error: ${prErr.message}` : `moved ${prCount ?? 0} rows`;\n\n // 6. Fill in missing fields on primary from secondary\n const fillFields = [\"description\", \"short_description\", \"cost_price\", \"wholesale_price\", \"weight\", \"featured_image\", \"image_gallery\"] as const;\n const fills: Record<string, unknown> = {};\n for (const field of fillFields) {\n if (!primary[field] && secondary[field]) fills[field] = secondary[field];\n }\n // Merge custom_fields (secondary fills gaps)\n if (secondary.custom_fields && typeof secondary.custom_fields === \"object\") {\n const merged = { ...(secondary.custom_fields as Record<string, unknown>), ...(primary.custom_fields as Record<string, unknown> || {}) };\n fills.custom_fields = merged;\n }\n if (Object.keys(fills).length > 0) {\n await sb.from(\"products\").update(fills).eq(\"id\", primaryId).eq(\"store_id\", sid);\n reassignResults.field_fills = Object.keys(fills).join(\", \");\n }\n\n // 7. Archive the secondary product\n await sb.from(\"products\").update({\n status: \"archived\",\n name: `[MERGED] ${secondary.name}`,\n }).eq(\"id\", secondaryId).eq(\"store_id\", sid);\n\n // Re-read primary\n const { data: merged } = await sb.from(\"products\")\n .select(\"id, name, sku, status, stock_quantity, cost_price, created_at, updated_at\")\n .eq(\"id\", primaryId).single();\n\n return {\n success: true,\n data: {\n merged_product: merged,\n archived_product: { id: secondaryId, name: secondary.name },\n reassign_results: reassignResults,\n }\n };\n }\n\n default:\n return { success: false, error: `Unknown products action: ${args.action}. Valid: browse, find, get, create, update, delete, find_duplicates, merge, list_categories, get_category, create_category, update_category, delete_category, list_field_schemas, get_field_schema, create_field_schema, update_field_schema, delete_field_schema, list_pricing_schemas, get_pricing_schema, create_pricing_schema, update_pricing_schema, delete_pricing_schema, list_catalogs, create_catalog, update_catalog, assign_schema, unassign_schema` };\n }\n}\n\nexport async function handleCollections(sb: SupabaseClient, args: Record<string, unknown>, storeId?: string) {\n const sid = storeId as string;\n switch (args.action) {\n case \"find\": {\n let q = sb.from(\"creation_collections\").select(\"*\").eq(\"store_id\", sid);\n if (args.name) { const sn = sanitizeFilterValue(args.name as string); q = q.ilike(\"name\", `%${sn}%`); }\n const { data, error } = await q.limit(100);\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n case \"create\": {\n const slug = (args.slug as string) || (args.name as string || \"\").toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\");\n const { data, error } = await sb.from(\"creation_collections\")\n .insert({ store_id: sid, name: args.name, slug }).select().single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n default:\n return { success: false, error: `Unknown collections action: ${args.action}` };\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"catalog.js","names":["sanitizeFilterValue","handleProducts","sb","args","storeId","sid","action","data","cats","error","catErr","from","select","eq","order","ascending","success","message","count","activeCount","head","neq","archivedCount","categories","product_status_summary","active","archived","tip","offset","q","limit","range","query","sq","String","or","category","category_id","catInput","catVal","matchedCatId","test","ilike","length","id","children","catIds","map","c","in","catalog_id","status","include_archived","featured","undefined","totalCount","flattened","row","custom_fields","rest","fields","populated","k","v","Object","entries","keys","category_name","name","field_values","total","pid","product_id","product","pErr","single","fieldSchemas","pricingSchemas","inventory","field_schemas","fs","field_schema","pricing_schemas","ps","pricing_schema","insert","store_id","sku","description","short_description","type","cost_price","wholesale_price","stock_quantity","manage_stock","weight","tax_status","tax_class","pricing_data","featured_image","image_gallery","is_wholesale","wholesale_only","minimum_wholesale_quantity","catArg","primary_category_id","pricing_schema_id","field_schema_ids","Array","isArray","rows","fsId","field_schema_id","pricing_schema_ids","psId","productUpdates","inherited","categoryId","cat","upsert","onConflict","schemaKeys","Set","fieldValues","f","key","add","default","agentValues","has","push","catFieldSchemas","cat2","filter","r","tiers","update","full","updates","customFieldsArg","agentFV","pfs","fsDef","existing","base","filtered","Boolean","updateCatArg","cf","hard","delete","deleted","parent_id","active_only","catId","fieldAssigns","pricingAssigns","a","sort_order","subcategories","slug","toLowerCase","replace","icon","display_order","i","is_active","public_only","schema_id","assignments","assigned_categories","catalogId","defaultCatalog","is_public","deleted_at","Date","toISOString","quality_tier","store","owner_user_id","vertical","is_default","settings","target","schemaType","schema_type","targetId","target_id","schemaId","targetTable","ownerCheck","ownerErr","schemaTable","schemaCheck","schemaErr","table","fkCol","schemaCol","schema","rebuilt","removed","all","allErr","nameMap","Map","p","normalized","trim","set","get","duplicates","_","products","normalizedName","normalized_name","created_at","skuMap","skuDupes","totalNameDupes","reduce","s","d","totalSkuDupes","lines","group","slice","join","primaryId","primary_product_id","secondaryId","secondary_product_id","primary","secondary","reassignResults","secInv","quantity","priRow","location_id","maybeSingle","updated_at","oiErr","oiCount","order_items","ciErr","ciCount","cart_items","poiErr","poiCount","purchase_order_items","prErr","prCount","product_reviews","fillFields","fills","field","merged","field_fills","merged_product","archived_product","reassign_results","handleCollections","sn"],"sources":["../../../src/server/handlers/catalog.ts"],"sourcesContent":["import type { SupabaseClient } from \"@supabase/supabase-js\";\nimport { sanitizeFilterValue } from \"../lib/utils.js\";\n\n// ============================================================================\n// PRODUCTS — Full product catalog management\n// Products, categories, field schemas, pricing schemas, catalogs, assignments\n// ============================================================================\n\nexport async function handleProducts(sb: SupabaseClient, args: Record<string, unknown>, storeId?: string) {\n const sid = storeId as string;\n switch (args.action) {\n\n // ======================== PRODUCTS ========================\n\n case \"browse\": {\n // Category summary with product counts, price ranges, stock status\n const { data: cats, error: catErr } = await sb.from(\"categories\")\n .select(\"id, name, slug, parent_id, display_order, product_count, catalog_id\")\n .eq(\"store_id\", sid)\n .eq(\"is_active\", true)\n .order(\"display_order\", { ascending: true });\n if (catErr) return { success: false, error: catErr.message };\n\n // Status distribution via count queries\n const { count: activeCount } = await sb.from(\"products\").select(\"id\", { count: \"exact\", head: true }).eq(\"store_id\", sid).neq(\"status\", \"archived\");\n const { count: archivedCount } = await sb.from(\"products\").select(\"id\", { count: \"exact\", head: true }).eq(\"store_id\", sid).eq(\"status\", \"archived\");\n\n return {\n success: true,\n data: {\n categories: cats,\n product_status_summary: { active: activeCount || 0, archived: archivedCount || 0 },\n tip: \"Use products.find with category or status filters to drill into a specific set. Use products.get for full product detail.\"\n }\n };\n }\n\n case \"find\": {\n const offset = args.offset as number || 0;\n let q = sb.from(\"products\")\n .select(\"id, name, sku, status, type, stock_quantity, custom_fields, category:categories!primary_category_id(name)\", { count: \"exact\" })\n .eq(\"store_id\", sid)\n .order(\"created_at\", { ascending: false });\n if (args.limit) {\n q = q.range(offset, offset + (args.limit as number) - 1);\n } else if (offset > 0) {\n q = q.range(offset, offset + 999);\n }\n if (args.query) { const sq = sanitizeFilterValue(String(args.query)); q = q.or(`name.ilike.%${sq}%,sku.ilike.%${sq}%,description.ilike.%${sq}%`); }\n if (args.category || args.category_id) {\n // Accept both category (name or UUID) and category_id (UUID)\n const catInput = (args.category_id || args.category) as string;\n const catVal = sanitizeFilterValue(catInput);\n let matchedCatId: string | null = null;\n if (/^[0-9a-f]{8}-/.test(catVal)) {\n matchedCatId = catVal;\n } else {\n const { data: cats } = await sb.from(\"categories\").select(\"id\").ilike(\"name\", `%${catVal}%`).eq(\"store_id\", sid).limit(1);\n if (cats?.length) matchedCatId = cats[0].id;\n }\n if (matchedCatId) {\n // Include sub-categories (children of the matched category)\n const { data: children } = await sb.from(\"categories\").select(\"id\").eq(\"parent_id\", matchedCatId).eq(\"store_id\", sid);\n const catIds = [matchedCatId, ...(children || []).map(c => c.id)];\n q = q.in(\"primary_category_id\", catIds);\n } else {\n // Category not found — return empty result\n q = q.eq(\"primary_category_id\", \"00000000-0000-0000-0000-000000000000\");\n }\n }\n if (args.catalog_id) q = q.eq(\"catalog_id\", args.catalog_id as string);\n if (args.status) q = q.eq(\"status\", args.status as string);\n // Exclude archived unless explicitly requested or filtering by status\n if (!args.status && !args.include_archived) {\n q = q.neq(\"status\", \"archived\");\n }\n if (args.featured !== undefined) q = q.eq(\"featured\", args.featured as boolean);\n const { data, error, count: totalCount } = await q;\n if (error) return { success: false, error: error.message };\n // Flatten nested category for display\n const flattened = (data || []).map((row: any) => {\n const { category, custom_fields, ...rest } = row;\n // Strip null/empty values from custom_fields to keep find response lean\n let fields: Record<string, unknown> | undefined;\n if (custom_fields && typeof custom_fields === \"object\") {\n const populated: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(custom_fields)) {\n if (v !== null && v !== undefined && v !== \"\") populated[k] = v;\n }\n if (Object.keys(populated).length > 0) fields = populated;\n }\n return { ...rest, category_name: category?.name || null, ...(fields ? { field_values: fields } : {}) };\n });\n return { success: true, total: totalCount, count: flattened.length, offset, ...(args.limit ? { limit: args.limit } : {}), data: flattened };\n }\n\n case \"get\": {\n const pid = args.product_id as string;\n const { data: product, error: pErr } = await sb.from(\"products\")\n .select(\"*, category:categories!primary_category_id(id, name, slug)\")\n .eq(\"id\", pid).eq(\"store_id\", sid).neq(\"status\", \"archived\").single();\n if (pErr) return { success: false, error: pErr.message };\n\n const { data: fieldSchemas } = await sb.from(\"product_field_schemas\")\n .select(\"field_schema_id, field_schema:field_schemas!field_schema_id(id, name, fields, icon)\")\n .eq(\"product_id\", pid);\n\n const { data: pricingSchemas } = await sb.from(\"product_pricing_schemas\")\n .select(\"pricing_schema_id, pricing_schema:pricing_schemas!pricing_schema_id(id, name, tiers, quality_tier)\")\n .eq(\"product_id\", pid);\n\n const { data: inventory } = await sb.from(\"inventory\")\n .select(\"id, quantity, location:locations!location_id(id, name)\")\n .eq(\"product_id\", pid).eq(\"store_id\", sid);\n\n return {\n success: true,\n data: {\n ...product,\n field_schemas: fieldSchemas?.map(fs => fs.field_schema) || [],\n pricing_schemas: pricingSchemas?.map(ps => ps.pricing_schema) || [],\n inventory: inventory || []\n }\n };\n }\n\n case \"create\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name is required\" };\n const insert: Record<string, unknown> = { store_id: sid, name };\n if (args.sku) insert.sku = args.sku;\n if (args.description) insert.description = args.description;\n if (args.short_description) insert.short_description = args.short_description;\n if (args.type) insert.type = args.type;\n if (args.status) insert.status = args.status;\n if (args.cost_price !== undefined) insert.cost_price = args.cost_price;\n if (args.wholesale_price !== undefined) insert.wholesale_price = args.wholesale_price;\n if (args.featured !== undefined) insert.featured = args.featured;\n if (args.stock_quantity !== undefined) insert.stock_quantity = args.stock_quantity;\n if (args.manage_stock !== undefined) insert.manage_stock = args.manage_stock;\n if (args.weight !== undefined) insert.weight = args.weight;\n if (args.tax_status) insert.tax_status = args.tax_status;\n if (args.tax_class) insert.tax_class = args.tax_class;\n if (args.catalog_id) insert.catalog_id = args.catalog_id;\n if (args.pricing_data) insert.pricing_data = args.pricing_data;\n // custom_fields NOT inserted directly — schema is the source of truth\n // Agent-provided custom_fields are filtered against schema keys post-insert\n if (args.featured_image !== undefined) insert.featured_image = args.featured_image;\n if (args.image_gallery !== undefined) insert.image_gallery = args.image_gallery;\n if (args.is_wholesale !== undefined) insert.is_wholesale = args.is_wholesale;\n if (args.wholesale_only !== undefined) insert.wholesale_only = args.wholesale_only;\n if (args.minimum_wholesale_quantity !== undefined) insert.minimum_wholesale_quantity = args.minimum_wholesale_quantity;\n const catArg = (args.category || args.primary_category_id || args.category_id) as string | undefined;\n if (catArg) {\n if (/^[0-9a-f]{8}-/.test(catArg)) {\n insert.primary_category_id = catArg;\n } else {\n const { data: cats } = await sb.from(\"categories\").select(\"id\").ilike(\"name\", `%${catArg}%`).eq(\"store_id\", sid).limit(1);\n if (cats?.length) insert.primary_category_id = cats[0].id;\n }\n }\n if (args.pricing_schema_id) insert.pricing_schema_id = args.pricing_schema_id;\n\n const { data, error } = await sb.from(\"products\").insert(insert).select(\"id, name, sku, slug, status, primary_category_id, pricing_schema_id, created_at\").single();\n if (error) return { success: false, error: error.message };\n\n // Explicit schema assignments from args\n if (args.field_schema_ids && Array.isArray(args.field_schema_ids)) {\n const rows = (args.field_schema_ids as string[]).map(fsId => ({ product_id: data.id, field_schema_id: fsId }));\n await sb.from(\"product_field_schemas\").insert(rows);\n }\n if (args.pricing_schema_ids && Array.isArray(args.pricing_schema_ids)) {\n const rows = (args.pricing_schema_ids as string[]).map(psId => ({ product_id: data.id, pricing_schema_id: psId }));\n await sb.from(\"product_pricing_schemas\").insert(rows);\n }\n\n const productUpdates: Record<string, unknown> = {};\n const inherited: string[] = [];\n\n // Auto-inherit field schema from category — ALWAYS merge with schema template\n const categoryId = insert.primary_category_id as string | undefined;\n if (categoryId && !args.field_schema_ids) {\n const { data: cat } = await sb.from(\"categories\").select(\"field_schema_id\").eq(\"id\", categoryId).single();\n if (cat?.field_schema_id) {\n await sb.from(\"product_field_schemas\").upsert(\n { product_id: data.id, field_schema_id: cat.field_schema_id },\n { onConflict: \"product_id,field_schema_id\" }\n );\n // Schema is source of truth — only schema keys allowed\n const { data: fs } = await sb.from(\"field_schemas\").select(\"fields\").eq(\"id\", cat.field_schema_id).single();\n if (fs?.fields && Array.isArray(fs.fields)) {\n const schemaKeys = new Set<string>();\n const fieldValues: Record<string, unknown> = {};\n for (const f of fs.fields) {\n const key = (f as any).key;\n if (key) { schemaKeys.add(key); fieldValues[key] = (f as any).default ?? null; }\n }\n // Only accept agent values for keys that exist in the schema\n const agentValues = (args.custom_fields as Record<string, unknown>) || {};\n for (const [k, v] of Object.entries(agentValues)) {\n if (schemaKeys.has(k)) fieldValues[k] = v;\n }\n productUpdates.custom_fields = fieldValues;\n }\n inherited.push(`field_schema:${cat.field_schema_id}`);\n }\n // Also check junction table for additional schemas\n const { data: catFieldSchemas } = await sb.from(\"category_field_schemas\").select(\"field_schema_id\").eq(\"category_id\", categoryId);\n if (catFieldSchemas?.length) {\n const cat2 = await sb.from(\"categories\").select(\"field_schema_id\").eq(\"id\", categoryId).single();\n const rows = catFieldSchemas.filter(r => r.field_schema_id !== cat2?.data?.field_schema_id).map(r => ({ product_id: data.id, field_schema_id: r.field_schema_id }));\n if (rows.length) await sb.from(\"product_field_schemas\").insert(rows);\n }\n }\n\n // If pricing_schema_id provided, hydrate pricing_data from schema\n if (insert.pricing_schema_id && !args.pricing_data) {\n const { data: ps } = await sb.from(\"pricing_schemas\").select(\"tiers\").eq(\"id\", insert.pricing_schema_id as string).single();\n if (ps?.tiers) productUpdates.pricing_data = ps.tiers;\n }\n\n // Apply any post-insert updates\n if (Object.keys(productUpdates).length > 0) {\n await sb.from(\"products\").update(productUpdates).eq(\"id\", data.id);\n }\n\n // Re-read the full product for response\n const { data: full } = await sb.from(\"products\")\n .select(\"id, name, sku, slug, status, primary_category_id, pricing_schema_id, custom_fields, pricing_data, created_at\")\n .eq(\"id\", data.id).single();\n if (inherited.length && full) (full as any).inherited = inherited;\n\n return { success: true, data: full || data };\n }\n\n case \"update\": {\n const pid = args.product_id as string;\n if (!pid) return { success: false, error: \"product_id is required\" };\n const updates: Record<string, unknown> = {};\n if (args.name !== undefined) updates.name = args.name;\n if (args.sku !== undefined) updates.sku = args.sku;\n if (args.description !== undefined) updates.description = args.description;\n if (args.short_description !== undefined) updates.short_description = args.short_description;\n if (args.type !== undefined) updates.type = args.type;\n if (args.status !== undefined) updates.status = args.status;\n if (args.cost_price !== undefined) updates.cost_price = args.cost_price;\n if (args.wholesale_price !== undefined) updates.wholesale_price = args.wholesale_price;\n if (args.featured !== undefined) updates.featured = args.featured;\n if (args.stock_quantity !== undefined) updates.stock_quantity = args.stock_quantity;\n if (args.manage_stock !== undefined) updates.manage_stock = args.manage_stock;\n if (args.weight !== undefined) updates.weight = args.weight;\n if (args.tax_status !== undefined) updates.tax_status = args.tax_status;\n if (args.tax_class !== undefined) updates.tax_class = args.tax_class;\n if (args.catalog_id !== undefined) updates.catalog_id = args.catalog_id;\n if (args.pricing_schema_id !== undefined) updates.pricing_schema_id = args.pricing_schema_id;\n if (args.pricing_data !== undefined) updates.pricing_data = args.pricing_data;\n // custom_fields filtered to schema keys only (schema = source of truth)\n // Accept both \"custom_fields\" and \"field_values\" (find returns \"field_values\")\n const customFieldsArg = args.custom_fields ?? args.field_values;\n if (customFieldsArg !== undefined) {\n const agentFV = customFieldsArg as Record<string, unknown>;\n // Look up product's linked field schema to get allowed keys\n const { data: pfs } = await sb.from(\"product_field_schemas\").select(\"field_schema_id\").eq(\"product_id\", pid).limit(1);\n if (pfs?.length) {\n const { data: fsDef } = await sb.from(\"field_schemas\").select(\"fields\").eq(\"id\", pfs[0].field_schema_id).single();\n if (fsDef?.fields && Array.isArray(fsDef.fields)) {\n const { data: existing } = await sb.from(\"products\").select(\"custom_fields\").eq(\"id\", pid).single();\n const base = (existing?.custom_fields as Record<string, unknown>) || {};\n const filtered: Record<string, unknown> = { ...base };\n const schemaKeys = new Set(fsDef.fields.map((f: any) => f.key).filter(Boolean));\n for (const [k, v] of Object.entries(agentFV)) {\n if (schemaKeys.has(k)) filtered[k] = v;\n }\n updates.custom_fields = filtered;\n } else {\n updates.custom_fields = agentFV; // no schema definition found, pass through\n }\n } else {\n updates.custom_fields = agentFV; // no schema linked, pass through\n }\n }\n if (args.is_wholesale !== undefined) updates.is_wholesale = args.is_wholesale;\n if (args.wholesale_only !== undefined) updates.wholesale_only = args.wholesale_only;\n if (args.minimum_wholesale_quantity !== undefined) updates.minimum_wholesale_quantity = args.minimum_wholesale_quantity;\n if (args.featured_image !== undefined) updates.featured_image = args.featured_image;\n if (args.image_gallery !== undefined) updates.image_gallery = args.image_gallery;\n const updateCatArg = (args.category ?? args.primary_category_id ?? args.category_id) as string | undefined;\n if (updateCatArg !== undefined) {\n if (!updateCatArg) { updates.primary_category_id = null; }\n else if (/^[0-9a-f]{8}-/.test(updateCatArg)) { updates.primary_category_id = updateCatArg; }\n else {\n const { data: cats } = await sb.from(\"categories\").select(\"id\").ilike(\"name\", `%${updateCatArg}%`).eq(\"store_id\", sid).limit(1);\n if (cats?.length) updates.primary_category_id = cats[0].id;\n }\n }\n\n const { data, error } = await sb.from(\"products\")\n .update(updates).eq(\"id\", pid).eq(\"store_id\", sid)\n .select(\"id, name, sku, slug, status, cost_price, pricing_schema_id, custom_fields, updated_at\").single();\n if (error) return { success: false, error: error.message };\n // Return field_values (same shape as find) so agent can verify the update\n const { custom_fields: cf, ...rest } = data as any;\n let fieldValues: Record<string, unknown> | undefined;\n if (cf && typeof cf === \"object\") {\n const populated: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(cf)) {\n if (v !== null && v !== undefined && v !== \"\") populated[k] = v;\n }\n if (Object.keys(populated).length > 0) fieldValues = populated;\n }\n return { success: true, data: { ...rest, ...(fieldValues ? { field_values: fieldValues } : {}) } };\n }\n\n case \"delete\": {\n const pid = args.product_id as string;\n if (!pid) return { success: false, error: \"product_id is required\" };\n if (args.hard === true) {\n const { error } = await sb.from(\"products\").delete().eq(\"id\", pid).eq(\"store_id\", sid);\n return error ? { success: false, error: error.message } : { success: true, data: { id: pid, deleted: true } };\n }\n const { data, error } = await sb.from(\"products\")\n .update({ status: \"archived\" }).eq(\"id\", pid).eq(\"store_id\", sid)\n .select(\"id, name, status\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n // ======================== CATEGORIES ========================\n\n case \"list_categories\": {\n let q = sb.from(\"categories\")\n .select(\"id, name, slug, description, icon, parent_id, display_order, is_active, featured, product_count, catalog_id, field_schema_id, created_at\")\n .eq(\"store_id\", sid)\n .order(\"display_order\", { ascending: true });\n if (args.catalog_id) q = q.eq(\"catalog_id\", args.catalog_id as string);\n if (args.parent_id) q = q.eq(\"parent_id\", args.parent_id as string);\n if (args.active_only !== false) q = q.eq(\"is_active\", true);\n const { data, error } = await q.limit(args.limit as number || 100);\n return error ? { success: false, error: error.message } : { success: true, count: data?.length, data };\n }\n\n case \"get_category\": {\n const catId = args.category_id as string;\n const { data: cat, error: catErr } = await sb.from(\"categories\")\n .select(\"*\").eq(\"id\", catId).eq(\"store_id\", sid).single();\n if (catErr) return { success: false, error: catErr.message };\n\n const { data: fieldAssigns } = await sb.from(\"category_field_schemas\")\n .select(\"sort_order, is_active, field_schema:field_schemas!field_schema_id(id, name, fields, icon)\")\n .eq(\"category_id\", catId).eq(\"is_active\", true).order(\"sort_order\");\n\n const { data: pricingAssigns } = await sb.from(\"category_pricing_schemas\")\n .select(\"sort_order, is_active, pricing_schema:pricing_schemas!pricing_schema_id(id, name, tiers, quality_tier)\")\n .eq(\"category_id\", catId).eq(\"is_active\", true).order(\"sort_order\");\n\n const { data: children } = await sb.from(\"categories\")\n .select(\"id, name, slug, display_order, is_active, product_count\")\n .eq(\"parent_id\", catId).order(\"display_order\");\n\n return {\n success: true,\n data: {\n ...cat,\n field_schemas: fieldAssigns?.map(a => ({ ...a.field_schema, sort_order: a.sort_order })) || [],\n pricing_schemas: pricingAssigns?.map(a => ({ ...a.pricing_schema, sort_order: a.sort_order })) || [],\n subcategories: children || []\n }\n };\n }\n\n case \"create_category\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name is required\" };\n const insert: Record<string, unknown> = { store_id: sid, name, slug: name.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\") };\n if (args.description) insert.description = args.description;\n if (args.icon) insert.icon = args.icon;\n if (args.parent_id) insert.parent_id = args.parent_id;\n if (args.catalog_id) insert.catalog_id = args.catalog_id;\n if (args.display_order !== undefined) insert.display_order = args.display_order;\n if (args.field_schema_id) insert.field_schema_id = args.field_schema_id;\n\n const { data, error } = await sb.from(\"categories\").insert(insert)\n .select(\"id, name, slug, parent_id, catalog_id, display_order, created_at\").single();\n if (error) return { success: false, error: error.message };\n\n if (args.field_schema_ids && Array.isArray(args.field_schema_ids)) {\n const rows = (args.field_schema_ids as string[]).map((fsId, i) => ({ category_id: data.id, field_schema_id: fsId, sort_order: i + 1 }));\n await sb.from(\"category_field_schemas\").insert(rows);\n }\n if (args.pricing_schema_ids && Array.isArray(args.pricing_schema_ids)) {\n const rows = (args.pricing_schema_ids as string[]).map((psId, i) => ({ category_id: data.id, pricing_schema_id: psId, sort_order: i + 1 }));\n await sb.from(\"category_pricing_schemas\").insert(rows);\n }\n\n return { success: true, data };\n }\n\n case \"update_category\": {\n const catId = args.category_id as string;\n if (!catId) return { success: false, error: \"category_id is required\" };\n const updates: Record<string, unknown> = {};\n if (args.name !== undefined) updates.name = args.name;\n if (args.description !== undefined) updates.description = args.description;\n if (args.icon !== undefined) updates.icon = args.icon;\n if (args.parent_id !== undefined) updates.parent_id = args.parent_id;\n if (args.catalog_id !== undefined) updates.catalog_id = args.catalog_id;\n if (args.display_order !== undefined) updates.display_order = args.display_order;\n if (args.is_active !== undefined) updates.is_active = args.is_active;\n if (args.featured !== undefined) updates.featured = args.featured;\n if (args.field_schema_id !== undefined) updates.field_schema_id = args.field_schema_id;\n\n const { data, error } = await sb.from(\"categories\")\n .update(updates).eq(\"id\", catId).eq(\"store_id\", sid)\n .select(\"id, name, slug, is_active, display_order, updated_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"delete_category\": {\n const catId = args.category_id as string;\n if (!catId) return { success: false, error: \"category_id is required\" };\n if (args.hard === true) {\n const { error } = await sb.from(\"categories\").delete().eq(\"id\", catId).eq(\"store_id\", sid);\n return error ? { success: false, error: error.message } : { success: true, data: { id: catId, deleted: true } };\n }\n const { data, error } = await sb.from(\"categories\")\n .update({ is_active: false }).eq(\"id\", catId).eq(\"store_id\", sid)\n .select(\"id, name, is_active\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n // ======================== FIELD SCHEMAS ========================\n\n case \"list_field_schemas\": {\n let q = sb.from(\"field_schemas\")\n .select(\"id, name, slug, description, icon, fields, is_public, is_active, catalog_id, store_id, install_count, created_at\")\n .eq(\"is_active\", true);\n // Show store-owned schemas AND public schemas (prevent IDOR)\n if (args.public_only === true) {\n q = q.eq(\"is_public\", true);\n } else {\n q = q.or(`store_id.eq.${sid},is_public.eq.true`);\n }\n if (args.catalog_id) q = q.eq(\"catalog_id\", args.catalog_id as string);\n if (args.limit) q = q.limit(args.limit as number);\n const { data, error } = await q.order(\"name\");\n return error ? { success: false, error: error.message } : { success: true, count: data?.length, data };\n }\n\n case \"get_field_schema\": {\n const fsId = (args.field_schema_id || args.schema_id) as string;\n if (!fsId) return { success: false, error: \"field_schema_id is required\" };\n // Allow access to own schemas OR public schemas (prevent IDOR)\n const { data, error } = await sb.from(\"field_schemas\").select(\"*\").eq(\"id\", fsId)\n .or(`store_id.eq.${sid},is_public.eq.true`).single();\n if (error) return { success: false, error: error.message };\n\n const { data: assignments } = await sb.from(\"category_field_schemas\")\n .select(\"category:categories!category_id(id, name)\").eq(\"field_schema_id\", fsId).eq(\"is_active\", true);\n\n return { success: true, data: { ...data, assigned_categories: assignments?.map(a => a.category) || [] } };\n }\n\n case \"create_field_schema\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name is required\" };\n if (!args.fields || !Array.isArray(args.fields)) return { success: false, error: \"fields array is required\" };\n\n // Auto-resolve catalog_id: use provided value, or fall back to store's default catalog\n let catalogId = args.catalog_id as string | undefined;\n if (!catalogId) {\n const { data: defaultCatalog } = await sb.from(\"catalogs\")\n .select(\"id\").eq(\"store_id\", sid).eq(\"is_default\", true).single();\n if (defaultCatalog) catalogId = defaultCatalog.id;\n }\n\n const insert: Record<string, unknown> = {\n store_id: sid,\n name,\n slug: name.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\"),\n fields: args.fields\n };\n if (args.description) insert.description = args.description;\n if (args.icon) insert.icon = args.icon;\n if (catalogId) insert.catalog_id = catalogId;\n if (args.is_public !== undefined) insert.is_public = args.is_public;\n\n const { data, error } = await sb.from(\"field_schemas\").insert(insert)\n .select(\"id, name, slug, fields, icon, is_active, catalog_id, created_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"update_field_schema\": {\n const fsId = (args.field_schema_id || args.schema_id) as string;\n if (!fsId) return { success: false, error: \"field_schema_id is required\" };\n const updates: Record<string, unknown> = {};\n if (args.name !== undefined) updates.name = args.name;\n if (args.description !== undefined) updates.description = args.description;\n if (args.icon !== undefined) updates.icon = args.icon;\n if (args.fields !== undefined) updates.fields = args.fields;\n if (args.is_public !== undefined) updates.is_public = args.is_public;\n if (args.is_active !== undefined) updates.is_active = args.is_active;\n if (args.catalog_id !== undefined) updates.catalog_id = args.catalog_id;\n\n // Only allow modification of own schemas (prevent IDOR)\n const { data, error } = await sb.from(\"field_schemas\")\n .update(updates).eq(\"id\", fsId).eq(\"store_id\", sid)\n .select(\"id, name, slug, fields, icon, is_active, catalog_id, updated_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"delete_field_schema\": {\n const fsId = (args.field_schema_id || args.schema_id) as string;\n if (!fsId) return { success: false, error: \"field_schema_id is required\" };\n // Only allow deletion of own schemas (prevent IDOR)\n const { data, error } = await sb.from(\"field_schemas\")\n .update({ is_active: false, deleted_at: new Date().toISOString() }).eq(\"id\", fsId).eq(\"store_id\", sid)\n .select(\"id, name, is_active\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n // ======================== PRICING SCHEMAS ========================\n\n case \"list_pricing_schemas\": {\n let q = sb.from(\"pricing_schemas\")\n .select(\"id, name, slug, description, tiers, quality_tier, is_public, is_active, catalog_id, store_id, install_count, created_at\")\n .eq(\"is_active\", true);\n // Show store-owned schemas AND public schemas (prevent IDOR)\n if (args.public_only === true) {\n q = q.eq(\"is_public\", true);\n } else {\n q = q.or(`store_id.eq.${sid},is_public.eq.true`);\n }\n if (args.catalog_id) q = q.eq(\"catalog_id\", args.catalog_id as string);\n if (args.limit) q = q.limit(args.limit as number);\n const { data, error } = await q.order(\"name\");\n return error ? { success: false, error: error.message } : { success: true, count: data?.length, data };\n }\n\n case \"get_pricing_schema\": {\n const psId = (args.pricing_schema_id || args.schema_id) as string;\n if (!psId) return { success: false, error: \"pricing_schema_id is required\" };\n // Allow access to own schemas OR public schemas (prevent IDOR)\n const { data, error } = await sb.from(\"pricing_schemas\").select(\"*\").eq(\"id\", psId)\n .or(`store_id.eq.${sid},is_public.eq.true`).single();\n if (error) return { success: false, error: error.message };\n\n const { data: assignments } = await sb.from(\"category_pricing_schemas\")\n .select(\"category:categories!category_id(id, name)\").eq(\"pricing_schema_id\", psId).eq(\"is_active\", true);\n\n return { success: true, data: { ...data, assigned_categories: assignments?.map(a => a.category) || [] } };\n }\n\n case \"create_pricing_schema\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name is required\" };\n if (!args.tiers || !Array.isArray(args.tiers)) return { success: false, error: \"tiers array is required\" };\n\n // Auto-resolve catalog_id: use provided value, or fall back to store's default catalog\n let catalogId = args.catalog_id as string | undefined;\n if (!catalogId) {\n const { data: defaultCatalog } = await sb.from(\"catalogs\")\n .select(\"id\").eq(\"store_id\", sid).eq(\"is_default\", true).single();\n if (defaultCatalog) catalogId = defaultCatalog.id;\n }\n\n const insert: Record<string, unknown> = {\n store_id: sid,\n name,\n slug: name.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\"),\n tiers: args.tiers\n };\n if (args.description) insert.description = args.description;\n if (args.quality_tier) insert.quality_tier = args.quality_tier;\n if (catalogId) insert.catalog_id = catalogId;\n if (args.is_public !== undefined) insert.is_public = args.is_public;\n\n const { data, error } = await sb.from(\"pricing_schemas\").insert(insert)\n .select(\"id, name, slug, tiers, quality_tier, is_active, catalog_id, created_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"update_pricing_schema\": {\n const psId = (args.pricing_schema_id || args.schema_id) as string;\n if (!psId) return { success: false, error: \"pricing_schema_id is required\" };\n const updates: Record<string, unknown> = {};\n if (args.name !== undefined) updates.name = args.name;\n if (args.description !== undefined) updates.description = args.description;\n if (args.tiers !== undefined) updates.tiers = args.tiers;\n if (args.quality_tier !== undefined) updates.quality_tier = args.quality_tier;\n if (args.is_public !== undefined) updates.is_public = args.is_public;\n if (args.is_active !== undefined) updates.is_active = args.is_active;\n if (args.catalog_id !== undefined) updates.catalog_id = args.catalog_id;\n\n // Only allow modification of own schemas (prevent IDOR)\n const { data, error } = await sb.from(\"pricing_schemas\")\n .update(updates).eq(\"id\", psId).eq(\"store_id\", sid)\n .select(\"id, name, slug, tiers, quality_tier, is_active, catalog_id, updated_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"delete_pricing_schema\": {\n const psId = (args.pricing_schema_id || args.schema_id) as string;\n if (!psId) return { success: false, error: \"pricing_schema_id is required\" };\n // Only allow deletion of own schemas (prevent IDOR)\n const { data, error } = await sb.from(\"pricing_schemas\")\n .update({ is_active: false, deleted_at: new Date().toISOString() }).eq(\"id\", psId).eq(\"store_id\", sid)\n .select(\"id, name, is_active\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n // ======================== CATALOGS ========================\n\n case \"list_catalogs\": {\n const { data, error } = await sb.from(\"catalogs\")\n .select(\"id, name, slug, description, vertical, is_active, is_default, display_order, created_at\")\n .eq(\"store_id\", sid).order(\"display_order\");\n return error ? { success: false, error: error.message } : { success: true, count: data?.length, data };\n }\n\n case \"create_catalog\": {\n const name = args.name as string;\n if (!name) return { success: false, error: \"name is required\" };\n // Resolve owner_user_id from store\n const { data: store } = await sb.from(\"stores\").select(\"owner_user_id\").eq(\"id\", sid).single();\n const insert: Record<string, unknown> = {\n store_id: sid, name,\n slug: name.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\"),\n owner_user_id: store?.owner_user_id\n };\n if (args.description) insert.description = args.description;\n if (args.vertical) insert.vertical = args.vertical;\n if (args.is_default !== undefined) insert.is_default = args.is_default;\n if (args.settings) insert.settings = args.settings;\n\n const { data, error } = await sb.from(\"catalogs\").insert(insert)\n .select(\"id, name, slug, vertical, is_default, created_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n case \"update_catalog\": {\n const catId = args.catalog_id as string;\n if (!catId) return { success: false, error: \"catalog_id is required\" };\n const updates: Record<string, unknown> = {};\n if (args.name !== undefined) updates.name = args.name;\n if (args.description !== undefined) updates.description = args.description;\n if (args.vertical !== undefined) updates.vertical = args.vertical;\n if (args.is_active !== undefined) updates.is_active = args.is_active;\n if (args.is_default !== undefined) updates.is_default = args.is_default;\n if (args.settings !== undefined) updates.settings = args.settings;\n if (args.display_order !== undefined) updates.display_order = args.display_order;\n\n const { data, error } = await sb.from(\"catalogs\")\n .update(updates).eq(\"id\", catId).eq(\"store_id\", sid)\n .select(\"id, name, slug, vertical, is_active, is_default, updated_at\").single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n\n // ======================== SCHEMA ASSIGNMENTS ========================\n\n case \"assign_schema\": {\n const target = args.target as string; // \"category\" or \"product\"\n const schemaType = args.schema_type as string; // \"field\" or \"pricing\"\n const targetId = args.target_id as string;\n const schemaId = args.schema_id as string;\n if (!target || !schemaType || !targetId || !schemaId) {\n return { success: false, error: \"target (category|product), schema_type (field|pricing), target_id, and schema_id are required\" };\n }\n\n // Verify target product/category belongs to this store (prevent IDOR)\n const targetTable = target === \"product\" ? \"products\" : \"categories\";\n const { data: ownerCheck, error: ownerErr } = await sb.from(targetTable)\n .select(\"id\").eq(\"id\", targetId).eq(\"store_id\", sid).single();\n if (ownerErr || !ownerCheck) {\n return { success: false, error: `${target} not found or does not belong to this store` };\n }\n\n // Verify schema is accessible (own schema or public)\n const schemaTable = schemaType === \"field\" ? \"field_schemas\" : \"pricing_schemas\";\n const { data: schemaCheck, error: schemaErr } = await sb.from(schemaTable)\n .select(\"id\").eq(\"id\", schemaId).or(`store_id.eq.${sid},is_public.eq.true`).single();\n if (schemaErr || !schemaCheck) {\n return { success: false, error: `${schemaType} schema not found or not accessible` };\n }\n\n const table = target === \"product\"\n ? (schemaType === \"field\" ? \"product_field_schemas\" : \"product_pricing_schemas\")\n : (schemaType === \"field\" ? \"category_field_schemas\" : \"category_pricing_schemas\");\n const fkCol = target === \"product\" ? \"product_id\" : \"category_id\";\n const schemaCol = schemaType === \"field\" ? \"field_schema_id\" : \"pricing_schema_id\";\n\n const row: Record<string, unknown> = { [fkCol]: targetId, [schemaCol]: schemaId };\n if (args.sort_order !== undefined) row.sort_order = args.sort_order;\n\n const { data, error } = await sb.from(table).upsert(row, { onConflict: `${fkCol},${schemaCol}` }).select().single();\n if (error) return { success: false, error: error.message };\n\n // Hydrate product with schema data\n if (target === \"product\") {\n const productUpdates: Record<string, unknown> = {};\n if (schemaType === \"pricing\") {\n const { data: schema } = await sb.from(\"pricing_schemas\").select(\"tiers, quality_tier\").eq(\"id\", schemaId).single();\n productUpdates.pricing_schema_id = schemaId;\n if (schema?.tiers) productUpdates.pricing_data = schema.tiers;\n }\n if (schemaType === \"field\") {\n // Schema is source of truth — rebuild custom_fields from schema keys only\n const { data: schema } = await sb.from(\"field_schemas\").select(\"fields\").eq(\"id\", schemaId).single();\n if (schema?.fields && Array.isArray(schema.fields)) {\n const { data: product } = await sb.from(\"products\").select(\"custom_fields\").eq(\"id\", targetId).eq(\"store_id\", sid).single();\n const existing = (product?.custom_fields as Record<string, unknown>) || {};\n const rebuilt: Record<string, unknown> = {};\n for (const f of schema.fields) {\n const key = (f as any).key;\n if (key) rebuilt[key] = (key in existing) ? existing[key] : ((f as any).default ?? null);\n }\n productUpdates.custom_fields = rebuilt;\n }\n }\n if (Object.keys(productUpdates).length > 0) {\n await sb.from(\"products\").update(productUpdates).eq(\"id\", targetId).eq(\"store_id\", sid);\n }\n }\n\n return { success: true, data };\n }\n\n case \"unassign_schema\": {\n const target = args.target as string;\n const schemaType = args.schema_type as string;\n const targetId = args.target_id as string;\n const schemaId = args.schema_id as string;\n if (!target || !schemaType || !targetId || !schemaId) {\n return { success: false, error: \"target (category|product), schema_type (field|pricing), target_id, and schema_id are required\" };\n }\n\n // Verify target product/category belongs to this store (prevent IDOR)\n const targetTable = target === \"product\" ? \"products\" : \"categories\";\n const { data: ownerCheck, error: ownerErr } = await sb.from(targetTable)\n .select(\"id\").eq(\"id\", targetId).eq(\"store_id\", sid).single();\n if (ownerErr || !ownerCheck) {\n return { success: false, error: `${target} not found or does not belong to this store` };\n }\n\n const table = target === \"product\"\n ? (schemaType === \"field\" ? \"product_field_schemas\" : \"product_pricing_schemas\")\n : (schemaType === \"field\" ? \"category_field_schemas\" : \"category_pricing_schemas\");\n const fkCol = target === \"product\" ? \"product_id\" : \"category_id\";\n const schemaCol = schemaType === \"field\" ? \"field_schema_id\" : \"pricing_schema_id\";\n\n const { error } = await sb.from(table).delete().eq(fkCol, targetId).eq(schemaCol, schemaId);\n return error ? { success: false, error: error.message } : { success: true, data: { removed: true, target, schema_type: schemaType, target_id: targetId, schema_id: schemaId } };\n }\n\n // ======================== PRODUCT DEDUP / MERGE ========================\n\n case \"find_duplicates\": {\n // Find products with similar names (potential duplicates)\n const { data: all, error: allErr } = await sb.from(\"products\")\n .select(\"id, name, sku, status, stock_quantity, cost_price, created_at\")\n .eq(\"store_id\", sid).neq(\"status\", \"archived\")\n .order(\"name\");\n if (allErr) return { success: false, error: allErr.message };\n\n // Group by normalized name (lowercase, trim, strip common suffixes like \"(TEMP)\", \"(OLD)\", \"(COPY)\")\n const nameMap = new Map<string, typeof all>();\n for (const p of all || []) {\n const normalized = (p.name || \"\").toLowerCase().trim()\n .replace(/\\s*\\((temp|old|copy|duplicate|dup|new|v2)\\)\\s*/gi, \"\")\n .replace(/\\s+/g, \" \");\n if (!normalized) continue;\n if (!nameMap.has(normalized)) nameMap.set(normalized, []);\n nameMap.get(normalized)!.push(p);\n }\n\n const duplicates = Array.from(nameMap.entries())\n .filter(([_, products]) => products.length > 1)\n .map(([normalizedName, products]) => ({\n normalized_name: normalizedName,\n count: products.length,\n products: products.map(p => ({\n id: p.id, name: p.name, sku: p.sku, status: p.status,\n stock_quantity: p.stock_quantity, cost_price: p.cost_price, created_at: p.created_at,\n })),\n }));\n\n // Also check by exact SKU match\n const skuMap = new Map<string, typeof all>();\n for (const p of all || []) {\n if (!p.sku) continue;\n const key = p.sku.toLowerCase().trim();\n if (!skuMap.has(key)) skuMap.set(key, []);\n skuMap.get(key)!.push(p);\n }\n const skuDupes = Array.from(skuMap.entries())\n .filter(([_, products]) => products.length > 1)\n .map(([sku, products]) => ({ sku, count: products.length, products }));\n\n // Pre-format as markdown — formatter drops nested products arrays\n const totalNameDupes = duplicates.reduce((s, d) => s + d.count, 0);\n const totalSkuDupes = skuDupes.reduce((s, d) => s + d.count, 0);\n const lines: string[] = [\n `## Duplicate Products`,\n `**By Name**: ${duplicates.length} groups (${totalNameDupes} products) | **By SKU**: ${skuDupes.length} groups (${totalSkuDupes} products)\\n`,\n ];\n if (duplicates.length > 0) {\n lines.push(\"### Name Duplicates\");\n for (const group of duplicates.slice(0, 20)) {\n lines.push(`\\n**\"${group.normalized_name}\"** (${group.count} products):`);\n lines.push(\"| Name | SKU | Status | Stock | Created |\");\n lines.push(\"| --- | --- | --- | ---: | --- |\");\n for (const p of group.products) {\n lines.push(`| ${p.name} | ${p.sku || \"—\"} | ${p.status} | ${p.stock_quantity ?? \"—\"} | ${p.created_at?.slice(0, 10) || \"—\"} |`);\n }\n }\n }\n if (skuDupes.length > 0) {\n lines.push(\"\\n### SKU Duplicates\");\n for (const group of skuDupes.slice(0, 20)) {\n lines.push(`\\n**SKU \"${group.sku}\"** (${group.count} products):`);\n lines.push(\"| Name | SKU | Status | Stock | Created |\");\n lines.push(\"| --- | --- | --- | ---: | --- |\");\n for (const p of group.products) {\n lines.push(`| ${(p as any).name} | ${(p as any).sku || \"—\"} | ${(p as any).status} | ${(p as any).stock_quantity ?? \"—\"} | ${(p as any).created_at?.slice(0, 10) || \"—\"} |`);\n }\n }\n }\n if (duplicates.length === 0 && skuDupes.length === 0) {\n lines.push(\"\\nNo duplicates found.\");\n }\n return { success: true, data: lines.join(\"\\n\") };\n }\n\n case \"merge\": {\n const primaryId = args.primary_product_id as string;\n const secondaryId = args.secondary_product_id as string;\n if (!primaryId || !secondaryId) return { success: false, error: \"primary_product_id and secondary_product_id required\" };\n if (primaryId === secondaryId) return { success: false, error: \"Cannot merge a product with itself\" };\n\n // Verify both exist and belong to this store\n const { data: primary } = await sb.from(\"products\").select(\"*\").eq(\"id\", primaryId).eq(\"store_id\", sid).single();\n const { data: secondary } = await sb.from(\"products\").select(\"*\").eq(\"id\", secondaryId).eq(\"store_id\", sid).single();\n if (!primary) return { success: false, error: `Primary product ${primaryId} not found` };\n if (!secondary) return { success: false, error: `Secondary product ${secondaryId} not found` };\n\n const reassignResults: Record<string, string> = {};\n\n // 1. Consolidate inventory — sum quantities per location\n const { data: secInv } = await sb.from(\"inventory\")\n .select(\"product_id, location_id, quantity\")\n .eq(\"product_id\", secondaryId).eq(\"store_id\", sid);\n if (secInv?.length) {\n for (const row of secInv) {\n if (!row.quantity || row.quantity <= 0) continue;\n // Try to add to existing primary inventory at same location\n const { data: priRow } = await sb.from(\"inventory\")\n .select(\"id, quantity\")\n .eq(\"product_id\", primaryId).eq(\"location_id\", row.location_id).eq(\"store_id\", sid)\n .maybeSingle();\n if (priRow) {\n await sb.from(\"inventory\").update({ quantity: (priRow.quantity || 0) + row.quantity, updated_at: new Date().toISOString() }).eq(\"id\", priRow.id);\n } else {\n await sb.from(\"inventory\").insert({ store_id: sid, product_id: primaryId, location_id: row.location_id, quantity: row.quantity });\n }\n }\n // Zero out secondary inventory\n await sb.from(\"inventory\").update({ quantity: 0 }).eq(\"product_id\", secondaryId).eq(\"store_id\", sid);\n reassignResults.inventory = `consolidated ${secInv.length} location(s)`;\n } else {\n reassignResults.inventory = \"no inventory to consolidate\";\n }\n\n // 2. Reassign order_items\n const { error: oiErr, count: oiCount } = await sb.from(\"order_items\")\n .update({ product_id: primaryId }).eq(\"product_id\", secondaryId);\n reassignResults.order_items = oiErr ? `error: ${oiErr.message}` : `moved ${oiCount ?? 0} rows`;\n\n // 3. Reassign cart_items\n const { error: ciErr, count: ciCount } = await sb.from(\"cart_items\")\n .update({ product_id: primaryId }).eq(\"product_id\", secondaryId);\n reassignResults.cart_items = ciErr ? `error: ${ciErr.message}` : `moved ${ciCount ?? 0} rows`;\n\n // 4. Reassign purchase_order_items\n const { error: poiErr, count: poiCount } = await sb.from(\"purchase_order_items\")\n .update({ product_id: primaryId }).eq(\"product_id\", secondaryId);\n reassignResults.purchase_order_items = poiErr ? `error: ${poiErr.message}` : `moved ${poiCount ?? 0} rows`;\n\n // 5. Reassign product_reviews\n const { error: prErr, count: prCount } = await sb.from(\"product_reviews\")\n .update({ product_id: primaryId }).eq(\"product_id\", secondaryId);\n reassignResults.product_reviews = prErr ? `error: ${prErr.message}` : `moved ${prCount ?? 0} rows`;\n\n // 6. Fill in missing fields on primary from secondary\n const fillFields = [\"description\", \"short_description\", \"cost_price\", \"wholesale_price\", \"weight\", \"featured_image\", \"image_gallery\"] as const;\n const fills: Record<string, unknown> = {};\n for (const field of fillFields) {\n if (!primary[field] && secondary[field]) fills[field] = secondary[field];\n }\n // Merge custom_fields (secondary fills gaps)\n if (secondary.custom_fields && typeof secondary.custom_fields === \"object\") {\n const merged = { ...(secondary.custom_fields as Record<string, unknown>), ...(primary.custom_fields as Record<string, unknown> || {}) };\n fills.custom_fields = merged;\n }\n if (Object.keys(fills).length > 0) {\n await sb.from(\"products\").update(fills).eq(\"id\", primaryId).eq(\"store_id\", sid);\n reassignResults.field_fills = Object.keys(fills).join(\", \");\n }\n\n // 7. Archive the secondary product\n await sb.from(\"products\").update({\n status: \"archived\",\n name: `[MERGED] ${secondary.name}`,\n }).eq(\"id\", secondaryId).eq(\"store_id\", sid);\n\n // Re-read primary\n const { data: merged } = await sb.from(\"products\")\n .select(\"id, name, sku, status, stock_quantity, cost_price, created_at, updated_at\")\n .eq(\"id\", primaryId).single();\n\n return {\n success: true,\n data: {\n merged_product: merged,\n archived_product: { id: secondaryId, name: secondary.name },\n reassign_results: reassignResults,\n }\n };\n }\n\n default:\n return { success: false, error: `Unknown products action: ${args.action}. Valid: browse, find, get, create, update, delete, find_duplicates, merge, list_categories, get_category, create_category, update_category, delete_category, list_field_schemas, get_field_schema, create_field_schema, update_field_schema, delete_field_schema, list_pricing_schemas, get_pricing_schema, create_pricing_schema, update_pricing_schema, delete_pricing_schema, list_catalogs, create_catalog, update_catalog, assign_schema, unassign_schema` };\n }\n}\n\nexport async function handleCollections(sb: SupabaseClient, args: Record<string, unknown>, storeId?: string) {\n const sid = storeId as string;\n switch (args.action) {\n case \"find\": {\n let q = sb.from(\"creation_collections\").select(\"*\").eq(\"store_id\", sid);\n if (args.name) { const sn = sanitizeFilterValue(args.name as string); q = q.ilike(\"name\", `%${sn}%`); }\n const { data, error } = await q.limit(100);\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n case \"create\": {\n const slug = (args.slug as string) || (args.name as string || \"\").toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\");\n const { data, error } = await sb.from(\"creation_collections\")\n .insert({ store_id: sid, name: args.name, slug }).select().single();\n return error ? { success: false, error: error.message } : { success: true, data };\n }\n default:\n return { success: false, error: `Unknown collections action: ${args.action}` };\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -6,8 +6,8 @@ import { getClickHouseClient } from "../lib/clickhouse-client.js";
6
6
  */
7
7
  export async function handleClickHouse(sb, args, storeId) {
8
8
  const sid = storeId;
9
- const hoursBack = args.hours_back || 24;
10
- const limit = Math.min(args.limit || 50, 200);
9
+ const hoursBack = Math.max(1, Math.min(Number(args.hours_back) || 24, 720));
10
+ const limit = Math.max(1, Math.min(Number(args.limit) || 50, 1000));
11
11
  const ch = getClickHouseClient();
12
12
  if (!ch.isEnabled) {
13
13
  return {
@@ -256,8 +256,8 @@ export async function handleClickHouse(sb, args, storeId) {
256
256
  }
257
257
  }
258
258
 
259
- /** Escape single quotes for ClickHouse SQL */
259
+ /** Escape backslashes then single quotes for ClickHouse SQL */
260
260
  function esc(s) {
261
- return s.replace(/'/g, "\\'");
261
+ return s.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
262
262
  }
263
263
  //# sourceMappingURL=clickhouse.js.map