@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/assist-panel.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 canvas,\n checkEntitlement,\n lockdownRefusalText,\n parseLockdownRefusal,\n type AglynOrgBilling,\n} from '@aglyn/aglyn'\nimport {\n editorSessionsRevision,\n openEditorSession,\n subscribeEditorSessions,\n} from '@aglyn/aglyn/plugin-manager/editor-sessions'\nimport { trackEvent } from '@aglyn/aglyn/app-utils/analytics-events'\nimport {\n mdiChatQuestionOutline,\n mdiChevronDown,\n mdiChevronUp,\n mdiClose,\n mdiOpenInNew,\n mdiSend,\n mdiThumbDownOutline,\n mdiThumbUpOutline,\n} from '@aglyn/shared-data-mdi'\nimport { AppLink, MdiIcon } from '@aglyn/shared-ui-jsx'\nimport { useSnackbar } from '@aglyn/shared-ui-snackstack'\nimport {\n Alert,\n Box,\n Button,\n Chip,\n CircularProgress,\n Collapse,\n Drawer,\n Fab,\n IconButton,\n Link,\n Paper,\n Stack,\n TextField,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport { usePathname } from 'next/navigation'\nimport {\n Fragment,\n useCallback,\n useEffect,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react'\nimport { useUser } from '@aglyn/tenant-feature-instance'\nimport { authorizedFetch } from '@aglyn/shared-util-http/authorized-token'\nimport {\n assistEditDocumentOf,\n isAssistEditProposal,\n type AssistEditAppliedReport,\n type AssistEditProposal,\n} from '../model/assist-edit'\nimport { applyAssistEdit, describeAssistEditCanvas } from './assist-edit-canvas'\nimport { AssistEditCard } from './assist-edit-card.component'\nimport { aiInsightSurfaceForPath } from '../model/ai-insight'\nimport { AssistJobsDrawer } from './assist-jobs-drawer.component'\nimport { AiModelSelector } from './ai-model-selector.component'\nimport { AiUsageStrip } from './ai-usage-strip.component'\nimport { useAiModelChoice } from './use-ai-model-choice'\nimport { usePublishAiUsageMeter } from './use-ai-usage-meter'\nimport { pluginDocsHelp } from '@aglyn/aglyn/app-utils/docs-help'\nimport { HelpTip } from '@aglyn/shared-ui-jsx'\n\n/**\n * Aglyn Assist (AGL-1860, phase 1 — answer + guide): the floating chat\n * helper mounted on every authenticated console page. Docs-grounded answers\n * with deep links for everyone the release flag admits; Pro+ (`aiAssist`)\n * adds page-context awareness. The panel never answers the entitlement\n * question from a loading default — capability messaging waits for\n * `useCurrentOrg().ready` (the checkQuota(undefined)=Free lesson).\n *\n * ## It also never runs against an org the URL did not name (AGL-1934)\n *\n * `useCurrentOrg()` deliberately keeps a fallback — org-less pages still need\n * an org to ACT on — so on the workspace picker it answers with a real org\n * and a truthy plan: a remembered selection, or simply the user's first. This\n * panel used to gate on nothing but `orgId` being present, which that\n * fallback always satisfies. The result was the whole component running for a\n * workspace nobody opened: the entitlement decided by its plan, the upgrade\n * nudge pitched on its behalf, the session thread filed under its id, and —\n * the reason this ranked High rather than cosmetic — every question POSTed\n * with its `orgId`, so the message was METERED to it. Billing data attributed\n * to the wrong customer.\n *\n * The gate is AGL-1130's `useUrlNamesOrg()`, the same predicate AGL-1916\n * applied to `QuotaWarningsBanner` on the same page, plus the positive\n * contradiction check that goes with it. It is expressed once, as\n * `scopedOrgId`, so that no send path can reach `orgId` around it — and the\n * server refuses an unscoped request independently (`assistScopeRefusal` in\n * `app/api/assist/chat/route.ts`), because a metering boundary the client\n * alone decides is not a boundary.\n */\n\ninterface AssistDocLink {\n title: string\n url: string\n}\n\n/**\n * A level-2 proposal, exactly as the server resolved it (AGL-1988).\n *\n * Every field here is inert. There is no method, no endpoint and no body,\n * because the server type has none: the assistant proposes, the user\n * confirms, and confirming NAVIGATES. The destination form's own submit\n * button stays the only thing that writes.\n */\ninterface AssistProposal {\n id: string\n label: string\n outcome: string\n href: string\n values: Array<{ name: string; value: string }>\n prefill: boolean\n}\n\ninterface AssistMessage {\n role: 'user' | 'assistant'\n text: string\n exchangeId?: string | null\n feedback?: 'up' | 'down'\n docs?: AssistDocLink[]\n proposal?: AssistProposal | null\n /** Set once the user acts on or waves away the card, so it does not linger. */\n proposalResolved?: boolean\n /**\n * A level-3 edit proposal, exactly as the server validated it (AGL-2906):\n * operations for the open canvas, applied only when the author presses\n * Apply, and never by a request.\n */\n edit?: AssistEditProposal | null\n /** What became of the edit card: applied, waved away, or refused with a reason. */\n editOutcome?:\n | { kind: 'applied' }\n | { kind: 'dismissed' }\n | { kind: 'failed'; message: string }\n}\n\ninterface AssistQuotaInfo {\n period: 'day' | 'month'\n used: number\n limit: number\n remaining: number\n}\n\nconst HISTORY_TURNS_SENT = 12\n\nconst storageKey = (orgId: string) => `aglyn-assist:${orgId}`\n\nfunction loadThread(orgId: string | undefined): AssistMessage[] {\n if (!orgId || typeof sessionStorage === 'undefined') return []\n try {\n const raw = sessionStorage.getItem(storageKey(orgId))\n const parsed = raw ? (JSON.parse(raw) as AssistMessage[]) : []\n return Array.isArray(parsed) ? parsed : []\n } catch {\n return []\n }\n}\n\nfunction saveThread(orgId: string | undefined, messages: AssistMessage[]) {\n if (!orgId || typeof sessionStorage === 'undefined') return\n try {\n sessionStorage.setItem(storageKey(orgId), JSON.stringify(messages))\n } catch {\n // Quota/full storage never breaks chat.\n }\n}\n\n/**\n * Minimal renderer for assistant text: markdown links and bare URLs become\n * links (internal root-relative paths ride AppLink, external open in a new\n * tab); everything else renders as plain text with line breaks. Phase 1 on\n * purpose — no full markdown surface inside the panel.\n */\nexport function renderAssistText(text: string): JSX.Element {\n const parts: Array<string | { label: string; href: string }> = []\n const pattern = /\\[([^\\]]+)\\]\\((\\/[^)\\s]*|https?:\\/\\/[^)\\s]+)\\)|https?:\\/\\/[^\\s)]+/g\n let cursor = 0\n for (const match of text.matchAll(pattern)) {\n const index = match.index ?? 0\n if (index > cursor) parts.push(text.slice(cursor, index))\n if (match[1] && match[2]) parts.push({ label: match[1], href: match[2] })\n else parts.push({ label: match[0], href: match[0] })\n cursor = index + match[0].length\n }\n if (cursor < text.length) parts.push(text.slice(cursor))\n return (\n <>\n {parts.map((part, i) => {\n if (typeof part === 'string') {\n return <Fragment key={i}>{part}</Fragment>\n }\n if (part.href.startsWith('/')) {\n return (\n <AppLink key={i} componentVariant=\"naked\" href={part.href}>\n {part.label}\n </AppLink>\n )\n }\n return (\n <Link key={i} href={part.href} target=\"_blank\" rel=\"noreferrer\">\n {part.label}\n </Link>\n )\n })}\n </>\n )\n}\n\n/**\n * Split an answer into its plain layer and its technical tail (AGL-1988).\n *\n * Aglyn's users run from first-time business owners to working developers,\n * and they get the same message. Two modes would be the obvious build and\n * the wrong one — it asks a beginner to label themselves before they have a\n * question, and asks a developer to opt in to being taken seriously. So the\n * model writes one answer with a technical paragraph at the end, and the\n * panel collapses it: the beginner never has to read past the plain steps,\n * the developer never has to ask for the route or the field name.\n *\n * Degrades to \"no tail\" when the marker is absent, which is the common case\n * and not a failure — plenty of answers have nothing technical to add.\n */\nexport function splitAssistDisclosure(text: string): {\n plain: string\n technical: string\n} {\n const match = text.match(/(?:^|\\n)[ \\t]*Under the hood:[ \\t]*/)\n if (!match || match.index === undefined) return { plain: text, technical: '' }\n const plain = text.slice(0, match.index).trimEnd()\n const technical = text.slice(match.index + match[0].length).trim()\n // An answer that is ONLY a technical tail is still the answer. Collapsing\n // the whole thing would show the user an empty bubble with a toggle.\n if (!plain || !technical) return { plain: text, technical: '' }\n return { plain, technical }\n}\n\n/** The collapsed developer layer. */\nfunction UnderTheHood({ technical }: { technical: string }) {\n const [open, setOpen] = useState(false)\n return (\n <Box sx={{ mt: 0.5 }}>\n <Link\n component=\"button\"\n type=\"button\"\n variant=\"caption\"\n underline=\"hover\"\n onClick={() => setOpen((prior) => !prior)}\n sx={{ display: 'inline-flex', alignItems: 'center', gap: 0.25 }}\n >\n Under the hood\n <MdiIcon\n path={open ? mdiChevronUp.path : mdiChevronDown.path}\n sx={{ fontSize: 14 }}\n />\n </Link>\n <Collapse in={open} unmountOnExit>\n <Typography\n variant=\"caption\"\n component=\"div\"\n color=\"text.secondary\"\n sx={{ mt: 0.5, whiteSpace: 'pre-wrap', wordBreak: 'break-word' }}\n >\n {renderAssistText(technical)}\n </Typography>\n </Collapse>\n </Box>\n )\n}\n\n/**\n * The source links under an answer (AGL-2486).\n *\n * `docs` is server-resolved retrieval output and has ridden every `done`\n * event since Assist shipped, but NOTHING rendered it: it set the `grounded`\n * analytics flag and stopped there. So every answer carried its citations to\n * a reader who never saw them, and on the MODEL path that array is the only\n * citation there is — the completion is prose, and nothing obliges it to name\n * the page it was grounded in.\n *\n * ## Why this FILTERS rather than rendering the array straight\n *\n * The DEFLECTED path is the opposite case. `composeDocsAnswer` deliberately\n * puts the citation in the answer TEXT as `[label](url)`, because a link is\n * the one markup this panel speaks (`renderAssistText`) — that is a recorded\n * decision, not an oversight, and its own docstring names this array as the\n * tempting-but-wrong home for the citation *because* nothing renders it.\n * Rendering the array underneath would therefore print every heading a second\n * time on exactly the answers that already cite well. Anything whose url is\n * already linked in the text is dropped, which leaves a deflected answer\n * reading precisely as it does today and gives the model answer the sources\n * it has never shown.\n *\n * ## Why the array is not simply suppressed server-side instead\n *\n * That was the other candidate and it is a trap: `docs.length > 0` is what\n * sets the `grounded` analytics flag, so a docs-QUOTING answer would report\n * itself ungrounded. The most grounded turn the product serves would be\n * counted as a documentation gap, which is precisely backwards for the signal\n * `assist-signal-mining` exists to read.\n */\nexport function AssistSources({\n text,\n docs,\n}: {\n text: string\n docs?: readonly AssistDocLink[]\n}) {\n const unseen: AssistDocLink[] = []\n const shown = new Set<string>()\n for (const doc of docs ?? []) {\n // Already a link in the prose, or already listed here. Both are the same\n // failure to the reader: the same page offered twice.\n if (!doc?.url || text.includes(doc.url) || shown.has(doc.url)) continue\n shown.add(doc.url)\n unseen.push(doc)\n }\n if (!unseen.length) return null\n return (\n <Box sx={{ mt: 0.75 }}>\n <Typography variant=\"caption\" color=\"text.secondary\" component=\"div\">\n {unseen.length === 1 ? 'Source' : 'Sources'}\n </Typography>\n <Stack spacing={0.25} sx={{ mt: 0.25 }}>\n {unseen.map((doc) => (\n <Typography key={doc.url} variant=\"caption\" component=\"div\">\n {doc.url.startsWith('/') ? (\n <AppLink componentVariant=\"naked\" href={doc.url}>\n {doc.title}\n </AppLink>\n ) : (\n <Link href={doc.url} target=\"_blank\" rel=\"noreferrer\">\n {doc.title}\n </Link>\n )}\n </Typography>\n ))}\n </Stack>\n </Box>\n )\n}\n\n/**\n * The confirm card — the whole of \"automate current view\", and the whole of\n * its boundary.\n *\n * The assistant proposes; this card is the human confirmation; confirming\n * navigates. There is deliberately no submit path anywhere in this\n * component, and no network call: a chat assistant that writes without\n * consent is a far worse launch story than one that only advises, and the\n * cheapest way to be sure it cannot is for the code that could do it not to\n * exist. `assist-panel-proposal.spec.tsx` greps this file for exactly that.\n *\n * The copy is held to the same standard. While `prefill` is false — no\n * console page reads `assist_*` params yet — the card says it will open the\n * page and lists the values to use. It does not say it filled anything in,\n * because a form that comes up empty after that promise is worse than no\n * card at all.\n */\nfunction ProposalCard({\n proposal,\n onConfirm,\n onDismiss,\n brand,\n}: {\n proposal: AssistProposal\n onConfirm: () => void\n onDismiss: () => void\n brand: string\n}) {\n return (\n <Paper\n variant=\"outlined\"\n sx={{ mt: 1, p: 1.5, borderRadius: 2, bgcolor: 'background.paper' }}\n >\n <Typography variant=\"subtitle2\">{proposal.label}</Typography>\n <Typography variant=\"caption\" color=\"text.secondary\" component=\"div\">\n Opens {proposal.outcome}.\n </Typography>\n {proposal.values.length > 0 && (\n <Box sx={{ mt: 1 }}>\n <Typography variant=\"caption\" color=\"text.secondary\" component=\"div\">\n {proposal.prefill ? 'Filled in for you:' : 'Values to use:'}\n </Typography>\n <Stack component=\"ul\" sx={{ m: 0, pl: 2.5 }}>\n {proposal.values.map(({ name, value }) => (\n <Typography key={name} component=\"li\" variant=\"caption\">\n {name}: <strong>{value}</strong>\n </Typography>\n ))}\n </Stack>\n </Box>\n )}\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n component=\"div\"\n sx={{ mt: 1 }}\n >\n {`${brand} Assist only opens the page. Nothing is saved until you `}\n {'fill the form in and submit it yourself.'}\n </Typography>\n <Stack direction=\"row\" spacing={1} sx={{ mt: 1.5 }}>\n <AppLink\n componentVariant=\"button\"\n href={proposal.href}\n variant=\"contained\"\n size=\"small\"\n onClick={onConfirm}\n startIcon={<MdiIcon path={mdiOpenInNew.path} />}\n >\n Take me there\n </AppLink>\n <Button size=\"small\" color=\"inherit\" onClick={onDismiss}>\n No thanks\n </Button>\n </Stack>\n </Paper>\n )\n}\n\n/** The reader's AI verdict, on their own membership axis (AGL-2927). */\nexport interface AssistAiPermissions {\n /** True only once every read the answer depends on has answered. */\n loaded: boolean\n /** May the reader ask the assistant, rewrite copy, generate a section? */\n use: boolean\n /** May the reader run an AI generation job or an AI edit? */\n generate: boolean\n}\n\n/**\n * What the shell hands the assistant dock (AGL-2940): its own answers to\n * the questions only the shell can answer. The panel reads no console hook.\n */\nexport interface AssistDockProps {\n orgId?: string\n org?: Partial<AglynOrgBilling> | null\n orgReady: boolean\n /**\n * The org this panel may speak for, act as, and be METERED against — or\n * `undefined` where the page named none (AGL-1130, AGL-1934). Every use\n * of the org below goes through this rather than `orgId`, so a send path\n * cannot be added later that quietly reaches around the gate; the thread\n * key, the two POST bodies and the render gate all read the same value.\n */\n scopedOrgId?: string\n /** Path slug for building `/[orgSlug]/…` links (AGL-621). */\n orgSlug: string\n /** The site in view, or null off a host route. */\n hostId: string | null\n /** The product's name as this org reads it (AGL-2319). */\n productName: string\n /** The `release_assist` verdict, staff bypass applied. */\n assistVisible: boolean\n /** True when only the staff bypass makes the assistant visible. */\n assistStaffPreview: boolean\n /** The `release_ai_generative` verdict, staff bypass applied. */\n generativeVisible: boolean\n isStaff: boolean\n aiPermissions: AssistAiPermissions\n}\n\nexport function AssistPanelComponent(props: AssistDockProps) {\n const {\n org,\n orgId,\n orgReady,\n scopedOrgId,\n orgSlug,\n hostId,\n productName,\n assistVisible,\n assistStaffPreview,\n generativeVisible,\n isStaff,\n aiPermissions: ai,\n } = props\n const verdict = { visible: assistVisible, staffPreview: assistStaffPreview }\n const branding = { productName }\n const billingSlug = orgSlug\n const pathname = usePathname()\n const { data: user } = useUser()\n const { enqueueSnackbar } = useSnackbar()\n\n const [open, setOpen] = useState(false)\n const [input, setInput] = useState('')\n const [busy, setBusy] = useState(false)\n const [messages, setMessages] = useState<AssistMessage[]>([])\n const [quota, setQuota] = useState<AssistQuotaInfo | null>(null)\n const scrollRef = useRef<HTMLDivElement>(null)\n // The model switch and the usage strip (AGL-2942): the pick rides the\n // chat request, and each answer's `meter` moves every strip for the org.\n const modelChoice = useAiModelChoice({\n orgId: scopedOrgId,\n hostId,\n surface: 'assist',\n kind: 'assist.chat',\n })\n const publishMeter = usePublishAiUsageMeter(scopedOrgId)\n // The open editor, re-read whenever one opens, closes or reports a change —\n // so a card raised on a live version offers Apply once its new version is\n // the one open.\n useSyncExternalStore(\n subscribeEditorSessions,\n editorSessionsRevision,\n editorSessionsRevision,\n )\n const editorSession = openEditorSession()\n\n // Thread is per-org, session-persisted; switching orgs swaps threads.\n // Keyed on the SCOPED org (AGL-1934): gating only the render would still\n // load — and, on the next keystroke, save — a thread under the fallback\n // org's key on every mount of a page that named no workspace.\n useEffect(() => {\n setMessages(loadThread(scopedOrgId))\n setQuota(null)\n }, [scopedOrgId])\n\n useEffect(() => {\n saveThread(scopedOrgId, messages)\n const node = scrollRef.current\n if (node) node.scrollTop = node.scrollHeight\n }, [scopedOrgId, messages])\n\n const entitled = orgReady && checkEntitlement(org as never, 'aiAssist')\n // Whether a question asked from a besigner document carries its canvas\n // (AGL-2906). A hint, not a grant: the server decides the edit rung again\n // from its own reads, and drops the outline below it.\n const editRungHint =\n generativeVisible &&\n ai.loaded &&\n ai.generate &&\n orgReady &&\n checkEntitlement(org as never, 'aiGenerative')\n\n const send = useCallback(async () => {\n const question = input.trim()\n if (!question || busy || !scopedOrgId || !ai.use) return\n setBusy(true)\n setInput('')\n const history = messages\n .slice(-HISTORY_TURNS_SENT)\n .map(({ role, text }) => ({ role, text }))\n setMessages((prior) => [\n ...prior,\n { role: 'user', text: question },\n { role: 'assistant', text: '' },\n ])\n const patchAnswer = (patch: (message: AssistMessage) => AssistMessage) => {\n setMessages((prior) => {\n const next = [...prior]\n const last = next[next.length - 1]\n if (last?.role === 'assistant') next[next.length - 1] = patch(last)\n return next\n })\n }\n // A notice must not be swallowed by a partial answer: a refusal or a\n // max_tokens cut arrives AFTER text has streamed, and substituting only\n // when the bubble is empty would leave the user staring at half an\n // answer with nothing saying why it stopped.\n const failAnswer = (notice: string) => {\n patchAnswer((message) => ({\n ...message,\n text: message.text ? `${message.text}\\n\\n${notice}` : notice,\n }))\n }\n try {\n // The canvas outline rides along from the besigner document the open\n // editor holds — ids, component ids and short values, never the stored\n // document — and only while that editor is on the version the route\n // names, so the outline and the selection are the ones on screen.\n const editDocument = editRungHint ? assistEditDocumentOf(pathname ?? '') : null\n const session = editDocument ? openEditorSession() : undefined\n const canvasOutline =\n editDocument &&\n session &&\n session.documentKind === editDocument.kind &&\n session.documentId === editDocument.documentId &&\n session.versionId === editDocument.versionId\n ? describeAssistEditCanvas(canvas, session.selectedNodeId?.() ?? null)\n : null\n const response = await authorizedFetch(user, '/api/assist/chat', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n orgId: scopedOrgId,\n question,\n history,\n // Page context rides along; the server drops it for free orgs\n // (level 2 is Pro+). Sending it is not a grant — the capability\n // decision is server-side.\n context: { route: pathname ?? '', hostId: hostId ?? '', orgSlug },\n // A pick, when the reader made one; the server decides again.\n ...(modelChoice.model ? { model: modelChoice.model } : {}),\n ...(canvasOutline ? { canvas: canvasOutline } : {}),\n }),\n })\n if (!response.ok || !response.body) {\n const payload = await response.json().catch(() => null)\n const locked = parseLockdownRefusal(response.status, payload)\n if (locked) {\n failAnswer(lockdownRefusalText(locked))\n } else if (response.status === 501) {\n // 501 means the narrow thing it says: no model is available AND\n // the documentation had nothing to offer for this question either\n // — the server hands back the closest pages whenever it has any\n // (AGL-2486), so reaching here means it had none.\n //\n // Written for the person who is actually reading it. \"Not\n // configured on this deployment\" names a deployment the reader does\n // not administer and a configuration they cannot see, and landing\n // mid-thread after a working answer it reads as a breakage. What a\n // user needs here is what happened, what to try, and who can fix it\n // — in that order, in words that assume no idea what an API key\n // is. The\n // operator's half (the env var) stays in the API error body, where\n // an operator looks and a customer does not.\n failAnswer(\n `I could not find anything in the documentation about that, and I cannot work it through with you myself yet — ` +\n `${branding.productName} Assist has not been fully switched on here. ` +\n `Try asking in different words, or ask whoever set up this workspace to finish enabling the assistant.`,\n )\n } else if (\n (response.status === 429 || response.status === 402) &&\n payload?.reason === 'quota'\n ) {\n // 402 is the org's own hard cap (AGL-2653): the band would sell\n // past itself and this workspace switched the sale off. The\n // sentence names the switch, and the credit standing beside it is\n // as real as a 429's, so it lands on the same line.\n if (payload.quota) setQuota(payload.quota as AssistQuotaInfo)\n publishMeter(payload?.meter)\n failAnswer(String(payload?.error ?? 'Message limit reached.'))\n } else {\n failAnswer(String(payload?.error ?? 'The assistant request failed — try again.'))\n }\n return\n }\n const reader = response.body.getReader()\n const decoder = new TextDecoder()\n let buffer = ''\n for (;;) {\n const { done, value } = await reader.read()\n if (done) break\n buffer += decoder.decode(value, { stream: true })\n const lines = buffer.split('\\n')\n buffer = lines.pop() ?? ''\n for (const line of lines) {\n if (!line.startsWith('data: ')) continue\n let event: Record<string, unknown>\n try {\n event = JSON.parse(line.slice('data: '.length))\n } catch {\n continue\n }\n if (event.type === 'delta' && typeof event.text === 'string') {\n const text = event.text as string\n patchAnswer((message) => ({ ...message, text: message.text + text }))\n } else if (event.type === 'done') {\n const docs = (event.docs as AssistDocLink[] | undefined) ?? []\n // Server-resolved and inert: an id from the closed set attached\n // to the view the question was asked from, plus a destination\n // this client did not choose. Null on every turn that proposed\n // nothing, which is most of them.\n const proposal = (event.proposal as AssistProposal | null) ?? null\n // The edit proposal (AGL-2906), shape-checked before it can reach\n // a card whose Apply drives the canvas.\n const edit = isAssistEditProposal(event.edit) ? event.edit : null\n patchAnswer((message) => ({\n ...message,\n exchangeId: (event.exchangeId as string | null) ?? null,\n docs,\n proposal,\n edit,\n }))\n if (event.quota) setQuota(event.quota as AssistQuotaInfo)\n publishMeter(event.meter)\n trackEvent('assistant_message_sent', {\n tier: entitled ? 'entitled' : 'free',\n grounded: docs.length > 0,\n })\n if (proposal) {\n trackEvent('assistant_proposal_shown', { action: proposal.id })\n }\n if (edit) {\n trackEvent('assistant_proposal_shown', { action: edit.id })\n }\n } else if (event.type === 'error') {\n failAnswer(String(event.error ?? 'The assistant stream failed.'))\n }\n }\n }\n } catch (error) {\n console.error(error)\n failAnswer('The assistant request failed — check your connection and try again.')\n } finally {\n setBusy(false)\n }\n }, [\n ai.use,\n busy,\n editRungHint,\n entitled,\n hostId,\n input,\n messages,\n modelChoice.model,\n publishMeter,\n scopedOrgId,\n orgSlug,\n pathname,\n user,\n ])\n\n /**\n * Retire a card once it has been acted on or waved away. Local state only\n * — there is nothing to tell the server, because the proposal was never\n * anything the server was waiting on.\n */\n const resolveProposal = useCallback((index: number) => {\n setMessages((prior) =>\n prior.map((entry, i) =>\n i === index ? { ...entry, proposalResolved: true } : entry,\n ),\n )\n }, [])\n\n /**\n * Land a confirmed edit on the open editor (AGL-2906): through the canvas's\n * own mutators, as one undo step, unsaved. The only request that follows is\n * the activity record, and it carries counts, never content.\n */\n const applyEdit = useCallback(\n (index: number) => {\n const message = messages[index]\n const proposal = message?.edit\n if (!proposal || !scopedOrgId) return\n const session = openEditorSession()\n const result = applyAssistEdit(canvas, proposal, session)\n if (result.ok === false) {\n setMessages((prior) =>\n prior.map(\n (entry, i): AssistMessage =>\n i === index\n ? { ...entry, editOutcome: { kind: 'failed', message: result.message } }\n : entry,\n ),\n )\n return\n }\n setMessages((prior) =>\n prior.map(\n (entry, i): AssistMessage =>\n i === index ? { ...entry, editOutcome: { kind: 'applied' } } : entry,\n ),\n )\n trackEvent('assistant_proposal_confirmed', { action: proposal.id })\n enqueueSnackbar('Applied as unsaved changes — undo takes them back', {\n variant: 'success',\n persist: false,\n })\n if (!message.exchangeId || !session) return\n const report: AssistEditAppliedReport = {\n orgId: scopedOrgId,\n hostId: proposal.target.hostId,\n exchangeId: message.exchangeId,\n documentKind: proposal.target.kind,\n documentId: proposal.target.documentId,\n versionId: session.versionId,\n opCounts: result.opCounts,\n }\n // Fire and forget: the edit is already on the canvas, and a record that\n // fails to land must not read as an edit that failed.\n void authorizedFetch(user, '/api/assist/edit-applied', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(report),\n }).catch(() => undefined)\n },\n [enqueueSnackbar, messages, scopedOrgId, user],\n )\n\n /** Wave an edit card away. Nothing to tell the server: nothing happened. */\n const dismissEdit = useCallback((index: number) => {\n setMessages((prior) =>\n prior.map(\n (entry, i): AssistMessage =>\n i === index ? { ...entry, editOutcome: { kind: 'dismissed' } } : entry,\n ),\n )\n }, [])\n\n const sendFeedback = useCallback(\n async (index: number, feedback: 'up' | 'down') => {\n const message = messages[index]\n if (!message?.exchangeId || !scopedOrgId) return\n setMessages((prior) =>\n prior.map((entry, i) => (i === index ? { ...entry, feedback } : entry)),\n )\n trackEvent('assistant_feedback', { feedback })\n try {\n await authorizedFetch(user, '/api/assist/feedback', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n orgId: scopedOrgId,\n exchangeId: message.exchangeId,\n feedback,\n }),\n })\n } catch {\n enqueueSnackbar('Feedback could not be recorded', {\n variant: 'warning',\n persist: false,\n })\n }\n },\n [enqueueSnackbar, messages, scopedOrgId, user],\n )\n\n // A released-off feature does not exist (staff preview excepted) — and\n // without an org IN SCOPE there is nothing to meter or record against\n // (AGL-1934). `scopedOrgId`, never `orgId`: the fallback org is always\n // present, which is exactly why gating on it announced and billed the\n // assistant on the workspace picker. Every hook above has already run, so\n // this early return costs no hook-order hazard.\n if (!verdict.visible || !scopedOrgId) return null\n\n return (\n <>\n {!open && (\n <Tooltip title={`${branding.productName} Assist`} placement=\"left\">\n <Fab\n color=\"primary\"\n size=\"medium\"\n aria-label={`Open ${branding.productName} Assist`}\n onClick={() => setOpen(true)}\n sx={{\n position: 'fixed',\n // Insets, not constants (AGL-2486). The console chrome leaves\n // the bottom-right corner empty, but the besigner does not:\n // its properties panel is a full-height column on that edge,\n // and a fixed launcher lands on the Styles form and its\n // scrollbar. A surface that owns the corner publishes these\n // variables to move the launcher clear of itself; everywhere\n // else the fallback is the corner it has always used. Read as\n // CSS rather than passed as props so the offset can follow a\n // panel the launcher knows nothing about — one that is\n // resizable and collapsible — without this component growing\n // a dependency on the editor.\n right: 'var(--aglyn-assist-inset-right, 20px)',\n bottom: 'var(--aglyn-assist-inset-bottom, 20px)',\n zIndex: (theme) => theme.zIndex.drawer - 1,\n }}\n >\n {/* Sized at the call site (AGL-2486). `MdiIcon` defaults to\n `fontSize=\"inherit\"`, which is right for the startIcon and\n caption slots most of this file uses it in — but inside a\n Fab the inherited size is the BUTTON typography, 14px, so\n the glyph painted at 14px in a 48px control and read as\n broken. `medium` is the 24px MUI puts in its own FABs. Not\n fixed in `MdiIcon`: that default is depended on across the\n console, including twice in this file. */}\n <MdiIcon path={mdiChatQuestionOutline.path} fontSize=\"medium\" />\n </Fab>\n </Tooltip>\n )}\n <Drawer\n anchor=\"right\"\n open={open}\n onClose={() => setOpen(false)}\n slotProps={{\n paper: {\n sx: { width: { xs: '100%', sm: 420 }, display: 'flex' },\n },\n }}\n >\n <Stack sx={{ height: '100%' }}>\n <Stack\n direction=\"row\"\n spacing={1}\n sx={{\n px: 2,\n py: 1.5,\n borderBottom: 1,\n borderColor: 'divider',\n alignItems: 'center',\n }}\n >\n {/* Same reason as the launcher: this one sits beside an `h6`\n title in a plain Stack, so `inherit` gave it the 16px body\n size against a 20px heading. */}\n <MdiIcon path={mdiChatQuestionOutline.path} fontSize=\"medium\" />\n <Typography variant=\"h6\" sx={{ flexGrow: 1 }}>\n {`${branding.productName} Assist`}\n </Typography>\n {verdict.staffPreview && (\n <Chip size=\"small\" color=\"warning\" label=\"Staff preview\" />\n )}\n {/* Assist answers from the docs but never says so, and the three\n questions it provokes — what it can and can't do, why it\n stopped answering, what happens to what I typed — are exactly\n the four headings on its docs page (AGL-1943). Nothing in this\n panel's chrome can carry those, and a chat box is the one\n surface where a user is most likely to keep asking rather\n than go and read. */}\n <HelpTip\n {...pluginDocsHelp('aglynAssist', { anchor: '#what-it-can-do' })}\n sx={{ color: 'text.secondary' }}\n />\n <Tooltip title={`Close ${branding.productName} Assist`}>\n <IconButton\n aria-label={`Close ${branding.productName} Assist`}\n onClick={() => setOpen(false)}\n >\n {/* An IconButton does not set a font-size of its own, so\n `inherit` reached the same 14px button typography. */}\n <MdiIcon path={mdiClose.path} fontSize=\"medium\" />\n </IconButton>\n </Tooltip>\n </Stack>\n\n <Box ref={scrollRef} sx={{ flexGrow: 1, overflowY: 'auto', p: 2 }}>\n {/* The generation jobs (AGL-2904), scoped to the same org the\n thread is: a job listed here is one this page may act as. */}\n <AssistJobsDrawer\n orgId={scopedOrgId}\n org={org}\n orgReady={orgReady}\n orgSlug={billingSlug}\n user={user}\n visible={generativeVisible}\n isStaff={isStaff}\n hostId={hostId}\n // A question about the figures, where the page reports them\n // (AGL-2915); hidden with the rest of AI jobs, and refused by\n // the jobs door where the member may not generate.\n insight={ai.generate ? aiInsightSurfaceForPath(pathname) : null}\n />\n {!messages.length && (\n <Alert severity=\"info\" sx={{ mb: 2 }}>\n {`Ask anything about using ${branding.productName} — building `}\n {'your site, publishing, domains, commerce, billing. Answers '}\n {'link the docs and the console page to use.'}\n {orgReady && !entitled && !isStaff && (\n <>\n {' '}\n Free workspaces get a limited number of messages a day;\n Pro adds page-aware guidance.\n </>\n )}\n </Alert>\n )}\n <Stack spacing={1.5}>\n {messages.map((message, index) => (\n <Box\n key={index}\n sx={{\n alignSelf:\n message.role === 'user' ? 'flex-end' : 'flex-start',\n maxWidth: '90%',\n borderRadius: 2,\n px: 1.5,\n py: 1,\n bgcolor:\n message.role === 'user'\n ? 'primary.main'\n : 'action.hover',\n color:\n message.role === 'user'\n ? 'primary.contrastText'\n : 'text.primary',\n }}\n >\n <Typography\n variant=\"body2\"\n component=\"div\"\n sx={{ whiteSpace: 'pre-wrap', wordBreak: 'break-word' }}\n >\n {message.role === 'assistant' ? (\n message.text ? (\n renderAssistText(\n splitAssistDisclosure(message.text).plain,\n )\n ) : (\n <CircularProgress size={14} />\n )\n ) : (\n message.text\n )}\n </Typography>\n {message.role === 'assistant' &&\n splitAssistDisclosure(message.text).technical && (\n <UnderTheHood\n technical={splitAssistDisclosure(message.text).technical}\n />\n )}\n {message.role === 'assistant' && (\n <AssistSources text={message.text} docs={message.docs} />\n )}\n {message.role === 'assistant' &&\n message.proposal &&\n !message.proposalResolved && (\n <ProposalCard\n proposal={message.proposal}\n brand={productName}\n onConfirm={() => {\n trackEvent('assistant_proposal_confirmed', {\n action: message.proposal?.id ?? '',\n })\n resolveProposal(index)\n setOpen(false)\n }}\n onDismiss={() => resolveProposal(index)}\n />\n )}\n {message.role === 'assistant' &&\n message.edit &&\n message.editOutcome?.kind !== 'dismissed' &&\n message.editOutcome?.kind !== 'applied' && (\n <AssistEditCard\n proposal={message.edit}\n brand={productName}\n session={editorSession}\n failure={\n message.editOutcome?.kind === 'failed'\n ? message.editOutcome.message\n : null\n }\n onApply={() => applyEdit(index)}\n onCreateVersion={() => editorSession?.createVersion?.()}\n onDismiss={() => dismissEdit(index)}\n />\n )}\n {message.role === 'assistant' &&\n message.editOutcome?.kind === 'applied' && (\n <Typography\n variant=\"caption\"\n color=\"text.secondary\"\n component=\"div\"\n sx={{ mt: 0.5 }}\n >\n Applied to the canvas as unsaved changes.\n </Typography>\n )}\n {message.role === 'assistant' && message.exchangeId && (\n <Stack direction=\"row\" spacing={0.5} sx={{ mt: 0.5 }}>\n {/* The span is load-bearing (AGL-2128): a disabled MUI\n button fires no pointer events, so a Tooltip on it\n directly never opens — and \"already answered\" is\n precisely the state a reader most needs explained,\n because the greyed thumbs otherwise look broken. */}\n <Tooltip\n title={\n message.feedback\n ? 'Thanks — you already rated this answer'\n : 'Helpful answer'\n }\n >\n <span>\n <IconButton\n size=\"small\"\n aria-label=\"Helpful answer\"\n color={message.feedback === 'up' ? 'primary' : 'default'}\n disabled={Boolean(message.feedback)}\n onClick={() => void sendFeedback(index, 'up')}\n >\n <MdiIcon\n path={mdiThumbUpOutline.path}\n sx={{ fontSize: 16 }}\n />\n </IconButton>\n </span>\n </Tooltip>\n <Tooltip\n title={\n message.feedback\n ? 'Thanks — you already rated this answer'\n : 'Unhelpful answer'\n }\n >\n <span>\n <IconButton\n size=\"small\"\n aria-label=\"Unhelpful answer\"\n color={message.feedback === 'down' ? 'primary' : 'default'}\n disabled={Boolean(message.feedback)}\n onClick={() => void sendFeedback(index, 'down')}\n >\n <MdiIcon\n path={mdiThumbDownOutline.path}\n sx={{ fontSize: 16 }}\n />\n </IconButton>\n </span>\n </Tooltip>\n </Stack>\n )}\n </Box>\n ))}\n </Stack>\n </Box>\n\n <Stack\n spacing={1}\n sx={{ p: 2, borderTop: 1, borderColor: 'divider' }}\n >\n {ai.loaded && !ai.use ? (\n <Typography variant=\"caption\" color=\"text.secondary\">\n {'Your role does not include the assistant — ask an ' +\n 'organization admin to grant \"Use AI assistance\".'}\n </Typography>\n ) : null}\n {/* The reader's credits while they work (AGL-2942), from the\n envelope the last answer carried — no read of its own. */}\n <AiUsageStrip orgId={scopedOrgId} orgSlug={billingSlug} />\n {quota && quota.period === 'day' && (\n <Typography variant=\"caption\" color=\"text.secondary\">\n {quota.remaining} of {quota.limit} free messages left today\n {/* `useOrgSlug()`, not `useOrgScope().orgSlug` — the latter\n is the SUBDOMAIN slug, which is null on `app.aglyn.com`,\n so this upgrade link silently vanished on every apex org\n route: the one place a capped free workspace is told it\n is capped, with no way to act on it. Safe to fall back to\n the resolved org's slug here because the render gate\n above has already established the URL names it. */}\n {billingSlug ? (\n <>\n {' — '}\n <AppLink\n componentVariant=\"naked\"\n href={`/${billingSlug}/billing`}\n >\n upgrade for more\n </AppLink>\n </>\n ) : null}\n </Typography>\n )}\n {/* The model switch (AGL-2942), for a workspace whose plan\n answers with a model at all; its options load when opened. */}\n {entitled ? (\n <Stack direction=\"row\" sx={{ justifyContent: 'flex-end', mb: -0.5 }}>\n <AiModelSelector\n choice={modelChoice}\n disabled={busy || !ai.loaded || !ai.use}\n />\n </Stack>\n ) : null}\n <Stack\n direction=\"row\"\n spacing={1}\n sx={{ alignItems: 'flex-end' }}\n >\n <TextField\n fullWidth\n multiline\n maxRows={4}\n size=\"small\"\n placeholder=\"How do I…\"\n value={input}\n disabled={busy || !ai.loaded || !ai.use}\n onChange={(event) => setInput(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault()\n void send()\n }\n }}\n />\n <Tooltip\n title={\n busy\n ? 'Waiting for an answer…'\n : !ai.loaded\n ? 'Checking your permissions…'\n : !ai.use\n ? 'Your role does not include the assistant'\n : 'Send message'\n }\n >\n <span>\n <IconButton\n color=\"primary\"\n aria-label=\"Send message\"\n disabled={busy || !input.trim() || !ai.loaded || !ai.use}\n onClick={() => void send()}\n >\n {busy ? (\n <CircularProgress size={20} />\n ) : (\n // 20px to match the CircularProgress it swaps with\n // on the line above — at the inherited 14px the\n // button visibly grew its contents while busy.\n <MdiIcon path={mdiSend.path} sx={{ fontSize: 20 }} />\n )}\n </IconButton>\n </span>\n </Tooltip>\n </Stack>\n </Stack>\n </Stack>\n </Drawer>\n </>\n )\n}\n\nexport default AssistPanelComponent\n"],"names":["canvas","checkEntitlement","lockdownRefusalText","parseLockdownRefusal","editorSessionsRevision","openEditorSession","subscribeEditorSessions","trackEvent","mdiChatQuestionOutline","mdiChevronDown","mdiChevronUp","mdiClose","mdiOpenInNew","mdiSend","mdiThumbDownOutline","mdiThumbUpOutline","AppLink","MdiIcon","useSnackbar","Alert","Box","Button","Chip","CircularProgress","Collapse","Drawer","Fab","IconButton","Link","Paper","Stack","TextField","Tooltip","Typography","usePathname","Fragment","useCallback","useEffect","useRef","useState","useSyncExternalStore","useUser","authorizedFetch","assistEditDocumentOf","isAssistEditProposal","applyAssistEdit","describeAssistEditCanvas","AssistEditCard","aiInsightSurfaceForPath","AssistJobsDrawer","AiModelSelector","AiUsageStrip","useAiModelChoice","usePublishAiUsageMeter","pluginDocsHelp","HelpTip","HISTORY_TURNS_SENT","storageKey","orgId","loadThread","sessionStorage","raw","getItem","parsed","JSON","parse","Array","isArray","saveThread","messages","setItem","stringify","renderAssistText","text","parts","pattern","cursor","match","matchAll","index","push","slice","label","href","length","map","part","i","startsWith","componentVariant","target","rel","splitAssistDisclosure","undefined","plain","technical","trimEnd","trim","UnderTheHood","open","setOpen","sx","mt","component","type","variant","underline","onClick","prior","display","alignItems","gap","path","fontSize","in","unmountOnExit","color","whiteSpace","wordBreak","AssistSources","docs","unseen","shown","Set","doc","url","includes","has","add","spacing","title","ProposalCard","proposal","onConfirm","onDismiss","brand","p","borderRadius","bgcolor","outcome","values","prefill","m","pl","name","value","strong","direction","size","startIcon","AssistPanelComponent","props","org","orgReady","scopedOrgId","orgSlug","hostId","productName","assistVisible","assistStaffPreview","generativeVisible","isStaff","aiPermissions","ai","verdict","visible","staffPreview","branding","billingSlug","pathname","data","user","enqueueSnackbar","input","setInput","busy","setBusy","setMessages","quota","setQuota","scrollRef","modelChoice","surface","kind","publishMeter","editorSession","node","current","scrollTop","scrollHeight","entitled","editRungHint","loaded","generate","send","question","use","history","role","patchAnswer","patch","next","last","failAnswer","notice","message","editDocument","session","canvasOutline","documentKind","documentId","versionId","selectedNodeId","response","method","headers","body","context","route","model","ok","payload","json","catch","locked","status","reason","meter","String","error","reader","getReader","decoder","TextDecoder","buffer","lines","done","read","decode","stream","split","pop","line","event","edit","exchangeId","tier","grounded","action","id","console","resolveProposal","entry","proposalResolved","applyEdit","result","editOutcome","persist","report","opCounts","dismissEdit","sendFeedback","feedback","placement","aria-label","position","right","bottom","zIndex","theme","drawer","anchor","onClose","slotProps","paper","width","xs","sm","height","px","py","borderBottom","borderColor","flexGrow","ref","overflowY","insight","severity","mb","alignSelf","maxWidth","failure","onApply","onCreateVersion","createVersion","span","disabled","Boolean","borderTop","period","remaining","limit","justifyContent","choice","fullWidth","multiline","maxRows","placeholder","onChange","onKeyDown","key","shiftKey","preventDefault"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type ConsoleStaffPageProps } from '@aglyn/aglyn';
2
+ export declare function AssistSignalsPage(_props: ConsoleStaffPageProps): import("react").JSX.Element;
3
+ export default AssistSignalsPage;