@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 @@
1
+ {"version":3,"sources":["../../../../../../../libs/plugins/ai/src/lib/components/ai-allotment-editor.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 {\n Alert,\n Button,\n Checkbox,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n FormControlLabel,\n FormGroup,\n FormHelperText,\n FormLabel,\n Radio,\n RadioGroup,\n Stack,\n TextField,\n Typography,\n} from '@mui/material'\nimport { useEffect, useState } from 'react'\nimport { AI_ALLOTMENT_MAX_CREDITS, type AiAllotmentMode } from '../model/ai-allotments'\n\nexport interface AiAllotmentValue {\n credits: number | null\n mode: AiAllotmentMode\n models: string[] | null\n}\n\nexport interface AiAllotmentEditorProps {\n open: boolean\n title: string\n /** One sentence under the title: whose allotment, and what it bounds. */\n description?: string\n /** The allotment as it stands, or `null` for a new one. */\n initial: AiAllotmentValue | null\n /** The models an allowlist may name, from the allotments route. */\n models: ReadonlyArray<{ id: string; label: string }>\n /** The org-wide restriction: models only, no credits and no mode. */\n modelsOnly?: boolean\n /** The workspace's pool, for the note that an allotment never grants past it. */\n poolLimit?: number | null\n busy?: boolean\n error?: string | null\n onClose: () => void\n onSave: (value: AiAllotmentValue) => void\n /** Offered when the allotment exists. */\n onRemove?: () => void\n}\n\n/**\n * THE ALLOTMENT EDITOR (AGL-2942): credits a month, hard or soft, and an\n * optional model allowlist — one dialog for a member, a collaborator, a\n * site, a bulk selection and the org-wide restriction, so the four places a\n * manager sets an allotment ask the same questions in the same words.\n */\nexport function AiAllotmentEditor(props: AiAllotmentEditorProps) {\n const { open, initial, models, modelsOnly, poolLimit, busy, error } = props\n const [credits, setCredits] = useState('')\n const [mode, setMode] = useState<AiAllotmentMode>('hard')\n const [allowed, setAllowed] = useState<string[]>([])\n const [invalid, setInvalid] = useState<string | null>(null)\n\n // Reset from the allotment each time the dialog opens, keyed on the open\n // flag and the values rather than on the object's identity.\n const initialCredits = initial?.credits ?? null\n const initialMode = initial?.mode ?? 'hard'\n const initialModels = (initial?.models ?? []).join('\\n')\n useEffect(() => {\n if (!open) return\n setCredits(initialCredits === null ? '' : String(initialCredits))\n setMode(initialMode)\n setAllowed(initialModels ? initialModels.split('\\n') : [])\n setInvalid(null)\n }, [open, initialCredits, initialMode, initialModels])\n\n const parsedCredits = credits.trim() === '' ? null : Number(credits)\n const save = () => {\n if (!modelsOnly) {\n if (\n parsedCredits !== null &&\n (!Number.isInteger(parsedCredits) || parsedCredits < 1 || parsedCredits > AI_ALLOTMENT_MAX_CREDITS)\n ) {\n setInvalid('Enter a whole number of credits, 1 or more.')\n return\n }\n if (parsedCredits === null && !allowed.length) {\n setInvalid('Set credits, choose models, or remove the allotment.')\n return\n }\n }\n setInvalid(null)\n props.onSave({\n credits: modelsOnly ? null : parsedCredits,\n mode,\n models: allowed.length ? allowed : null,\n })\n }\n const toggle = (id: string) =>\n setAllowed((current) =>\n current.includes(id) ? current.filter((entry) => entry !== id) : [...current, id],\n )\n\n return (\n <Dialog open={open} onClose={busy ? undefined : props.onClose} maxWidth=\"xs\" fullWidth>\n <DialogTitle>{props.title}</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 2, pt: 1 }}>\n {props.description ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {props.description}\n </Typography>\n ) : null}\n {modelsOnly ? null : (\n <>\n <TextField\n label=\"Credits a month\"\n type=\"number\"\n size=\"small\"\n value={credits}\n onChange={(event) => setCredits(event.target.value)}\n disabled={busy}\n slotProps={{ htmlInput: { min: 1, step: 100 } }}\n helperText={\n poolLimit && parsedCredits && parsedCredits > poolLimit\n ? `Larger than the workspace's ${poolLimit.toLocaleString()} credits — the workspace's pool still stops first.`\n : 'Counted from the first of the month (UTC). Leave empty to limit models only.'\n }\n />\n <div>\n <FormLabel id=\"ai-allotment-mode\">{'At the allotment'}</FormLabel>\n <RadioGroup\n aria-labelledby=\"ai-allotment-mode\"\n value={mode}\n onChange={(event) => setMode(event.target.value as AiAllotmentMode)}\n >\n <FormControlLabel\n value=\"hard\"\n control={<Radio size=\"small\" />}\n disabled={busy}\n label=\"Stop AI requests (hard)\"\n />\n <FormControlLabel\n value=\"soft\"\n control={<Radio size=\"small\" />}\n disabled={busy}\n label=\"Keep going and alert at 80% and 100% (soft)\"\n />\n </RadioGroup>\n </div>\n </>\n )}\n {models.length ? (\n <div>\n <FormLabel component=\"legend\">\n {modelsOnly ? 'Models the organization may use' : 'Limit to these models (optional)'}\n </FormLabel>\n <FormGroup>\n {models.map((model) => (\n <FormControlLabel\n key={model.id}\n control={\n <Checkbox\n size=\"small\"\n checked={allowed.includes(model.id)}\n onChange={() => toggle(model.id)}\n disabled={busy}\n />\n }\n label={model.label}\n />\n ))}\n </FormGroup>\n <FormHelperText>\n {modelsOnly\n ? 'None checked means no restriction. Auto keeps choosing among the checked models.'\n : 'None checked means every model the plan offers. Auto keeps choosing among the checked models.'}\n </FormHelperText>\n </div>\n ) : null}\n {invalid || error ? <Alert severity=\"error\">{invalid ?? error}</Alert> : null}\n </DialogContent>\n <DialogActions>\n {props.onRemove ? (\n <Button color=\"error\" disabled={busy} onClick={props.onRemove} sx={{ mr: 'auto' }}>\n {modelsOnly ? 'Clear restriction' : 'Remove allotment'}\n </Button>\n ) : null}\n <Button disabled={busy} onClick={props.onClose}>\n {'Cancel'}\n </Button>\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'center' }}>\n <Button\n variant=\"contained\"\n disabled={busy}\n onClick={save}\n startIcon={busy ? <CircularProgress size={16} /> : undefined}\n >\n {busy ? 'Saving…' : 'Save'}\n </Button>\n </Stack>\n </DialogActions>\n </Dialog>\n )\n}\nAiAllotmentEditor.displayName = 'AiAllotmentEditor'\n\nexport default AiAllotmentEditor\n"],"names":["Alert","Button","Checkbox","CircularProgress","Dialog","DialogActions","DialogContent","DialogTitle","FormControlLabel","FormGroup","FormHelperText","FormLabel","Radio","RadioGroup","Stack","TextField","Typography","useEffect","useState","AI_ALLOTMENT_MAX_CREDITS","AiAllotmentEditor","props","open","initial","models","modelsOnly","poolLimit","busy","error","credits","setCredits","mode","setMode","allowed","setAllowed","invalid","setInvalid","initialCredits","initialMode","initialModels","join","String","split","parsedCredits","trim","Number","save","isInteger","length","onSave","toggle","id","current","includes","filter","entry","onClose","undefined","maxWidth","fullWidth","title","sx","display","flexDirection","gap","pt","description","variant","color","label","type","size","value","onChange","event","target","disabled","slotProps","htmlInput","min","step","helperText","toLocaleString","div","aria-labelledby","control","component","map","model","checked","severity","onRemove","onClick","mr","direction","spacing","alignItems","startIcon","displayName"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { NodeSchema } from '@aglyn/aglyn';
2
+ /**
3
+ * The besigner doors the copy assistant's provider opens (AGL-89, AGL-169),
4
+ * read by this plugin's own besigner controls (AGL-2984). A refused
5
+ * permission publishes no callback, so the control for it is not drawn.
6
+ */
7
+ export interface AiAssistActions {
8
+ /** Opens the instruction dialog that rewrites an element's copy. */
9
+ onRewrite?: (node: NodeSchema<any>) => void;
10
+ /** Opens the prompt dialog for a section grafted into the canvas root. */
11
+ onGenerateSection?: () => void;
12
+ }
13
+ export declare const AiAssistActionsContext: import("react").Context<AiAssistActions>;
@@ -0,0 +1,21 @@
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 { createContext } from "react";
18
+ export const AiAssistActionsContext = createContext({});
19
+ AiAssistActionsContext.displayName = 'AiAssistActionsContext';
20
+
21
+ //# sourceMappingURL=ai-assist-actions-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/plugins/ai/src/lib/components/ai-assist-actions-context.ts"],"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 { NodeSchema } from '@aglyn/aglyn'\nimport { createContext } from 'react'\n\n/**\n * The besigner doors the copy assistant's provider opens (AGL-89, AGL-169),\n * read by this plugin's own besigner controls (AGL-2984). A refused\n * permission publishes no callback, so the control for it is not drawn.\n */\nexport interface AiAssistActions {\n /** Opens the instruction dialog that rewrites an element's copy. */\n onRewrite?: (node: NodeSchema<any>) => void\n /** Opens the prompt dialog for a section grafted into the canvas root. */\n onGenerateSection?: () => void\n}\n\nexport const AiAssistActionsContext = createContext<AiAssistActions>({})\nAiAssistActionsContext.displayName = 'AiAssistActionsContext'\n"],"names":["createContext","AiAssistActionsContext","displayName"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GACD;AAGA,SAASA,aAAa,QAAQ,QAAO;AAcrC,OAAO,MAAMC,yBAAyBD,cAA+B,CAAC,GAAE;AACxEC,uBAAuBC,WAAW,GAAG"}
@@ -0,0 +1,51 @@
1
+ export interface AiAssistProviderProps {
2
+ /** Org billing doc for the entitlement gate (mounted by the shell). */
3
+ org?: unknown;
4
+ /**
5
+ * True once `org` is a trustworthy answer (AGL-1380). The shell mounts
6
+ * this provider above the whole console route tree, so it cannot hold its
7
+ * render until the billing doc settles the way the plugin-page route does
8
+ * — and an undefined `org` is not "unknown" to `checkEntitlement`, it is
9
+ * the free tier. Without this flag the gates below told a Pro org that AI
10
+ * assist is not on its plan for as long as the read was in flight.
11
+ */
12
+ orgReady?: boolean;
13
+ /**
14
+ * The org every assist call is metered against (AGL-2073). The route no
15
+ * longer resolves it from the signed-in user — a user with one paid org was
16
+ * getting assist on all of their free ones, and their spend was landing on
17
+ * whichever org the server happened to resolve.
18
+ */
19
+ orgId?: string;
20
+ /**
21
+ * The site the canvas belongs to (AGL-2927), sent with every assist call
22
+ * so the door can decide a site collaborator's permission on THAT site.
23
+ * Null off a host route, where there is no canvas to assist on.
24
+ */
25
+ hostId?: string | null;
26
+ /**
27
+ * The reader's AI verdict, resolved by the shell (AGL-2927). The gates
28
+ * below HOLD until `loaded` — a door opened on a pending answer would
29
+ * spend the workspace's credits on a permission nobody has confirmed —
30
+ * and a refused key removes its callback from the context, so the
31
+ * designer draws no control for it. Omitted, the answer is pending.
32
+ */
33
+ aiPermissions?: {
34
+ loaded: boolean;
35
+ use: boolean;
36
+ generate: boolean;
37
+ };
38
+ children?: JSX.Children;
39
+ }
40
+ /**
41
+ * Console-side AI copy assist (AGL-89): provides the designer's "Rewrite
42
+ * with AI" callback, hosts the instruction dialog, and calls the assist API
43
+ * (which 501-degrades when no AI provider is configured). The commit
44
+ * spreads the node's current props — `updateNodeProps` REPLACES the props
45
+ * object — and clears any stale rich-text `html` so the new text renders.
46
+ */
47
+ export declare function AiAssistProvider(props: AiAssistProviderProps): import("react").JSX.Element;
48
+ export declare namespace AiAssistProvider {
49
+ var displayName: string;
50
+ }
51
+ export default AiAssistProvider;
@@ -0,0 +1,519 @@
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 * as Aglyn from "@aglyn/aglyn";
20
+ import { checkEntitlement, lockdownRefusalText, parseLockdownRefusal } from "@aglyn/aglyn";
21
+ import { marketplaceDefinitionToNested } from "@aglyn/aglyn/app-utils/node-definition-sanitizer";
22
+ import { AiAssistActionsContext } from "./ai-assist-actions-context.js";
23
+ import { useSnackbar } from "@aglyn/shared-ui-snackstack";
24
+ import { Button, CircularProgress, Dialog, DialogActions, DialogContent, DialogTitle, MenuItem, TextField, Typography } from "@mui/material";
25
+ import { useCallback, useMemo, useState } from "react";
26
+ import { useUser } from "@aglyn/tenant-feature-instance";
27
+ import { authorizedFetch } from "@aglyn/shared-util-http/authorized-token";
28
+ import { AiModelSelector } from "./ai-model-selector.component.js";
29
+ import { AiUsageStrip } from "./ai-usage-strip.component.js";
30
+ import { useAiModelChoice } from "./use-ai-model-choice.js";
31
+ import { usePublishAiUsageMeter } from "./use-ai-usage-meter.js";
32
+ const PERMISSIONS_PENDING = 'Checking your permissions — try again in a moment';
33
+ const AI_USE_REFUSED = 'Your role does not include AI assistance — ask an organization admin';
34
+ const AI_GENERATE_REFUSED = 'Your role does not include AI generation — ask an organization admin';
35
+ /**
36
+ * Console-side AI copy assist (AGL-89): provides the designer's "Rewrite
37
+ * with AI" callback, hosts the instruction dialog, and calls the assist API
38
+ * (which 501-degrades when no AI provider is configured). The commit
39
+ * spreads the node's current props — `updateNodeProps` REPLACES the props
40
+ * object — and clears any stale rich-text `html` so the new text renders.
41
+ */ export function AiAssistProvider(props) {
42
+ var _props_hostId, _ref;
43
+ var _textTargets_;
44
+ const org = props.org;
45
+ const orgReady = props.orgReady;
46
+ const orgId = props.orgId;
47
+ const hostId = (_props_hostId = props.hostId) != null ? _props_hostId : null;
48
+ const aiPermissions = props.aiPermissions;
49
+ const { children } = props;
50
+ const { enqueueSnackbar } = useSnackbar();
51
+ const { data: user } = useUser();
52
+ const [node, setNode] = useState(null);
53
+ const [instruction, setInstruction] = useState('');
54
+ // Rewrite target (AGL-130): 'children' for text-editable elements, or
55
+ // any text attribute the element's schema declares (alt text, labels…).
56
+ const [targetProp, setTargetProp] = useState('children');
57
+ const [busy, setBusy] = useState(false);
58
+ // Generate section (AGL-169).
59
+ const [sectionOpen, setSectionOpen] = useState(false);
60
+ const [sectionPrompt, setSectionPrompt] = useState('');
61
+ // The model switch and the usage strip in both dialogs (AGL-2942). Each
62
+ // dialog remembers its own pick; one envelope store serves both strips
63
+ // and the assistant panel's.
64
+ const copyModel = useAiModelChoice({
65
+ orgId,
66
+ hostId,
67
+ surface: 'copy',
68
+ kind: 'copy.element'
69
+ });
70
+ const sectionModel = useAiModelChoice({
71
+ orgId,
72
+ hostId,
73
+ surface: 'section',
74
+ kind: 'copy.section'
75
+ });
76
+ const publishMeter = usePublishAiUsageMeter(orgId);
77
+ const textTargets = useMemo(()=>{
78
+ var _ref, _ref1;
79
+ var _schema_flags;
80
+ const schema = node == null ? void 0 : node.componentSchema;
81
+ const textEditable = (((_ref = schema == null ? void 0 : (_schema_flags = schema.flags) == null ? void 0 : _schema_flags.textEditable) != null ? _ref : Aglyn.FEATURE_FLAG.DISABLED) & Aglyn.FEATURE_FLAG.ENABLED) !== 0;
82
+ const attributes = ((_ref1 = schema == null ? void 0 : schema.attributes) != null ? _ref1 : []).filter((field)=>field.component === Aglyn.FieldComponentType.TEXT_FIELD || field.component === Aglyn.FieldComponentType.TEXTAREA).map((field)=>{
83
+ var _field_label;
84
+ return {
85
+ prop: String(field.name),
86
+ label: String((_field_label = field.label) != null ? _field_label : field.name)
87
+ };
88
+ });
89
+ return textEditable ? [
90
+ {
91
+ prop: 'children',
92
+ label: 'Element text'
93
+ },
94
+ ...attributes
95
+ ] : attributes;
96
+ }, [
97
+ node
98
+ ]);
99
+ const handleRewrite = useCallback((target)=>{
100
+ // The permission first (AGL-2927): it is a fact about the reader, and
101
+ // pending asserts nothing here either. The refusal is unreachable
102
+ // through the designer — a refused key publishes no callback — and
103
+ // stands for any other caller of the context.
104
+ if (!(aiPermissions == null ? void 0 : aiPermissions.loaded)) {
105
+ return void enqueueSnackbar(PERMISSIONS_PENDING, {
106
+ variant: 'info',
107
+ persist: false
108
+ });
109
+ }
110
+ if (!aiPermissions.use) {
111
+ return void enqueueSnackbar(AI_USE_REFUSED, {
112
+ variant: 'warning',
113
+ persist: false
114
+ });
115
+ }
116
+ // AGL-1380: pending asserts nothing. See `orgReady` on the props.
117
+ if (!orgReady) {
118
+ return void enqueueSnackbar('Checking your plan — try again in a moment', {
119
+ variant: 'info',
120
+ persist: false
121
+ });
122
+ }
123
+ if (!checkEntitlement(org, 'aiAssist')) {
124
+ return void enqueueSnackbar('AI assist requires a Pro plan — see Billing to upgrade', {
125
+ variant: 'warning',
126
+ persist: false
127
+ });
128
+ }
129
+ setInstruction('');
130
+ setTargetProp('children');
131
+ setNode(target);
132
+ }, [
133
+ org,
134
+ orgReady,
135
+ aiPermissions,
136
+ enqueueSnackbar
137
+ ]);
138
+ // Keep the target valid for the selected element.
139
+ const effectiveTarget = textTargets.some((item)=>item.prop === targetProp) ? targetProp : (_ref = (_textTargets_ = textTargets[0]) == null ? void 0 : _textTargets_.prop) != null ? _ref : 'children';
140
+ const handleConfirm = useCallback(async ()=>{
141
+ if (!node || !instruction.trim() || busy) return;
142
+ setBusy(true);
143
+ try {
144
+ var _current_props;
145
+ const current = Aglyn.canvas.toJSON().nodes[node.$id];
146
+ const text = typeof (current == null ? void 0 : (_current_props = current.props) == null ? void 0 : _current_props[effectiveTarget]) === 'string' ? current.props[effectiveTarget] : '';
147
+ const response = await authorizedFetch(user, '/api/ai/assist', {
148
+ method: 'POST',
149
+ headers: {
150
+ 'Content-Type': 'application/json'
151
+ },
152
+ body: JSON.stringify(_extends({
153
+ orgId,
154
+ hostId,
155
+ text,
156
+ instruction: instruction.trim()
157
+ }, copyModel.model ? {
158
+ model: copyModel.model
159
+ } : {}))
160
+ });
161
+ const payload = await response.json();
162
+ publishMeter(payload == null ? void 0 : payload.meter);
163
+ // An ai-assist feature lockdown (AGL-1510/1532) reads as a pause, not
164
+ // as "AI request failed" — a provider incident or a cost runaway is
165
+ // something WE turned off, and saying so keeps the user's content out
166
+ // of the story.
167
+ const locked = parseLockdownRefusal(response.status, payload);
168
+ if (locked) {
169
+ return void enqueueSnackbar(lockdownRefusalText(locked), {
170
+ variant: 'warning',
171
+ persist: true
172
+ });
173
+ }
174
+ if (response.status === 501) {
175
+ return void enqueueSnackbar('AI assist is not configured on this deployment', {
176
+ variant: 'info',
177
+ persist: false
178
+ });
179
+ }
180
+ if (!response.ok || !(payload == null ? void 0 : payload.text)) {
181
+ var _ref;
182
+ return void enqueueSnackbar((_ref = payload == null ? void 0 : payload.error) != null ? _ref : 'AI request failed', {
183
+ variant: 'error',
184
+ allowDuplicate: true
185
+ });
186
+ }
187
+ Aglyn.canvas.updateNodeProps(node, _extends({}, current == null ? void 0 : current.props, {
188
+ [effectiveTarget]: payload.text
189
+ }, effectiveTarget === 'children' ? {
190
+ html: undefined
191
+ } : {}));
192
+ setNode(null);
193
+ enqueueSnackbar('Text rewritten — undo restores the original', {
194
+ variant: 'success',
195
+ persist: false
196
+ });
197
+ } catch (error) {
198
+ console.error(error);
199
+ enqueueSnackbar('An error has occurred', {
200
+ variant: 'error',
201
+ allowDuplicate: true
202
+ });
203
+ } finally{
204
+ setBusy(false);
205
+ }
206
+ }, [
207
+ node,
208
+ instruction,
209
+ busy,
210
+ user,
211
+ effectiveTarget,
212
+ orgId,
213
+ hostId,
214
+ copyModel.model,
215
+ publishMeter,
216
+ enqueueSnackbar
217
+ ]);
218
+ const handleGenerateSection = useCallback(()=>{
219
+ // The permission first (AGL-2927) — a section is a generation, so this
220
+ // door sells under `ai.generate`; see `handleRewrite`.
221
+ if (!(aiPermissions == null ? void 0 : aiPermissions.loaded)) {
222
+ return void enqueueSnackbar(PERMISSIONS_PENDING, {
223
+ variant: 'info',
224
+ persist: false
225
+ });
226
+ }
227
+ if (!aiPermissions.generate) {
228
+ return void enqueueSnackbar(AI_GENERATE_REFUSED, {
229
+ variant: 'warning',
230
+ persist: false
231
+ });
232
+ }
233
+ // AGL-1380: same gate as `handleRewrite`.
234
+ if (!orgReady) {
235
+ return void enqueueSnackbar('Checking your plan — try again in a moment', {
236
+ variant: 'info',
237
+ persist: false
238
+ });
239
+ }
240
+ if (!checkEntitlement(org, 'aiAssist')) {
241
+ return void enqueueSnackbar('AI assist requires a Pro plan — see Billing to upgrade', {
242
+ variant: 'warning',
243
+ persist: false
244
+ });
245
+ }
246
+ setSectionPrompt('');
247
+ setSectionOpen(true);
248
+ }, [
249
+ org,
250
+ orgReady,
251
+ aiPermissions,
252
+ enqueueSnackbar
253
+ ]);
254
+ const handleSectionConfirm = useCallback(async ()=>{
255
+ if (!sectionPrompt.trim() || busy) return;
256
+ setBusy(true);
257
+ try {
258
+ var _payload_section;
259
+ const response = await authorizedFetch(user, '/api/ai/assist', {
260
+ method: 'POST',
261
+ headers: {
262
+ 'Content-Type': 'application/json'
263
+ },
264
+ body: JSON.stringify(_extends({
265
+ orgId,
266
+ hostId,
267
+ mode: 'section',
268
+ instruction: sectionPrompt.trim()
269
+ }, sectionModel.model ? {
270
+ model: sectionModel.model
271
+ } : {}))
272
+ });
273
+ const payload = await response.json();
274
+ publishMeter(payload == null ? void 0 : payload.meter);
275
+ // Same pause notice on the section-generation door (AGL-1532).
276
+ const locked = parseLockdownRefusal(response.status, payload);
277
+ if (locked) {
278
+ return void enqueueSnackbar(lockdownRefusalText(locked), {
279
+ variant: 'warning',
280
+ persist: true
281
+ });
282
+ }
283
+ if (response.status === 501) {
284
+ return void enqueueSnackbar('AI assist is not configured on this deployment', {
285
+ variant: 'info',
286
+ persist: false
287
+ });
288
+ }
289
+ if (!response.ok || !(payload == null ? void 0 : (_payload_section = payload.section) == null ? void 0 : _payload_section.rootId)) {
290
+ var _ref;
291
+ return void enqueueSnackbar((_ref = payload == null ? void 0 : payload.error) != null ? _ref : 'AI request failed', {
292
+ variant: 'error',
293
+ allowDuplicate: true
294
+ });
295
+ }
296
+ const nested = marketplaceDefinitionToNested(payload.section.rootId, payload.section.nodes);
297
+ if (!nested) {
298
+ return void enqueueSnackbar('AI returned an empty section', {
299
+ variant: 'error',
300
+ allowDuplicate: true
301
+ });
302
+ }
303
+ // Graft through the preset path: ids regenerate, history is saved,
304
+ // and the subtree lands at the end of the canvas root.
305
+ const stamped = function stamp(node) {
306
+ var _node_nodes;
307
+ const schema = Aglyn.components.getSchema(node.componentId);
308
+ return _extends({}, node, (schema == null ? void 0 : schema.pluginId) ? {
309
+ pluginId: schema.pluginId
310
+ } : {}, {
311
+ nodes: ((_node_nodes = node.nodes) != null ? _node_nodes : []).map(stamp)
312
+ });
313
+ }(nested);
314
+ Aglyn.canvas.addNodeFromPreset({
315
+ type: Aglyn.NodeType.PRESET,
316
+ data: stamped
317
+ }, Aglyn.canvas.rootNode);
318
+ setSectionOpen(false);
319
+ enqueueSnackbar('Section added — undo removes it', {
320
+ variant: 'success',
321
+ persist: false
322
+ });
323
+ } catch (error) {
324
+ console.error(error);
325
+ enqueueSnackbar('An error has occurred', {
326
+ variant: 'error',
327
+ allowDuplicate: true
328
+ });
329
+ } finally{
330
+ setBusy(false);
331
+ }
332
+ }, [
333
+ sectionPrompt,
334
+ busy,
335
+ user,
336
+ orgId,
337
+ hostId,
338
+ sectionModel.model,
339
+ publishMeter,
340
+ enqueueSnackbar
341
+ ]);
342
+ // A REFUSED key publishes no callback (AGL-2927): the besigner controls
343
+ // render only when the callback exists, so the refusal removes
344
+ // the button rather than dimming it. A PENDING answer keeps both
345
+ // callbacks, and each holds with a notice when pressed — a control that
346
+ // vanishes and reappears while the read lands is worse than one that is
347
+ // briefly inert (the `useHostRole` argument, applied here).
348
+ const refusedUse = (aiPermissions == null ? void 0 : aiPermissions.loaded) === true && !aiPermissions.use;
349
+ const refusedGenerate = (aiPermissions == null ? void 0 : aiPermissions.loaded) === true && !aiPermissions.generate;
350
+ const contextValue = useMemo(()=>_extends({}, refusedUse ? {} : {
351
+ onRewrite: handleRewrite
352
+ }, refusedGenerate ? {} : {
353
+ onGenerateSection: handleGenerateSection
354
+ }), [
355
+ handleRewrite,
356
+ handleGenerateSection,
357
+ refusedUse,
358
+ refusedGenerate
359
+ ]);
360
+ return /*#__PURE__*/ _jsxs(AiAssistActionsContext.Provider, {
361
+ value: contextValue,
362
+ children: [
363
+ children,
364
+ /*#__PURE__*/ _jsxs(Dialog, {
365
+ open: Boolean(node),
366
+ onClose: ()=>busy ? null : setNode(null),
367
+ maxWidth: "xs",
368
+ fullWidth: true,
369
+ children: [
370
+ /*#__PURE__*/ _jsx(DialogTitle, {
371
+ children: 'Rewrite with AI'
372
+ }),
373
+ /*#__PURE__*/ _jsxs(DialogContent, {
374
+ sx: {
375
+ display: 'flex',
376
+ flexDirection: 'column',
377
+ gap: 2,
378
+ pt: 1
379
+ },
380
+ children: [
381
+ /*#__PURE__*/ _jsx(Typography, {
382
+ variant: "body2",
383
+ color: "text.secondary",
384
+ children: 'Describe how the text should change — tone, length, message.'
385
+ }),
386
+ textTargets.length > 1 ? /*#__PURE__*/ _jsx(TextField, {
387
+ select: true,
388
+ label: "Field",
389
+ value: effectiveTarget,
390
+ onChange: (event)=>setTargetProp(event.target.value),
391
+ size: "small",
392
+ disabled: busy,
393
+ children: textTargets.map((item)=>/*#__PURE__*/ _jsx(MenuItem, {
394
+ value: item.prop,
395
+ children: item.label
396
+ }, item.prop))
397
+ }) : null,
398
+ /*#__PURE__*/ _jsx(TextField, {
399
+ label: "Instruction",
400
+ placeholder: "e.g. Make it punchier and half as long",
401
+ value: instruction,
402
+ onChange: (event)=>setInstruction(event.target.value),
403
+ size: "small",
404
+ autoFocus: true,
405
+ multiline: true,
406
+ minRows: 2,
407
+ disabled: busy,
408
+ onKeyDown: (event)=>{
409
+ if (event.key === 'Enter' && (event.metaKey || event.ctrlKey)) {
410
+ event.preventDefault();
411
+ handleConfirm();
412
+ }
413
+ }
414
+ }),
415
+ /*#__PURE__*/ _jsx(AiModelSelector, {
416
+ choice: copyModel,
417
+ disabled: busy
418
+ }),
419
+ /*#__PURE__*/ _jsx(AiUsageStrip, {
420
+ orgId: orgId
421
+ })
422
+ ]
423
+ }),
424
+ /*#__PURE__*/ _jsxs(DialogActions, {
425
+ children: [
426
+ /*#__PURE__*/ _jsx(Button, {
427
+ disabled: busy,
428
+ onClick: ()=>setNode(null),
429
+ children: 'Cancel'
430
+ }),
431
+ /*#__PURE__*/ _jsx(Button, {
432
+ variant: "contained",
433
+ color: "primary",
434
+ disabled: !instruction.trim() || busy,
435
+ startIcon: busy ? /*#__PURE__*/ _jsx(CircularProgress, {
436
+ size: 16
437
+ }) : undefined,
438
+ onClick: handleConfirm,
439
+ children: busy ? 'Rewriting…' : 'Rewrite'
440
+ })
441
+ ]
442
+ })
443
+ ]
444
+ }),
445
+ /*#__PURE__*/ _jsxs(Dialog, {
446
+ open: sectionOpen,
447
+ onClose: ()=>busy ? null : setSectionOpen(false),
448
+ maxWidth: "xs",
449
+ fullWidth: true,
450
+ children: [
451
+ /*#__PURE__*/ _jsx(DialogTitle, {
452
+ children: 'Generate a section with AI'
453
+ }),
454
+ /*#__PURE__*/ _jsxs(DialogContent, {
455
+ sx: {
456
+ display: 'flex',
457
+ flexDirection: 'column',
458
+ gap: 2,
459
+ pt: 1
460
+ },
461
+ children: [
462
+ /*#__PURE__*/ _jsx(Typography, {
463
+ variant: "body2",
464
+ color: "text.secondary",
465
+ children: 'Describe the section — e.g. "hero with headline, subtext, ' + 'and a call-to-action button" or "three-column feature grid".'
466
+ }),
467
+ /*#__PURE__*/ _jsx(TextField, {
468
+ label: "Section",
469
+ value: sectionPrompt,
470
+ onChange: (event)=>setSectionPrompt(event.target.value),
471
+ size: "small",
472
+ autoFocus: true,
473
+ multiline: true,
474
+ minRows: 2,
475
+ disabled: busy,
476
+ onKeyDown: (event)=>{
477
+ if (event.key === 'Enter' && (event.metaKey || event.ctrlKey)) {
478
+ event.preventDefault();
479
+ handleSectionConfirm();
480
+ }
481
+ }
482
+ }),
483
+ /*#__PURE__*/ _jsx(AiModelSelector, {
484
+ choice: sectionModel,
485
+ disabled: busy
486
+ }),
487
+ /*#__PURE__*/ _jsx(AiUsageStrip, {
488
+ orgId: orgId
489
+ })
490
+ ]
491
+ }),
492
+ /*#__PURE__*/ _jsxs(DialogActions, {
493
+ children: [
494
+ /*#__PURE__*/ _jsx(Button, {
495
+ disabled: busy,
496
+ onClick: ()=>setSectionOpen(false),
497
+ children: 'Cancel'
498
+ }),
499
+ /*#__PURE__*/ _jsx(Button, {
500
+ variant: "contained",
501
+ color: "primary",
502
+ disabled: !sectionPrompt.trim() || busy,
503
+ startIcon: busy ? /*#__PURE__*/ _jsx(CircularProgress, {
504
+ size: 16
505
+ }) : undefined,
506
+ onClick: handleSectionConfirm,
507
+ children: busy ? 'Generating…' : 'Generate'
508
+ })
509
+ ]
510
+ })
511
+ ]
512
+ })
513
+ ]
514
+ });
515
+ }
516
+ AiAssistProvider.displayName = 'AiAssistProvider';
517
+ export default AiAssistProvider;
518
+
519
+ //# sourceMappingURL=ai-assist-provider.component.js.map