@aglyn/plugins-ai 1.0.0-beta.143

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 (717) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +25 -0
  3. package/package.json +60 -0
  4. package/src/index.d.ts +21 -0
  5. package/src/index.js +22 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/activity/ai-activity-actions.d.ts +106 -0
  8. package/src/lib/activity/ai-activity-actions.js +209 -0
  9. package/src/lib/activity/ai-activity-actions.js.map +1 -0
  10. package/src/lib/activity/ai-activity.d.ts +219 -0
  11. package/src/lib/activity/ai-activity.js +251 -0
  12. package/src/lib/activity/ai-activity.js.map +1 -0
  13. package/src/lib/billing/ai-overage-charge.d.ts +102 -0
  14. package/src/lib/billing/ai-overage-charge.js +258 -0
  15. package/src/lib/billing/ai-overage-charge.js.map +1 -0
  16. package/src/lib/billing/ai-overage-close.d.ts +62 -0
  17. package/src/lib/billing/ai-overage-close.js +129 -0
  18. package/src/lib/billing/ai-overage-close.js.map +1 -0
  19. package/src/lib/billing/ai-overage-cutover.d.ts +63 -0
  20. package/src/lib/billing/ai-overage-cutover.js +114 -0
  21. package/src/lib/billing/ai-overage-cutover.js.map +1 -0
  22. package/src/lib/billing/ai-overage-events.d.ts +77 -0
  23. package/src/lib/billing/ai-overage-events.js +174 -0
  24. package/src/lib/billing/ai-overage-events.js.map +1 -0
  25. package/src/lib/billing/ai-overage-gate.d.ts +147 -0
  26. package/src/lib/billing/ai-overage-gate.js +177 -0
  27. package/src/lib/billing/ai-overage-gate.js.map +1 -0
  28. package/src/lib/billing/ai-overage-ledger.d.ts +135 -0
  29. package/src/lib/billing/ai-overage-ledger.js +278 -0
  30. package/src/lib/billing/ai-overage-ledger.js.map +1 -0
  31. package/src/lib/billing/ai-overage-standing-writes.d.ts +110 -0
  32. package/src/lib/billing/ai-overage-standing-writes.js +205 -0
  33. package/src/lib/billing/ai-overage-standing-writes.js.map +1 -0
  34. package/src/lib/billing/ai-overage-standing.d.ts +168 -0
  35. package/src/lib/billing/ai-overage-standing.js +215 -0
  36. package/src/lib/billing/ai-overage-standing.js.map +1 -0
  37. package/src/lib/billing/ai-overage-trigger.d.ts +30 -0
  38. package/src/lib/billing/ai-overage-trigger.js +76 -0
  39. package/src/lib/billing/ai-overage-trigger.js.map +1 -0
  40. package/src/lib/components/ai-allotment-editor.component.d.ts +40 -0
  41. package/src/lib/components/ai-allotment-editor.component.js +213 -0
  42. package/src/lib/components/ai-allotment-editor.component.js.map +1 -0
  43. package/src/lib/components/ai-assist-actions-context.d.ts +13 -0
  44. package/src/lib/components/ai-assist-actions-context.js +21 -0
  45. package/src/lib/components/ai-assist-actions-context.js.map +1 -0
  46. package/src/lib/components/ai-assist-provider.component.d.ts +51 -0
  47. package/src/lib/components/ai-assist-provider.component.js +519 -0
  48. package/src/lib/components/ai-assist-provider.component.js.map +1 -0
  49. package/src/lib/components/ai-brief-dialog.component.d.ts +56 -0
  50. package/src/lib/components/ai-brief-dialog.component.js +319 -0
  51. package/src/lib/components/ai-brief-dialog.component.js.map +1 -0
  52. package/src/lib/components/ai-collaborator-permissions-column.component.d.ts +32 -0
  53. package/src/lib/components/ai-collaborator-permissions-column.component.js +132 -0
  54. package/src/lib/components/ai-collaborator-permissions-column.component.js.map +1 -0
  55. package/src/lib/components/ai-credits-card.component.d.ts +34 -0
  56. package/src/lib/components/ai-credits-card.component.js +131 -0
  57. package/src/lib/components/ai-credits-card.component.js.map +1 -0
  58. package/src/lib/components/ai-credits-columns.component.d.ts +56 -0
  59. package/src/lib/components/ai-credits-columns.component.js +118 -0
  60. package/src/lib/components/ai-credits-columns.component.js.map +1 -0
  61. package/src/lib/components/ai-crm-email-draft.component.d.ts +17 -0
  62. package/src/lib/components/ai-crm-email-draft.component.js +159 -0
  63. package/src/lib/components/ai-crm-email-draft.component.js.map +1 -0
  64. package/src/lib/components/ai-crm-import-mapping.component.d.ts +20 -0
  65. package/src/lib/components/ai-crm-import-mapping.component.js +167 -0
  66. package/src/lib/components/ai-crm-import-mapping.component.js.map +1 -0
  67. package/src/lib/components/ai-crm-record-card.component.d.ts +27 -0
  68. package/src/lib/components/ai-crm-record-card.component.js +263 -0
  69. package/src/lib/components/ai-crm-record-card.component.js.map +1 -0
  70. package/src/lib/components/ai-describe-automation.component.d.ts +31 -0
  71. package/src/lib/components/ai-describe-automation.component.js +226 -0
  72. package/src/lib/components/ai-describe-automation.component.js.map +1 -0
  73. package/src/lib/components/ai-describe-button.component.d.ts +39 -0
  74. package/src/lib/components/ai-describe-button.component.js +87 -0
  75. package/src/lib/components/ai-describe-button.component.js.map +1 -0
  76. package/src/lib/components/ai-describe-page.component.d.ts +26 -0
  77. package/src/lib/components/ai-describe-page.component.js +18 -0
  78. package/src/lib/components/ai-describe-page.component.js.map +1 -0
  79. package/src/lib/components/ai-experiment-cards.component.d.ts +75 -0
  80. package/src/lib/components/ai-experiment-cards.component.js +573 -0
  81. package/src/lib/components/ai-experiment-cards.component.js.map +1 -0
  82. package/src/lib/components/ai-explain-automation.component.d.ts +31 -0
  83. package/src/lib/components/ai-explain-automation.component.js +265 -0
  84. package/src/lib/components/ai-explain-automation.component.js.map +1 -0
  85. package/src/lib/components/ai-insight-dialog.component.d.ts +37 -0
  86. package/src/lib/components/ai-insight-dialog.component.js +441 -0
  87. package/src/lib/components/ai-insight-dialog.component.js.map +1 -0
  88. package/src/lib/components/ai-job-plan.component.d.ts +46 -0
  89. package/src/lib/components/ai-job-plan.component.js +192 -0
  90. package/src/lib/components/ai-job-plan.component.js.map +1 -0
  91. package/src/lib/components/ai-model-selector.component.d.ts +21 -0
  92. package/src/lib/components/ai-model-selector.component.js +109 -0
  93. package/src/lib/components/ai-model-selector.component.js.map +1 -0
  94. package/src/lib/components/ai-page-brief-dialog.component.d.ts +29 -0
  95. package/src/lib/components/ai-page-brief-dialog.component.js +27 -0
  96. package/src/lib/components/ai-page-brief-dialog.component.js.map +1 -0
  97. package/src/lib/components/ai-permissions-on-host.component.d.ts +55 -0
  98. package/src/lib/components/ai-permissions-on-host.component.js +91 -0
  99. package/src/lib/components/ai-permissions-on-host.component.js.map +1 -0
  100. package/src/lib/components/ai-product-copy-card.component.d.ts +25 -0
  101. package/src/lib/components/ai-product-copy-card.component.js +328 -0
  102. package/src/lib/components/ai-product-copy-card.component.js.map +1 -0
  103. package/src/lib/components/ai-product-import-option.component.d.ts +14 -0
  104. package/src/lib/components/ai-product-import-option.component.js +58 -0
  105. package/src/lib/components/ai-product-import-option.component.js.map +1 -0
  106. package/src/lib/components/ai-products-hub-card.component.d.ts +15 -0
  107. package/src/lib/components/ai-products-hub-card.component.js +418 -0
  108. package/src/lib/components/ai-products-hub-card.component.js.map +1 -0
  109. package/src/lib/components/ai-products-proposals.component.d.ts +19 -0
  110. package/src/lib/components/ai-products-proposals.component.js +547 -0
  111. package/src/lib/components/ai-products-proposals.component.js.map +1 -0
  112. package/src/lib/components/ai-save-as-component.component.d.ts +38 -0
  113. package/src/lib/components/ai-save-as-component.component.js +231 -0
  114. package/src/lib/components/ai-save-as-component.component.js.map +1 -0
  115. package/src/lib/components/ai-seo-audit-card.component.d.ts +9 -0
  116. package/src/lib/components/ai-seo-audit-card.component.js +620 -0
  117. package/src/lib/components/ai-seo-audit-card.component.js.map +1 -0
  118. package/src/lib/components/ai-seo-fields-card.component.d.ts +10 -0
  119. package/src/lib/components/ai-seo-fields-card.component.js +453 -0
  120. package/src/lib/components/ai-seo-fields-card.component.js.map +1 -0
  121. package/src/lib/components/ai-site-batch-card.component.d.ts +32 -0
  122. package/src/lib/components/ai-site-batch-card.component.js +531 -0
  123. package/src/lib/components/ai-site-batch-card.component.js.map +1 -0
  124. package/src/lib/components/ai-site-seo-start-card.component.d.ts +26 -0
  125. package/src/lib/components/ai-site-seo-start-card.component.js +178 -0
  126. package/src/lib/components/ai-site-seo-start-card.component.js.map +1 -0
  127. package/src/lib/components/ai-site-start-card.component.d.ts +19 -0
  128. package/src/lib/components/ai-site-start-card.component.js +348 -0
  129. package/src/lib/components/ai-site-start-card.component.js.map +1 -0
  130. package/src/lib/components/ai-template-collection-field.component.d.ts +32 -0
  131. package/src/lib/components/ai-template-collection-field.component.js +63 -0
  132. package/src/lib/components/ai-template-collection-field.component.js.map +1 -0
  133. package/src/lib/components/ai-theme-proposal-card.component.d.ts +6 -0
  134. package/src/lib/components/ai-theme-proposal-card.component.js +619 -0
  135. package/src/lib/components/ai-theme-proposal-card.component.js.map +1 -0
  136. package/src/lib/components/ai-usage-strip.component.d.ts +27 -0
  137. package/src/lib/components/ai-usage-strip.component.js +145 -0
  138. package/src/lib/components/ai-usage-strip.component.js.map +1 -0
  139. package/src/lib/components/assist-edit-canvas.d.ts +169 -0
  140. package/src/lib/components/assist-edit-canvas.js +636 -0
  141. package/src/lib/components/assist-edit-canvas.js.map +1 -0
  142. package/src/lib/components/assist-edit-card.component.d.ts +16 -0
  143. package/src/lib/components/assist-edit-card.component.js +181 -0
  144. package/src/lib/components/assist-edit-card.component.js.map +1 -0
  145. package/src/lib/components/assist-jobs-drawer.component.d.ts +72 -0
  146. package/src/lib/components/assist-jobs-drawer.component.js +626 -0
  147. package/src/lib/components/assist-jobs-drawer.component.js.map +1 -0
  148. package/src/lib/components/assist-panel.component.d.ts +136 -0
  149. package/src/lib/components/assist-panel.component.js +1099 -0
  150. package/src/lib/components/assist-panel.component.js.map +1 -0
  151. package/src/lib/components/assist-signals-page.component.d.ts +3 -0
  152. package/src/lib/components/assist-signals-page.component.js +1017 -0
  153. package/src/lib/components/assist-signals-page.component.js.map +1 -0
  154. package/src/lib/components/besigner-ai-controls.component.d.ts +29 -0
  155. package/src/lib/components/besigner-ai-controls.component.js +81 -0
  156. package/src/lib/components/besigner-ai-controls.component.js.map +1 -0
  157. package/src/lib/components/billing-ai-allotments.component.d.ts +36 -0
  158. package/src/lib/components/billing-ai-allotments.component.js +486 -0
  159. package/src/lib/components/billing-ai-allotments.component.js.map +1 -0
  160. package/src/lib/components/billing-ai-top-users.component.d.ts +44 -0
  161. package/src/lib/components/billing-ai-top-users.component.js +304 -0
  162. package/src/lib/components/billing-ai-top-users.component.js.map +1 -0
  163. package/src/lib/components/billing-assist-overage-card.component.d.ts +69 -0
  164. package/src/lib/components/billing-assist-overage-card.component.js +437 -0
  165. package/src/lib/components/billing-assist-overage-card.component.js.map +1 -0
  166. package/src/lib/components/host-ai-allotments.component.d.ts +40 -0
  167. package/src/lib/components/host-ai-allotments.component.js +239 -0
  168. package/src/lib/components/host-ai-allotments.component.js.map +1 -0
  169. package/src/lib/components/member-ai-allotment-card.component.d.ts +28 -0
  170. package/src/lib/components/member-ai-allotment-card.component.js +172 -0
  171. package/src/lib/components/member-ai-allotment-card.component.js.map +1 -0
  172. package/src/lib/components/member-ai-usage-card.component.d.ts +28 -0
  173. package/src/lib/components/member-ai-usage-card.component.js +240 -0
  174. package/src/lib/components/member-ai-usage-card.component.js.map +1 -0
  175. package/src/lib/components/staff-org-ai-card.component.d.ts +17 -0
  176. package/src/lib/components/staff-org-ai-card.component.js +739 -0
  177. package/src/lib/components/staff-org-ai-card.component.js.map +1 -0
  178. package/src/lib/components/staff-org-usage-ai-columns.component.d.ts +41 -0
  179. package/src/lib/components/staff-org-usage-ai-columns.component.js +65 -0
  180. package/src/lib/components/staff-org-usage-ai-columns.component.js.map +1 -0
  181. package/src/lib/components/staff-orgs-ai-spend-column.component.d.ts +28 -0
  182. package/src/lib/components/staff-orgs-ai-spend-column.component.js +89 -0
  183. package/src/lib/components/staff-orgs-ai-spend-column.component.js.map +1 -0
  184. package/src/lib/components/staff-user-ai-usage-card.component.d.ts +27 -0
  185. package/src/lib/components/staff-user-ai-usage-card.component.js +183 -0
  186. package/src/lib/components/staff-user-ai-usage-card.component.js.map +1 -0
  187. package/src/lib/components/use-ai-allotments.d.ts +49 -0
  188. package/src/lib/components/use-ai-allotments.js +171 -0
  189. package/src/lib/components/use-ai-allotments.js.map +1 -0
  190. package/src/lib/components/use-ai-crm-answer.d.ts +50 -0
  191. package/src/lib/components/use-ai-crm-answer.js +220 -0
  192. package/src/lib/components/use-ai-crm-answer.js.map +1 -0
  193. package/src/lib/components/use-ai-job-run.d.ts +51 -0
  194. package/src/lib/components/use-ai-job-run.js +176 -0
  195. package/src/lib/components/use-ai-job-run.js.map +1 -0
  196. package/src/lib/components/use-ai-model-choice.d.ts +47 -0
  197. package/src/lib/components/use-ai-model-choice.js +150 -0
  198. package/src/lib/components/use-ai-model-choice.js.map +1 -0
  199. package/src/lib/components/use-ai-products-jobs.d.ts +36 -0
  200. package/src/lib/components/use-ai-products-jobs.js +190 -0
  201. package/src/lib/components/use-ai-products-jobs.js.map +1 -0
  202. package/src/lib/components/use-ai-usage-meter.d.ts +11 -0
  203. package/src/lib/components/use-ai-usage-meter.js +96 -0
  204. package/src/lib/components/use-ai-usage-meter.js.map +1 -0
  205. package/src/lib/components/use-org-ai-usage.d.ts +42 -0
  206. package/src/lib/components/use-org-ai-usage.js +181 -0
  207. package/src/lib/components/use-org-ai-usage.js.map +1 -0
  208. package/src/lib/components/use-staff-orgs-ai-spend.d.ts +18 -0
  209. package/src/lib/components/use-staff-orgs-ai-spend.js +127 -0
  210. package/src/lib/components/use-staff-orgs-ai-spend.js.map +1 -0
  211. package/src/lib/constants.d.ts +24 -0
  212. package/src/lib/constants.js +23 -0
  213. package/src/lib/constants.js.map +1 -0
  214. package/src/lib/declarations.d.ts +48 -0
  215. package/src/lib/declarations.js +129 -0
  216. package/src/lib/declarations.js.map +1 -0
  217. package/src/lib/declarations.server.d.ts +35 -0
  218. package/src/lib/declarations.server.js +138 -0
  219. package/src/lib/declarations.server.js.map +1 -0
  220. package/src/lib/insights/ai-figure-readers.d.ts +90 -0
  221. package/src/lib/insights/ai-figure-readers.js +863 -0
  222. package/src/lib/insights/ai-figure-readers.js.map +1 -0
  223. package/src/lib/insights/ai-insight-digest.d.ts +165 -0
  224. package/src/lib/insights/ai-insight-digest.js +363 -0
  225. package/src/lib/insights/ai-insight-digest.js.map +1 -0
  226. package/src/lib/insights/ai-insight-readers.d.ts +71 -0
  227. package/src/lib/insights/ai-insight-readers.js +141 -0
  228. package/src/lib/insights/ai-insight-readers.js.map +1 -0
  229. package/src/lib/jobs/ai-crm-access.d.ts +61 -0
  230. package/src/lib/jobs/ai-crm-access.js +94 -0
  231. package/src/lib/jobs/ai-crm-access.js.map +1 -0
  232. package/src/lib/jobs/ai-email-bindings.d.ts +97 -0
  233. package/src/lib/jobs/ai-email-bindings.js +147 -0
  234. package/src/lib/jobs/ai-email-bindings.js.map +1 -0
  235. package/src/lib/jobs/ai-job-admission.d.ts +82 -0
  236. package/src/lib/jobs/ai-job-admission.js +45 -0
  237. package/src/lib/jobs/ai-job-admission.js.map +1 -0
  238. package/src/lib/jobs/ai-job-budget.d.ts +167 -0
  239. package/src/lib/jobs/ai-job-budget.js +161 -0
  240. package/src/lib/jobs/ai-job-budget.js.map +1 -0
  241. package/src/lib/jobs/ai-job-campaign-step.d.ts +108 -0
  242. package/src/lib/jobs/ai-job-campaign-step.js +340 -0
  243. package/src/lib/jobs/ai-job-campaign-step.js.map +1 -0
  244. package/src/lib/jobs/ai-job-component-checks.d.ts +74 -0
  245. package/src/lib/jobs/ai-job-component-checks.js +442 -0
  246. package/src/lib/jobs/ai-job-component-checks.js.map +1 -0
  247. package/src/lib/jobs/ai-job-component-step.d.ts +75 -0
  248. package/src/lib/jobs/ai-job-component-step.js +262 -0
  249. package/src/lib/jobs/ai-job-component-step.js.map +1 -0
  250. package/src/lib/jobs/ai-job-crm-step.d.ts +192 -0
  251. package/src/lib/jobs/ai-job-crm-step.js +734 -0
  252. package/src/lib/jobs/ai-job-crm-step.js.map +1 -0
  253. package/src/lib/jobs/ai-job-draft-ids.d.ts +62 -0
  254. package/src/lib/jobs/ai-job-draft-ids.js +132 -0
  255. package/src/lib/jobs/ai-job-draft-ids.js.map +1 -0
  256. package/src/lib/jobs/ai-job-drafts.d.ts +304 -0
  257. package/src/lib/jobs/ai-job-drafts.js +557 -0
  258. package/src/lib/jobs/ai-job-drafts.js.map +1 -0
  259. package/src/lib/jobs/ai-job-email-step.d.ts +195 -0
  260. package/src/lib/jobs/ai-job-email-step.js +547 -0
  261. package/src/lib/jobs/ai-job-email-step.js.map +1 -0
  262. package/src/lib/jobs/ai-job-experiment-step.d.ts +105 -0
  263. package/src/lib/jobs/ai-job-experiment-step.js +445 -0
  264. package/src/lib/jobs/ai-job-experiment-step.js.map +1 -0
  265. package/src/lib/jobs/ai-job-form-step.d.ts +250 -0
  266. package/src/lib/jobs/ai-job-form-step.js +634 -0
  267. package/src/lib/jobs/ai-job-form-step.js.map +1 -0
  268. package/src/lib/jobs/ai-job-generation.d.ts +114 -0
  269. package/src/lib/jobs/ai-job-generation.js +384 -0
  270. package/src/lib/jobs/ai-job-generation.js.map +1 -0
  271. package/src/lib/jobs/ai-job-insight-budget.d.ts +41 -0
  272. package/src/lib/jobs/ai-job-insight-budget.js +46 -0
  273. package/src/lib/jobs/ai-job-insight-budget.js.map +1 -0
  274. package/src/lib/jobs/ai-job-insight-step.d.ts +58 -0
  275. package/src/lib/jobs/ai-job-insight-step.js +350 -0
  276. package/src/lib/jobs/ai-job-insight-step.js.map +1 -0
  277. package/src/lib/jobs/ai-job-layout-step.d.ts +103 -0
  278. package/src/lib/jobs/ai-job-layout-step.js +340 -0
  279. package/src/lib/jobs/ai-job-layout-step.js.map +1 -0
  280. package/src/lib/jobs/ai-job-page-budget.d.ts +57 -0
  281. package/src/lib/jobs/ai-job-page-budget.js +60 -0
  282. package/src/lib/jobs/ai-job-page-budget.js.map +1 -0
  283. package/src/lib/jobs/ai-job-page-sections.d.ts +150 -0
  284. package/src/lib/jobs/ai-job-page-sections.js +450 -0
  285. package/src/lib/jobs/ai-job-page-sections.js.map +1 -0
  286. package/src/lib/jobs/ai-job-page-step.d.ts +198 -0
  287. package/src/lib/jobs/ai-job-page-step.js +667 -0
  288. package/src/lib/jobs/ai-job-page-step.js.map +1 -0
  289. package/src/lib/jobs/ai-job-plan-conformance.d.ts +107 -0
  290. package/src/lib/jobs/ai-job-plan-conformance.js +164 -0
  291. package/src/lib/jobs/ai-job-plan-conformance.js.map +1 -0
  292. package/src/lib/jobs/ai-job-plan-step.d.ts +196 -0
  293. package/src/lib/jobs/ai-job-plan-step.js +458 -0
  294. package/src/lib/jobs/ai-job-plan-step.js.map +1 -0
  295. package/src/lib/jobs/ai-job-plugin-drafts.d.ts +76 -0
  296. package/src/lib/jobs/ai-job-plugin-drafts.js +91 -0
  297. package/src/lib/jobs/ai-job-plugin-drafts.js.map +1 -0
  298. package/src/lib/jobs/ai-job-products-step.d.ts +106 -0
  299. package/src/lib/jobs/ai-job-products-step.js +436 -0
  300. package/src/lib/jobs/ai-job-products-step.js.map +1 -0
  301. package/src/lib/jobs/ai-job-seo-budget.d.ts +52 -0
  302. package/src/lib/jobs/ai-job-seo-budget.js +63 -0
  303. package/src/lib/jobs/ai-job-seo-budget.js.map +1 -0
  304. package/src/lib/jobs/ai-job-seo-step.d.ts +145 -0
  305. package/src/lib/jobs/ai-job-seo-step.js +809 -0
  306. package/src/lib/jobs/ai-job-seo-step.js.map +1 -0
  307. package/src/lib/jobs/ai-job-site-step.d.ts +252 -0
  308. package/src/lib/jobs/ai-job-site-step.js +538 -0
  309. package/src/lib/jobs/ai-job-site-step.js.map +1 -0
  310. package/src/lib/jobs/ai-job-template-step.d.ts +105 -0
  311. package/src/lib/jobs/ai-job-template-step.js +391 -0
  312. package/src/lib/jobs/ai-job-template-step.js.map +1 -0
  313. package/src/lib/jobs/ai-job-text-step.d.ts +125 -0
  314. package/src/lib/jobs/ai-job-text-step.js +128 -0
  315. package/src/lib/jobs/ai-job-text-step.js.map +1 -0
  316. package/src/lib/jobs/ai-job-theme-budget.d.ts +38 -0
  317. package/src/lib/jobs/ai-job-theme-budget.js +43 -0
  318. package/src/lib/jobs/ai-job-theme-budget.js.map +1 -0
  319. package/src/lib/jobs/ai-job-theme-step.d.ts +115 -0
  320. package/src/lib/jobs/ai-job-theme-step.js +337 -0
  321. package/src/lib/jobs/ai-job-theme-step.js.map +1 -0
  322. package/src/lib/jobs/ai-job-workflow-step.d.ts +139 -0
  323. package/src/lib/jobs/ai-job-workflow-step.js +530 -0
  324. package/src/lib/jobs/ai-job-workflow-step.js.map +1 -0
  325. package/src/lib/jobs/ai-jobs-beat.d.ts +78 -0
  326. package/src/lib/jobs/ai-jobs-beat.js +93 -0
  327. package/src/lib/jobs/ai-jobs-beat.js.map +1 -0
  328. package/src/lib/jobs/ai-jobs-pause.d.ts +38 -0
  329. package/src/lib/jobs/ai-jobs-pause.js +45 -0
  330. package/src/lib/jobs/ai-jobs-pause.js.map +1 -0
  331. package/src/lib/jobs/ai-jobs.d.ts +558 -0
  332. package/src/lib/jobs/ai-jobs.js +1410 -0
  333. package/src/lib/jobs/ai-jobs.js.map +1 -0
  334. package/src/lib/jobs/ai-media-asset-server.d.ts +34 -0
  335. package/src/lib/jobs/ai-media-asset-server.js +34 -0
  336. package/src/lib/jobs/ai-media-asset-server.js.map +1 -0
  337. package/src/lib/jobs/ai-media-asset.d.ts +59 -0
  338. package/src/lib/jobs/ai-media-asset.js +86 -0
  339. package/src/lib/jobs/ai-media-asset.js.map +1 -0
  340. package/src/lib/jobs/ai-product-image.d.ts +78 -0
  341. package/src/lib/jobs/ai-product-image.js +113 -0
  342. package/src/lib/jobs/ai-product-image.js.map +1 -0
  343. package/src/lib/jobs/ai-theme-brand-inputs.d.ts +125 -0
  344. package/src/lib/jobs/ai-theme-brand-inputs.js +378 -0
  345. package/src/lib/jobs/ai-theme-brand-inputs.js.map +1 -0
  346. package/src/lib/jobs/ai-theme-brand-server.d.ts +33 -0
  347. package/src/lib/jobs/ai-theme-brand-server.js +33 -0
  348. package/src/lib/jobs/ai-theme-brand-server.js.map +1 -0
  349. package/src/lib/jobs/ai-workflow-records.d.ts +84 -0
  350. package/src/lib/jobs/ai-workflow-records.js +158 -0
  351. package/src/lib/jobs/ai-workflow-records.js.map +1 -0
  352. package/src/lib/jobs/fixtures/ai-free-page-built-recording.d.ts +31 -0
  353. package/src/lib/jobs/fixtures/ai-free-page-built-recording.js +367 -0
  354. package/src/lib/jobs/fixtures/ai-free-page-built-recording.js.map +1 -0
  355. package/src/lib/jobs/fixtures/ai-free-page-recording.d.ts +69 -0
  356. package/src/lib/jobs/fixtures/ai-free-page-recording.js +442 -0
  357. package/src/lib/jobs/fixtures/ai-free-page-recording.js.map +1 -0
  358. package/src/lib/jobs/fixtures/ai-page-briefs.d.ts +146 -0
  359. package/src/lib/jobs/fixtures/ai-page-briefs.js +1850 -0
  360. package/src/lib/jobs/fixtures/ai-page-briefs.js.map +1 -0
  361. package/src/lib/model/ai-allotments.d.ts +208 -0
  362. package/src/lib/model/ai-allotments.js +269 -0
  363. package/src/lib/model/ai-allotments.js.map +1 -0
  364. package/src/lib/model/ai-automation-draft.d.ts +74 -0
  365. package/src/lib/model/ai-automation-draft.js +310 -0
  366. package/src/lib/model/ai-automation-draft.js.map +1 -0
  367. package/src/lib/model/ai-automation-outline.d.ts +50 -0
  368. package/src/lib/model/ai-automation-outline.js +262 -0
  369. package/src/lib/model/ai-automation-outline.js.map +1 -0
  370. package/src/lib/model/ai-build-plan.d.ts +197 -0
  371. package/src/lib/model/ai-build-plan.js +438 -0
  372. package/src/lib/model/ai-build-plan.js.map +1 -0
  373. package/src/lib/model/ai-crm.d.ts +237 -0
  374. package/src/lib/model/ai-crm.js +225 -0
  375. package/src/lib/model/ai-crm.js.map +1 -0
  376. package/src/lib/model/ai-experiment-proposal.d.ts +68 -0
  377. package/src/lib/model/ai-experiment-proposal.js +146 -0
  378. package/src/lib/model/ai-experiment-proposal.js.map +1 -0
  379. package/src/lib/model/ai-experiment.d.ts +309 -0
  380. package/src/lib/model/ai-experiment.js +395 -0
  381. package/src/lib/model/ai-experiment.js.map +1 -0
  382. package/src/lib/model/ai-insight.d.ts +178 -0
  383. package/src/lib/model/ai-insight.js +201 -0
  384. package/src/lib/model/ai-insight.js.map +1 -0
  385. package/src/lib/model/ai-jobs.types.d.ts +412 -0
  386. package/src/lib/model/ai-jobs.types.js +42 -0
  387. package/src/lib/model/ai-jobs.types.js.map +1 -0
  388. package/src/lib/model/ai-page-job.d.ts +92 -0
  389. package/src/lib/model/ai-page-job.js +159 -0
  390. package/src/lib/model/ai-page-job.js.map +1 -0
  391. package/src/lib/model/ai-permissions.d.ts +49 -0
  392. package/src/lib/model/ai-permissions.js +97 -0
  393. package/src/lib/model/ai-permissions.js.map +1 -0
  394. package/src/lib/model/ai-plan-capabilities.d.ts +139 -0
  395. package/src/lib/model/ai-plan-capabilities.js +149 -0
  396. package/src/lib/model/ai-plan-capabilities.js.map +1 -0
  397. package/src/lib/model/ai-products.d.ts +251 -0
  398. package/src/lib/model/ai-products.js +253 -0
  399. package/src/lib/model/ai-products.js.map +1 -0
  400. package/src/lib/model/ai-seo.d.ts +208 -0
  401. package/src/lib/model/ai-seo.js +150 -0
  402. package/src/lib/model/ai-seo.js.map +1 -0
  403. package/src/lib/model/ai-site-inventory.d.ts +164 -0
  404. package/src/lib/model/ai-site-inventory.js +145 -0
  405. package/src/lib/model/ai-site-inventory.js.map +1 -0
  406. package/src/lib/model/ai-site-job.d.ts +247 -0
  407. package/src/lib/model/ai-site-job.js +314 -0
  408. package/src/lib/model/ai-site-job.js.map +1 -0
  409. package/src/lib/model/ai-site-start-seo.d.ts +103 -0
  410. package/src/lib/model/ai-site-start-seo.js +154 -0
  411. package/src/lib/model/ai-site-start-seo.js.map +1 -0
  412. package/src/lib/model/ai-site-start.d.ts +122 -0
  413. package/src/lib/model/ai-site-start.js +159 -0
  414. package/src/lib/model/ai-site-start.js.map +1 -0
  415. package/src/lib/model/ai-site-switch.d.ts +56 -0
  416. package/src/lib/model/ai-site-switch.js +73 -0
  417. package/src/lib/model/ai-site-switch.js.map +1 -0
  418. package/src/lib/model/ai-storefront-claims.d.ts +70 -0
  419. package/src/lib/model/ai-storefront-claims.js +130 -0
  420. package/src/lib/model/ai-storefront-claims.js.map +1 -0
  421. package/src/lib/model/ai-template-subjects.d.ts +82 -0
  422. package/src/lib/model/ai-template-subjects.js +136 -0
  423. package/src/lib/model/ai-template-subjects.js.map +1 -0
  424. package/src/lib/model/ai-theme-proposal.d.ts +210 -0
  425. package/src/lib/model/ai-theme-proposal.js +506 -0
  426. package/src/lib/model/ai-theme-proposal.js.map +1 -0
  427. package/src/lib/model/ai-tokens.d.ts +96 -0
  428. package/src/lib/model/ai-tokens.js +117 -0
  429. package/src/lib/model/ai-tokens.js.map +1 -0
  430. package/src/lib/model/ai-usage-by-user.d.ts +120 -0
  431. package/src/lib/model/ai-usage-by-user.js +139 -0
  432. package/src/lib/model/ai-usage-by-user.js.map +1 -0
  433. package/src/lib/model/ai-workflow-job.d.ts +111 -0
  434. package/src/lib/model/ai-workflow-job.js +183 -0
  435. package/src/lib/model/ai-workflow-job.js.map +1 -0
  436. package/src/lib/model/assist-edit.d.ts +261 -0
  437. package/src/lib/model/assist-edit.js +175 -0
  438. package/src/lib/model/assist-edit.js.map +1 -0
  439. package/src/lib/plugin-config.d.ts +33 -0
  440. package/src/lib/plugin-config.js +118 -0
  441. package/src/lib/plugin-config.js.map +1 -0
  442. package/src/lib/plugin.d.ts +30 -0
  443. package/src/lib/plugin.js +525 -0
  444. package/src/lib/plugin.js.map +1 -0
  445. package/src/lib/providers/anthropic.d.ts +84 -0
  446. package/src/lib/providers/anthropic.js +432 -0
  447. package/src/lib/providers/anthropic.js.map +1 -0
  448. package/src/lib/providers/catalog.d.ts +197 -0
  449. package/src/lib/providers/catalog.js +312 -0
  450. package/src/lib/providers/catalog.js.map +1 -0
  451. package/src/lib/providers/contract.d.ts +464 -0
  452. package/src/lib/providers/contract.js +274 -0
  453. package/src/lib/providers/contract.js.map +1 -0
  454. package/src/lib/providers/model-choice.d.ts +119 -0
  455. package/src/lib/providers/model-choice.js +416 -0
  456. package/src/lib/providers/model-choice.js.map +1 -0
  457. package/src/lib/providers/openai-compatible.d.ts +58 -0
  458. package/src/lib/providers/openai-compatible.js +361 -0
  459. package/src/lib/providers/openai-compatible.js.map +1 -0
  460. package/src/lib/providers/registry.d.ts +49 -0
  461. package/src/lib/providers/registry.js +71 -0
  462. package/src/lib/providers/registry.js.map +1 -0
  463. package/src/lib/providers/routing.d.ts +98 -0
  464. package/src/lib/providers/routing.js +450 -0
  465. package/src/lib/providers/routing.js.map +1 -0
  466. package/src/lib/runtime/ai-abuse-guards.d.ts +113 -0
  467. package/src/lib/runtime/ai-abuse-guards.js +148 -0
  468. package/src/lib/runtime/ai-abuse-guards.js.map +1 -0
  469. package/src/lib/runtime/ai-component-bindings.d.ts +67 -0
  470. package/src/lib/runtime/ai-component-bindings.js +106 -0
  471. package/src/lib/runtime/ai-component-bindings.js.map +1 -0
  472. package/src/lib/runtime/ai-device-audit.d.ts +109 -0
  473. package/src/lib/runtime/ai-device-audit.js +97 -0
  474. package/src/lib/runtime/ai-device-audit.js.map +1 -0
  475. package/src/lib/runtime/ai-doctrine-validators.d.ts +720 -0
  476. package/src/lib/runtime/ai-doctrine-validators.js +3133 -0
  477. package/src/lib/runtime/ai-doctrine-validators.js.map +1 -0
  478. package/src/lib/runtime/ai-doctrine.d.ts +372 -0
  479. package/src/lib/runtime/ai-doctrine.js +944 -0
  480. package/src/lib/runtime/ai-doctrine.js.map +1 -0
  481. package/src/lib/runtime/ai-eval-live.d.ts +321 -0
  482. package/src/lib/runtime/ai-eval-live.js +1257 -0
  483. package/src/lib/runtime/ai-eval-live.js.map +1 -0
  484. package/src/lib/runtime/ai-eval-memory-firestore.d.ts +51 -0
  485. package/src/lib/runtime/ai-eval-memory-firestore.js +183 -0
  486. package/src/lib/runtime/ai-eval-memory-firestore.js.map +1 -0
  487. package/src/lib/runtime/ai-eval.d.ts +441 -0
  488. package/src/lib/runtime/ai-eval.js +1151 -0
  489. package/src/lib/runtime/ai-eval.js.map +1 -0
  490. package/src/lib/runtime/ai-gate.d.ts +130 -0
  491. package/src/lib/runtime/ai-gate.js +272 -0
  492. package/src/lib/runtime/ai-gate.js.map +1 -0
  493. package/src/lib/runtime/ai-generation-bounds.d.ts +24 -0
  494. package/src/lib/runtime/ai-generation-bounds.js +23 -0
  495. package/src/lib/runtime/ai-generation-bounds.js.map +1 -0
  496. package/src/lib/runtime/ai-insight-check.d.ts +76 -0
  497. package/src/lib/runtime/ai-insight-check.js +281 -0
  498. package/src/lib/runtime/ai-insight-check.js.map +1 -0
  499. package/src/lib/runtime/ai-node-tree.d.ts +181 -0
  500. package/src/lib/runtime/ai-node-tree.js +931 -0
  501. package/src/lib/runtime/ai-node-tree.js.map +1 -0
  502. package/src/lib/runtime/ai-page-links.d.ts +79 -0
  503. package/src/lib/runtime/ai-page-links.js +135 -0
  504. package/src/lib/runtime/ai-page-links.js.map +1 -0
  505. package/src/lib/runtime/ai-palette.d.ts +252 -0
  506. package/src/lib/runtime/ai-palette.generated.d.ts +34 -0
  507. package/src/lib/runtime/ai-palette.generated.js +5263 -0
  508. package/src/lib/runtime/ai-palette.generated.js.map +1 -0
  509. package/src/lib/runtime/ai-palette.js +187 -0
  510. package/src/lib/runtime/ai-palette.js.map +1 -0
  511. package/src/lib/runtime/ai-products-generation.d.ts +107 -0
  512. package/src/lib/runtime/ai-products-generation.js +250 -0
  513. package/src/lib/runtime/ai-products-generation.js.map +1 -0
  514. package/src/lib/runtime/ai-repeated-items.d.ts +95 -0
  515. package/src/lib/runtime/ai-repeated-items.js +397 -0
  516. package/src/lib/runtime/ai-repeated-items.js.map +1 -0
  517. package/src/lib/runtime/ai-runtime.d.ts +148 -0
  518. package/src/lib/runtime/ai-runtime.js +237 -0
  519. package/src/lib/runtime/ai-runtime.js.map +1 -0
  520. package/src/lib/runtime/ai-template-examples.d.ts +71 -0
  521. package/src/lib/runtime/ai-template-examples.js +135 -0
  522. package/src/lib/runtime/ai-template-examples.js.map +1 -0
  523. package/src/lib/runtime/assist-answer-cache.d.ts +80 -0
  524. package/src/lib/runtime/assist-answer-cache.js +184 -0
  525. package/src/lib/runtime/assist-answer-cache.js.map +1 -0
  526. package/src/lib/runtime/seo-audit.d.ts +93 -0
  527. package/src/lib/runtime/seo-audit.js +260 -0
  528. package/src/lib/runtime/seo-audit.js.map +1 -0
  529. package/src/lib/runtime/seo-content-fixes.d.ts +41 -0
  530. package/src/lib/runtime/seo-content-fixes.js +168 -0
  531. package/src/lib/runtime/seo-content-fixes.js.map +1 -0
  532. package/src/lib/runtime/seo-fields.d.ts +152 -0
  533. package/src/lib/runtime/seo-fields.js +215 -0
  534. package/src/lib/runtime/seo-fields.js.map +1 -0
  535. package/src/lib/runtime/seo-page-facts.d.ts +61 -0
  536. package/src/lib/runtime/seo-page-facts.js +150 -0
  537. package/src/lib/runtime/seo-page-facts.js.map +1 -0
  538. package/src/lib/runtime/site-inventory.d.ts +63 -0
  539. package/src/lib/runtime/site-inventory.js +230 -0
  540. package/src/lib/runtime/site-inventory.js.map +1 -0
  541. package/src/lib/server/ai-admin-org.d.ts +33 -0
  542. package/src/lib/server/ai-admin-org.js +381 -0
  543. package/src/lib/server/ai-admin-org.js.map +1 -0
  544. package/src/lib/server/ai-admin-orgs-spend.d.ts +40 -0
  545. package/src/lib/server/ai-admin-orgs-spend.js +129 -0
  546. package/src/lib/server/ai-admin-orgs-spend.js.map +1 -0
  547. package/src/lib/server/ai-admin-overage.d.ts +19 -0
  548. package/src/lib/server/ai-admin-overage.js +246 -0
  549. package/src/lib/server/ai-admin-overage.js.map +1 -0
  550. package/src/lib/server/ai-admin-signals.d.ts +34 -0
  551. package/src/lib/server/ai-admin-signals.js +330 -0
  552. package/src/lib/server/ai-admin-signals.js.map +1 -0
  553. package/src/lib/server/ai-admin-user.d.ts +27 -0
  554. package/src/lib/server/ai-admin-user.js +128 -0
  555. package/src/lib/server/ai-admin-user.js.map +1 -0
  556. package/src/lib/server/ai-allotments.d.ts +27 -0
  557. package/src/lib/server/ai-allotments.js +544 -0
  558. package/src/lib/server/ai-allotments.js.map +1 -0
  559. package/src/lib/server/ai-assist-prompts.d.ts +102 -0
  560. package/src/lib/server/ai-assist-prompts.js +207 -0
  561. package/src/lib/server/ai-assist-prompts.js.map +1 -0
  562. package/src/lib/server/ai-assist.d.ts +119 -0
  563. package/src/lib/server/ai-assist.js +517 -0
  564. package/src/lib/server/ai-assist.js.map +1 -0
  565. package/src/lib/server/ai-crm-answer.d.ts +30 -0
  566. package/src/lib/server/ai-crm-answer.js +98 -0
  567. package/src/lib/server/ai-crm-answer.js.map +1 -0
  568. package/src/lib/server/ai-generate-component.d.ts +111 -0
  569. package/src/lib/server/ai-generate-component.js +643 -0
  570. package/src/lib/server/ai-generate-component.js.map +1 -0
  571. package/src/lib/server/ai-host-permissions.d.ts +46 -0
  572. package/src/lib/server/ai-host-permissions.js +204 -0
  573. package/src/lib/server/ai-host-permissions.js.map +1 -0
  574. package/src/lib/server/ai-insight-answer.d.ts +30 -0
  575. package/src/lib/server/ai-insight-answer.js +83 -0
  576. package/src/lib/server/ai-insight-answer.js.map +1 -0
  577. package/src/lib/server/ai-insight-digest-route.d.ts +30 -0
  578. package/src/lib/server/ai-insight-digest-route.js +156 -0
  579. package/src/lib/server/ai-insight-digest-route.js.map +1 -0
  580. package/src/lib/server/ai-jobs-batch.d.ts +48 -0
  581. package/src/lib/server/ai-jobs-batch.js +306 -0
  582. package/src/lib/server/ai-jobs-batch.js.map +1 -0
  583. package/src/lib/server/ai-jobs-beat-route.d.ts +36 -0
  584. package/src/lib/server/ai-jobs-beat-route.js +86 -0
  585. package/src/lib/server/ai-jobs-beat-route.js.map +1 -0
  586. package/src/lib/server/ai-jobs-cancel.d.ts +30 -0
  587. package/src/lib/server/ai-jobs-cancel.js +74 -0
  588. package/src/lib/server/ai-jobs-cancel.js.map +1 -0
  589. package/src/lib/server/ai-jobs-events-route.d.ts +31 -0
  590. package/src/lib/server/ai-jobs-events-route.js +51 -0
  591. package/src/lib/server/ai-jobs-events-route.js.map +1 -0
  592. package/src/lib/server/ai-jobs-events.d.ts +55 -0
  593. package/src/lib/server/ai-jobs-events.js +144 -0
  594. package/src/lib/server/ai-jobs-events.js.map +1 -0
  595. package/src/lib/server/ai-jobs-gate.d.ts +47 -0
  596. package/src/lib/server/ai-jobs-gate.js +106 -0
  597. package/src/lib/server/ai-jobs-gate.js.map +1 -0
  598. package/src/lib/server/ai-jobs-resume.d.ts +23 -0
  599. package/src/lib/server/ai-jobs-resume.js +209 -0
  600. package/src/lib/server/ai-jobs-resume.js.map +1 -0
  601. package/src/lib/server/ai-jobs-route.d.ts +32 -0
  602. package/src/lib/server/ai-jobs-route.js +307 -0
  603. package/src/lib/server/ai-jobs-route.js.map +1 -0
  604. package/src/lib/server/ai-models.d.ts +18 -0
  605. package/src/lib/server/ai-models.js +134 -0
  606. package/src/lib/server/ai-models.js.map +1 -0
  607. package/src/lib/server/ai-seo-apply.d.ts +53 -0
  608. package/src/lib/server/ai-seo-apply.js +294 -0
  609. package/src/lib/server/ai-seo-apply.js.map +1 -0
  610. package/src/lib/server/ai-usage.d.ts +18 -0
  611. package/src/lib/server/ai-usage.js +220 -0
  612. package/src/lib/server/ai-usage.js.map +1 -0
  613. package/src/lib/server/assist-chat.d.ts +234 -0
  614. package/src/lib/server/assist-chat.js +1446 -0
  615. package/src/lib/server/assist-chat.js.map +1 -0
  616. package/src/lib/server/assist-edit-applied.d.ts +22 -0
  617. package/src/lib/server/assist-edit-applied.js +239 -0
  618. package/src/lib/server/assist-edit-applied.js.map +1 -0
  619. package/src/lib/server/assist-edit.d.ts +124 -0
  620. package/src/lib/server/assist-edit.js +1000 -0
  621. package/src/lib/server/assist-edit.js.map +1 -0
  622. package/src/lib/server/assist-feedback.d.ts +31 -0
  623. package/src/lib/server/assist-feedback.js +115 -0
  624. package/src/lib/server/assist-feedback.js.map +1 -0
  625. package/src/lib/server/assist-view-context.d.ts +343 -0
  626. package/src/lib/server/assist-view-context.js +690 -0
  627. package/src/lib/server/assist-view-context.js.map +1 -0
  628. package/src/lib/server/billing-credits.d.ts +59 -0
  629. package/src/lib/server/billing-credits.js +146 -0
  630. package/src/lib/server/billing-credits.js.map +1 -0
  631. package/src/lib/server/billing-overage.d.ts +19 -0
  632. package/src/lib/server/billing-overage.js +337 -0
  633. package/src/lib/server/billing-overage.js.map +1 -0
  634. package/src/lib/server.d.ts +32 -0
  635. package/src/lib/server.js +265 -0
  636. package/src/lib/server.js.map +1 -0
  637. package/src/lib/subprocessors.d.ts +18 -0
  638. package/src/lib/subprocessors.js +52 -0
  639. package/src/lib/subprocessors.js.map +1 -0
  640. package/src/lib/tools/ai-component-tool.d.ts +99 -0
  641. package/src/lib/tools/ai-component-tool.js +369 -0
  642. package/src/lib/tools/ai-component-tool.js.map +1 -0
  643. package/src/lib/tools/ai-crm-tool.d.ts +106 -0
  644. package/src/lib/tools/ai-crm-tool.js +488 -0
  645. package/src/lib/tools/ai-crm-tool.js.map +1 -0
  646. package/src/lib/tools/ai-duplicate-resource-tool.d.ts +71 -0
  647. package/src/lib/tools/ai-duplicate-resource-tool.js +164 -0
  648. package/src/lib/tools/ai-duplicate-resource-tool.js.map +1 -0
  649. package/src/lib/tools/ai-experiment-tool.d.ts +40 -0
  650. package/src/lib/tools/ai-experiment-tool.js +155 -0
  651. package/src/lib/tools/ai-experiment-tool.js.map +1 -0
  652. package/src/lib/tools/ai-insight-tool.d.ts +46 -0
  653. package/src/lib/tools/ai-insight-tool.js +200 -0
  654. package/src/lib/tools/ai-insight-tool.js.map +1 -0
  655. package/src/lib/tools/ai-inventory-lookup-tool.d.ts +86 -0
  656. package/src/lib/tools/ai-inventory-lookup-tool.js +164 -0
  657. package/src/lib/tools/ai-inventory-lookup-tool.js.map +1 -0
  658. package/src/lib/tools/ai-products-tool.d.ts +65 -0
  659. package/src/lib/tools/ai-products-tool.js +644 -0
  660. package/src/lib/tools/ai-products-tool.js.map +1 -0
  661. package/src/lib/tools/ai-seo-tool.d.ts +162 -0
  662. package/src/lib/tools/ai-seo-tool.js +546 -0
  663. package/src/lib/tools/ai-seo-tool.js.map +1 -0
  664. package/src/lib/tools/ai-theme-tool.d.ts +101 -0
  665. package/src/lib/tools/ai-theme-tool.js +562 -0
  666. package/src/lib/tools/ai-theme-tool.js.map +1 -0
  667. package/src/lib/tools/ai-workflow-tool.d.ts +166 -0
  668. package/src/lib/tools/ai-workflow-tool.js +860 -0
  669. package/src/lib/tools/ai-workflow-tool.js.map +1 -0
  670. package/src/lib/usage/ai-allotment-alerts.d.ts +72 -0
  671. package/src/lib/usage/ai-allotment-alerts.js +157 -0
  672. package/src/lib/usage/ai-allotment-alerts.js.map +1 -0
  673. package/src/lib/usage/ai-allotments.d.ts +125 -0
  674. package/src/lib/usage/ai-allotments.js +239 -0
  675. package/src/lib/usage/ai-allotments.js.map +1 -0
  676. package/src/lib/usage/ai-model-sample.d.ts +36 -0
  677. package/src/lib/usage/ai-model-sample.js +68 -0
  678. package/src/lib/usage/ai-model-sample.js.map +1 -0
  679. package/src/lib/usage/ai-usage-alerts.d.ts +55 -0
  680. package/src/lib/usage/ai-usage-alerts.js +114 -0
  681. package/src/lib/usage/ai-usage-alerts.js.map +1 -0
  682. package/src/lib/usage/ai-usage-by-user.d.ts +161 -0
  683. package/src/lib/usage/ai-usage-by-user.js +211 -0
  684. package/src/lib/usage/ai-usage-by-user.js.map +1 -0
  685. package/src/lib/usage/ai-usage-eraser.d.ts +29 -0
  686. package/src/lib/usage/ai-usage-eraser.js +40 -0
  687. package/src/lib/usage/ai-usage-eraser.js.map +1 -0
  688. package/src/lib/usage/ai-usage-meter.d.ts +39 -0
  689. package/src/lib/usage/ai-usage-meter.js +85 -0
  690. package/src/lib/usage/ai-usage-meter.js.map +1 -0
  691. package/src/lib/usage/ai-usage-wire.d.ts +184 -0
  692. package/src/lib/usage/ai-usage-wire.js +98 -0
  693. package/src/lib/usage/ai-usage-wire.js.map +1 -0
  694. package/src/lib/usage/assist-ceiling.d.ts +87 -0
  695. package/src/lib/usage/assist-ceiling.js +110 -0
  696. package/src/lib/usage/assist-ceiling.js.map +1 -0
  697. package/src/lib/usage/assist-free-taste.d.ts +225 -0
  698. package/src/lib/usage/assist-free-taste.js +308 -0
  699. package/src/lib/usage/assist-free-taste.js.map +1 -0
  700. package/src/lib/usage/assist-refusals.d.ts +69 -0
  701. package/src/lib/usage/assist-refusals.js +79 -0
  702. package/src/lib/usage/assist-refusals.js.map +1 -0
  703. package/src/lib/usage/assist-signal-mining.d.ts +375 -0
  704. package/src/lib/usage/assist-signal-mining.js +344 -0
  705. package/src/lib/usage/assist-signal-mining.js.map +1 -0
  706. package/src/lib/usage/assist-usage.d.ts +571 -0
  707. package/src/lib/usage/assist-usage.js +978 -0
  708. package/src/lib/usage/assist-usage.js.map +1 -0
  709. package/src/lib/usage/staff-org-ai.d.ts +242 -0
  710. package/src/lib/usage/staff-org-ai.js +173 -0
  711. package/src/lib/usage/staff-org-ai.js.map +1 -0
  712. package/src/lib/usage/staff-org-usage-ai.d.ts +83 -0
  713. package/src/lib/usage/staff-org-usage-ai.js +59 -0
  714. package/src/lib/usage/staff-org-usage-ai.js.map +1 -0
  715. package/src/lib/usage/staff-orgs-ai-spend.d.ts +83 -0
  716. package/src/lib/usage/staff-orgs-ai-spend.js +114 -0
  717. package/src/lib/usage/staff-orgs-ai-spend.js.map +1 -0
@@ -0,0 +1,328 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ 'use client';
17
+ import { _ as _extends } from "@swc/helpers/_/_extends";
18
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
+ import { pluginDocsHelp } from "@aglyn/aglyn/app-utils/docs-help";
20
+ import { seoListingFieldCount, seoListingFieldTooLong } from "@aglyn/aglyn/app-utils/seo-listing-fields";
21
+ import { Alert, Box, Button, Chip, CircularProgress, Link, Stack, Typography } from "@mui/material";
22
+ import { useCallback, useState } from "react";
23
+ import { aiProductCopyProposals, aiProductsJobInputs } from "../model/ai-products.js";
24
+ import { isAiJobMoving, useAiProductsJobs } from "./use-ai-products-jobs.js";
25
+ /**
26
+ * "Write with AI" in the commerce product editor (AGL-2916), through the
27
+ * `productEditor` zone. A `products` job writes the product's description,
28
+ * search listing, tags, categories and clearer option names from what the
29
+ * editor holds: its name, text, tags and options, and its first photo for a
30
+ * model that reads pictures. The proposal is shown in full, with any fact the
31
+ * copy could not know marked for the person to fill in, and "Put in the
32
+ * fields" stages it in the editor as unsaved changes. Save product is the
33
+ * write; this card never writes a product.
34
+ */ /** The brief a product copy job carries, which the jobs list shows. */ export const aiProductCopyBrief = (name)=>`Write the storefront copy for ${name.trim()}`;
35
+ /** The values a proposal stages, in the editor's terms. */ export function aiProductCopyValues(proposal) {
36
+ const values = proposal.values;
37
+ if (!values) return {};
38
+ return _extends({
39
+ description: values.description,
40
+ tags: values.tags,
41
+ categoryIds: values.categoryIds,
42
+ seoTitle: values.seoTitle,
43
+ seoDescription: values.seoDescription
44
+ }, values.optionNames.length ? {
45
+ optionNames: values.optionNames
46
+ } : {});
47
+ }
48
+ function Field(props) {
49
+ return /*#__PURE__*/ _jsxs(Stack, {
50
+ spacing: 0.25,
51
+ children: [
52
+ /*#__PURE__*/ _jsxs(Stack, {
53
+ direction: "row",
54
+ spacing: 1,
55
+ sx: {
56
+ alignItems: 'center'
57
+ },
58
+ children: [
59
+ /*#__PURE__*/ _jsx(Typography, {
60
+ variant: "caption",
61
+ color: "text.secondary",
62
+ sx: {
63
+ flexGrow: 1
64
+ },
65
+ children: props.label
66
+ }),
67
+ props.count
68
+ ]
69
+ }),
70
+ props.children
71
+ ]
72
+ });
73
+ }
74
+ /** The proposed copy, field by field. */ export function AiProductCopyProposalView(props) {
75
+ const { proposal } = props;
76
+ const values = proposal.values;
77
+ if (!values) return null;
78
+ const renamed = values.optionNames.map((name, index)=>{
79
+ var _proposal_optionNamesBefore_index;
80
+ return {
81
+ before: (_proposal_optionNamesBefore_index = proposal.optionNamesBefore[index]) != null ? _proposal_optionNamesBefore_index : '',
82
+ after: name
83
+ };
84
+ }).filter((pair)=>pair.before !== pair.after);
85
+ return /*#__PURE__*/ _jsxs(Stack, {
86
+ spacing: 1,
87
+ children: [
88
+ /*#__PURE__*/ _jsx(Field, {
89
+ label: "Description",
90
+ children: /*#__PURE__*/ _jsx(Typography, {
91
+ variant: "body2",
92
+ sx: {
93
+ whiteSpace: 'pre-wrap',
94
+ wordBreak: 'break-word'
95
+ },
96
+ children: values.description
97
+ })
98
+ }),
99
+ values.tags.length ? /*#__PURE__*/ _jsx(Field, {
100
+ label: "Tags",
101
+ children: /*#__PURE__*/ _jsx(Stack, {
102
+ direction: "row",
103
+ spacing: 0.5,
104
+ useFlexGap: true,
105
+ sx: {
106
+ flexWrap: 'wrap'
107
+ },
108
+ children: values.tags.map((tag)=>/*#__PURE__*/ _jsx(Chip, {
109
+ size: "small",
110
+ variant: "outlined",
111
+ label: tag
112
+ }, tag))
113
+ })
114
+ }) : null,
115
+ proposal.categories.length ? /*#__PURE__*/ _jsx(Field, {
116
+ label: "Categories",
117
+ children: /*#__PURE__*/ _jsx(Typography, {
118
+ variant: "body2",
119
+ children: proposal.categories.map((category)=>category.name).join(', ')
120
+ })
121
+ }) : null,
122
+ renamed.length ? /*#__PURE__*/ _jsx(Field, {
123
+ label: "Option names",
124
+ children: /*#__PURE__*/ _jsx(Typography, {
125
+ variant: "body2",
126
+ children: renamed.map((pair)=>`${pair.before || 'Unnamed'} → ${pair.after}`).join(', ')
127
+ })
128
+ }) : null,
129
+ /*#__PURE__*/ _jsx(Field, {
130
+ label: "Search title",
131
+ count: /*#__PURE__*/ _jsx(Chip, {
132
+ size: "small",
133
+ variant: "outlined",
134
+ color: seoListingFieldTooLong('title', values.seoTitle) ? 'error' : 'default',
135
+ label: seoListingFieldCount('title', values.seoTitle)
136
+ }),
137
+ children: /*#__PURE__*/ _jsx(Typography, {
138
+ variant: "body2",
139
+ children: values.seoTitle
140
+ })
141
+ }),
142
+ /*#__PURE__*/ _jsx(Field, {
143
+ label: "Search description",
144
+ count: /*#__PURE__*/ _jsx(Chip, {
145
+ size: "small",
146
+ variant: "outlined",
147
+ color: seoListingFieldTooLong('description', values.seoDescription) ? 'error' : 'default',
148
+ label: seoListingFieldCount('description', values.seoDescription)
149
+ }),
150
+ children: /*#__PURE__*/ _jsx(Typography, {
151
+ variant: "body2",
152
+ children: values.seoDescription
153
+ })
154
+ }),
155
+ proposal.gaps.length ? /*#__PURE__*/ _jsx(Alert, {
156
+ severity: "warning",
157
+ children: `Fill in what the copy could not know before you save: ${proposal.gaps.map((gap)=>`[${gap}]`).join(', ')}.`
158
+ }) : null,
159
+ proposal.notes.map((note)=>/*#__PURE__*/ _jsx(Typography, {
160
+ variant: "caption",
161
+ color: "text.secondary",
162
+ children: note
163
+ }, note))
164
+ ]
165
+ });
166
+ }
167
+ export function AiProductCopyCard(props) {
168
+ var _jobs_find, _jobs_find1, _ref, _aiProductCopyProposals_find;
169
+ const { hostId, product, proposeValues } = props;
170
+ const { orgId, verdict, jobs, notice, start } = useAiProductsJobs({
171
+ hostId,
172
+ orgId: props.orgId,
173
+ follows: (job)=>job.brief === aiProductCopyBrief(product.name)
174
+ });
175
+ const [startedId, setStartedId] = useState(null);
176
+ const [busy, setBusy] = useState(false);
177
+ const [staged, setStaged] = useState(null);
178
+ const write = useCallback(async ()=>{
179
+ setBusy(true);
180
+ setStaged(null);
181
+ try {
182
+ var _product_mediaUrls_;
183
+ const job = await start(aiProductCopyBrief(product.name), aiProductsJobInputs({
184
+ target: 'product',
185
+ product: {
186
+ id: product.id,
187
+ name: product.name,
188
+ type: product.type,
189
+ text: product.description,
190
+ tags: product.tags,
191
+ categoryIds: product.categoryIds,
192
+ options: product.options,
193
+ imageUrl: (_product_mediaUrls_ = product.mediaUrls[0]) != null ? _product_mediaUrls_ : null,
194
+ seoTitle: product.seoTitle,
195
+ seoDescription: product.seoDescription
196
+ }
197
+ }));
198
+ if (job) setStartedId(job.id);
199
+ } finally{
200
+ setBusy(false);
201
+ }
202
+ }, [
203
+ start,
204
+ product
205
+ ]);
206
+ if (verdict !== 'ready') return null;
207
+ // The job this card started, or the latest one that wrote this saved product's copy.
208
+ const job = startedId ? (_jobs_find = jobs.find((entry)=>entry.id === startedId)) != null ? _jobs_find : null : product.id ? (_jobs_find1 = jobs.find((entry)=>aiProductCopyProposals(entry).some((proposal)=>proposal.product.id === product.id))) != null ? _jobs_find1 : null : null;
209
+ const proposal = job ? (_ref = (_aiProductCopyProposals_find = aiProductCopyProposals(job).find((entry)=>entry.product.id === product.id)) != null ? _aiProductCopyProposals_find : aiProductCopyProposals(job)[0]) != null ? _ref : null : null;
210
+ const running = isAiJobMoving(job);
211
+ const unnamed = !product.name.trim();
212
+ const help = pluginDocsHelp('aiProducts', {
213
+ excerpt: 'Write a product’s description, search listing and tags from what it says and shows. It is put in the fields as unsaved changes; nothing is saved until you save.'
214
+ });
215
+ return /*#__PURE__*/ _jsx(Box, {
216
+ sx: {
217
+ border: 1,
218
+ borderColor: 'divider',
219
+ borderRadius: 1,
220
+ p: 1.5
221
+ },
222
+ "aria-label": "Product copy assistant",
223
+ children: /*#__PURE__*/ _jsxs(Stack, {
224
+ spacing: 1.5,
225
+ children: [
226
+ /*#__PURE__*/ _jsxs(Stack, {
227
+ direction: "row",
228
+ spacing: 1,
229
+ sx: {
230
+ alignItems: 'baseline'
231
+ },
232
+ children: [
233
+ /*#__PURE__*/ _jsx(Typography, {
234
+ variant: "subtitle2",
235
+ sx: {
236
+ flexGrow: 1
237
+ },
238
+ children: 'Write with AI'
239
+ }),
240
+ /*#__PURE__*/ _jsx(Link, {
241
+ href: help.href,
242
+ target: "_blank",
243
+ rel: "noopener",
244
+ variant: "caption",
245
+ title: help.excerpt,
246
+ children: 'How it works'
247
+ })
248
+ ]
249
+ }),
250
+ /*#__PURE__*/ _jsx(Typography, {
251
+ variant: "body2",
252
+ color: "text.secondary",
253
+ children: 'Writes the description, search listing and tags, suggests categories and clearer option names, ' + 'from the product’s name, text, tags and options and its first photo. Prices are never written.'
254
+ }),
255
+ /*#__PURE__*/ _jsxs(Stack, {
256
+ direction: "row",
257
+ spacing: 1,
258
+ sx: {
259
+ alignItems: 'center'
260
+ },
261
+ children: [
262
+ /*#__PURE__*/ _jsx(Button, {
263
+ size: "small",
264
+ variant: "outlined",
265
+ disabled: busy || running || unnamed || !orgId,
266
+ onClick: ()=>void write(),
267
+ children: proposal ? 'Write again' : 'Write copy'
268
+ }),
269
+ busy || running ? /*#__PURE__*/ _jsx(CircularProgress, {
270
+ size: 16,
271
+ "aria-label": "Writing the copy"
272
+ }) : null,
273
+ unnamed ? /*#__PURE__*/ _jsx(Typography, {
274
+ variant: "caption",
275
+ color: "text.secondary",
276
+ children: 'Name the product first.'
277
+ }) : null
278
+ ]
279
+ }),
280
+ notice ? /*#__PURE__*/ _jsx(Alert, {
281
+ severity: "warning",
282
+ children: notice
283
+ }) : null,
284
+ (job == null ? void 0 : job.error) && !(proposal == null ? void 0 : proposal.values) ? /*#__PURE__*/ _jsx(Alert, {
285
+ severity: job.status === 'failed' ? 'error' : 'warning',
286
+ children: job.error
287
+ }) : null,
288
+ (proposal == null ? void 0 : proposal.skipped) ? /*#__PURE__*/ _jsx(Alert, {
289
+ severity: "info",
290
+ children: proposal.skipped
291
+ }) : null,
292
+ (proposal == null ? void 0 : proposal.values) && job ? /*#__PURE__*/ _jsxs(Stack, {
293
+ spacing: 1,
294
+ children: [
295
+ /*#__PURE__*/ _jsx(Typography, {
296
+ variant: "subtitle2",
297
+ children: 'Proposed copy'
298
+ }),
299
+ /*#__PURE__*/ _jsx(AiProductCopyProposalView, {
300
+ proposal: proposal
301
+ }),
302
+ /*#__PURE__*/ _jsx(Button, {
303
+ size: "small",
304
+ variant: "contained",
305
+ sx: {
306
+ alignSelf: 'flex-start'
307
+ },
308
+ disabled: staged === job.id,
309
+ onClick: ()=>{
310
+ proposeValues(aiProductCopyValues(proposal), job.id);
311
+ setStaged(job.id);
312
+ },
313
+ children: 'Put in the fields'
314
+ })
315
+ ]
316
+ }) : null,
317
+ staged ? /*#__PURE__*/ _jsx(Alert, {
318
+ severity: "success",
319
+ children: 'In the fields as unsaved changes. Review them, then press Save product.'
320
+ }) : null
321
+ ]
322
+ })
323
+ });
324
+ }
325
+ AiProductCopyCard.displayName = 'AiProductCopyCard';
326
+ export default AiProductCopyCard;
327
+
328
+ //# sourceMappingURL=ai-product-copy-card.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/plugins/ai/src/lib/components/ai-product-copy-card.component.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use client'\n\nimport { pluginDocsHelp } from '@aglyn/aglyn/app-utils/docs-help'\nimport { seoListingFieldCount, seoListingFieldTooLong } from '@aglyn/aglyn/app-utils/seo-listing-fields'\nimport type {\n ConsoleProductCopyValues,\n ConsoleProductEditorZoneProps,\n} from '@aglyn/aglyn/plugin-manager/feature-plugins'\nimport { Alert, Box, Button, Chip, CircularProgress, Link, Stack, Typography } from '@mui/material'\nimport { useCallback, useState, type ReactNode } from 'react'\nimport {\n aiProductCopyProposals,\n aiProductsJobInputs,\n type AiProductCopyProposal,\n} from '../model/ai-products'\nimport { isAiJobMoving, useAiProductsJobs } from './use-ai-products-jobs'\n\n/**\n * \"Write with AI\" in the commerce product editor (AGL-2916), through the\n * `productEditor` zone. A `products` job writes the product's description,\n * search listing, tags, categories and clearer option names from what the\n * editor holds: its name, text, tags and options, and its first photo for a\n * model that reads pictures. The proposal is shown in full, with any fact the\n * copy could not know marked for the person to fill in, and \"Put in the\n * fields\" stages it in the editor as unsaved changes. Save product is the\n * write; this card never writes a product.\n */\n\n/** The brief a product copy job carries, which the jobs list shows. */\nexport const aiProductCopyBrief = (name: string) => `Write the storefront copy for ${name.trim()}`\n\n/** The values a proposal stages, in the editor's terms. */\nexport function aiProductCopyValues(proposal: AiProductCopyProposal): ConsoleProductCopyValues {\n const values = proposal.values\n if (!values) return {}\n return {\n description: values.description,\n tags: values.tags,\n categoryIds: values.categoryIds,\n seoTitle: values.seoTitle,\n seoDescription: values.seoDescription,\n ...(values.optionNames.length ? { optionNames: values.optionNames } : {}),\n }\n}\n\nfunction Field(props: { label: string; children: ReactNode; count?: ReactNode }) {\n return (\n <Stack spacing={0.25}>\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'center' }}>\n <Typography variant=\"caption\" color=\"text.secondary\" sx={{ flexGrow: 1 }}>\n {props.label}\n </Typography>\n {props.count}\n </Stack>\n {props.children}\n </Stack>\n )\n}\n\n/** The proposed copy, field by field. */\nexport function AiProductCopyProposalView(props: { proposal: AiProductCopyProposal }) {\n const { proposal } = props\n const values = proposal.values\n if (!values) return null\n const renamed = values.optionNames\n .map((name, index) => ({ before: proposal.optionNamesBefore[index] ?? '', after: name }))\n .filter((pair) => pair.before !== pair.after)\n return (\n <Stack spacing={1}>\n <Field label=\"Description\">\n <Typography variant=\"body2\" sx={{ whiteSpace: 'pre-wrap', wordBreak: 'break-word' }}>\n {values.description}\n </Typography>\n </Field>\n {values.tags.length ? (\n <Field label=\"Tags\">\n <Stack direction=\"row\" spacing={0.5} useFlexGap sx={{ flexWrap: 'wrap' }}>\n {values.tags.map((tag) => (\n <Chip key={tag} size=\"small\" variant=\"outlined\" label={tag} />\n ))}\n </Stack>\n </Field>\n ) : null}\n {proposal.categories.length ? (\n <Field label=\"Categories\">\n <Typography variant=\"body2\">{proposal.categories.map((category) => category.name).join(', ')}</Typography>\n </Field>\n ) : null}\n {renamed.length ? (\n <Field label=\"Option names\">\n <Typography variant=\"body2\">\n {renamed.map((pair) => `${pair.before || 'Unnamed'} → ${pair.after}`).join(', ')}\n </Typography>\n </Field>\n ) : null}\n <Field\n label=\"Search title\"\n count={\n <Chip\n size=\"small\"\n variant=\"outlined\"\n color={seoListingFieldTooLong('title', values.seoTitle) ? 'error' : 'default'}\n label={seoListingFieldCount('title', values.seoTitle)}\n />\n }\n >\n <Typography variant=\"body2\">{values.seoTitle}</Typography>\n </Field>\n <Field\n label=\"Search description\"\n count={\n <Chip\n size=\"small\"\n variant=\"outlined\"\n color={seoListingFieldTooLong('description', values.seoDescription) ? 'error' : 'default'}\n label={seoListingFieldCount('description', values.seoDescription)}\n />\n }\n >\n <Typography variant=\"body2\">{values.seoDescription}</Typography>\n </Field>\n {proposal.gaps.length ? (\n <Alert severity=\"warning\">\n {`Fill in what the copy could not know before you save: ${proposal.gaps.map((gap) => `[${gap}]`).join(', ')}.`}\n </Alert>\n ) : null}\n {proposal.notes.map((note) => (\n <Typography key={note} variant=\"caption\" color=\"text.secondary\">\n {note}\n </Typography>\n ))}\n </Stack>\n )\n}\n\nexport function AiProductCopyCard(props: ConsoleProductEditorZoneProps) {\n const { hostId, product, proposeValues } = props\n const { orgId, verdict, jobs, notice, start } = useAiProductsJobs({\n hostId,\n orgId: props.orgId,\n follows: (job) => job.brief === aiProductCopyBrief(product.name),\n })\n const [startedId, setStartedId] = useState<string | null>(null)\n const [busy, setBusy] = useState(false)\n const [staged, setStaged] = useState<string | null>(null)\n\n const write = useCallback(async () => {\n setBusy(true)\n setStaged(null)\n try {\n const job = await start(\n aiProductCopyBrief(product.name),\n aiProductsJobInputs({\n target: 'product',\n product: {\n id: product.id,\n name: product.name,\n type: product.type,\n text: product.description,\n tags: product.tags,\n categoryIds: product.categoryIds,\n options: product.options,\n imageUrl: product.mediaUrls[0] ?? null,\n seoTitle: product.seoTitle,\n seoDescription: product.seoDescription,\n },\n }),\n )\n if (job) setStartedId(job.id)\n } finally {\n setBusy(false)\n }\n }, [start, product])\n\n if (verdict !== 'ready') return null\n\n // The job this card started, or the latest one that wrote this saved product's copy.\n const job = startedId\n ? (jobs.find((entry) => entry.id === startedId) ?? null)\n : product.id\n ? (jobs.find((entry) => aiProductCopyProposals(entry).some((proposal) => proposal.product.id === product.id)) ??\n null)\n : null\n const proposal = job\n ? (aiProductCopyProposals(job).find((entry) => entry.product.id === product.id) ?? aiProductCopyProposals(job)[0] ?? null)\n : null\n const running = isAiJobMoving(job)\n const unnamed = !product.name.trim()\n const help = pluginDocsHelp('aiProducts', {\n excerpt:\n 'Write a product’s description, search listing and tags from what it says and shows. It is put in the fields as unsaved changes; nothing is saved until you save.',\n })\n\n return (\n <Box sx={{ border: 1, borderColor: 'divider', borderRadius: 1, p: 1.5 }} aria-label=\"Product copy assistant\">\n <Stack spacing={1.5}>\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'baseline' }}>\n <Typography variant=\"subtitle2\" sx={{ flexGrow: 1 }}>\n {'Write with AI'}\n </Typography>\n <Link href={help.href} target=\"_blank\" rel=\"noopener\" variant=\"caption\" title={help.excerpt}>\n {'How it works'}\n </Link>\n </Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {'Writes the description, search listing and tags, suggests categories and clearer option names, ' +\n 'from the product’s name, text, tags and options and its first photo. Prices are never written.'}\n </Typography>\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'center' }}>\n <Button size=\"small\" variant=\"outlined\" disabled={busy || running || unnamed || !orgId} onClick={() => void write()}>\n {proposal ? 'Write again' : 'Write copy'}\n </Button>\n {busy || running ? <CircularProgress size={16} aria-label=\"Writing the copy\" /> : null}\n {unnamed ? (\n <Typography variant=\"caption\" color=\"text.secondary\">\n {'Name the product first.'}\n </Typography>\n ) : null}\n </Stack>\n {notice ? <Alert severity=\"warning\">{notice}</Alert> : null}\n {job?.error && !proposal?.values ? (\n <Alert severity={job.status === 'failed' ? 'error' : 'warning'}>{job.error}</Alert>\n ) : null}\n {proposal?.skipped ? <Alert severity=\"info\">{proposal.skipped}</Alert> : null}\n {proposal?.values && job ? (\n <Stack spacing={1}>\n <Typography variant=\"subtitle2\">{'Proposed copy'}</Typography>\n <AiProductCopyProposalView proposal={proposal} />\n <Button\n size=\"small\"\n variant=\"contained\"\n sx={{ alignSelf: 'flex-start' }}\n disabled={staged === job.id}\n onClick={() => {\n proposeValues(aiProductCopyValues(proposal), job.id)\n setStaged(job.id)\n }}\n >\n {'Put in the fields'}\n </Button>\n </Stack>\n ) : null}\n {staged ? (\n <Alert severity=\"success\">{'In the fields as unsaved changes. Review them, then press Save product.'}</Alert>\n ) : null}\n </Stack>\n </Box>\n )\n}\nAiProductCopyCard.displayName = 'AiProductCopyCard'\n\nexport default AiProductCopyCard\n"],"names":["pluginDocsHelp","seoListingFieldCount","seoListingFieldTooLong","Alert","Box","Button","Chip","CircularProgress","Link","Stack","Typography","useCallback","useState","aiProductCopyProposals","aiProductsJobInputs","isAiJobMoving","useAiProductsJobs","aiProductCopyBrief","name","trim","aiProductCopyValues","proposal","values","description","tags","categoryIds","seoTitle","seoDescription","optionNames","length","Field","props","spacing","direction","sx","alignItems","variant","color","flexGrow","label","count","children","AiProductCopyProposalView","renamed","map","index","before","optionNamesBefore","after","filter","pair","whiteSpace","wordBreak","useFlexGap","flexWrap","tag","size","categories","category","join","gaps","severity","gap","notes","note","AiProductCopyCard","jobs","hostId","product","proposeValues","orgId","verdict","notice","start","follows","job","brief","startedId","setStartedId","busy","setBusy","staged","setStaged","write","target","id","type","text","options","imageUrl","mediaUrls","find","entry","some","running","unnamed","help","excerpt","border","borderColor","borderRadius","p","aria-label","href","rel","title","disabled","onClick","error","status","skipped","alignSelf","displayName"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ConsoleProductImportZoneProps } from '@aglyn/aglyn/plugin-manager/feature-plugins';
2
+ /**
3
+ * "Write copy with AI as they land" in the commerce CSV import dialog
4
+ * (AGL-2916), through the `productImport` zone. The box sets an option on the
5
+ * import; once the import has created its products, the products hub's AI
6
+ * card starts one copy job for them, and its proposals wait there for review
7
+ * like any other. Nothing is written to an imported product until a person
8
+ * applies its copy.
9
+ */
10
+ export declare function AiProductImportOption(props: ConsoleProductImportZoneProps): import("react").JSX.Element;
11
+ export declare namespace AiProductImportOption {
12
+ var displayName: string;
13
+ }
14
+ export default AiProductImportOption;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ 'use client';
17
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
+ import { Checkbox, FormControlLabel, Stack, Typography } from "@mui/material";
19
+ import { AI_PRODUCTS_BULK_MAX, AI_PRODUCTS_IMPORT_WRITE_COPY } from "../model/ai-products.js";
20
+ import { useAiProductsJobs } from "./use-ai-products-jobs.js";
21
+ /**
22
+ * "Write copy with AI as they land" in the commerce CSV import dialog
23
+ * (AGL-2916), through the `productImport` zone. The box sets an option on the
24
+ * import; once the import has created its products, the products hub's AI
25
+ * card starts one copy job for them, and its proposals wait there for review
26
+ * like any other. Nothing is written to an imported product until a person
27
+ * applies its copy.
28
+ */ export function AiProductImportOption(props) {
29
+ const { hostId, count, options, setOption } = props;
30
+ const { verdict } = useAiProductsJobs({
31
+ hostId,
32
+ orgId: props.orgId
33
+ });
34
+ if (verdict !== 'ready') return null;
35
+ const covered = Math.min(count, AI_PRODUCTS_BULK_MAX);
36
+ return /*#__PURE__*/ _jsxs(Stack, {
37
+ spacing: 0.25,
38
+ children: [
39
+ /*#__PURE__*/ _jsx(FormControlLabel, {
40
+ control: /*#__PURE__*/ _jsx(Checkbox, {
41
+ size: "small",
42
+ checked: Boolean(options[AI_PRODUCTS_IMPORT_WRITE_COPY]),
43
+ onChange: (event)=>setOption(AI_PRODUCTS_IMPORT_WRITE_COPY, event.target.checked)
44
+ }),
45
+ label: "Write descriptions, search listings and tags with AI as they land"
46
+ }),
47
+ /*#__PURE__*/ _jsx(Typography, {
48
+ variant: "caption",
49
+ color: "text.secondary",
50
+ children: (count > AI_PRODUCTS_BULK_MAX ? `Copy is written for the first ${covered} of the ${count} products. ` : '') + 'You review it on the products page before any is saved. Prices are never written.'
51
+ })
52
+ ]
53
+ });
54
+ }
55
+ AiProductImportOption.displayName = 'AiProductImportOption';
56
+ export default AiProductImportOption;
57
+
58
+ //# sourceMappingURL=ai-product-import-option.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/plugins/ai/src/lib/components/ai-product-import-option.component.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use client'\n\nimport type { ConsoleProductImportZoneProps } from '@aglyn/aglyn/plugin-manager/feature-plugins'\nimport { Checkbox, FormControlLabel, Stack, Typography } from '@mui/material'\nimport { AI_PRODUCTS_BULK_MAX, AI_PRODUCTS_IMPORT_WRITE_COPY } from '../model/ai-products'\nimport { useAiProductsJobs } from './use-ai-products-jobs'\n\n/**\n * \"Write copy with AI as they land\" in the commerce CSV import dialog\n * (AGL-2916), through the `productImport` zone. The box sets an option on the\n * import; once the import has created its products, the products hub's AI\n * card starts one copy job for them, and its proposals wait there for review\n * like any other. Nothing is written to an imported product until a person\n * applies its copy.\n */\nexport function AiProductImportOption(props: ConsoleProductImportZoneProps) {\n const { hostId, count, options, setOption } = props\n const { verdict } = useAiProductsJobs({ hostId, orgId: props.orgId })\n if (verdict !== 'ready') return null\n const covered = Math.min(count, AI_PRODUCTS_BULK_MAX)\n return (\n <Stack spacing={0.25}>\n <FormControlLabel\n control={\n <Checkbox\n size=\"small\"\n checked={Boolean(options[AI_PRODUCTS_IMPORT_WRITE_COPY])}\n onChange={(event) => setOption(AI_PRODUCTS_IMPORT_WRITE_COPY, event.target.checked)}\n />\n }\n label=\"Write descriptions, search listings and tags with AI as they land\"\n />\n <Typography variant=\"caption\" color=\"text.secondary\">\n {(count > AI_PRODUCTS_BULK_MAX\n ? `Copy is written for the first ${covered} of the ${count} products. `\n : '') + 'You review it on the products page before any is saved. Prices are never written.'}\n </Typography>\n </Stack>\n )\n}\nAiProductImportOption.displayName = 'AiProductImportOption'\n\nexport default AiProductImportOption\n"],"names":["Checkbox","FormControlLabel","Stack","Typography","AI_PRODUCTS_BULK_MAX","AI_PRODUCTS_IMPORT_WRITE_COPY","useAiProductsJobs","AiProductImportOption","props","hostId","count","options","setOption","verdict","orgId","covered","Math","min","spacing","control","size","checked","Boolean","onChange","event","target","label","variant","color","displayName"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GACD;;AAGA,SAASA,QAAQ,EAAEC,gBAAgB,EAAEC,KAAK,EAAEC,UAAU,QAAQ,gBAAe;AAC7E,SAASC,oBAAoB,EAAEC,6BAA6B,QAAQ,0BAAsB;AAC1F,SAASC,iBAAiB,QAAQ,4BAAwB;AAE1D;;;;;;;CAOC,GACD,OAAO,SAASC,sBAAsBC,KAAoC;IACxE,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAEC,SAAS,EAAE,GAAGJ;IAC9C,MAAM,EAAEK,OAAO,EAAE,GAAGP,kBAAkB;QAAEG;QAAQK,OAAON,MAAMM,KAAK;IAAC;IACnE,IAAID,YAAY,SAAS,OAAO;IAChC,MAAME,UAAUC,KAAKC,GAAG,CAACP,OAAON;IAChC,qBACE,MAACF;QAAMgB,SAAS;;0BACd,KAACjB;gBACCkB,uBACE,KAACnB;oBACCoB,MAAK;oBACLC,SAASC,QAAQX,OAAO,CAACN,8BAA8B;oBACvDkB,UAAU,CAACC,QAAUZ,UAAUP,+BAA+BmB,MAAMC,MAAM,CAACJ,OAAO;;gBAGtFK,OAAM;;0BAER,KAACvB;gBAAWwB,SAAQ;gBAAUC,OAAM;0BACjC,AAAClB,CAAAA,QAAQN,uBACN,CAAC,8BAA8B,EAAEW,QAAQ,QAAQ,EAAEL,MAAM,WAAW,CAAC,GACrE,EAAC,IAAK;;;;AAIlB;AACAH,sBAAsBsB,WAAW,GAAG;AAEpC,eAAetB,sBAAqB"}
@@ -0,0 +1,15 @@
1
+ import type { ConsoleProductsHubZoneProps } from '@aglyn/aglyn/plugin-manager/feature-plugins';
2
+ type BriefKind = 'catalog' | 'categories';
3
+ /** What each brief dialog says. */
4
+ export declare const AI_PRODUCTS_BRIEF_COPY: Readonly<Record<BriefKind, {
5
+ title: string;
6
+ label: string;
7
+ placeholder: string;
8
+ next: string;
9
+ submit: string;
10
+ }>>;
11
+ export declare function AiProductsHubCard(props: ConsoleProductsHubZoneProps): import("react").JSX.Element;
12
+ export declare namespace AiProductsHubCard {
13
+ var displayName: string;
14
+ }
15
+ export default AiProductsHubCard;