@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,263 @@
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 { pluginDocsHelp } from "@aglyn/aglyn/app-utils/docs-help";
19
+ import { useHostOrgId } from "@aglyn/tenant-feature-instance";
20
+ import { Alert, Box, Button, CircularProgress, Link, Stack, Typography } from "@mui/material";
21
+ import { useMemo } from "react";
22
+ import { AI_CRM_RECORD_KINDS } from "../model/ai-crm.js";
23
+ import { useAiCrmAnswer } from "./use-ai-crm-answer.js";
24
+ const TASK_KIND_WORDS = {
25
+ call: 'Call',
26
+ email: 'Email',
27
+ meeting: 'Meeting',
28
+ todo: 'To-do'
29
+ };
30
+ /** When a suggested task is due, in words. */ export function aiCrmDueWords(dueInDays) {
31
+ if (dueInDays <= 0) return 'due today';
32
+ if (dueInDays === 1) return 'due tomorrow';
33
+ return `due in ${dueInDays} days`;
34
+ }
35
+ /** A suggested next step as the task form takes it. */ export function aiCrmTaskOf(step) {
36
+ return {
37
+ title: step.title,
38
+ notes: step.reason,
39
+ kind: step.kind,
40
+ priority: step.priority,
41
+ dueInDays: step.dueInDays
42
+ };
43
+ }
44
+ const recordKindOf = (kind)=>AI_CRM_RECORD_KINDS.includes(kind) ? kind : null;
45
+ /**
46
+ * "Summarize this contact" (AGL-2917), on a CRM record's page through the
47
+ * `recordInsights` zone: a contact's, company's, deal's or lead's summary,
48
+ * with a suggested next step, a deal's suggested stage and a lead's standing.
49
+ *
50
+ * The card writes nothing. A next step goes to the page's own task form
51
+ * through `proposeTask`, whose Save is the write, and a stage to the page's
52
+ * stage move through `proposeStage`, which asks the member first. A summary
53
+ * any member asked for is shown to every member who can open the record, and
54
+ * asking again for an unchanged record reuses it at no cost.
55
+ *
56
+ * It renders nothing until the jobs route has answered for this workspace:
57
+ * the shell decided the plan and the permission, but the release flag is the
58
+ * route's, and a 404 there is this card staying absent.
59
+ */ export function AiCrmRecordCard(props) {
60
+ var _ref, _props_orgId, _ref1, _find;
61
+ var _run_answer, _run_answer1, _run_job;
62
+ const { hostId, record, proposeTask, stages, stageId, proposeStage } = props;
63
+ // A record page may not know the org yet; its site does.
64
+ const hostOrgId = useHostOrgId(props.orgId || !hostId ? undefined : hostId);
65
+ const orgId = (_ref = (_props_orgId = props.orgId) != null ? _props_orgId : hostOrgId) != null ? _ref : undefined;
66
+ const kind = recordKindOf(record.kind);
67
+ const recordId = record.id;
68
+ const wanted = useMemo(()=>kind ? {
69
+ kind: 'record',
70
+ record: {
71
+ kind,
72
+ id: recordId
73
+ }
74
+ } : null, [
75
+ kind,
76
+ recordId
77
+ ]);
78
+ const run = useAiCrmAnswer({
79
+ orgId,
80
+ hostId,
81
+ wanted,
82
+ recall: 'any'
83
+ });
84
+ if (!kind || run.verdict !== 'ready') return null;
85
+ const proposal = ((_run_answer = run.answer) == null ? void 0 : _run_answer.proposal.kind) === 'record' ? run.answer.proposal : null;
86
+ const jobId = (_ref1 = (_run_answer1 = run.answer) == null ? void 0 : _run_answer1.jobId) != null ? _ref1 : '';
87
+ const working = run.busy || run.running;
88
+ const nextStep = (proposal == null ? void 0 : proposal.nextStep) && proposeTask ? proposal.nextStep : null;
89
+ const offeredStage = (proposal == null ? void 0 : proposal.stage) && proposeStage && proposal.stage.stageId !== stageId ? (_find = (stages != null ? stages : []).find((stage)=>{
90
+ var _proposal_stage;
91
+ return stage.id === ((_proposal_stage = proposal.stage) == null ? void 0 : _proposal_stage.stageId);
92
+ })) != null ? _find : null : null;
93
+ const help = pluginDocsHelp('aiCrm', {
94
+ anchor: '#summarize-a-record',
95
+ excerpt: 'A short summary of this record and a suggested next step, from its timeline. Nothing is saved until you save it.'
96
+ });
97
+ return /*#__PURE__*/ _jsx(Box, {
98
+ sx: {
99
+ border: 1,
100
+ borderColor: 'divider',
101
+ borderRadius: 1,
102
+ p: 1.5
103
+ },
104
+ "aria-label": "AI summary",
105
+ children: /*#__PURE__*/ _jsxs(Stack, {
106
+ spacing: 1.5,
107
+ children: [
108
+ /*#__PURE__*/ _jsxs(Stack, {
109
+ direction: "row",
110
+ spacing: 1,
111
+ sx: {
112
+ alignItems: 'baseline'
113
+ },
114
+ children: [
115
+ /*#__PURE__*/ _jsx(Typography, {
116
+ variant: "subtitle2",
117
+ sx: {
118
+ flexGrow: 1
119
+ },
120
+ children: 'AI summary'
121
+ }),
122
+ /*#__PURE__*/ _jsx(Link, {
123
+ href: help.href,
124
+ target: "_blank",
125
+ rel: "noopener",
126
+ variant: "caption",
127
+ title: help.excerpt,
128
+ children: 'How it works'
129
+ })
130
+ ]
131
+ }),
132
+ proposal ? /*#__PURE__*/ _jsxs(Stack, {
133
+ spacing: 0.5,
134
+ children: [
135
+ /*#__PURE__*/ _jsx(Typography, {
136
+ variant: "body2",
137
+ sx: {
138
+ wordBreak: 'break-word'
139
+ },
140
+ children: proposal.summary
141
+ }),
142
+ proposal.standing ? /*#__PURE__*/ _jsx(Typography, {
143
+ variant: "body2",
144
+ color: "text.secondary",
145
+ sx: {
146
+ wordBreak: 'break-word'
147
+ },
148
+ children: proposal.standing
149
+ }) : null,
150
+ /*#__PURE__*/ _jsx(Typography, {
151
+ variant: "caption",
152
+ color: "text.secondary",
153
+ children: `Written from the timeline on ${proposal.asOf}.`
154
+ })
155
+ ]
156
+ }) : null,
157
+ nextStep && proposeTask ? /*#__PURE__*/ _jsxs(Stack, {
158
+ spacing: 0.5,
159
+ "aria-label": "Suggested next step",
160
+ children: [
161
+ /*#__PURE__*/ _jsx(Typography, {
162
+ variant: "caption",
163
+ color: "text.secondary",
164
+ children: 'Suggested next step'
165
+ }),
166
+ /*#__PURE__*/ _jsx(Typography, {
167
+ variant: "body2",
168
+ sx: {
169
+ wordBreak: 'break-word'
170
+ },
171
+ children: `${nextStep.title} (${TASK_KIND_WORDS[nextStep.kind]}, ${nextStep.priority} priority, ${aiCrmDueWords(nextStep.dueInDays)})`
172
+ }),
173
+ /*#__PURE__*/ _jsx(Typography, {
174
+ variant: "caption",
175
+ color: "text.secondary",
176
+ sx: {
177
+ wordBreak: 'break-word'
178
+ },
179
+ children: nextStep.reason
180
+ }),
181
+ /*#__PURE__*/ _jsx(Button, {
182
+ size: "small",
183
+ variant: "contained",
184
+ sx: {
185
+ alignSelf: 'flex-start'
186
+ },
187
+ onClick: ()=>proposeTask(aiCrmTaskOf(nextStep), jobId),
188
+ children: 'Create task'
189
+ })
190
+ ]
191
+ }) : null,
192
+ offeredStage && (proposal == null ? void 0 : proposal.stage) && proposeStage ? /*#__PURE__*/ _jsxs(Stack, {
193
+ spacing: 0.5,
194
+ "aria-label": "Suggested stage",
195
+ children: [
196
+ /*#__PURE__*/ _jsx(Typography, {
197
+ variant: "caption",
198
+ color: "text.secondary",
199
+ children: 'Suggested stage'
200
+ }),
201
+ /*#__PURE__*/ _jsx(Typography, {
202
+ variant: "body2",
203
+ children: offeredStage.name
204
+ }),
205
+ /*#__PURE__*/ _jsx(Typography, {
206
+ variant: "caption",
207
+ color: "text.secondary",
208
+ sx: {
209
+ wordBreak: 'break-word'
210
+ },
211
+ children: proposal.stage.reason
212
+ }),
213
+ /*#__PURE__*/ _jsx(Button, {
214
+ size: "small",
215
+ variant: "outlined",
216
+ sx: {
217
+ alignSelf: 'flex-start'
218
+ },
219
+ onClick: ()=>proposeStage(offeredStage.id, jobId),
220
+ children: `Move to ${offeredStage.name}`
221
+ })
222
+ ]
223
+ }) : null,
224
+ /*#__PURE__*/ _jsxs(Stack, {
225
+ direction: "row",
226
+ spacing: 1,
227
+ sx: {
228
+ alignItems: 'center'
229
+ },
230
+ children: [
231
+ /*#__PURE__*/ _jsx(Button, {
232
+ size: "small",
233
+ variant: "outlined",
234
+ disabled: working || !orgId,
235
+ onClick: ()=>void run.ask(`Summarize this ${kind}`, {
236
+ task: 'record',
237
+ record: kind,
238
+ recordId
239
+ }),
240
+ children: proposal ? 'Summarize again' : `Summarize this ${kind}`
241
+ }),
242
+ working ? /*#__PURE__*/ _jsx(CircularProgress, {
243
+ size: 16,
244
+ "aria-label": "Summarizing"
245
+ }) : null
246
+ ]
247
+ }),
248
+ run.notice ? /*#__PURE__*/ _jsx(Alert, {
249
+ severity: "warning",
250
+ children: run.notice
251
+ }) : null,
252
+ ((_run_job = run.job) == null ? void 0 : _run_job.error) && !proposal ? /*#__PURE__*/ _jsx(Alert, {
253
+ severity: run.job.status === 'failed' ? 'error' : 'warning',
254
+ children: run.job.error
255
+ }) : null
256
+ ]
257
+ })
258
+ });
259
+ }
260
+ AiCrmRecordCard.displayName = 'AiCrmRecordCard';
261
+ export default AiCrmRecordCard;
262
+
263
+ //# sourceMappingURL=ai-crm-record-card.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/plugins/ai/src/lib/components/ai-crm-record-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 type { ConsoleRecordInsightsZoneProps } from '@aglyn/aglyn/plugin-manager/feature-plugins'\nimport type { ConsoleProposedTask } from '@aglyn/aglyn/plugin-manager/record-zone-props'\nimport { useHostOrgId } from '@aglyn/tenant-feature-instance'\nimport { Alert, Box, Button, CircularProgress, Link, Stack, Typography } from '@mui/material'\nimport { useMemo } from 'react'\nimport {\n AI_CRM_RECORD_KINDS,\n type AiCrmAnswerWanted,\n type AiCrmNextStep,\n type AiCrmRecordKind,\n} from '../model/ai-crm'\nimport { useAiCrmAnswer } from './use-ai-crm-answer'\n\nconst TASK_KIND_WORDS: Record<AiCrmNextStep['kind'], string> = {\n call: 'Call',\n email: 'Email',\n meeting: 'Meeting',\n todo: 'To-do',\n}\n\n/** When a suggested task is due, in words. */\nexport function aiCrmDueWords(dueInDays: number): string {\n if (dueInDays <= 0) return 'due today'\n if (dueInDays === 1) return 'due tomorrow'\n return `due in ${dueInDays} days`\n}\n\n/** A suggested next step as the task form takes it. */\nexport function aiCrmTaskOf(step: AiCrmNextStep): ConsoleProposedTask {\n return { title: step.title, notes: step.reason, kind: step.kind, priority: step.priority, dueInDays: step.dueInDays }\n}\n\nconst recordKindOf = (kind: string): AiCrmRecordKind | null =>\n (AI_CRM_RECORD_KINDS as readonly string[]).includes(kind) ? (kind as AiCrmRecordKind) : null\n\n/**\n * \"Summarize this contact\" (AGL-2917), on a CRM record's page through the\n * `recordInsights` zone: a contact's, company's, deal's or lead's summary,\n * with a suggested next step, a deal's suggested stage and a lead's standing.\n *\n * The card writes nothing. A next step goes to the page's own task form\n * through `proposeTask`, whose Save is the write, and a stage to the page's\n * stage move through `proposeStage`, which asks the member first. A summary\n * any member asked for is shown to every member who can open the record, and\n * asking again for an unchanged record reuses it at no cost.\n *\n * It renders nothing until the jobs route has answered for this workspace:\n * the shell decided the plan and the permission, but the release flag is the\n * route's, and a 404 there is this card staying absent.\n */\nexport function AiCrmRecordCard(props: ConsoleRecordInsightsZoneProps) {\n const { hostId, record, proposeTask, stages, stageId, proposeStage } = props\n // A record page may not know the org yet; its site does.\n const hostOrgId = useHostOrgId(props.orgId || !hostId ? undefined : hostId)\n const orgId = props.orgId ?? hostOrgId ?? undefined\n const kind = recordKindOf(record.kind)\n const recordId = record.id\n const wanted = useMemo<AiCrmAnswerWanted | null>(\n () => (kind ? { kind: 'record', record: { kind, id: recordId } } : null),\n [kind, recordId],\n )\n const run = useAiCrmAnswer({ orgId, hostId, wanted, recall: 'any' })\n\n if (!kind || run.verdict !== 'ready') return null\n\n const proposal = run.answer?.proposal.kind === 'record' ? run.answer.proposal : null\n const jobId = run.answer?.jobId ?? ''\n const working = run.busy || run.running\n const nextStep = proposal?.nextStep && proposeTask ? proposal.nextStep : null\n const offeredStage =\n proposal?.stage && proposeStage && proposal.stage.stageId !== stageId\n ? (stages ?? []).find((stage) => stage.id === proposal.stage?.stageId) ?? null\n : null\n const help = pluginDocsHelp('aiCrm', {\n anchor: '#summarize-a-record',\n excerpt: 'A short summary of this record and a suggested next step, from its timeline. Nothing is saved until you save it.',\n })\n\n return (\n <Box sx={{ border: 1, borderColor: 'divider', borderRadius: 1, p: 1.5 }} aria-label=\"AI summary\">\n <Stack spacing={1.5}>\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'baseline' }}>\n <Typography variant=\"subtitle2\" sx={{ flexGrow: 1 }}>\n {'AI summary'}\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\n {proposal ? (\n <Stack spacing={0.5}>\n <Typography variant=\"body2\" sx={{ wordBreak: 'break-word' }}>\n {proposal.summary}\n </Typography>\n {proposal.standing ? (\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ wordBreak: 'break-word' }}>\n {proposal.standing}\n </Typography>\n ) : null}\n <Typography variant=\"caption\" color=\"text.secondary\">\n {`Written from the timeline on ${proposal.asOf}.`}\n </Typography>\n </Stack>\n ) : null}\n\n {nextStep && proposeTask ? (\n <Stack spacing={0.5} aria-label=\"Suggested next step\">\n <Typography variant=\"caption\" color=\"text.secondary\">\n {'Suggested next step'}\n </Typography>\n <Typography variant=\"body2\" sx={{ wordBreak: 'break-word' }}>\n {`${nextStep.title} (${TASK_KIND_WORDS[nextStep.kind]}, ${nextStep.priority} priority, ${aiCrmDueWords(nextStep.dueInDays)})`}\n </Typography>\n <Typography variant=\"caption\" color=\"text.secondary\" sx={{ wordBreak: 'break-word' }}>\n {nextStep.reason}\n </Typography>\n <Button\n size=\"small\"\n variant=\"contained\"\n sx={{ alignSelf: 'flex-start' }}\n onClick={() => proposeTask(aiCrmTaskOf(nextStep), jobId)}\n >\n {'Create task'}\n </Button>\n </Stack>\n ) : null}\n\n {offeredStage && proposal?.stage && proposeStage ? (\n <Stack spacing={0.5} aria-label=\"Suggested stage\">\n <Typography variant=\"caption\" color=\"text.secondary\">\n {'Suggested stage'}\n </Typography>\n <Typography variant=\"body2\">{offeredStage.name}</Typography>\n <Typography variant=\"caption\" color=\"text.secondary\" sx={{ wordBreak: 'break-word' }}>\n {proposal.stage.reason}\n </Typography>\n <Button\n size=\"small\"\n variant=\"outlined\"\n sx={{ alignSelf: 'flex-start' }}\n onClick={() => proposeStage(offeredStage.id, jobId)}\n >\n {`Move to ${offeredStage.name}`}\n </Button>\n </Stack>\n ) : null}\n\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'center' }}>\n <Button\n size=\"small\"\n variant=\"outlined\"\n disabled={working || !orgId}\n onClick={() => void run.ask(`Summarize this ${kind}`, { task: 'record', record: kind, recordId })}\n >\n {proposal ? 'Summarize again' : `Summarize this ${kind}`}\n </Button>\n {working ? <CircularProgress size={16} aria-label=\"Summarizing\" /> : null}\n </Stack>\n {run.notice ? <Alert severity=\"warning\">{run.notice}</Alert> : null}\n {run.job?.error && !proposal ? (\n <Alert severity={run.job.status === 'failed' ? 'error' : 'warning'}>{run.job.error}</Alert>\n ) : null}\n </Stack>\n </Box>\n )\n}\nAiCrmRecordCard.displayName = 'AiCrmRecordCard'\n\nexport default AiCrmRecordCard\n"],"names":["pluginDocsHelp","useHostOrgId","Alert","Box","Button","CircularProgress","Link","Stack","Typography","useMemo","AI_CRM_RECORD_KINDS","useAiCrmAnswer","TASK_KIND_WORDS","call","email","meeting","todo","aiCrmDueWords","dueInDays","aiCrmTaskOf","step","title","notes","reason","kind","priority","recordKindOf","includes","AiCrmRecordCard","props","run","hostId","record","proposeTask","stages","stageId","proposeStage","hostOrgId","orgId","undefined","recordId","id","wanted","recall","verdict","proposal","answer","jobId","working","busy","running","nextStep","offeredStage","stage","find","help","anchor","excerpt","sx","border","borderColor","borderRadius","p","aria-label","spacing","direction","alignItems","variant","flexGrow","href","target","rel","wordBreak","summary","standing","color","asOf","size","alignSelf","onClick","name","disabled","ask","task","notice","severity","job","error","status","displayName"],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { ConsoleHostAutomationsZoneProps } from '@aglyn/aglyn/plugin-manager/feature-plugins';
2
+ import { useAiJobRun } from './use-ai-job-run';
3
+ export declare const AI_AUTOMATION_BRIEF_COPY: {
4
+ readonly title: "Describe an automation";
5
+ readonly briefLabel: "What should happen, and when?";
6
+ readonly placeholder: string;
7
+ readonly next: string;
8
+ readonly submit: "Draft the automation";
9
+ readonly started: string;
10
+ readonly drafted: "Drafted";
11
+ readonly review: "Review it";
12
+ readonly notListed: "The draft is saved. It appears in the list in a moment.";
13
+ readonly failed: "The automation could not be drafted. Try again.";
14
+ };
15
+ export interface AiAutomationBriefDialogProps {
16
+ open: boolean;
17
+ onClose: () => void;
18
+ orgId: string | undefined;
19
+ hostId: string;
20
+ /** Who is signed in, whose token the requests carry. */
21
+ user: Parameters<typeof useAiJobRun>[0];
22
+ /** Opens a listed action in the Actions editor; `false` when the list has not read it yet. */
23
+ openAction: (actionId: string) => boolean;
24
+ }
25
+ export declare function AiAutomationBriefDialog(props: AiAutomationBriefDialogProps): import("react").JSX.Element;
26
+ /**
27
+ * Renders nothing until the jobs route has answered for this workspace, and
28
+ * nothing when it says the feature is not this workspace's.
29
+ */
30
+ export declare function AiDescribeAutomationButton({ hostId, orgId, openAction }: ConsoleHostAutomationsZoneProps): import("react").JSX.Element;
31
+ export default AiDescribeAutomationButton;
@@ -0,0 +1,226 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * @license
5
+ * Copyright 2026 Aglyn LLC
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */ import { pluginDocsHelp } from "@aglyn/aglyn/app-utils/docs-help";
19
+ import { useUser } from "@aglyn/tenant-feature-instance";
20
+ import { Alert, Button, CircularProgress, Dialog, DialogActions, DialogContent, DialogTitle, Link, Stack, TextField, Typography } from "@mui/material";
21
+ import { useEffect, useState } from "react";
22
+ import { aiJobProblem, useAiJobRun, useAiJobsVerdict } from "./use-ai-job-run.js";
23
+ /**
24
+ * "Describe it" on the Automation page's Actions (AGL-2919), beside Add action
25
+ * and Recipes through the `hostAutomations` zone: a description becomes a
26
+ * `workflow` job that drafts one automation, switched off.
27
+ *
28
+ * The dialog follows the shared brief dialog's shape — one text box, what
29
+ * happens next, and the action that starts the job — and then follows the
30
+ * job, because an automation's draft needs no plan to confirm: when it is
31
+ * written, the dialog says what to fill in and opens it in the Actions editor.
32
+ */ /** The longest description a job admits. */ const BRIEF_MAX_CHARS = 4000;
33
+ export const AI_AUTOMATION_BRIEF_COPY = {
34
+ title: 'Describe an automation',
35
+ briefLabel: 'What should happen, and when?',
36
+ placeholder: 'When someone submits the newsletter form, add them to the newsletter list, make them ' + 'a lead and send them a welcome email',
37
+ next: 'The automation is drafted switched off, using only the triggers and steps your plan ' + 'includes. Anything it needs that your site does not have yet is left for you to fill in.',
38
+ submit: 'Draft the automation',
39
+ started: 'The automation is being drafted. This can take a few minutes. You can close this ' + 'window: the draft appears in the list, switched off, when it is ready.',
40
+ drafted: 'Drafted',
41
+ review: 'Review it',
42
+ notListed: 'The draft is saved. It appears in the list in a moment.',
43
+ failed: 'The automation could not be drafted. Try again.'
44
+ };
45
+ export function AiAutomationBriefDialog(props) {
46
+ var _aiJobProblem;
47
+ const { open, onClose, orgId, hostId, user, openAction } = props;
48
+ const copy = AI_AUTOMATION_BRIEF_COPY;
49
+ const help = pluginDocsHelp('aiAutomations');
50
+ const [brief, setBrief] = useState('');
51
+ const [notListed, setNotListed] = useState(false);
52
+ const run = useAiJobRun(user, copy.failed);
53
+ const { job, starting, running, notice, reset } = run;
54
+ // Opening or closing starts over and stops following: a job still drafting
55
+ // carries on in AI jobs, and its draft appears in the list when it is written.
56
+ useEffect(()=>{
57
+ reset();
58
+ setNotListed(false);
59
+ }, [
60
+ open,
61
+ reset
62
+ ]);
63
+ const draft = (job == null ? void 0 : job.status) === 'done' ? job.outputs.find((output)=>output.resource === 'workflow') : undefined;
64
+ const problem = (_aiJobProblem = aiJobProblem(job, copy.failed)) != null ? _aiJobProblem : (job == null ? void 0 : job.status) === 'done' && !draft ? copy.failed : null;
65
+ const asking = !job || Boolean(notice);
66
+ const start = async ()=>{
67
+ const trimmed = brief.trim();
68
+ if (!orgId || !trimmed) return;
69
+ setNotListed(false);
70
+ if (await run.start({
71
+ orgId,
72
+ hostId,
73
+ kind: 'workflow',
74
+ brief: trimmed,
75
+ inputs: {
76
+ mode: 'draft'
77
+ }
78
+ })) {
79
+ setBrief('');
80
+ }
81
+ };
82
+ const review = ()=>{
83
+ if (!draft) return;
84
+ if (openAction(draft.id)) onClose();
85
+ else setNotListed(true);
86
+ };
87
+ return /*#__PURE__*/ _jsxs(Dialog, {
88
+ open: open,
89
+ onClose: starting ? undefined : onClose,
90
+ fullWidth: true,
91
+ maxWidth: "sm",
92
+ children: [
93
+ /*#__PURE__*/ _jsx(DialogTitle, {
94
+ children: copy.title
95
+ }),
96
+ /*#__PURE__*/ _jsx(DialogContent, {
97
+ children: asking ? /*#__PURE__*/ _jsxs(Stack, {
98
+ spacing: 2,
99
+ sx: {
100
+ pt: 1
101
+ },
102
+ children: [
103
+ /*#__PURE__*/ _jsx(TextField, {
104
+ label: copy.briefLabel,
105
+ placeholder: copy.placeholder,
106
+ multiline: true,
107
+ minRows: 4,
108
+ value: brief,
109
+ onChange: (event)=>setBrief(event.target.value.slice(0, BRIEF_MAX_CHARS)),
110
+ helperText: `${brief.length.toLocaleString('en-US')} / ${BRIEF_MAX_CHARS.toLocaleString('en-US')}`,
111
+ disabled: starting,
112
+ autoFocus: true
113
+ }),
114
+ /*#__PURE__*/ _jsxs(Typography, {
115
+ variant: "body2",
116
+ color: "text.secondary",
117
+ children: [
118
+ copy.next,
119
+ ' ',
120
+ /*#__PURE__*/ _jsx(Link, {
121
+ href: help.href,
122
+ target: "_blank",
123
+ rel: "noopener",
124
+ title: help.excerpt,
125
+ children: 'How it works'
126
+ })
127
+ ]
128
+ }),
129
+ notice ? /*#__PURE__*/ _jsx(Alert, {
130
+ severity: "warning",
131
+ children: notice
132
+ }) : null
133
+ ]
134
+ }) : /*#__PURE__*/ _jsxs(Stack, {
135
+ spacing: 2,
136
+ sx: {
137
+ pt: 1
138
+ },
139
+ children: [
140
+ running ? /*#__PURE__*/ _jsx(Alert, {
141
+ severity: "info",
142
+ icon: /*#__PURE__*/ _jsx(CircularProgress, {
143
+ size: 18,
144
+ "aria-label": "Drafting"
145
+ }),
146
+ children: copy.started
147
+ }) : null,
148
+ draft ? /*#__PURE__*/ _jsxs(Alert, {
149
+ severity: "success",
150
+ children: [
151
+ /*#__PURE__*/ _jsx(Typography, {
152
+ variant: "body2",
153
+ sx: {
154
+ fontWeight: 600
155
+ },
156
+ children: `${copy.drafted}: ${draft.label}`
157
+ }),
158
+ draft.note ? /*#__PURE__*/ _jsx(Typography, {
159
+ variant: "body2",
160
+ children: draft.note
161
+ }) : null
162
+ ]
163
+ }) : null,
164
+ problem ? /*#__PURE__*/ _jsx(Alert, {
165
+ severity: (job == null ? void 0 : job.status) === 'failed' ? 'error' : 'warning',
166
+ children: problem
167
+ }) : null,
168
+ notListed ? /*#__PURE__*/ _jsx(Alert, {
169
+ severity: "info",
170
+ children: copy.notListed
171
+ }) : null
172
+ ]
173
+ })
174
+ }),
175
+ /*#__PURE__*/ _jsxs(DialogActions, {
176
+ children: [
177
+ /*#__PURE__*/ _jsx(Button, {
178
+ onClick: onClose,
179
+ disabled: starting,
180
+ children: asking ? 'Cancel' : 'Close'
181
+ }),
182
+ asking ? /*#__PURE__*/ _jsx(Button, {
183
+ variant: "contained",
184
+ onClick: ()=>void start(),
185
+ disabled: starting || !orgId || !brief.trim(),
186
+ children: copy.submit
187
+ }) : draft ? /*#__PURE__*/ _jsx(Button, {
188
+ variant: "contained",
189
+ onClick: review,
190
+ children: copy.review
191
+ }) : null
192
+ ]
193
+ })
194
+ ]
195
+ });
196
+ }
197
+ /**
198
+ * Renders nothing until the jobs route has answered for this workspace, and
199
+ * nothing when it says the feature is not this workspace's.
200
+ */ export function AiDescribeAutomationButton({ hostId, orgId, openAction }) {
201
+ const { data: user } = useUser();
202
+ const verdict = useAiJobsVerdict(user, orgId);
203
+ const [open, setOpen] = useState(false);
204
+ if (verdict !== 'ready') return null;
205
+ return /*#__PURE__*/ _jsxs(_Fragment, {
206
+ children: [
207
+ /*#__PURE__*/ _jsx(Button, {
208
+ size: "small",
209
+ variant: "outlined",
210
+ onClick: ()=>setOpen(true),
211
+ children: 'Describe it'
212
+ }),
213
+ /*#__PURE__*/ _jsx(AiAutomationBriefDialog, {
214
+ open: open,
215
+ onClose: ()=>setOpen(false),
216
+ orgId: orgId,
217
+ hostId: hostId,
218
+ user: user,
219
+ openAction: openAction
220
+ })
221
+ ]
222
+ });
223
+ }
224
+ export default AiDescribeAutomationButton;
225
+
226
+ //# sourceMappingURL=ai-describe-automation.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/plugins/ai/src/lib/components/ai-describe-automation.component.tsx"],"sourcesContent":["'use client'\n\n/**\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\nimport { pluginDocsHelp } from '@aglyn/aglyn/app-utils/docs-help'\nimport type { ConsoleHostAutomationsZoneProps } from '@aglyn/aglyn/plugin-manager/feature-plugins'\nimport { useUser } from '@aglyn/tenant-feature-instance'\nimport {\n Alert,\n Button,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Link,\n Stack,\n TextField,\n Typography,\n} from '@mui/material'\nimport { useEffect, useState } from 'react'\nimport { aiJobProblem, useAiJobRun, useAiJobsVerdict } from './use-ai-job-run'\n\n/**\n * \"Describe it\" on the Automation page's Actions (AGL-2919), beside Add action\n * and Recipes through the `hostAutomations` zone: a description becomes a\n * `workflow` job that drafts one automation, switched off.\n *\n * The dialog follows the shared brief dialog's shape — one text box, what\n * happens next, and the action that starts the job — and then follows the\n * job, because an automation's draft needs no plan to confirm: when it is\n * written, the dialog says what to fill in and opens it in the Actions editor.\n */\n\n/** The longest description a job admits. */\nconst BRIEF_MAX_CHARS = 4_000\n\nexport const AI_AUTOMATION_BRIEF_COPY = {\n title: 'Describe an automation',\n briefLabel: 'What should happen, and when?',\n placeholder:\n 'When someone submits the newsletter form, add them to the newsletter list, make them ' +\n 'a lead and send them a welcome email',\n next:\n 'The automation is drafted switched off, using only the triggers and steps your plan ' +\n 'includes. Anything it needs that your site does not have yet is left for you to fill in.',\n submit: 'Draft the automation',\n started:\n 'The automation is being drafted. This can take a few minutes. You can close this ' +\n 'window: the draft appears in the list, switched off, when it is ready.',\n drafted: 'Drafted',\n review: 'Review it',\n notListed: 'The draft is saved. It appears in the list in a moment.',\n failed: 'The automation could not be drafted. Try again.',\n} as const\n\nexport interface AiAutomationBriefDialogProps {\n open: boolean\n onClose: () => void\n orgId: string | undefined\n hostId: string\n /** Who is signed in, whose token the requests carry. */\n user: Parameters<typeof useAiJobRun>[0]\n /** Opens a listed action in the Actions editor; `false` when the list has not read it yet. */\n openAction: (actionId: string) => boolean\n}\n\nexport function AiAutomationBriefDialog(props: AiAutomationBriefDialogProps) {\n const { open, onClose, orgId, hostId, user, openAction } = props\n const copy = AI_AUTOMATION_BRIEF_COPY\n const help = pluginDocsHelp('aiAutomations')\n const [brief, setBrief] = useState('')\n const [notListed, setNotListed] = useState(false)\n const run = useAiJobRun(user, copy.failed)\n const { job, starting, running, notice, reset } = run\n\n // Opening or closing starts over and stops following: a job still drafting\n // carries on in AI jobs, and its draft appears in the list when it is written.\n useEffect(() => {\n reset()\n setNotListed(false)\n }, [open, reset])\n\n const draft = job?.status === 'done' ? job.outputs.find((output) => output.resource === 'workflow') : undefined\n const problem = aiJobProblem(job, copy.failed) ?? (job?.status === 'done' && !draft ? copy.failed : null)\n const asking = !job || Boolean(notice)\n\n const start = async () => {\n const trimmed = brief.trim()\n if (!orgId || !trimmed) return\n setNotListed(false)\n if (await run.start({ orgId, hostId, kind: 'workflow', brief: trimmed, inputs: { mode: 'draft' } })) {\n setBrief('')\n }\n }\n\n const review = () => {\n if (!draft) return\n if (openAction(draft.id)) onClose()\n else setNotListed(true)\n }\n\n return (\n <Dialog open={open} onClose={starting ? undefined : onClose} fullWidth maxWidth=\"sm\">\n <DialogTitle>{copy.title}</DialogTitle>\n <DialogContent>\n {asking ? (\n <Stack spacing={2} sx={{ pt: 1 }}>\n <TextField\n label={copy.briefLabel}\n placeholder={copy.placeholder}\n multiline\n minRows={4}\n value={brief}\n onChange={(event) => setBrief(event.target.value.slice(0, BRIEF_MAX_CHARS))}\n helperText={`${brief.length.toLocaleString('en-US')} / ${BRIEF_MAX_CHARS.toLocaleString('en-US')}`}\n disabled={starting}\n autoFocus\n />\n <Typography variant=\"body2\" color=\"text.secondary\">\n {copy.next}{' '}\n <Link href={help.href} target=\"_blank\" rel=\"noopener\" title={help.excerpt}>\n {'How it works'}\n </Link>\n </Typography>\n {notice ? <Alert severity=\"warning\">{notice}</Alert> : null}\n </Stack>\n ) : (\n <Stack spacing={2} sx={{ pt: 1 }}>\n {running ? (\n <Alert severity=\"info\" icon={<CircularProgress size={18} aria-label=\"Drafting\" />}>\n {copy.started}\n </Alert>\n ) : null}\n {draft ? (\n <Alert severity=\"success\">\n <Typography variant=\"body2\" sx={{ fontWeight: 600 }}>\n {`${copy.drafted}: ${draft.label}`}\n </Typography>\n {draft.note ? <Typography variant=\"body2\">{draft.note}</Typography> : null}\n </Alert>\n ) : null}\n {problem ? <Alert severity={job?.status === 'failed' ? 'error' : 'warning'}>{problem}</Alert> : null}\n {notListed ? <Alert severity=\"info\">{copy.notListed}</Alert> : null}\n </Stack>\n )}\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} disabled={starting}>\n {asking ? 'Cancel' : 'Close'}\n </Button>\n {asking ? (\n <Button\n variant=\"contained\"\n onClick={() => void start()}\n disabled={starting || !orgId || !brief.trim()}\n >\n {copy.submit}\n </Button>\n ) : draft ? (\n <Button variant=\"contained\" onClick={review}>\n {copy.review}\n </Button>\n ) : null}\n </DialogActions>\n </Dialog>\n )\n}\n\n/**\n * Renders nothing until the jobs route has answered for this workspace, and\n * nothing when it says the feature is not this workspace's.\n */\nexport function AiDescribeAutomationButton({ hostId, orgId, openAction }: ConsoleHostAutomationsZoneProps) {\n const { data: user } = useUser()\n const verdict = useAiJobsVerdict(user, orgId)\n const [open, setOpen] = useState(false)\n\n if (verdict !== 'ready') return null\n return (\n <>\n <Button size=\"small\" variant=\"outlined\" onClick={() => setOpen(true)}>\n {'Describe it'}\n </Button>\n <AiAutomationBriefDialog\n open={open}\n onClose={() => setOpen(false)}\n orgId={orgId}\n hostId={hostId}\n user={user}\n openAction={openAction}\n />\n </>\n )\n}\n\nexport default AiDescribeAutomationButton\n"],"names":["pluginDocsHelp","useUser","Alert","Button","CircularProgress","Dialog","DialogActions","DialogContent","DialogTitle","Link","Stack","TextField","Typography","useEffect","useState","aiJobProblem","useAiJobRun","useAiJobsVerdict","BRIEF_MAX_CHARS","AI_AUTOMATION_BRIEF_COPY","title","briefLabel","placeholder","next","submit","started","drafted","review","notListed","failed","AiAutomationBriefDialog","props","open","onClose","orgId","hostId","user","openAction","copy","help","brief","setBrief","setNotListed","run","job","starting","running","notice","reset","draft","status","outputs","find","output","resource","undefined","problem","asking","Boolean","start","trimmed","trim","kind","inputs","mode","id","fullWidth","maxWidth","spacing","sx","pt","label","multiline","minRows","value","onChange","event","target","slice","helperText","length","toLocaleString","disabled","autoFocus","variant","color","href","rel","excerpt","severity","icon","size","aria-label","fontWeight","note","onClick","AiDescribeAutomationButton","data","verdict","setOpen"],"mappings":"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"}
@@ -0,0 +1,39 @@
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
+ */
17
+ import type { ConsoleHostComponentsZoneProps, ConsoleHostFormsZoneProps, ConsoleHostLayoutsZoneProps, ConsoleHostScreensZoneProps, ConsoleHostTemplatesZoneProps } from '@aglyn/aglyn/plugin-manager/feature-plugins';
18
+ import { type AiBriefKind } from './ai-brief-dialog.component';
19
+ export interface AiDescribeButtonProps extends ConsoleHostScreensZoneProps {
20
+ /** The job the brief starts: what the page the button sits on lists. */
21
+ kind: AiBriefKind;
22
+ }
23
+ /**
24
+ * Renders nothing until the jobs route has answered for this workspace: the
25
+ * shell decided the plan, the member's permission and the site's AI switch
26
+ * before mounting it, and the release flag is the route's to decide, so a 404
27
+ * or a 403 there is this control staying absent. A lockdown is the start
28
+ * door's to say, in the dialog, in its own words.
29
+ */
30
+ export declare function AiDescribeButton({ kind, hostId, orgId }: AiDescribeButtonProps): import("react").JSX.Element;
31
+ /** A page template from a brief, on the Templates page (`hostTemplates`). */
32
+ export declare function AiDescribeTemplateButton(props: ConsoleHostTemplatesZoneProps): import("react").JSX.Element;
33
+ /** A layout from a brief, on the Layouts page (`hostLayouts`). */
34
+ export declare function AiDescribeLayoutButton(props: ConsoleHostLayoutsZoneProps): import("react").JSX.Element;
35
+ /** A form from a brief, on the Forms page (`hostForms`). */
36
+ export declare function AiDescribeFormButton(props: ConsoleHostFormsZoneProps): import("react").JSX.Element;
37
+ /** A reusable component from a brief, on the Components page (`hostComponents`). */
38
+ export declare function AiDescribeComponentButton(props: ConsoleHostComponentsZoneProps): import("react").JSX.Element;
39
+ export default AiDescribeButton;