@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,442 @@
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
+ */ import { CANVAS_ROOT_ELEMENT_ID } from "@aglyn/aglyn/foundation/constants/canvas";
17
+ /**
18
+ * RECORDED, NOT GOLDEN: the first live recording of the Free page brief
19
+ * (`page-free-law-firm-about`, 2026-09-16), kept as the shape it was written
20
+ * in so the specs can hold the rules to it (AGL-3040). A recording file is
21
+ * never committed; this is the one a spec needs, copied here by hand.
22
+ *
23
+ * Its plan created only the layout, then placed a consultation form it never
24
+ * declared and listed the layout among the hero section's placements. No
25
+ * plan rule refused either, so the plan was kept, and the page step's first
26
+ * pass stopped before building anything: the recording metered the plan
27
+ * alone, and still fit the 300-credit wall it could prove nothing about.
28
+ */ /** The plan the plan step kept, exactly as recorded. */ export const AI_FREE_PAGE_RECORDED_PLAN = {
29
+ reuse: [],
30
+ create: [
31
+ {
32
+ kind: 'layout',
33
+ name: 'main-layout',
34
+ why: 'Site has no layouts; header, nav and footer must live in a layout rather than on the page.',
35
+ duplicateOf: null,
36
+ fields: [
37
+ 'layoutSlot:slot',
38
+ 'header:region (logo, nav links)',
39
+ 'footer:region (firm name, address, phone, copyright)'
40
+ ]
41
+ }
42
+ ],
43
+ screens: [
44
+ {
45
+ title: 'About Us',
46
+ slug: '/about',
47
+ layout: 'new:main-layout',
48
+ template: null,
49
+ duplicateOf: null,
50
+ nav: true,
51
+ seoTitle: 'About Brightwater Law | Our Firm & Practice Areas',
52
+ seoDescription: 'Meet Brightwater Law: our approach, the four areas we practice, how we work with clients, and how to request a consultation.',
53
+ sections: [
54
+ {
55
+ name: 'hero',
56
+ uses: [
57
+ 'new:main-layout'
58
+ ],
59
+ items: 0
60
+ },
61
+ {
62
+ name: 'who we are',
63
+ uses: [],
64
+ items: 0
65
+ },
66
+ {
67
+ name: 'practice areas',
68
+ uses: [],
69
+ items: 4
70
+ },
71
+ {
72
+ name: 'how we work with clients',
73
+ uses: [],
74
+ items: 3
75
+ },
76
+ {
77
+ name: 'consultation request form',
78
+ uses: [
79
+ 'new:consultation-form'
80
+ ],
81
+ items: 0
82
+ }
83
+ ]
84
+ }
85
+ ]
86
+ };
87
+ /** The whole recording, as the live run wrote it. */ export const AI_FREE_PAGE_STOPPED_RECORDING = {
88
+ caseId: 'page-free-law-firm-about',
89
+ candidate: {
90
+ source: 'recorded',
91
+ scope: 'plan',
92
+ step: 'job.page',
93
+ model: 'claude-sonnet-5',
94
+ effort: null,
95
+ plan: AI_FREE_PAGE_RECORDED_PLAN,
96
+ answer: null,
97
+ usage: {
98
+ inputTokens: 1064,
99
+ outputTokens: 1388,
100
+ cacheReadTokens: 4264,
101
+ cacheWriteTokens: 4264
102
+ },
103
+ steps: [
104
+ {
105
+ step: 'job.plan',
106
+ model: 'claude-sonnet-5',
107
+ usage: {
108
+ inputTokens: 1064,
109
+ outputTokens: 1388,
110
+ cacheReadTokens: 4264,
111
+ cacheWriteTokens: 4264
112
+ },
113
+ estCostUsd: 0.041281,
114
+ credits: 42
115
+ },
116
+ {
117
+ step: 'job.layout',
118
+ model: 'claude-sonnet-5',
119
+ usage: {
120
+ inputTokens: 0,
121
+ outputTokens: 0,
122
+ cacheReadTokens: 0,
123
+ cacheWriteTokens: 0
124
+ },
125
+ estCostUsd: 0,
126
+ credits: 0
127
+ }
128
+ ],
129
+ note: 'stopped: This page needs what the site does not have yet. Create the component “consultation-form” on the Components page, then describe the page again.',
130
+ rubric: {
131
+ structure: 2,
132
+ copy: 4,
133
+ reuse: 2,
134
+ grader: 'claude-opus-5',
135
+ notes: 'Structure: the consultation form is placed as "new:consultation-form" but never declared in the create list with fields and a rationale, so the brief\'s form is proposed without being created, and the hero section wrongly lists the layout among what it places (the layout already belongs at screen level). Reuse: the layout creation is justified, but the four repeating practice-area blocks and three how-we-work blocks are left as loose items instead of one reusable component each with typed props filled by instances.'
136
+ }
137
+ }
138
+ };
139
+ /**
140
+ * RECORDED, NOT GOLDEN: the plan the third live recording of the Free page
141
+ * brief kept (`page-free-law-firm-about`, 2026-09-17), exactly as recorded. It
142
+ * asked for eight sections beside the layout it creates, where the Free
143
+ * wall's worst case fits six (AGL-3070), and it split "the four areas we
144
+ * practice" into four sections of one item each (AGL-3071).
145
+ */ export const AI_FREE_PAGE_BUILT_PLAN = {
146
+ reuse: [],
147
+ create: [
148
+ {
149
+ kind: 'layout',
150
+ name: 'main-layout',
151
+ why: 'Site has no layout yet; header, navigation and footer must live in a layout rather than on the page.',
152
+ duplicateOf: null,
153
+ fields: [
154
+ 'header: logo + nav links (Home, About, Practice Areas, Contact)',
155
+ 'footer: firm name, address, phone, copyright'
156
+ ]
157
+ }
158
+ ],
159
+ screens: [
160
+ {
161
+ title: 'About Brightwater Law',
162
+ slug: '/about',
163
+ layout: 'new:main-layout',
164
+ template: null,
165
+ duplicateOf: null,
166
+ nav: true,
167
+ seoTitle: 'About Brightwater Law | Our Firm & Practice Areas',
168
+ seoDescription: 'Learn who Brightwater Law is, the four areas we practice, how we work with clients, and request a consultation.',
169
+ sections: [
170
+ {
171
+ name: 'hero',
172
+ uses: [],
173
+ items: 0
174
+ },
175
+ {
176
+ name: 'who we are',
177
+ uses: [],
178
+ items: 0
179
+ },
180
+ {
181
+ name: 'practice area: business & corporate law',
182
+ uses: [],
183
+ items: 1
184
+ },
185
+ {
186
+ name: 'practice area: real estate law',
187
+ uses: [],
188
+ items: 1
189
+ },
190
+ {
191
+ name: 'practice area: family law',
192
+ uses: [],
193
+ items: 1
194
+ },
195
+ {
196
+ name: 'practice area: estate planning',
197
+ uses: [],
198
+ items: 1
199
+ },
200
+ {
201
+ name: 'how we work with clients',
202
+ uses: [],
203
+ items: 3
204
+ },
205
+ {
206
+ name: 'request a consultation form',
207
+ uses: [],
208
+ items: 0
209
+ }
210
+ ]
211
+ }
212
+ ]
213
+ };
214
+ /**
215
+ * RECORDED, NOT GOLDEN: two sections of the page the third live recording of
216
+ * the Free page brief built (`page-free-law-firm-about`, 2026-09-17), copied
217
+ * by hand exactly as the page stored them, under the page's own root. The
218
+ * hero's subhead ends "…that matter most, with", its "Request a Consultation"
219
+ * button names no destination, and the estate planning list ends on a List
220
+ * Item whose text is empty. Every validator passed the page; the rules of
221
+ * AGL-3072 refuse each of the three, and nothing else on it.
222
+ */ export const AI_FREE_PAGE_BUILT_SECTIONS = {
223
+ rootId: CANVAS_ROOT_ELEMENT_ID,
224
+ nodes: {
225
+ [CANVAS_ROOT_ELEMENT_ID]: {
226
+ componentId: 'div',
227
+ nodes: [
228
+ 'ai-eval-page-fr-section-1',
229
+ 'ai-eval-page-fr-section-6'
230
+ ]
231
+ },
232
+ 'ai-eval-page-fr-section-1': {
233
+ componentId: 'section',
234
+ props: {
235
+ element: 'section',
236
+ ariaLabel: 'Hero'
237
+ },
238
+ nodes: [
239
+ 'kUk5o1Ekv0'
240
+ ]
241
+ },
242
+ kUk5o1Ekv0: {
243
+ componentId: 'muiStack',
244
+ props: {
245
+ direction: 'column',
246
+ alignItems: 'flex-start',
247
+ justifyContent: 'center'
248
+ },
249
+ sx: {
250
+ py: 8,
251
+ gap: 2
252
+ },
253
+ nodes: [
254
+ 'ggok0RX2Xx',
255
+ 'Nh44I1DEPm',
256
+ 'IxdLHxS6ds',
257
+ 'Jgquy_nSMC'
258
+ ]
259
+ },
260
+ ggok0RX2Xx: {
261
+ componentId: 'muiTypography',
262
+ props: {
263
+ children: 'Brightwater Law',
264
+ variant: 'subtitle1',
265
+ component: 'p'
266
+ },
267
+ sx: {
268
+ color: 'secondary.main'
269
+ }
270
+ },
271
+ Nh44I1DEPm: {
272
+ componentId: 'muiTypography',
273
+ props: {
274
+ children: 'About Brightwater Law',
275
+ variant: 'h1',
276
+ component: 'h1'
277
+ }
278
+ },
279
+ IxdLHxS6ds: {
280
+ componentId: 'muiTypography',
281
+ props: {
282
+ children: 'We are a client-focused law firm guiding individuals, families and businesses through the moments that matter most, with',
283
+ variant: 'h5',
284
+ component: 'p'
285
+ },
286
+ sx: {
287
+ color: 'text.secondary',
288
+ maxWidth: 'sm'
289
+ }
290
+ },
291
+ Jgquy_nSMC: {
292
+ componentId: 'muiButton',
293
+ props: {
294
+ children: 'Request a Consultation',
295
+ color: 'primary',
296
+ variant: 'contained',
297
+ size: 'large',
298
+ target: '_self'
299
+ }
300
+ },
301
+ 'ai-eval-page-fr-section-6': {
302
+ componentId: 'section',
303
+ props: {
304
+ element: 'section',
305
+ ariaLabel: 'Practice Area: Estate Planning'
306
+ },
307
+ nodes: [
308
+ '2De3Q98WRY'
309
+ ]
310
+ },
311
+ '2De3Q98WRY': {
312
+ componentId: 'muiContainer',
313
+ props: {
314
+ maxWidth: 'lg'
315
+ },
316
+ nodes: [
317
+ 'Aa5nKvtAXS'
318
+ ]
319
+ },
320
+ Aa5nKvtAXS: {
321
+ componentId: 'muiStack',
322
+ props: {
323
+ direction: 'column',
324
+ alignItems: 'stretch'
325
+ },
326
+ sx: {
327
+ gap: 2,
328
+ py: 6
329
+ },
330
+ nodes: [
331
+ 'ERmFwLkC0-',
332
+ 'IdsVKwRA9T',
333
+ 'ZgUV9bogTg'
334
+ ]
335
+ },
336
+ 'ERmFwLkC0-': {
337
+ componentId: 'muiTypography',
338
+ props: {
339
+ variant: 'h2',
340
+ component: 'h2',
341
+ children: 'Estate Planning'
342
+ }
343
+ },
344
+ IdsVKwRA9T: {
345
+ componentId: 'muiTypography',
346
+ props: {
347
+ variant: 'body1',
348
+ children: 'We help you plan for the future with clear, practical documents that protect what matters most to you. From wills and trusts to powers of attorney, we make sure your wishes are honored and your loved ones are spared unnecessary stress.'
349
+ }
350
+ },
351
+ ZgUV9bogTg: {
352
+ componentId: 'muiList',
353
+ nodes: [
354
+ '6m3W_Nwuxt',
355
+ 'bCzxZHTbtH',
356
+ '3mnFquSlTC',
357
+ 'Z-lpdjMIZb'
358
+ ]
359
+ },
360
+ '6m3W_Nwuxt': {
361
+ componentId: 'muiListItem',
362
+ props: {
363
+ disableGutters: true
364
+ },
365
+ nodes: [
366
+ '3HB6XUZteX'
367
+ ]
368
+ },
369
+ '3HB6XUZteX': {
370
+ componentId: 'muiListItemText',
371
+ props: {
372
+ primary: 'Wills & Trusts',
373
+ secondary: 'Drafting and updating wills and trusts that reflect your intentions and minimize complications for your heirs.'
374
+ }
375
+ },
376
+ bCzxZHTbtH: {
377
+ componentId: 'muiListItem',
378
+ props: {
379
+ disableGutters: true
380
+ },
381
+ nodes: [
382
+ 'iafJroc-Eo'
383
+ ]
384
+ },
385
+ 'iafJroc-Eo': {
386
+ componentId: 'muiListItemText',
387
+ props: {
388
+ primary: 'Powers of Attorney',
389
+ secondary: 'Naming trusted decision-makers for your finances and healthcare should you become unable to act for yourself.'
390
+ }
391
+ },
392
+ '3mnFquSlTC': {
393
+ componentId: 'muiListItem',
394
+ props: {
395
+ disableGutters: true
396
+ },
397
+ nodes: [
398
+ 't-qUET--I-'
399
+ ]
400
+ },
401
+ 't-qUET--I-': {
402
+ componentId: 'muiListItemText',
403
+ props: {
404
+ primary: 'Estate Administration',
405
+ secondary: 'Guiding families through probate and trust administration with clarity and steady support.'
406
+ }
407
+ },
408
+ 'Z-lpdjMIZb': {
409
+ componentId: 'muiListItem',
410
+ props: {
411
+ disableGutters: true,
412
+ divider: false
413
+ },
414
+ nodes: [
415
+ 'p2GOnWVIgq'
416
+ ]
417
+ },
418
+ p2GOnWVIgq: {
419
+ componentId: 'muiListItemText'
420
+ }
421
+ }
422
+ };
423
+ /**
424
+ * RECORDED, NOT GOLDEN: the two answers the fourth live recording of the Free
425
+ * page brief gave its first section, "hero introduction"
426
+ * (`page-free-law-firm-about`, 2026-09-17 06:54Z, claude-sonnet-5), exactly
427
+ * as the tool received them (AGL-3097). The first left its "Request a
428
+ * Consultation" button with no destination and wrote a subhead past the 120
429
+ * characters its heading style holds. The re-ask was answered with the button
430
+ * sent to "#consultation-form", an anchor to the form section the plan places
431
+ * last. The palette validator drops a bare anchor, rule 10 refused the answer
432
+ * again, and the page stopped at its first section.
433
+ */ export const AI_FREE_PAGE_HERO_ANSWERS = [
434
+ {
435
+ tree: '{"rootId":"root","nodes":{\n"root":{"componentId":"div","props":{},"nodes":["section1"]},\n"section1":{"componentId":"section","props":{"element":"section","ariaLabel":"Introduction"},"nodes":["container1"]},\n"container1":{"componentId":"muiContainer","props":{"maxWidth":"md"},"nodes":["stack1"]},\n"stack1":{"componentId":"muiStack","props":{"direction":"column","alignItems":"flex-start","justifyContent":"center"},"sx":{"gap":3,"py":8},"nodes":["eyebrow","h1","subtitle","ctaStack"]},\n"eyebrow":{"componentId":"muiTypography","props":{"children":"Brightwater Law","variant":"subtitle1","component":"p"},"sx":{"color":"secondary.main"}},\n"h1":{"componentId":"muiTypography","props":{"children":"Counsel you can trust, from people who listen first","variant":"h1","component":"h1"}},\n"subtitle":{"componentId":"muiTypography","props":{"children":"We\'re a client-focused firm built on plain talk, careful strategy, and steady advocacy — for individuals and businesses facing decisions that matter.","variant":"h5","component":"p"},"sx":{"color":"text.secondary","fontWeight":400}},\n"ctaStack":{"componentId":"muiStack","props":{"direction":"row","alignItems":"center"},"sx":{"gap":2,"pt":1},"nodes":["ctaButton"]},\n"ctaButton":{"componentId":"muiButton","props":{"children":"Request a Consultation","color":"primary","variant":"contained","size":"large","target":"_self"}}\n}}'
436
+ },
437
+ {
438
+ tree: '{"rootId":"root","nodes":{"root":{"componentId":"div","nodes":["section1"]},"section1":{"componentId":"section","props":{"element":"section","ariaLabel":"Hero introduction"},"nodes":["container1"]},"container1":{"componentId":"muiContainer","props":{"maxWidth":"md"},"sx":{"paddingY":8},"nodes":["stack1"]},"stack1":{"componentId":"muiStack","props":{"direction":"column","alignItems":"center"},"sx":{"gap":3,"textAlign":"center"},"nodes":["eyebrow","h1","subtitle","ctaLink"]},"eyebrow":{"componentId":"muiTypography","props":{"children":"Brightwater Law","variant":"subtitle1","component":"p"},"sx":{"color":"secondary.main","fontWeight":600}},"h1":{"componentId":"muiTypography","props":{"children":"Plain talk. Careful strategy. Steady advocacy.","variant":"h1","component":"h1"}},"subtitle":{"componentId":"muiTypography","props":{"children":"A client-focused firm for individuals and businesses facing decisions that matter.","variant":"h5","component":"p"},"sx":{"color":"text.secondary","fontWeight":400}},"ctaLink":{"componentId":"muiButton","props":{"children":"Request a Consultation","color":"primary","variant":"contained","size":"large","href":"#consultation-form"}}}}'
439
+ }
440
+ ];
441
+
442
+ //# sourceMappingURL=ai-free-page-recording.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../libs/plugins/ai/src/lib/jobs/fixtures/ai-free-page-recording.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CANVAS_ROOT_ELEMENT_ID } from '@aglyn/aglyn/foundation/constants/canvas'\nimport type { AiBuildPlan } from '../../model/ai-build-plan'\nimport type { AiDoctrineTree } from '../../runtime/ai-doctrine-validators'\nimport type { AiEvalRecording } from '../../runtime/ai-eval'\n\n/**\n * RECORDED, NOT GOLDEN: the first live recording of the Free page brief\n * (`page-free-law-firm-about`, 2026-09-16), kept as the shape it was written\n * in so the specs can hold the rules to it (AGL-3040). A recording file is\n * never committed; this is the one a spec needs, copied here by hand.\n *\n * Its plan created only the layout, then placed a consultation form it never\n * declared and listed the layout among the hero section's placements. No\n * plan rule refused either, so the plan was kept, and the page step's first\n * pass stopped before building anything: the recording metered the plan\n * alone, and still fit the 300-credit wall it could prove nothing about.\n */\n\n/** The plan the plan step kept, exactly as recorded. */\nexport const AI_FREE_PAGE_RECORDED_PLAN: AiBuildPlan = {\n reuse: [],\n create: [\n {\n kind: 'layout',\n name: 'main-layout',\n why: 'Site has no layouts; header, nav and footer must live in a layout rather than on the page.',\n duplicateOf: null,\n fields: [\n 'layoutSlot:slot',\n 'header:region (logo, nav links)',\n 'footer:region (firm name, address, phone, copyright)',\n ],\n },\n ],\n screens: [\n {\n title: 'About Us',\n slug: '/about',\n layout: 'new:main-layout',\n template: null,\n duplicateOf: null,\n nav: true,\n seoTitle: 'About Brightwater Law | Our Firm & Practice Areas',\n seoDescription:\n 'Meet Brightwater Law: our approach, the four areas we practice, how we work with clients, and how to request a consultation.',\n sections: [\n { name: 'hero', uses: ['new:main-layout'], items: 0 },\n { name: 'who we are', uses: [], items: 0 },\n { name: 'practice areas', uses: [], items: 4 },\n { name: 'how we work with clients', uses: [], items: 3 },\n { name: 'consultation request form', uses: ['new:consultation-form'], items: 0 },\n ],\n },\n ],\n}\n\n/** The whole recording, as the live run wrote it. */\nexport const AI_FREE_PAGE_STOPPED_RECORDING: AiEvalRecording = {\n caseId: 'page-free-law-firm-about',\n candidate: {\n source: 'recorded',\n scope: 'plan',\n step: 'job.page',\n model: 'claude-sonnet-5',\n effort: null,\n plan: AI_FREE_PAGE_RECORDED_PLAN,\n answer: null,\n usage: { inputTokens: 1_064, outputTokens: 1_388, cacheReadTokens: 4_264, cacheWriteTokens: 4_264 },\n steps: [\n {\n step: 'job.plan',\n model: 'claude-sonnet-5',\n usage: { inputTokens: 1_064, outputTokens: 1_388, cacheReadTokens: 4_264, cacheWriteTokens: 4_264 },\n estCostUsd: 0.041281,\n credits: 42,\n },\n {\n step: 'job.layout',\n model: 'claude-sonnet-5',\n usage: { inputTokens: 0, outputTokens: 0, cacheReadTokens: 0, cacheWriteTokens: 0 },\n estCostUsd: 0,\n credits: 0,\n },\n ],\n note: 'stopped: This page needs what the site does not have yet. Create the component “consultation-form” on the Components page, then describe the page again.',\n rubric: {\n structure: 2,\n copy: 4,\n reuse: 2,\n grader: 'claude-opus-5',\n notes:\n 'Structure: the consultation form is placed as \"new:consultation-form\" but never declared in the create list with fields and a rationale, so the brief\\'s form is proposed without being created, and the hero section wrongly lists the layout among what it places (the layout already belongs at screen level). Reuse: the layout creation is justified, but the four repeating practice-area blocks and three how-we-work blocks are left as loose items instead of one reusable component each with typed props filled by instances.',\n },\n },\n}\n\n/**\n * RECORDED, NOT GOLDEN: the plan the third live recording of the Free page\n * brief kept (`page-free-law-firm-about`, 2026-09-17), exactly as recorded. It\n * asked for eight sections beside the layout it creates, where the Free\n * wall's worst case fits six (AGL-3070), and it split \"the four areas we\n * practice\" into four sections of one item each (AGL-3071).\n */\nexport const AI_FREE_PAGE_BUILT_PLAN: AiBuildPlan = {\n reuse: [],\n create: [\n {\n kind: 'layout',\n name: 'main-layout',\n why: 'Site has no layout yet; header, navigation and footer must live in a layout rather than on the page.',\n duplicateOf: null,\n fields: [\n 'header: logo + nav links (Home, About, Practice Areas, Contact)',\n 'footer: firm name, address, phone, copyright',\n ],\n },\n ],\n screens: [\n {\n title: 'About Brightwater Law',\n slug: '/about',\n layout: 'new:main-layout',\n template: null,\n duplicateOf: null,\n nav: true,\n seoTitle: 'About Brightwater Law | Our Firm & Practice Areas',\n seoDescription:\n 'Learn who Brightwater Law is, the four areas we practice, how we work with clients, and request a consultation.',\n sections: [\n { name: 'hero', uses: [], items: 0 },\n { name: 'who we are', uses: [], items: 0 },\n { name: 'practice area: business & corporate law', uses: [], items: 1 },\n { name: 'practice area: real estate law', uses: [], items: 1 },\n { name: 'practice area: family law', uses: [], items: 1 },\n { name: 'practice area: estate planning', uses: [], items: 1 },\n { name: 'how we work with clients', uses: [], items: 3 },\n { name: 'request a consultation form', uses: [], items: 0 },\n ],\n },\n ],\n}\n\n/**\n * RECORDED, NOT GOLDEN: two sections of the page the third live recording of\n * the Free page brief built (`page-free-law-firm-about`, 2026-09-17), copied\n * by hand exactly as the page stored them, under the page's own root. The\n * hero's subhead ends \"…that matter most, with\", its \"Request a Consultation\"\n * button names no destination, and the estate planning list ends on a List\n * Item whose text is empty. Every validator passed the page; the rules of\n * AGL-3072 refuse each of the three, and nothing else on it.\n */\nexport const AI_FREE_PAGE_BUILT_SECTIONS: AiDoctrineTree = {\n rootId: CANVAS_ROOT_ELEMENT_ID,\n nodes: {\n [CANVAS_ROOT_ELEMENT_ID]: { componentId: 'div', nodes: ['ai-eval-page-fr-section-1', 'ai-eval-page-fr-section-6'] },\n 'ai-eval-page-fr-section-1': { componentId: 'section', props: { element: 'section', ariaLabel: 'Hero' }, nodes: ['kUk5o1Ekv0'] },\n kUk5o1Ekv0: { componentId: 'muiStack', props: { direction: 'column', alignItems: 'flex-start', justifyContent: 'center' }, sx: { py: 8, gap: 2 }, nodes: ['ggok0RX2Xx', 'Nh44I1DEPm', 'IxdLHxS6ds', 'Jgquy_nSMC'] },\n ggok0RX2Xx: { componentId: 'muiTypography', props: { children: 'Brightwater Law', variant: 'subtitle1', component: 'p' }, sx: { color: 'secondary.main' } },\n Nh44I1DEPm: { componentId: 'muiTypography', props: { children: 'About Brightwater Law', variant: 'h1', component: 'h1' } },\n IxdLHxS6ds: { componentId: 'muiTypography', props: { children: 'We are a client-focused law firm guiding individuals, families and businesses through the moments that matter most, with', variant: 'h5', component: 'p' }, sx: { color: 'text.secondary', maxWidth: 'sm' } },\n Jgquy_nSMC: { componentId: 'muiButton', props: { children: 'Request a Consultation', color: 'primary', variant: 'contained', size: 'large', target: '_self' } },\n 'ai-eval-page-fr-section-6': { componentId: 'section', props: { element: 'section', ariaLabel: 'Practice Area: Estate Planning' }, nodes: ['2De3Q98WRY'] },\n '2De3Q98WRY': { componentId: 'muiContainer', props: { maxWidth: 'lg' }, nodes: ['Aa5nKvtAXS'] },\n Aa5nKvtAXS: { componentId: 'muiStack', props: { direction: 'column', alignItems: 'stretch' }, sx: { gap: 2, py: 6 }, nodes: ['ERmFwLkC0-', 'IdsVKwRA9T', 'ZgUV9bogTg'] },\n 'ERmFwLkC0-': { componentId: 'muiTypography', props: { variant: 'h2', component: 'h2', children: 'Estate Planning' } },\n IdsVKwRA9T: { componentId: 'muiTypography', props: { variant: 'body1', children: 'We help you plan for the future with clear, practical documents that protect what matters most to you. From wills and trusts to powers of attorney, we make sure your wishes are honored and your loved ones are spared unnecessary stress.' } },\n ZgUV9bogTg: { componentId: 'muiList', nodes: ['6m3W_Nwuxt', 'bCzxZHTbtH', '3mnFquSlTC', 'Z-lpdjMIZb'] },\n '6m3W_Nwuxt': { componentId: 'muiListItem', props: { disableGutters: true }, nodes: ['3HB6XUZteX'] },\n '3HB6XUZteX': { componentId: 'muiListItemText', props: { primary: 'Wills & Trusts', secondary: 'Drafting and updating wills and trusts that reflect your intentions and minimize complications for your heirs.' } },\n bCzxZHTbtH: { componentId: 'muiListItem', props: { disableGutters: true }, nodes: ['iafJroc-Eo'] },\n 'iafJroc-Eo': { componentId: 'muiListItemText', props: { primary: 'Powers of Attorney', secondary: 'Naming trusted decision-makers for your finances and healthcare should you become unable to act for yourself.' } },\n '3mnFquSlTC': { componentId: 'muiListItem', props: { disableGutters: true }, nodes: ['t-qUET--I-'] },\n 't-qUET--I-': { componentId: 'muiListItemText', props: { primary: 'Estate Administration', secondary: 'Guiding families through probate and trust administration with clarity and steady support.' } },\n 'Z-lpdjMIZb': { componentId: 'muiListItem', props: { disableGutters: true, divider: false }, nodes: ['p2GOnWVIgq'] },\n p2GOnWVIgq: { componentId: 'muiListItemText' },\n },\n}\n\n/**\n * RECORDED, NOT GOLDEN: the two answers the fourth live recording of the Free\n * page brief gave its first section, \"hero introduction\"\n * (`page-free-law-firm-about`, 2026-09-17 06:54Z, claude-sonnet-5), exactly\n * as the tool received them (AGL-3097). The first left its \"Request a\n * Consultation\" button with no destination and wrote a subhead past the 120\n * characters its heading style holds. The re-ask was answered with the button\n * sent to \"#consultation-form\", an anchor to the form section the plan places\n * last. The palette validator drops a bare anchor, rule 10 refused the answer\n * again, and the page stopped at its first section.\n */\nexport const AI_FREE_PAGE_HERO_ANSWERS: readonly [{ tree: string }, { tree: string }] = [\n {\n tree: '{\"rootId\":\"root\",\"nodes\":{\\n\"root\":{\"componentId\":\"div\",\"props\":{},\"nodes\":[\"section1\"]},\\n\"section1\":{\"componentId\":\"section\",\"props\":{\"element\":\"section\",\"ariaLabel\":\"Introduction\"},\"nodes\":[\"container1\"]},\\n\"container1\":{\"componentId\":\"muiContainer\",\"props\":{\"maxWidth\":\"md\"},\"nodes\":[\"stack1\"]},\\n\"stack1\":{\"componentId\":\"muiStack\",\"props\":{\"direction\":\"column\",\"alignItems\":\"flex-start\",\"justifyContent\":\"center\"},\"sx\":{\"gap\":3,\"py\":8},\"nodes\":[\"eyebrow\",\"h1\",\"subtitle\",\"ctaStack\"]},\\n\"eyebrow\":{\"componentId\":\"muiTypography\",\"props\":{\"children\":\"Brightwater Law\",\"variant\":\"subtitle1\",\"component\":\"p\"},\"sx\":{\"color\":\"secondary.main\"}},\\n\"h1\":{\"componentId\":\"muiTypography\",\"props\":{\"children\":\"Counsel you can trust, from people who listen first\",\"variant\":\"h1\",\"component\":\"h1\"}},\\n\"subtitle\":{\"componentId\":\"muiTypography\",\"props\":{\"children\":\"We\\'re a client-focused firm built on plain talk, careful strategy, and steady advocacy — for individuals and businesses facing decisions that matter.\",\"variant\":\"h5\",\"component\":\"p\"},\"sx\":{\"color\":\"text.secondary\",\"fontWeight\":400}},\\n\"ctaStack\":{\"componentId\":\"muiStack\",\"props\":{\"direction\":\"row\",\"alignItems\":\"center\"},\"sx\":{\"gap\":2,\"pt\":1},\"nodes\":[\"ctaButton\"]},\\n\"ctaButton\":{\"componentId\":\"muiButton\",\"props\":{\"children\":\"Request a Consultation\",\"color\":\"primary\",\"variant\":\"contained\",\"size\":\"large\",\"target\":\"_self\"}}\\n}}',\n },\n {\n tree: '{\"rootId\":\"root\",\"nodes\":{\"root\":{\"componentId\":\"div\",\"nodes\":[\"section1\"]},\"section1\":{\"componentId\":\"section\",\"props\":{\"element\":\"section\",\"ariaLabel\":\"Hero introduction\"},\"nodes\":[\"container1\"]},\"container1\":{\"componentId\":\"muiContainer\",\"props\":{\"maxWidth\":\"md\"},\"sx\":{\"paddingY\":8},\"nodes\":[\"stack1\"]},\"stack1\":{\"componentId\":\"muiStack\",\"props\":{\"direction\":\"column\",\"alignItems\":\"center\"},\"sx\":{\"gap\":3,\"textAlign\":\"center\"},\"nodes\":[\"eyebrow\",\"h1\",\"subtitle\",\"ctaLink\"]},\"eyebrow\":{\"componentId\":\"muiTypography\",\"props\":{\"children\":\"Brightwater Law\",\"variant\":\"subtitle1\",\"component\":\"p\"},\"sx\":{\"color\":\"secondary.main\",\"fontWeight\":600}},\"h1\":{\"componentId\":\"muiTypography\",\"props\":{\"children\":\"Plain talk. Careful strategy. Steady advocacy.\",\"variant\":\"h1\",\"component\":\"h1\"}},\"subtitle\":{\"componentId\":\"muiTypography\",\"props\":{\"children\":\"A client-focused firm for individuals and businesses facing decisions that matter.\",\"variant\":\"h5\",\"component\":\"p\"},\"sx\":{\"color\":\"text.secondary\",\"fontWeight\":400}},\"ctaLink\":{\"componentId\":\"muiButton\",\"props\":{\"children\":\"Request a Consultation\",\"color\":\"primary\",\"variant\":\"contained\",\"size\":\"large\",\"href\":\"#consultation-form\"}}}}',\n },\n]\n"],"names":["CANVAS_ROOT_ELEMENT_ID","AI_FREE_PAGE_RECORDED_PLAN","reuse","create","kind","name","why","duplicateOf","fields","screens","title","slug","layout","template","nav","seoTitle","seoDescription","sections","uses","items","AI_FREE_PAGE_STOPPED_RECORDING","caseId","candidate","source","scope","step","model","effort","plan","answer","usage","inputTokens","outputTokens","cacheReadTokens","cacheWriteTokens","steps","estCostUsd","credits","note","rubric","structure","copy","grader","notes","AI_FREE_PAGE_BUILT_PLAN","AI_FREE_PAGE_BUILT_SECTIONS","rootId","nodes","componentId","props","element","ariaLabel","kUk5o1Ekv0","direction","alignItems","justifyContent","sx","py","gap","ggok0RX2Xx","children","variant","component","color","Nh44I1DEPm","IxdLHxS6ds","maxWidth","Jgquy_nSMC","size","target","Aa5nKvtAXS","IdsVKwRA9T","ZgUV9bogTg","disableGutters","primary","secondary","bCzxZHTbtH","divider","p2GOnWVIgq","AI_FREE_PAGE_HERO_ANSWERS","tree"],"mappings":"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"}
@@ -0,0 +1,146 @@
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 { AiBuildPlan } from '../../model/ai-build-plan';
18
+ import type { AiPageType } from '../../model/ai-page-job';
19
+ import { type AiSiteInventory } from '../../model/ai-site-inventory';
20
+ /**
21
+ * Ten page briefs across the ICPs, with golden answers (AGL-2907): four agency
22
+ * client sites, three multi-brand businesses and three single small
23
+ * businesses, over seven page types.
24
+ *
25
+ * GOLDEN, NOT RECORDED. Each answer is written by hand in the shape a model
26
+ * answers a section in — the tree a `submit_section` call carries — and no
27
+ * provider produced it. The evals replay them through the real page step,
28
+ * plan rules, doctrine and draft writer, so they prove the step and the
29
+ * rules, never a model's quality, and the credits they add up to are an
30
+ * estimate from their size, labeled as one wherever it is quoted.
31
+ *
32
+ * Every plan is one a page job can build: one screen that places what its
33
+ * site already has — components by id, forms by id, links to its screens —
34
+ * and creates nothing. Rows that repeat are a component the site keeps, as
35
+ * the plan rules require. Copy leaves every fact a brief would not give in
36
+ * square brackets, as the building rules ask a model to.
37
+ */
38
+ /** One node as a model writes it: its own id is the key it sits under. */
39
+ export interface AiGoldenNode {
40
+ componentId: string;
41
+ props?: Record<string, unknown>;
42
+ sx?: Record<string, unknown>;
43
+ nodes?: string[];
44
+ /**
45
+ * A repeated item written once (AGL-3053): each copy's values, in the order
46
+ * of the `{{1}}`, `{{2}}` placeholders its subtree carries.
47
+ */
48
+ repeat?: string[][];
49
+ }
50
+ /** A section as the model answers it: the document wrapper holding one Section. */
51
+ export interface AiGoldenSection {
52
+ rootId: string;
53
+ nodes: Record<string, AiGoldenNode>;
54
+ }
55
+ export interface AiPageBriefFixture {
56
+ id: string;
57
+ icp: 'agency' | 'multi-brand' | 'small-business';
58
+ pageType: AiPageType;
59
+ brief: string;
60
+ inventory: AiSiteInventory;
61
+ /** The plan a member confirmed: one screen, reusing what the site has, creating nothing. */
62
+ plan: AiBuildPlan;
63
+ /** The golden answer to each section pass, in the plan's order. */
64
+ answers: AiGoldenSection[];
65
+ /** The listing the golden SEO answer proposes. */
66
+ seo: {
67
+ title: string;
68
+ description: string;
69
+ };
70
+ }
71
+ export declare const AI_PAGE_BRIEF_FIXTURES: readonly AiPageBriefFixture[];
72
+ /**
73
+ * A page brief for a workspace that keeps no reusable components, answered the
74
+ * way such a workspace answers (AGL-3053): every repeated item written once
75
+ * with its copies' values listed. `writtenOut` is the same page with every
76
+ * repeated item written out card by card — the control, which the section
77
+ * check draws the golden answers into, node for node apart from ids.
78
+ */
79
+ export interface AiFreePageFixture extends AiPageBriefFixture {
80
+ /** The golden answers, in the plan's order, with every repeated item written out in full. */
81
+ writtenOut: AiGoldenSection[];
82
+ }
83
+ /**
84
+ * A page brief for a Free workspace (AGL-3030): a site that keeps no reusable
85
+ * components and no saved forms, with the one layout its plan includes. Its
86
+ * practice areas repeat and its consultation request is a form, so the page
87
+ * is built the one way such a workspace can build it — the cards drawn where
88
+ * they repeat, written once in the answer (AGL-3053), and the form carried by
89
+ * the page with its fields inside it. The plan the page job keeps for it is
90
+ * held to the Free workspace's capabilities, never the whole doctrine.
91
+ */
92
+ export declare const AI_FREE_PAGE_FIXTURE: AiFreePageFixture;
93
+ /**
94
+ * A Free law firm's practice areas with copy of the length a firm writes
95
+ * (AGL-3053): four areas for families and six for businesses and property
96
+ * owners, 25 to 29 words a summary. A live Free About page's four practice
97
+ * areas, drawn card by card, were cut off at their pass's ceiling on their
98
+ * answer and on their re-ask. Written once, four and six such cards each fit a
99
+ * balanced-tier pass; written out card by card, neither does
100
+ * (`ai-job-page-evals.spec.ts`).
101
+ */
102
+ export declare const AI_FREE_PRACTICE_AREAS_FIXTURE: AiFreePageFixture;
103
+ /**
104
+ * A page brief whose plan creates what its site lacks (AGL-3031): a layout, a
105
+ * reusable component and a saved form, on a Starter site that has none of
106
+ * them. The page job builds all three first — each through the step that
107
+ * builds its kind, answering with the golden that step's own spec holds —
108
+ * and then the page, which places the component and binds the form by the
109
+ * ids the job built them under, and renders inside the layout.
110
+ *
111
+ * Every draft is named by the id the job recorded for it before anything was
112
+ * built (AGL-3079): each creation by the id on its plan entry, which the
113
+ * section answers name, and the page by the id on the job's generation step.
114
+ */
115
+ export interface AiPageCreationFixture extends AiPageBriefFixture {
116
+ /** The job the page is built under. */
117
+ jobId: string;
118
+ /** The id the job recorded for its page on its generation step. */
119
+ screenId: string;
120
+ /** The layout step's golden answer: a header of screen links, the slot and a footer. */
121
+ layout: AiGoldenSection;
122
+ /** The component step's golden, by its file under `jobs/goldens`. */
123
+ componentGolden: string;
124
+ /** The form step's golden, by its key in `fixtures/ai-job-form-goldens.json`. */
125
+ formGolden: string;
126
+ }
127
+ export declare const AI_PAGE_CREATION_FIXTURE: AiPageCreationFixture;
128
+ /**
129
+ * A page whose second section introduces two people (AGL-3042): a photo, a
130
+ * name, a role and a short bio for each, as a law firm's About page asks for
131
+ * its attorneys, on a paid workspace whose site keeps no card for a person.
132
+ * Two items are fewer than a component is required for, so the section draws
133
+ * both where they stand.
134
+ *
135
+ * The golden answer is the drawing a section's request asks for at the
136
+ * balanced tier's ceiling: a Card a person holding the four, in fifteen
137
+ * elements. `roomier` is the same two people drawn the way a model reaches for
138
+ * with more elements to spend — a grid cell, a card body and styles a person,
139
+ * and an introduction — in twenty, inside the twenty-three a budget counted in
140
+ * estimated tokens allows. The page's evals measure both against the ceiling.
141
+ */
142
+ export interface AiTwoPersonPageFixture extends AiPageBriefFixture {
143
+ /** The introduction drawn in twenty elements: a valid section, and past the ceiling in real tokens. */
144
+ roomier: AiGoldenSection;
145
+ }
146
+ export declare const AI_TWO_PERSON_PAGE_FIXTURE: AiTwoPersonPageFixture;