@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.
- package/LICENSE +201 -0
- package/README.md +25 -0
- package/package.json +60 -0
- package/src/index.d.ts +21 -0
- package/src/index.js +22 -0
- package/src/index.js.map +1 -0
- package/src/lib/activity/ai-activity-actions.d.ts +106 -0
- package/src/lib/activity/ai-activity-actions.js +209 -0
- package/src/lib/activity/ai-activity-actions.js.map +1 -0
- package/src/lib/activity/ai-activity.d.ts +219 -0
- package/src/lib/activity/ai-activity.js +251 -0
- package/src/lib/activity/ai-activity.js.map +1 -0
- package/src/lib/billing/ai-overage-charge.d.ts +102 -0
- package/src/lib/billing/ai-overage-charge.js +258 -0
- package/src/lib/billing/ai-overage-charge.js.map +1 -0
- package/src/lib/billing/ai-overage-close.d.ts +62 -0
- package/src/lib/billing/ai-overage-close.js +129 -0
- package/src/lib/billing/ai-overage-close.js.map +1 -0
- package/src/lib/billing/ai-overage-cutover.d.ts +63 -0
- package/src/lib/billing/ai-overage-cutover.js +114 -0
- package/src/lib/billing/ai-overage-cutover.js.map +1 -0
- package/src/lib/billing/ai-overage-events.d.ts +77 -0
- package/src/lib/billing/ai-overage-events.js +174 -0
- package/src/lib/billing/ai-overage-events.js.map +1 -0
- package/src/lib/billing/ai-overage-gate.d.ts +147 -0
- package/src/lib/billing/ai-overage-gate.js +177 -0
- package/src/lib/billing/ai-overage-gate.js.map +1 -0
- package/src/lib/billing/ai-overage-ledger.d.ts +135 -0
- package/src/lib/billing/ai-overage-ledger.js +278 -0
- package/src/lib/billing/ai-overage-ledger.js.map +1 -0
- package/src/lib/billing/ai-overage-standing-writes.d.ts +110 -0
- package/src/lib/billing/ai-overage-standing-writes.js +205 -0
- package/src/lib/billing/ai-overage-standing-writes.js.map +1 -0
- package/src/lib/billing/ai-overage-standing.d.ts +168 -0
- package/src/lib/billing/ai-overage-standing.js +215 -0
- package/src/lib/billing/ai-overage-standing.js.map +1 -0
- package/src/lib/billing/ai-overage-trigger.d.ts +30 -0
- package/src/lib/billing/ai-overage-trigger.js +76 -0
- package/src/lib/billing/ai-overage-trigger.js.map +1 -0
- package/src/lib/components/ai-allotment-editor.component.d.ts +40 -0
- package/src/lib/components/ai-allotment-editor.component.js +213 -0
- package/src/lib/components/ai-allotment-editor.component.js.map +1 -0
- package/src/lib/components/ai-assist-actions-context.d.ts +13 -0
- package/src/lib/components/ai-assist-actions-context.js +21 -0
- package/src/lib/components/ai-assist-actions-context.js.map +1 -0
- package/src/lib/components/ai-assist-provider.component.d.ts +51 -0
- package/src/lib/components/ai-assist-provider.component.js +519 -0
- package/src/lib/components/ai-assist-provider.component.js.map +1 -0
- package/src/lib/components/ai-brief-dialog.component.d.ts +56 -0
- package/src/lib/components/ai-brief-dialog.component.js +319 -0
- package/src/lib/components/ai-brief-dialog.component.js.map +1 -0
- package/src/lib/components/ai-collaborator-permissions-column.component.d.ts +32 -0
- package/src/lib/components/ai-collaborator-permissions-column.component.js +132 -0
- package/src/lib/components/ai-collaborator-permissions-column.component.js.map +1 -0
- package/src/lib/components/ai-credits-card.component.d.ts +34 -0
- package/src/lib/components/ai-credits-card.component.js +131 -0
- package/src/lib/components/ai-credits-card.component.js.map +1 -0
- package/src/lib/components/ai-credits-columns.component.d.ts +56 -0
- package/src/lib/components/ai-credits-columns.component.js +118 -0
- package/src/lib/components/ai-credits-columns.component.js.map +1 -0
- package/src/lib/components/ai-crm-email-draft.component.d.ts +17 -0
- package/src/lib/components/ai-crm-email-draft.component.js +159 -0
- package/src/lib/components/ai-crm-email-draft.component.js.map +1 -0
- package/src/lib/components/ai-crm-import-mapping.component.d.ts +20 -0
- package/src/lib/components/ai-crm-import-mapping.component.js +167 -0
- package/src/lib/components/ai-crm-import-mapping.component.js.map +1 -0
- package/src/lib/components/ai-crm-record-card.component.d.ts +27 -0
- package/src/lib/components/ai-crm-record-card.component.js +263 -0
- package/src/lib/components/ai-crm-record-card.component.js.map +1 -0
- package/src/lib/components/ai-describe-automation.component.d.ts +31 -0
- package/src/lib/components/ai-describe-automation.component.js +226 -0
- package/src/lib/components/ai-describe-automation.component.js.map +1 -0
- package/src/lib/components/ai-describe-button.component.d.ts +39 -0
- package/src/lib/components/ai-describe-button.component.js +87 -0
- package/src/lib/components/ai-describe-button.component.js.map +1 -0
- package/src/lib/components/ai-describe-page.component.d.ts +26 -0
- package/src/lib/components/ai-describe-page.component.js +18 -0
- package/src/lib/components/ai-describe-page.component.js.map +1 -0
- package/src/lib/components/ai-experiment-cards.component.d.ts +75 -0
- package/src/lib/components/ai-experiment-cards.component.js +573 -0
- package/src/lib/components/ai-experiment-cards.component.js.map +1 -0
- package/src/lib/components/ai-explain-automation.component.d.ts +31 -0
- package/src/lib/components/ai-explain-automation.component.js +265 -0
- package/src/lib/components/ai-explain-automation.component.js.map +1 -0
- package/src/lib/components/ai-insight-dialog.component.d.ts +37 -0
- package/src/lib/components/ai-insight-dialog.component.js +441 -0
- package/src/lib/components/ai-insight-dialog.component.js.map +1 -0
- package/src/lib/components/ai-job-plan.component.d.ts +46 -0
- package/src/lib/components/ai-job-plan.component.js +192 -0
- package/src/lib/components/ai-job-plan.component.js.map +1 -0
- package/src/lib/components/ai-model-selector.component.d.ts +21 -0
- package/src/lib/components/ai-model-selector.component.js +109 -0
- package/src/lib/components/ai-model-selector.component.js.map +1 -0
- package/src/lib/components/ai-page-brief-dialog.component.d.ts +29 -0
- package/src/lib/components/ai-page-brief-dialog.component.js +27 -0
- package/src/lib/components/ai-page-brief-dialog.component.js.map +1 -0
- package/src/lib/components/ai-permissions-on-host.component.d.ts +55 -0
- package/src/lib/components/ai-permissions-on-host.component.js +91 -0
- package/src/lib/components/ai-permissions-on-host.component.js.map +1 -0
- package/src/lib/components/ai-product-copy-card.component.d.ts +25 -0
- package/src/lib/components/ai-product-copy-card.component.js +328 -0
- package/src/lib/components/ai-product-copy-card.component.js.map +1 -0
- package/src/lib/components/ai-product-import-option.component.d.ts +14 -0
- package/src/lib/components/ai-product-import-option.component.js +58 -0
- package/src/lib/components/ai-product-import-option.component.js.map +1 -0
- package/src/lib/components/ai-products-hub-card.component.d.ts +15 -0
- package/src/lib/components/ai-products-hub-card.component.js +418 -0
- package/src/lib/components/ai-products-hub-card.component.js.map +1 -0
- package/src/lib/components/ai-products-proposals.component.d.ts +19 -0
- package/src/lib/components/ai-products-proposals.component.js +547 -0
- package/src/lib/components/ai-products-proposals.component.js.map +1 -0
- package/src/lib/components/ai-save-as-component.component.d.ts +38 -0
- package/src/lib/components/ai-save-as-component.component.js +231 -0
- package/src/lib/components/ai-save-as-component.component.js.map +1 -0
- package/src/lib/components/ai-seo-audit-card.component.d.ts +9 -0
- package/src/lib/components/ai-seo-audit-card.component.js +620 -0
- package/src/lib/components/ai-seo-audit-card.component.js.map +1 -0
- package/src/lib/components/ai-seo-fields-card.component.d.ts +10 -0
- package/src/lib/components/ai-seo-fields-card.component.js +453 -0
- package/src/lib/components/ai-seo-fields-card.component.js.map +1 -0
- package/src/lib/components/ai-site-batch-card.component.d.ts +32 -0
- package/src/lib/components/ai-site-batch-card.component.js +531 -0
- package/src/lib/components/ai-site-batch-card.component.js.map +1 -0
- package/src/lib/components/ai-site-seo-start-card.component.d.ts +26 -0
- package/src/lib/components/ai-site-seo-start-card.component.js +178 -0
- package/src/lib/components/ai-site-seo-start-card.component.js.map +1 -0
- package/src/lib/components/ai-site-start-card.component.d.ts +19 -0
- package/src/lib/components/ai-site-start-card.component.js +348 -0
- package/src/lib/components/ai-site-start-card.component.js.map +1 -0
- package/src/lib/components/ai-template-collection-field.component.d.ts +32 -0
- package/src/lib/components/ai-template-collection-field.component.js +63 -0
- package/src/lib/components/ai-template-collection-field.component.js.map +1 -0
- package/src/lib/components/ai-theme-proposal-card.component.d.ts +6 -0
- package/src/lib/components/ai-theme-proposal-card.component.js +619 -0
- package/src/lib/components/ai-theme-proposal-card.component.js.map +1 -0
- package/src/lib/components/ai-usage-strip.component.d.ts +27 -0
- package/src/lib/components/ai-usage-strip.component.js +145 -0
- package/src/lib/components/ai-usage-strip.component.js.map +1 -0
- package/src/lib/components/assist-edit-canvas.d.ts +169 -0
- package/src/lib/components/assist-edit-canvas.js +636 -0
- package/src/lib/components/assist-edit-canvas.js.map +1 -0
- package/src/lib/components/assist-edit-card.component.d.ts +16 -0
- package/src/lib/components/assist-edit-card.component.js +181 -0
- package/src/lib/components/assist-edit-card.component.js.map +1 -0
- package/src/lib/components/assist-jobs-drawer.component.d.ts +72 -0
- package/src/lib/components/assist-jobs-drawer.component.js +626 -0
- package/src/lib/components/assist-jobs-drawer.component.js.map +1 -0
- package/src/lib/components/assist-panel.component.d.ts +136 -0
- package/src/lib/components/assist-panel.component.js +1099 -0
- package/src/lib/components/assist-panel.component.js.map +1 -0
- package/src/lib/components/assist-signals-page.component.d.ts +3 -0
- package/src/lib/components/assist-signals-page.component.js +1017 -0
- package/src/lib/components/assist-signals-page.component.js.map +1 -0
- package/src/lib/components/besigner-ai-controls.component.d.ts +29 -0
- package/src/lib/components/besigner-ai-controls.component.js +81 -0
- package/src/lib/components/besigner-ai-controls.component.js.map +1 -0
- package/src/lib/components/billing-ai-allotments.component.d.ts +36 -0
- package/src/lib/components/billing-ai-allotments.component.js +486 -0
- package/src/lib/components/billing-ai-allotments.component.js.map +1 -0
- package/src/lib/components/billing-ai-top-users.component.d.ts +44 -0
- package/src/lib/components/billing-ai-top-users.component.js +304 -0
- package/src/lib/components/billing-ai-top-users.component.js.map +1 -0
- package/src/lib/components/billing-assist-overage-card.component.d.ts +69 -0
- package/src/lib/components/billing-assist-overage-card.component.js +437 -0
- package/src/lib/components/billing-assist-overage-card.component.js.map +1 -0
- package/src/lib/components/host-ai-allotments.component.d.ts +40 -0
- package/src/lib/components/host-ai-allotments.component.js +239 -0
- package/src/lib/components/host-ai-allotments.component.js.map +1 -0
- package/src/lib/components/member-ai-allotment-card.component.d.ts +28 -0
- package/src/lib/components/member-ai-allotment-card.component.js +172 -0
- package/src/lib/components/member-ai-allotment-card.component.js.map +1 -0
- package/src/lib/components/member-ai-usage-card.component.d.ts +28 -0
- package/src/lib/components/member-ai-usage-card.component.js +240 -0
- package/src/lib/components/member-ai-usage-card.component.js.map +1 -0
- package/src/lib/components/staff-org-ai-card.component.d.ts +17 -0
- package/src/lib/components/staff-org-ai-card.component.js +739 -0
- package/src/lib/components/staff-org-ai-card.component.js.map +1 -0
- package/src/lib/components/staff-org-usage-ai-columns.component.d.ts +41 -0
- package/src/lib/components/staff-org-usage-ai-columns.component.js +65 -0
- package/src/lib/components/staff-org-usage-ai-columns.component.js.map +1 -0
- package/src/lib/components/staff-orgs-ai-spend-column.component.d.ts +28 -0
- package/src/lib/components/staff-orgs-ai-spend-column.component.js +89 -0
- package/src/lib/components/staff-orgs-ai-spend-column.component.js.map +1 -0
- package/src/lib/components/staff-user-ai-usage-card.component.d.ts +27 -0
- package/src/lib/components/staff-user-ai-usage-card.component.js +183 -0
- package/src/lib/components/staff-user-ai-usage-card.component.js.map +1 -0
- package/src/lib/components/use-ai-allotments.d.ts +49 -0
- package/src/lib/components/use-ai-allotments.js +171 -0
- package/src/lib/components/use-ai-allotments.js.map +1 -0
- package/src/lib/components/use-ai-crm-answer.d.ts +50 -0
- package/src/lib/components/use-ai-crm-answer.js +220 -0
- package/src/lib/components/use-ai-crm-answer.js.map +1 -0
- package/src/lib/components/use-ai-job-run.d.ts +51 -0
- package/src/lib/components/use-ai-job-run.js +176 -0
- package/src/lib/components/use-ai-job-run.js.map +1 -0
- package/src/lib/components/use-ai-model-choice.d.ts +47 -0
- package/src/lib/components/use-ai-model-choice.js +150 -0
- package/src/lib/components/use-ai-model-choice.js.map +1 -0
- package/src/lib/components/use-ai-products-jobs.d.ts +36 -0
- package/src/lib/components/use-ai-products-jobs.js +190 -0
- package/src/lib/components/use-ai-products-jobs.js.map +1 -0
- package/src/lib/components/use-ai-usage-meter.d.ts +11 -0
- package/src/lib/components/use-ai-usage-meter.js +96 -0
- package/src/lib/components/use-ai-usage-meter.js.map +1 -0
- package/src/lib/components/use-org-ai-usage.d.ts +42 -0
- package/src/lib/components/use-org-ai-usage.js +181 -0
- package/src/lib/components/use-org-ai-usage.js.map +1 -0
- package/src/lib/components/use-staff-orgs-ai-spend.d.ts +18 -0
- package/src/lib/components/use-staff-orgs-ai-spend.js +127 -0
- package/src/lib/components/use-staff-orgs-ai-spend.js.map +1 -0
- package/src/lib/constants.d.ts +24 -0
- package/src/lib/constants.js +23 -0
- package/src/lib/constants.js.map +1 -0
- package/src/lib/declarations.d.ts +48 -0
- package/src/lib/declarations.js +129 -0
- package/src/lib/declarations.js.map +1 -0
- package/src/lib/declarations.server.d.ts +35 -0
- package/src/lib/declarations.server.js +138 -0
- package/src/lib/declarations.server.js.map +1 -0
- package/src/lib/insights/ai-figure-readers.d.ts +90 -0
- package/src/lib/insights/ai-figure-readers.js +863 -0
- package/src/lib/insights/ai-figure-readers.js.map +1 -0
- package/src/lib/insights/ai-insight-digest.d.ts +165 -0
- package/src/lib/insights/ai-insight-digest.js +363 -0
- package/src/lib/insights/ai-insight-digest.js.map +1 -0
- package/src/lib/insights/ai-insight-readers.d.ts +71 -0
- package/src/lib/insights/ai-insight-readers.js +141 -0
- package/src/lib/insights/ai-insight-readers.js.map +1 -0
- package/src/lib/jobs/ai-crm-access.d.ts +61 -0
- package/src/lib/jobs/ai-crm-access.js +94 -0
- package/src/lib/jobs/ai-crm-access.js.map +1 -0
- package/src/lib/jobs/ai-email-bindings.d.ts +97 -0
- package/src/lib/jobs/ai-email-bindings.js +147 -0
- package/src/lib/jobs/ai-email-bindings.js.map +1 -0
- package/src/lib/jobs/ai-job-admission.d.ts +82 -0
- package/src/lib/jobs/ai-job-admission.js +45 -0
- package/src/lib/jobs/ai-job-admission.js.map +1 -0
- package/src/lib/jobs/ai-job-budget.d.ts +167 -0
- package/src/lib/jobs/ai-job-budget.js +161 -0
- package/src/lib/jobs/ai-job-budget.js.map +1 -0
- package/src/lib/jobs/ai-job-campaign-step.d.ts +108 -0
- package/src/lib/jobs/ai-job-campaign-step.js +340 -0
- package/src/lib/jobs/ai-job-campaign-step.js.map +1 -0
- package/src/lib/jobs/ai-job-component-checks.d.ts +74 -0
- package/src/lib/jobs/ai-job-component-checks.js +442 -0
- package/src/lib/jobs/ai-job-component-checks.js.map +1 -0
- package/src/lib/jobs/ai-job-component-step.d.ts +75 -0
- package/src/lib/jobs/ai-job-component-step.js +262 -0
- package/src/lib/jobs/ai-job-component-step.js.map +1 -0
- package/src/lib/jobs/ai-job-crm-step.d.ts +192 -0
- package/src/lib/jobs/ai-job-crm-step.js +734 -0
- package/src/lib/jobs/ai-job-crm-step.js.map +1 -0
- package/src/lib/jobs/ai-job-draft-ids.d.ts +62 -0
- package/src/lib/jobs/ai-job-draft-ids.js +132 -0
- package/src/lib/jobs/ai-job-draft-ids.js.map +1 -0
- package/src/lib/jobs/ai-job-drafts.d.ts +304 -0
- package/src/lib/jobs/ai-job-drafts.js +557 -0
- package/src/lib/jobs/ai-job-drafts.js.map +1 -0
- package/src/lib/jobs/ai-job-email-step.d.ts +195 -0
- package/src/lib/jobs/ai-job-email-step.js +547 -0
- package/src/lib/jobs/ai-job-email-step.js.map +1 -0
- package/src/lib/jobs/ai-job-experiment-step.d.ts +105 -0
- package/src/lib/jobs/ai-job-experiment-step.js +445 -0
- package/src/lib/jobs/ai-job-experiment-step.js.map +1 -0
- package/src/lib/jobs/ai-job-form-step.d.ts +250 -0
- package/src/lib/jobs/ai-job-form-step.js +634 -0
- package/src/lib/jobs/ai-job-form-step.js.map +1 -0
- package/src/lib/jobs/ai-job-generation.d.ts +114 -0
- package/src/lib/jobs/ai-job-generation.js +384 -0
- package/src/lib/jobs/ai-job-generation.js.map +1 -0
- package/src/lib/jobs/ai-job-insight-budget.d.ts +41 -0
- package/src/lib/jobs/ai-job-insight-budget.js +46 -0
- package/src/lib/jobs/ai-job-insight-budget.js.map +1 -0
- package/src/lib/jobs/ai-job-insight-step.d.ts +58 -0
- package/src/lib/jobs/ai-job-insight-step.js +350 -0
- package/src/lib/jobs/ai-job-insight-step.js.map +1 -0
- package/src/lib/jobs/ai-job-layout-step.d.ts +103 -0
- package/src/lib/jobs/ai-job-layout-step.js +340 -0
- package/src/lib/jobs/ai-job-layout-step.js.map +1 -0
- package/src/lib/jobs/ai-job-page-budget.d.ts +57 -0
- package/src/lib/jobs/ai-job-page-budget.js +60 -0
- package/src/lib/jobs/ai-job-page-budget.js.map +1 -0
- package/src/lib/jobs/ai-job-page-sections.d.ts +150 -0
- package/src/lib/jobs/ai-job-page-sections.js +450 -0
- package/src/lib/jobs/ai-job-page-sections.js.map +1 -0
- package/src/lib/jobs/ai-job-page-step.d.ts +198 -0
- package/src/lib/jobs/ai-job-page-step.js +667 -0
- package/src/lib/jobs/ai-job-page-step.js.map +1 -0
- package/src/lib/jobs/ai-job-plan-conformance.d.ts +107 -0
- package/src/lib/jobs/ai-job-plan-conformance.js +164 -0
- package/src/lib/jobs/ai-job-plan-conformance.js.map +1 -0
- package/src/lib/jobs/ai-job-plan-step.d.ts +196 -0
- package/src/lib/jobs/ai-job-plan-step.js +458 -0
- package/src/lib/jobs/ai-job-plan-step.js.map +1 -0
- package/src/lib/jobs/ai-job-plugin-drafts.d.ts +76 -0
- package/src/lib/jobs/ai-job-plugin-drafts.js +91 -0
- package/src/lib/jobs/ai-job-plugin-drafts.js.map +1 -0
- package/src/lib/jobs/ai-job-products-step.d.ts +106 -0
- package/src/lib/jobs/ai-job-products-step.js +436 -0
- package/src/lib/jobs/ai-job-products-step.js.map +1 -0
- package/src/lib/jobs/ai-job-seo-budget.d.ts +52 -0
- package/src/lib/jobs/ai-job-seo-budget.js +63 -0
- package/src/lib/jobs/ai-job-seo-budget.js.map +1 -0
- package/src/lib/jobs/ai-job-seo-step.d.ts +145 -0
- package/src/lib/jobs/ai-job-seo-step.js +809 -0
- package/src/lib/jobs/ai-job-seo-step.js.map +1 -0
- package/src/lib/jobs/ai-job-site-step.d.ts +252 -0
- package/src/lib/jobs/ai-job-site-step.js +538 -0
- package/src/lib/jobs/ai-job-site-step.js.map +1 -0
- package/src/lib/jobs/ai-job-template-step.d.ts +105 -0
- package/src/lib/jobs/ai-job-template-step.js +391 -0
- package/src/lib/jobs/ai-job-template-step.js.map +1 -0
- package/src/lib/jobs/ai-job-text-step.d.ts +125 -0
- package/src/lib/jobs/ai-job-text-step.js +128 -0
- package/src/lib/jobs/ai-job-text-step.js.map +1 -0
- package/src/lib/jobs/ai-job-theme-budget.d.ts +38 -0
- package/src/lib/jobs/ai-job-theme-budget.js +43 -0
- package/src/lib/jobs/ai-job-theme-budget.js.map +1 -0
- package/src/lib/jobs/ai-job-theme-step.d.ts +115 -0
- package/src/lib/jobs/ai-job-theme-step.js +337 -0
- package/src/lib/jobs/ai-job-theme-step.js.map +1 -0
- package/src/lib/jobs/ai-job-workflow-step.d.ts +139 -0
- package/src/lib/jobs/ai-job-workflow-step.js +530 -0
- package/src/lib/jobs/ai-job-workflow-step.js.map +1 -0
- package/src/lib/jobs/ai-jobs-beat.d.ts +78 -0
- package/src/lib/jobs/ai-jobs-beat.js +93 -0
- package/src/lib/jobs/ai-jobs-beat.js.map +1 -0
- package/src/lib/jobs/ai-jobs-pause.d.ts +38 -0
- package/src/lib/jobs/ai-jobs-pause.js +45 -0
- package/src/lib/jobs/ai-jobs-pause.js.map +1 -0
- package/src/lib/jobs/ai-jobs.d.ts +558 -0
- package/src/lib/jobs/ai-jobs.js +1410 -0
- package/src/lib/jobs/ai-jobs.js.map +1 -0
- package/src/lib/jobs/ai-media-asset-server.d.ts +34 -0
- package/src/lib/jobs/ai-media-asset-server.js +34 -0
- package/src/lib/jobs/ai-media-asset-server.js.map +1 -0
- package/src/lib/jobs/ai-media-asset.d.ts +59 -0
- package/src/lib/jobs/ai-media-asset.js +86 -0
- package/src/lib/jobs/ai-media-asset.js.map +1 -0
- package/src/lib/jobs/ai-product-image.d.ts +78 -0
- package/src/lib/jobs/ai-product-image.js +113 -0
- package/src/lib/jobs/ai-product-image.js.map +1 -0
- package/src/lib/jobs/ai-theme-brand-inputs.d.ts +125 -0
- package/src/lib/jobs/ai-theme-brand-inputs.js +378 -0
- package/src/lib/jobs/ai-theme-brand-inputs.js.map +1 -0
- package/src/lib/jobs/ai-theme-brand-server.d.ts +33 -0
- package/src/lib/jobs/ai-theme-brand-server.js +33 -0
- package/src/lib/jobs/ai-theme-brand-server.js.map +1 -0
- package/src/lib/jobs/ai-workflow-records.d.ts +84 -0
- package/src/lib/jobs/ai-workflow-records.js +158 -0
- package/src/lib/jobs/ai-workflow-records.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-free-page-built-recording.d.ts +31 -0
- package/src/lib/jobs/fixtures/ai-free-page-built-recording.js +367 -0
- package/src/lib/jobs/fixtures/ai-free-page-built-recording.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-free-page-recording.d.ts +69 -0
- package/src/lib/jobs/fixtures/ai-free-page-recording.js +442 -0
- package/src/lib/jobs/fixtures/ai-free-page-recording.js.map +1 -0
- package/src/lib/jobs/fixtures/ai-page-briefs.d.ts +146 -0
- package/src/lib/jobs/fixtures/ai-page-briefs.js +1850 -0
- package/src/lib/jobs/fixtures/ai-page-briefs.js.map +1 -0
- package/src/lib/model/ai-allotments.d.ts +208 -0
- package/src/lib/model/ai-allotments.js +269 -0
- package/src/lib/model/ai-allotments.js.map +1 -0
- package/src/lib/model/ai-automation-draft.d.ts +74 -0
- package/src/lib/model/ai-automation-draft.js +310 -0
- package/src/lib/model/ai-automation-draft.js.map +1 -0
- package/src/lib/model/ai-automation-outline.d.ts +50 -0
- package/src/lib/model/ai-automation-outline.js +262 -0
- package/src/lib/model/ai-automation-outline.js.map +1 -0
- package/src/lib/model/ai-build-plan.d.ts +197 -0
- package/src/lib/model/ai-build-plan.js +438 -0
- package/src/lib/model/ai-build-plan.js.map +1 -0
- package/src/lib/model/ai-crm.d.ts +237 -0
- package/src/lib/model/ai-crm.js +225 -0
- package/src/lib/model/ai-crm.js.map +1 -0
- package/src/lib/model/ai-experiment-proposal.d.ts +68 -0
- package/src/lib/model/ai-experiment-proposal.js +146 -0
- package/src/lib/model/ai-experiment-proposal.js.map +1 -0
- package/src/lib/model/ai-experiment.d.ts +309 -0
- package/src/lib/model/ai-experiment.js +395 -0
- package/src/lib/model/ai-experiment.js.map +1 -0
- package/src/lib/model/ai-insight.d.ts +178 -0
- package/src/lib/model/ai-insight.js +201 -0
- package/src/lib/model/ai-insight.js.map +1 -0
- package/src/lib/model/ai-jobs.types.d.ts +412 -0
- package/src/lib/model/ai-jobs.types.js +42 -0
- package/src/lib/model/ai-jobs.types.js.map +1 -0
- package/src/lib/model/ai-page-job.d.ts +92 -0
- package/src/lib/model/ai-page-job.js +159 -0
- package/src/lib/model/ai-page-job.js.map +1 -0
- package/src/lib/model/ai-permissions.d.ts +49 -0
- package/src/lib/model/ai-permissions.js +97 -0
- package/src/lib/model/ai-permissions.js.map +1 -0
- package/src/lib/model/ai-plan-capabilities.d.ts +139 -0
- package/src/lib/model/ai-plan-capabilities.js +149 -0
- package/src/lib/model/ai-plan-capabilities.js.map +1 -0
- package/src/lib/model/ai-products.d.ts +251 -0
- package/src/lib/model/ai-products.js +253 -0
- package/src/lib/model/ai-products.js.map +1 -0
- package/src/lib/model/ai-seo.d.ts +208 -0
- package/src/lib/model/ai-seo.js +150 -0
- package/src/lib/model/ai-seo.js.map +1 -0
- package/src/lib/model/ai-site-inventory.d.ts +164 -0
- package/src/lib/model/ai-site-inventory.js +145 -0
- package/src/lib/model/ai-site-inventory.js.map +1 -0
- package/src/lib/model/ai-site-job.d.ts +247 -0
- package/src/lib/model/ai-site-job.js +314 -0
- package/src/lib/model/ai-site-job.js.map +1 -0
- package/src/lib/model/ai-site-start-seo.d.ts +103 -0
- package/src/lib/model/ai-site-start-seo.js +154 -0
- package/src/lib/model/ai-site-start-seo.js.map +1 -0
- package/src/lib/model/ai-site-start.d.ts +122 -0
- package/src/lib/model/ai-site-start.js +159 -0
- package/src/lib/model/ai-site-start.js.map +1 -0
- package/src/lib/model/ai-site-switch.d.ts +56 -0
- package/src/lib/model/ai-site-switch.js +73 -0
- package/src/lib/model/ai-site-switch.js.map +1 -0
- package/src/lib/model/ai-storefront-claims.d.ts +70 -0
- package/src/lib/model/ai-storefront-claims.js +130 -0
- package/src/lib/model/ai-storefront-claims.js.map +1 -0
- package/src/lib/model/ai-template-subjects.d.ts +82 -0
- package/src/lib/model/ai-template-subjects.js +136 -0
- package/src/lib/model/ai-template-subjects.js.map +1 -0
- package/src/lib/model/ai-theme-proposal.d.ts +210 -0
- package/src/lib/model/ai-theme-proposal.js +506 -0
- package/src/lib/model/ai-theme-proposal.js.map +1 -0
- package/src/lib/model/ai-tokens.d.ts +96 -0
- package/src/lib/model/ai-tokens.js +117 -0
- package/src/lib/model/ai-tokens.js.map +1 -0
- package/src/lib/model/ai-usage-by-user.d.ts +120 -0
- package/src/lib/model/ai-usage-by-user.js +139 -0
- package/src/lib/model/ai-usage-by-user.js.map +1 -0
- package/src/lib/model/ai-workflow-job.d.ts +111 -0
- package/src/lib/model/ai-workflow-job.js +183 -0
- package/src/lib/model/ai-workflow-job.js.map +1 -0
- package/src/lib/model/assist-edit.d.ts +261 -0
- package/src/lib/model/assist-edit.js +175 -0
- package/src/lib/model/assist-edit.js.map +1 -0
- package/src/lib/plugin-config.d.ts +33 -0
- package/src/lib/plugin-config.js +118 -0
- package/src/lib/plugin-config.js.map +1 -0
- package/src/lib/plugin.d.ts +30 -0
- package/src/lib/plugin.js +525 -0
- package/src/lib/plugin.js.map +1 -0
- package/src/lib/providers/anthropic.d.ts +84 -0
- package/src/lib/providers/anthropic.js +432 -0
- package/src/lib/providers/anthropic.js.map +1 -0
- package/src/lib/providers/catalog.d.ts +197 -0
- package/src/lib/providers/catalog.js +312 -0
- package/src/lib/providers/catalog.js.map +1 -0
- package/src/lib/providers/contract.d.ts +464 -0
- package/src/lib/providers/contract.js +274 -0
- package/src/lib/providers/contract.js.map +1 -0
- package/src/lib/providers/model-choice.d.ts +119 -0
- package/src/lib/providers/model-choice.js +416 -0
- package/src/lib/providers/model-choice.js.map +1 -0
- package/src/lib/providers/openai-compatible.d.ts +58 -0
- package/src/lib/providers/openai-compatible.js +361 -0
- package/src/lib/providers/openai-compatible.js.map +1 -0
- package/src/lib/providers/registry.d.ts +49 -0
- package/src/lib/providers/registry.js +71 -0
- package/src/lib/providers/registry.js.map +1 -0
- package/src/lib/providers/routing.d.ts +98 -0
- package/src/lib/providers/routing.js +450 -0
- package/src/lib/providers/routing.js.map +1 -0
- package/src/lib/runtime/ai-abuse-guards.d.ts +113 -0
- package/src/lib/runtime/ai-abuse-guards.js +148 -0
- package/src/lib/runtime/ai-abuse-guards.js.map +1 -0
- package/src/lib/runtime/ai-component-bindings.d.ts +67 -0
- package/src/lib/runtime/ai-component-bindings.js +106 -0
- package/src/lib/runtime/ai-component-bindings.js.map +1 -0
- package/src/lib/runtime/ai-device-audit.d.ts +109 -0
- package/src/lib/runtime/ai-device-audit.js +97 -0
- package/src/lib/runtime/ai-device-audit.js.map +1 -0
- package/src/lib/runtime/ai-doctrine-validators.d.ts +720 -0
- package/src/lib/runtime/ai-doctrine-validators.js +3133 -0
- package/src/lib/runtime/ai-doctrine-validators.js.map +1 -0
- package/src/lib/runtime/ai-doctrine.d.ts +372 -0
- package/src/lib/runtime/ai-doctrine.js +944 -0
- package/src/lib/runtime/ai-doctrine.js.map +1 -0
- package/src/lib/runtime/ai-eval-live.d.ts +321 -0
- package/src/lib/runtime/ai-eval-live.js +1257 -0
- package/src/lib/runtime/ai-eval-live.js.map +1 -0
- package/src/lib/runtime/ai-eval-memory-firestore.d.ts +51 -0
- package/src/lib/runtime/ai-eval-memory-firestore.js +183 -0
- package/src/lib/runtime/ai-eval-memory-firestore.js.map +1 -0
- package/src/lib/runtime/ai-eval.d.ts +441 -0
- package/src/lib/runtime/ai-eval.js +1151 -0
- package/src/lib/runtime/ai-eval.js.map +1 -0
- package/src/lib/runtime/ai-gate.d.ts +130 -0
- package/src/lib/runtime/ai-gate.js +272 -0
- package/src/lib/runtime/ai-gate.js.map +1 -0
- package/src/lib/runtime/ai-generation-bounds.d.ts +24 -0
- package/src/lib/runtime/ai-generation-bounds.js +23 -0
- package/src/lib/runtime/ai-generation-bounds.js.map +1 -0
- package/src/lib/runtime/ai-insight-check.d.ts +76 -0
- package/src/lib/runtime/ai-insight-check.js +281 -0
- package/src/lib/runtime/ai-insight-check.js.map +1 -0
- package/src/lib/runtime/ai-node-tree.d.ts +181 -0
- package/src/lib/runtime/ai-node-tree.js +931 -0
- package/src/lib/runtime/ai-node-tree.js.map +1 -0
- package/src/lib/runtime/ai-page-links.d.ts +79 -0
- package/src/lib/runtime/ai-page-links.js +135 -0
- package/src/lib/runtime/ai-page-links.js.map +1 -0
- package/src/lib/runtime/ai-palette.d.ts +252 -0
- package/src/lib/runtime/ai-palette.generated.d.ts +34 -0
- package/src/lib/runtime/ai-palette.generated.js +5263 -0
- package/src/lib/runtime/ai-palette.generated.js.map +1 -0
- package/src/lib/runtime/ai-palette.js +187 -0
- package/src/lib/runtime/ai-palette.js.map +1 -0
- package/src/lib/runtime/ai-products-generation.d.ts +107 -0
- package/src/lib/runtime/ai-products-generation.js +250 -0
- package/src/lib/runtime/ai-products-generation.js.map +1 -0
- package/src/lib/runtime/ai-repeated-items.d.ts +95 -0
- package/src/lib/runtime/ai-repeated-items.js +397 -0
- package/src/lib/runtime/ai-repeated-items.js.map +1 -0
- package/src/lib/runtime/ai-runtime.d.ts +148 -0
- package/src/lib/runtime/ai-runtime.js +237 -0
- package/src/lib/runtime/ai-runtime.js.map +1 -0
- package/src/lib/runtime/ai-template-examples.d.ts +71 -0
- package/src/lib/runtime/ai-template-examples.js +135 -0
- package/src/lib/runtime/ai-template-examples.js.map +1 -0
- package/src/lib/runtime/assist-answer-cache.d.ts +80 -0
- package/src/lib/runtime/assist-answer-cache.js +184 -0
- package/src/lib/runtime/assist-answer-cache.js.map +1 -0
- package/src/lib/runtime/seo-audit.d.ts +93 -0
- package/src/lib/runtime/seo-audit.js +260 -0
- package/src/lib/runtime/seo-audit.js.map +1 -0
- package/src/lib/runtime/seo-content-fixes.d.ts +41 -0
- package/src/lib/runtime/seo-content-fixes.js +168 -0
- package/src/lib/runtime/seo-content-fixes.js.map +1 -0
- package/src/lib/runtime/seo-fields.d.ts +152 -0
- package/src/lib/runtime/seo-fields.js +215 -0
- package/src/lib/runtime/seo-fields.js.map +1 -0
- package/src/lib/runtime/seo-page-facts.d.ts +61 -0
- package/src/lib/runtime/seo-page-facts.js +150 -0
- package/src/lib/runtime/seo-page-facts.js.map +1 -0
- package/src/lib/runtime/site-inventory.d.ts +63 -0
- package/src/lib/runtime/site-inventory.js +230 -0
- package/src/lib/runtime/site-inventory.js.map +1 -0
- package/src/lib/server/ai-admin-org.d.ts +33 -0
- package/src/lib/server/ai-admin-org.js +381 -0
- package/src/lib/server/ai-admin-org.js.map +1 -0
- package/src/lib/server/ai-admin-orgs-spend.d.ts +40 -0
- package/src/lib/server/ai-admin-orgs-spend.js +129 -0
- package/src/lib/server/ai-admin-orgs-spend.js.map +1 -0
- package/src/lib/server/ai-admin-overage.d.ts +19 -0
- package/src/lib/server/ai-admin-overage.js +246 -0
- package/src/lib/server/ai-admin-overage.js.map +1 -0
- package/src/lib/server/ai-admin-signals.d.ts +34 -0
- package/src/lib/server/ai-admin-signals.js +330 -0
- package/src/lib/server/ai-admin-signals.js.map +1 -0
- package/src/lib/server/ai-admin-user.d.ts +27 -0
- package/src/lib/server/ai-admin-user.js +128 -0
- package/src/lib/server/ai-admin-user.js.map +1 -0
- package/src/lib/server/ai-allotments.d.ts +27 -0
- package/src/lib/server/ai-allotments.js +544 -0
- package/src/lib/server/ai-allotments.js.map +1 -0
- package/src/lib/server/ai-assist-prompts.d.ts +102 -0
- package/src/lib/server/ai-assist-prompts.js +207 -0
- package/src/lib/server/ai-assist-prompts.js.map +1 -0
- package/src/lib/server/ai-assist.d.ts +119 -0
- package/src/lib/server/ai-assist.js +517 -0
- package/src/lib/server/ai-assist.js.map +1 -0
- package/src/lib/server/ai-crm-answer.d.ts +30 -0
- package/src/lib/server/ai-crm-answer.js +98 -0
- package/src/lib/server/ai-crm-answer.js.map +1 -0
- package/src/lib/server/ai-generate-component.d.ts +111 -0
- package/src/lib/server/ai-generate-component.js +643 -0
- package/src/lib/server/ai-generate-component.js.map +1 -0
- package/src/lib/server/ai-host-permissions.d.ts +46 -0
- package/src/lib/server/ai-host-permissions.js +204 -0
- package/src/lib/server/ai-host-permissions.js.map +1 -0
- package/src/lib/server/ai-insight-answer.d.ts +30 -0
- package/src/lib/server/ai-insight-answer.js +83 -0
- package/src/lib/server/ai-insight-answer.js.map +1 -0
- package/src/lib/server/ai-insight-digest-route.d.ts +30 -0
- package/src/lib/server/ai-insight-digest-route.js +156 -0
- package/src/lib/server/ai-insight-digest-route.js.map +1 -0
- package/src/lib/server/ai-jobs-batch.d.ts +48 -0
- package/src/lib/server/ai-jobs-batch.js +306 -0
- package/src/lib/server/ai-jobs-batch.js.map +1 -0
- package/src/lib/server/ai-jobs-beat-route.d.ts +36 -0
- package/src/lib/server/ai-jobs-beat-route.js +86 -0
- package/src/lib/server/ai-jobs-beat-route.js.map +1 -0
- package/src/lib/server/ai-jobs-cancel.d.ts +30 -0
- package/src/lib/server/ai-jobs-cancel.js +74 -0
- package/src/lib/server/ai-jobs-cancel.js.map +1 -0
- package/src/lib/server/ai-jobs-events-route.d.ts +31 -0
- package/src/lib/server/ai-jobs-events-route.js +51 -0
- package/src/lib/server/ai-jobs-events-route.js.map +1 -0
- package/src/lib/server/ai-jobs-events.d.ts +55 -0
- package/src/lib/server/ai-jobs-events.js +144 -0
- package/src/lib/server/ai-jobs-events.js.map +1 -0
- package/src/lib/server/ai-jobs-gate.d.ts +47 -0
- package/src/lib/server/ai-jobs-gate.js +106 -0
- package/src/lib/server/ai-jobs-gate.js.map +1 -0
- package/src/lib/server/ai-jobs-resume.d.ts +23 -0
- package/src/lib/server/ai-jobs-resume.js +209 -0
- package/src/lib/server/ai-jobs-resume.js.map +1 -0
- package/src/lib/server/ai-jobs-route.d.ts +32 -0
- package/src/lib/server/ai-jobs-route.js +307 -0
- package/src/lib/server/ai-jobs-route.js.map +1 -0
- package/src/lib/server/ai-models.d.ts +18 -0
- package/src/lib/server/ai-models.js +134 -0
- package/src/lib/server/ai-models.js.map +1 -0
- package/src/lib/server/ai-seo-apply.d.ts +53 -0
- package/src/lib/server/ai-seo-apply.js +294 -0
- package/src/lib/server/ai-seo-apply.js.map +1 -0
- package/src/lib/server/ai-usage.d.ts +18 -0
- package/src/lib/server/ai-usage.js +220 -0
- package/src/lib/server/ai-usage.js.map +1 -0
- package/src/lib/server/assist-chat.d.ts +234 -0
- package/src/lib/server/assist-chat.js +1446 -0
- package/src/lib/server/assist-chat.js.map +1 -0
- package/src/lib/server/assist-edit-applied.d.ts +22 -0
- package/src/lib/server/assist-edit-applied.js +239 -0
- package/src/lib/server/assist-edit-applied.js.map +1 -0
- package/src/lib/server/assist-edit.d.ts +124 -0
- package/src/lib/server/assist-edit.js +1000 -0
- package/src/lib/server/assist-edit.js.map +1 -0
- package/src/lib/server/assist-feedback.d.ts +31 -0
- package/src/lib/server/assist-feedback.js +115 -0
- package/src/lib/server/assist-feedback.js.map +1 -0
- package/src/lib/server/assist-view-context.d.ts +343 -0
- package/src/lib/server/assist-view-context.js +690 -0
- package/src/lib/server/assist-view-context.js.map +1 -0
- package/src/lib/server/billing-credits.d.ts +59 -0
- package/src/lib/server/billing-credits.js +146 -0
- package/src/lib/server/billing-credits.js.map +1 -0
- package/src/lib/server/billing-overage.d.ts +19 -0
- package/src/lib/server/billing-overage.js +337 -0
- package/src/lib/server/billing-overage.js.map +1 -0
- package/src/lib/server.d.ts +32 -0
- package/src/lib/server.js +265 -0
- package/src/lib/server.js.map +1 -0
- package/src/lib/subprocessors.d.ts +18 -0
- package/src/lib/subprocessors.js +52 -0
- package/src/lib/subprocessors.js.map +1 -0
- package/src/lib/tools/ai-component-tool.d.ts +99 -0
- package/src/lib/tools/ai-component-tool.js +369 -0
- package/src/lib/tools/ai-component-tool.js.map +1 -0
- package/src/lib/tools/ai-crm-tool.d.ts +106 -0
- package/src/lib/tools/ai-crm-tool.js +488 -0
- package/src/lib/tools/ai-crm-tool.js.map +1 -0
- package/src/lib/tools/ai-duplicate-resource-tool.d.ts +71 -0
- package/src/lib/tools/ai-duplicate-resource-tool.js +164 -0
- package/src/lib/tools/ai-duplicate-resource-tool.js.map +1 -0
- package/src/lib/tools/ai-experiment-tool.d.ts +40 -0
- package/src/lib/tools/ai-experiment-tool.js +155 -0
- package/src/lib/tools/ai-experiment-tool.js.map +1 -0
- package/src/lib/tools/ai-insight-tool.d.ts +46 -0
- package/src/lib/tools/ai-insight-tool.js +200 -0
- package/src/lib/tools/ai-insight-tool.js.map +1 -0
- package/src/lib/tools/ai-inventory-lookup-tool.d.ts +86 -0
- package/src/lib/tools/ai-inventory-lookup-tool.js +164 -0
- package/src/lib/tools/ai-inventory-lookup-tool.js.map +1 -0
- package/src/lib/tools/ai-products-tool.d.ts +65 -0
- package/src/lib/tools/ai-products-tool.js +644 -0
- package/src/lib/tools/ai-products-tool.js.map +1 -0
- package/src/lib/tools/ai-seo-tool.d.ts +162 -0
- package/src/lib/tools/ai-seo-tool.js +546 -0
- package/src/lib/tools/ai-seo-tool.js.map +1 -0
- package/src/lib/tools/ai-theme-tool.d.ts +101 -0
- package/src/lib/tools/ai-theme-tool.js +562 -0
- package/src/lib/tools/ai-theme-tool.js.map +1 -0
- package/src/lib/tools/ai-workflow-tool.d.ts +166 -0
- package/src/lib/tools/ai-workflow-tool.js +860 -0
- package/src/lib/tools/ai-workflow-tool.js.map +1 -0
- package/src/lib/usage/ai-allotment-alerts.d.ts +72 -0
- package/src/lib/usage/ai-allotment-alerts.js +157 -0
- package/src/lib/usage/ai-allotment-alerts.js.map +1 -0
- package/src/lib/usage/ai-allotments.d.ts +125 -0
- package/src/lib/usage/ai-allotments.js +239 -0
- package/src/lib/usage/ai-allotments.js.map +1 -0
- package/src/lib/usage/ai-model-sample.d.ts +36 -0
- package/src/lib/usage/ai-model-sample.js +68 -0
- package/src/lib/usage/ai-model-sample.js.map +1 -0
- package/src/lib/usage/ai-usage-alerts.d.ts +55 -0
- package/src/lib/usage/ai-usage-alerts.js +114 -0
- package/src/lib/usage/ai-usage-alerts.js.map +1 -0
- package/src/lib/usage/ai-usage-by-user.d.ts +161 -0
- package/src/lib/usage/ai-usage-by-user.js +211 -0
- package/src/lib/usage/ai-usage-by-user.js.map +1 -0
- package/src/lib/usage/ai-usage-eraser.d.ts +29 -0
- package/src/lib/usage/ai-usage-eraser.js +40 -0
- package/src/lib/usage/ai-usage-eraser.js.map +1 -0
- package/src/lib/usage/ai-usage-meter.d.ts +39 -0
- package/src/lib/usage/ai-usage-meter.js +85 -0
- package/src/lib/usage/ai-usage-meter.js.map +1 -0
- package/src/lib/usage/ai-usage-wire.d.ts +184 -0
- package/src/lib/usage/ai-usage-wire.js +98 -0
- package/src/lib/usage/ai-usage-wire.js.map +1 -0
- package/src/lib/usage/assist-ceiling.d.ts +87 -0
- package/src/lib/usage/assist-ceiling.js +110 -0
- package/src/lib/usage/assist-ceiling.js.map +1 -0
- package/src/lib/usage/assist-free-taste.d.ts +225 -0
- package/src/lib/usage/assist-free-taste.js +308 -0
- package/src/lib/usage/assist-free-taste.js.map +1 -0
- package/src/lib/usage/assist-refusals.d.ts +69 -0
- package/src/lib/usage/assist-refusals.js +79 -0
- package/src/lib/usage/assist-refusals.js.map +1 -0
- package/src/lib/usage/assist-signal-mining.d.ts +375 -0
- package/src/lib/usage/assist-signal-mining.js +344 -0
- package/src/lib/usage/assist-signal-mining.js.map +1 -0
- package/src/lib/usage/assist-usage.d.ts +571 -0
- package/src/lib/usage/assist-usage.js +978 -0
- package/src/lib/usage/assist-usage.js.map +1 -0
- package/src/lib/usage/staff-org-ai.d.ts +242 -0
- package/src/lib/usage/staff-org-ai.js +173 -0
- package/src/lib/usage/staff-org-ai.js.map +1 -0
- package/src/lib/usage/staff-org-usage-ai.d.ts +83 -0
- package/src/lib/usage/staff-org-usage-ai.js +59 -0
- package/src/lib/usage/staff-org-usage-ai.js.map +1 -0
- package/src/lib/usage/staff-orgs-ai-spend.d.ts +83 -0
- package/src/lib/usage/staff-orgs-ai-spend.js +114 -0
- package/src/lib/usage/staff-orgs-ai-spend.js.map +1 -0
|
@@ -0,0 +1,636 @@
|
|
|
1
|
+
import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2026 Aglyn LLC
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/ import { screenSeoStageKey } from "@aglyn/aglyn/app-utils/screen-seo-fields";
|
|
18
|
+
import { NODE_HIDE_IF_PROP, replaceSubtreeWithInstance, reusableComponentDefinitionFrom } from "@aglyn/aglyn/app-utils/compose-reusable-components";
|
|
19
|
+
import { CANVAS_ROOT_ELEMENT_ID } from "@aglyn/aglyn/foundation/constants/canvas";
|
|
20
|
+
import { stageEditorSessionFields } from "@aglyn/aglyn/plugin-manager/editor-sessions";
|
|
21
|
+
import { ASSIST_EDIT_CONTEXT_MAX_NODES, ASSIST_EDIT_CONTEXT_MAX_PROPS, ASSIST_EDIT_OUTLINE_TEXT_CHARS, ASSIST_EDIT_SELECTED_TEXT_CHARS, assistEditOpCounts } from "../model/assist-edit.js";
|
|
22
|
+
const UNDESCRIBED_PROP = /^(html|sx|style|className|dangerouslySetInnerHTML|on[A-Z].*)$/;
|
|
23
|
+
const isRecord = (value)=>typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
24
|
+
/**
|
|
25
|
+
* An observable's own keys as a plain object. A canvas node's `props` and
|
|
26
|
+
* `sx` are observable proxies, and a spread of one is how a merge silently
|
|
27
|
+
* copies nothing.
|
|
28
|
+
*/ function plain(value) {
|
|
29
|
+
const out = {};
|
|
30
|
+
if (!value || typeof value !== 'object') return out;
|
|
31
|
+
for(const key in value){
|
|
32
|
+
out[key] = value[key];
|
|
33
|
+
}
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
function describeProps(raw, textChars) {
|
|
37
|
+
const props = {};
|
|
38
|
+
let kept = 0;
|
|
39
|
+
for (const [name, value] of Object.entries(plain(raw))){
|
|
40
|
+
if (kept >= ASSIST_EDIT_CONTEXT_MAX_PROPS) break;
|
|
41
|
+
if (UNDESCRIBED_PROP.test(name)) continue;
|
|
42
|
+
if (typeof value === 'string') {
|
|
43
|
+
if (!value.trim()) continue;
|
|
44
|
+
props[name] = value.slice(0, textChars);
|
|
45
|
+
} else if (typeof value === 'number' && Number.isFinite(value)) {
|
|
46
|
+
props[name] = value;
|
|
47
|
+
} else if (typeof value === 'boolean') {
|
|
48
|
+
props[name] = value;
|
|
49
|
+
} else {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
kept += 1;
|
|
53
|
+
}
|
|
54
|
+
return kept ? props : undefined;
|
|
55
|
+
}
|
|
56
|
+
function describeSx(raw) {
|
|
57
|
+
const sx = {};
|
|
58
|
+
for (const [key, value] of Object.entries(plain(raw))){
|
|
59
|
+
if (typeof value === 'string' || typeof value === 'number') sx[key] = value;
|
|
60
|
+
else if (isRecord(value)) sx[key] = plain(value);
|
|
61
|
+
}
|
|
62
|
+
return Object.keys(sx).length ? sx : undefined;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The selection's ancestors below the document root, top-level section first
|
|
66
|
+
* and the selection last; null when its parents do not lead to the root,
|
|
67
|
+
* which is not a chain the server can check.
|
|
68
|
+
*/ function chainToRoot(canvas, selected) {
|
|
69
|
+
const chain = [];
|
|
70
|
+
const walked = new Set();
|
|
71
|
+
let current = selected;
|
|
72
|
+
while((current == null ? void 0 : current.$id) && current.$id !== CANVAS_ROOT_ELEMENT_ID && !walked.has(current.$id)){
|
|
73
|
+
walked.add(current.$id);
|
|
74
|
+
chain.unshift(current.$id);
|
|
75
|
+
current = current.parentId ? canvas.getNode(current.parentId) : undefined;
|
|
76
|
+
}
|
|
77
|
+
return (current == null ? void 0 : current.$id) === CANVAS_ROOT_ELEMENT_ID ? chain : null;
|
|
78
|
+
}
|
|
79
|
+
/** Elements one shape is taken over at most; a larger subtree is never called alike. */ const SHAPE_LIMIT = 200;
|
|
80
|
+
/**
|
|
81
|
+
* How an element is built: its component and, in order, its children's —
|
|
82
|
+
* what two cards of one row have in common whatever their text. Null past
|
|
83
|
+
* `SHAPE_LIMIT` elements, or for a subtree that loops back on itself.
|
|
84
|
+
*/ function shapeOf(canvas, rootId) {
|
|
85
|
+
let budget = SHAPE_LIMIT;
|
|
86
|
+
const walked = new Set();
|
|
87
|
+
const walk = (id)=>{
|
|
88
|
+
var _node_nodes, _node_componentId;
|
|
89
|
+
const node = canvas.getNode(id);
|
|
90
|
+
if (!node || walked.has(id) || --budget < 0) return null;
|
|
91
|
+
walked.add(id);
|
|
92
|
+
const parts = [];
|
|
93
|
+
for (const child of (_node_nodes = node.nodes) != null ? _node_nodes : []){
|
|
94
|
+
const part = walk(child);
|
|
95
|
+
if (part === null) return null;
|
|
96
|
+
parts.push(part);
|
|
97
|
+
}
|
|
98
|
+
return `${String((_node_componentId = node.componentId) != null ? _node_componentId : '')}(${parts.join(',')})`;
|
|
99
|
+
};
|
|
100
|
+
return walk(rootId);
|
|
101
|
+
}
|
|
102
|
+
/** Elements reachable from the document root through child lists, the root included. */ function countElements(canvas) {
|
|
103
|
+
let count = 0;
|
|
104
|
+
const reached = new Set([
|
|
105
|
+
CANVAS_ROOT_ELEMENT_ID
|
|
106
|
+
]);
|
|
107
|
+
const pending = [
|
|
108
|
+
CANVAS_ROOT_ELEMENT_ID
|
|
109
|
+
];
|
|
110
|
+
while(pending.length){
|
|
111
|
+
var _node_nodes;
|
|
112
|
+
const node = canvas.getNode(pending.pop());
|
|
113
|
+
if (!node) continue;
|
|
114
|
+
count += 1;
|
|
115
|
+
for (const child of (_node_nodes = node.nodes) != null ? _node_nodes : []){
|
|
116
|
+
if (reached.has(child)) continue;
|
|
117
|
+
reached.add(child);
|
|
118
|
+
pending.push(child);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return count;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* The canvas outline a question carries on the edit rung, in two tiers, until
|
|
125
|
+
* the cap.
|
|
126
|
+
*
|
|
127
|
+
* Described in full, settings and all: the document root, the selection's
|
|
128
|
+
* ancestors and the selection, the document's top-level sections, everything
|
|
129
|
+
* inside the selection — what an edit to it changes — and its siblings.
|
|
130
|
+
*
|
|
131
|
+
* Described briefly, by place alone (`brief`): what surrounds that, so the
|
|
132
|
+
* model knows it exists and asks for it rather than calling it missing —
|
|
133
|
+
*
|
|
134
|
+
* 1. what the selection's siblings hold, level by level (the icons beside a
|
|
135
|
+
* selected link, in the card they share);
|
|
136
|
+
* 2. the siblings of each ancestor below the top-level section, nearest
|
|
137
|
+
* first (the other cards of the row, then what sits beside the row).
|
|
138
|
+
*
|
|
139
|
+
* An element built the same way as the selection, or as the ancestor it sits
|
|
140
|
+
* beside, is marked `like` it and its contents are left out: one card
|
|
141
|
+
* described, and every other card of the row says it holds the same.
|
|
142
|
+
*
|
|
143
|
+
* With nothing selected, it is the root, the top-level sections and one level
|
|
144
|
+
* inside each: enough for a change to the page as a whole, and the prompt asks
|
|
145
|
+
* for a selection before anything more specific.
|
|
146
|
+
*
|
|
147
|
+
* An element is only ever described after its parent, so every ancestor chain
|
|
148
|
+
* the server checks is whole. `total` counts the document, and each element's
|
|
149
|
+
* `childCount` stays its real one, so the server can tell the model what the
|
|
150
|
+
* outline leaves out. The server holds this to its own limits before it quotes
|
|
151
|
+
* a byte of it; null when the canvas has no document root loaded.
|
|
152
|
+
*/ export function describeAssistEditCanvas(canvas, selectedId) {
|
|
153
|
+
const root = canvas.getNode(CANVAS_ROOT_ELEMENT_ID);
|
|
154
|
+
if (!root) return null;
|
|
155
|
+
const order = [];
|
|
156
|
+
const seen = new Set();
|
|
157
|
+
const brief = new Set();
|
|
158
|
+
const like = new Map();
|
|
159
|
+
const full = ()=>order.length >= ASSIST_EDIT_CONTEXT_MAX_NODES;
|
|
160
|
+
const add = (id, briefly = false)=>{
|
|
161
|
+
if (!id || seen.has(id) || full()) return;
|
|
162
|
+
if (!canvas.getNode(id)) return;
|
|
163
|
+
seen.add(id);
|
|
164
|
+
order.push(id);
|
|
165
|
+
if (briefly) brief.add(id);
|
|
166
|
+
};
|
|
167
|
+
const childrenOf = (id)=>{
|
|
168
|
+
var _ref;
|
|
169
|
+
var _canvas_getNode;
|
|
170
|
+
return (_ref = (_canvas_getNode = canvas.getNode(id)) == null ? void 0 : _canvas_getNode.nodes) != null ? _ref : [];
|
|
171
|
+
};
|
|
172
|
+
const shapes = new Map();
|
|
173
|
+
const shape = (id)=>{
|
|
174
|
+
var _shapes_get;
|
|
175
|
+
if (!shapes.has(id)) shapes.set(id, shapeOf(canvas, id));
|
|
176
|
+
return (_shapes_get = shapes.get(id)) != null ? _shapes_get : null;
|
|
177
|
+
};
|
|
178
|
+
// Alike only when there are contents to leave out.
|
|
179
|
+
const alike = (id, model)=>childrenOf(id).length > 0 && shape(id) !== null && shape(id) === shape(model);
|
|
180
|
+
add(CANVAS_ROOT_ELEMENT_ID);
|
|
181
|
+
const selected = selectedId && selectedId !== CANVAS_ROOT_ELEMENT_ID ? canvas.getNode(selectedId) : undefined;
|
|
182
|
+
const chain = (selected == null ? void 0 : selected.$id) ? chainToRoot(canvas, selected) : null;
|
|
183
|
+
chain == null ? void 0 : chain.forEach((id)=>add(id));
|
|
184
|
+
if ((selected == null ? void 0 : selected.$id) && chain && seen.has(selected.$id)) {
|
|
185
|
+
var _root_nodes;
|
|
186
|
+
for (const id of (_root_nodes = root.nodes) != null ? _root_nodes : [])add(id);
|
|
187
|
+
const inside = new Set([
|
|
188
|
+
selected.$id
|
|
189
|
+
]);
|
|
190
|
+
const queue = [
|
|
191
|
+
...childrenOf(selected.$id)
|
|
192
|
+
];
|
|
193
|
+
while(queue.length && !full()){
|
|
194
|
+
const id = queue.shift();
|
|
195
|
+
if (inside.has(id)) continue;
|
|
196
|
+
inside.add(id);
|
|
197
|
+
add(id);
|
|
198
|
+
queue.push(...childrenOf(id));
|
|
199
|
+
}
|
|
200
|
+
const siblings = selected.parentId ? childrenOf(selected.parentId).filter((id)=>id !== selected.$id) : [];
|
|
201
|
+
const held = [];
|
|
202
|
+
for (const id of siblings){
|
|
203
|
+
add(id);
|
|
204
|
+
// A sibling the cap left out takes its contents with it.
|
|
205
|
+
if (!seen.has(id)) continue;
|
|
206
|
+
if (alike(id, selected.$id)) like.set(id, selected.$id);
|
|
207
|
+
else held.push(...childrenOf(id));
|
|
208
|
+
}
|
|
209
|
+
const reached = new Set([
|
|
210
|
+
...inside,
|
|
211
|
+
...siblings,
|
|
212
|
+
...held
|
|
213
|
+
]);
|
|
214
|
+
for(let level = held; level.length && !full();){
|
|
215
|
+
const deeper = [];
|
|
216
|
+
for (const id of level){
|
|
217
|
+
add(id, true);
|
|
218
|
+
for (const child of childrenOf(id)){
|
|
219
|
+
if (reached.has(child)) continue;
|
|
220
|
+
reached.add(child);
|
|
221
|
+
deeper.push(child);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
level = deeper;
|
|
225
|
+
}
|
|
226
|
+
// Parent first; the top-level section's own siblings are the sections above.
|
|
227
|
+
for (const ancestor of chain.slice(1, -1).reverse()){
|
|
228
|
+
var _canvas_getNode;
|
|
229
|
+
const parentId = (_canvas_getNode = canvas.getNode(ancestor)) == null ? void 0 : _canvas_getNode.parentId;
|
|
230
|
+
for (const id of parentId ? childrenOf(parentId) : []){
|
|
231
|
+
if (id === ancestor || seen.has(id)) continue;
|
|
232
|
+
add(id, true);
|
|
233
|
+
if (seen.has(id) && alike(id, ancestor)) like.set(id, ancestor);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
} else {
|
|
237
|
+
var _root_nodes1, _root_nodes2;
|
|
238
|
+
for (const id of (_root_nodes1 = root.nodes) != null ? _root_nodes1 : [])add(id);
|
|
239
|
+
for (const section of (_root_nodes2 = root.nodes) != null ? _root_nodes2 : []){
|
|
240
|
+
for (const id of childrenOf(section))add(id);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
const nodes = order.map((id)=>{
|
|
244
|
+
var _node_parentId, _node_componentId, _ref, _ref1;
|
|
245
|
+
var _parent_nodes, _node_nodes;
|
|
246
|
+
const node = canvas.getNode(id);
|
|
247
|
+
const isRoot = id === CANVAS_ROOT_ELEMENT_ID;
|
|
248
|
+
const parentId = isRoot ? null : (_node_parentId = node.parentId) != null ? _node_parentId : null;
|
|
249
|
+
const parent = parentId ? canvas.getNode(parentId) : undefined;
|
|
250
|
+
const isSelected = id === (selected == null ? void 0 : selected.$id);
|
|
251
|
+
const isBrief = brief.has(id);
|
|
252
|
+
const props = isBrief ? undefined : describeProps(node.props, isSelected ? ASSIST_EDIT_SELECTED_TEXT_CHARS : ASSIST_EDIT_OUTLINE_TEXT_CHARS);
|
|
253
|
+
const sx = isSelected ? describeSx(node.sx) : undefined;
|
|
254
|
+
const model = like.get(id);
|
|
255
|
+
return _extends({
|
|
256
|
+
id,
|
|
257
|
+
componentId: String((_node_componentId = node.componentId) != null ? _node_componentId : ''),
|
|
258
|
+
parentId,
|
|
259
|
+
index: Math.max(0, (_ref = parent == null ? void 0 : (_parent_nodes = parent.nodes) == null ? void 0 : _parent_nodes.indexOf(id)) != null ? _ref : 0),
|
|
260
|
+
childCount: (_ref1 = (_node_nodes = node.nodes) == null ? void 0 : _node_nodes.length) != null ? _ref1 : 0
|
|
261
|
+
}, node.name ? {
|
|
262
|
+
name: String(node.name)
|
|
263
|
+
} : {}, props ? {
|
|
264
|
+
props
|
|
265
|
+
} : {}, sx ? {
|
|
266
|
+
sx
|
|
267
|
+
} : {}, isBrief ? {
|
|
268
|
+
brief: true
|
|
269
|
+
} : {}, model ? {
|
|
270
|
+
like: model
|
|
271
|
+
} : {});
|
|
272
|
+
});
|
|
273
|
+
return {
|
|
274
|
+
selectedId: (selected == null ? void 0 : selected.$id) && seen.has(selected.$id) ? selected.$id : null,
|
|
275
|
+
total: countElements(canvas),
|
|
276
|
+
nodes
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
/** Ids of the subtree at `rootId`, the root included, through child lists only. */ function subtreeIds(canvas, rootId) {
|
|
280
|
+
var _ref;
|
|
281
|
+
var _canvas_getNode;
|
|
282
|
+
const found = new Set([
|
|
283
|
+
rootId
|
|
284
|
+
]);
|
|
285
|
+
const queue = [
|
|
286
|
+
...(_ref = (_canvas_getNode = canvas.getNode(rootId)) == null ? void 0 : _canvas_getNode.nodes) != null ? _ref : []
|
|
287
|
+
];
|
|
288
|
+
while(queue.length){
|
|
289
|
+
var _ref1;
|
|
290
|
+
var _canvas_getNode1;
|
|
291
|
+
const id = queue.shift();
|
|
292
|
+
if (found.has(id) || !canvas.getNode(id)) continue;
|
|
293
|
+
found.add(id);
|
|
294
|
+
queue.push(...(_ref1 = (_canvas_getNode1 = canvas.getNode(id)) == null ? void 0 : _canvas_getNode1.nodes) != null ? _ref1 : []);
|
|
295
|
+
}
|
|
296
|
+
return found;
|
|
297
|
+
}
|
|
298
|
+
const STALE = {
|
|
299
|
+
ok: false,
|
|
300
|
+
reason: 'stale',
|
|
301
|
+
message: 'The canvas has changed since this was proposed, so nothing was applied. Ask again.'
|
|
302
|
+
};
|
|
303
|
+
/**
|
|
304
|
+
* Whether the proposal can land on the open editor as it stands — checked in
|
|
305
|
+
* full before anything is touched, so a refusal never leaves half an edit.
|
|
306
|
+
*/ export function checkAssistEdit(canvas, proposal, session) {
|
|
307
|
+
if (!session) {
|
|
308
|
+
return {
|
|
309
|
+
ok: false,
|
|
310
|
+
reason: 'no-editor',
|
|
311
|
+
message: 'Open the editor this change was proposed for to apply it.'
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
if (session.documentKind !== proposal.target.kind || session.documentId !== proposal.target.documentId) {
|
|
315
|
+
return {
|
|
316
|
+
ok: false,
|
|
317
|
+
reason: 'other-document',
|
|
318
|
+
message: 'This change was proposed for a different document than the one open.'
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
if (session.isLiveVersion()) {
|
|
322
|
+
return {
|
|
323
|
+
ok: false,
|
|
324
|
+
reason: 'live-version',
|
|
325
|
+
message: 'This is the version your live site shows. Make a new version first, then apply the change there.'
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
for (const op of proposal.ops){
|
|
329
|
+
switch(op.op){
|
|
330
|
+
case 'setSeo':
|
|
331
|
+
{
|
|
332
|
+
for (const field of Object.keys(op.fields)){
|
|
333
|
+
var _session_fields;
|
|
334
|
+
if (typeof ((_session_fields = session.fields) == null ? void 0 : _session_fields[screenSeoStageKey(field)]) !== 'function') {
|
|
335
|
+
return {
|
|
336
|
+
ok: false,
|
|
337
|
+
reason: 'other-document',
|
|
338
|
+
message: 'This editor has no search fields to fill in.'
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
break;
|
|
343
|
+
}
|
|
344
|
+
case 'insertSubtree':
|
|
345
|
+
{
|
|
346
|
+
const parent = canvas.getNode(op.parentId);
|
|
347
|
+
if (!parent || parent.componentId !== op.parentComponentId) return STALE;
|
|
348
|
+
if (!canvas.nodeAcceptsChildren(parent)) return STALE;
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
case 'move':
|
|
352
|
+
{
|
|
353
|
+
const node = canvas.getNode(op.nodeId);
|
|
354
|
+
const parent = canvas.getNode(op.parentId);
|
|
355
|
+
if (!node || node.componentId !== op.componentId) return STALE;
|
|
356
|
+
if (!parent || parent.componentId !== op.parentComponentId) return STALE;
|
|
357
|
+
break;
|
|
358
|
+
}
|
|
359
|
+
case 'saveAsComponent':
|
|
360
|
+
{
|
|
361
|
+
const node = canvas.getNode(op.nodeId);
|
|
362
|
+
if (!node || node.componentId !== op.componentId) return STALE;
|
|
363
|
+
// The document itself is not a section of itself: promoting the root
|
|
364
|
+
// would leave a document holding one instance of its own contents.
|
|
365
|
+
if (op.nodeId === CANVAS_ROOT_ELEMENT_ID) return STALE;
|
|
366
|
+
const inside = subtreeIds(canvas, op.nodeId);
|
|
367
|
+
for (const binding of op.bindings){
|
|
368
|
+
const bound = canvas.getNode(binding.nodeId);
|
|
369
|
+
if (!bound || bound.componentId !== binding.componentId) return STALE;
|
|
370
|
+
// A closed world: a token outside the promoted subtree would bind a
|
|
371
|
+
// property of the new component to an element it does not contain.
|
|
372
|
+
if (!inside.has(binding.nodeId)) return STALE;
|
|
373
|
+
}
|
|
374
|
+
break;
|
|
375
|
+
}
|
|
376
|
+
default:
|
|
377
|
+
{
|
|
378
|
+
const node = canvas.getNode(op.nodeId);
|
|
379
|
+
if (!node || node.componentId !== op.componentId) return STALE;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
return {
|
|
384
|
+
ok: true
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Styles merged one key at a time. A responsive patch over a plain value
|
|
389
|
+
* keeps that value as the base breakpoint, so "more padding on wide screens"
|
|
390
|
+
* does not quietly remove the padding everywhere else.
|
|
391
|
+
*/ function mergeSx(current, patch) {
|
|
392
|
+
const out = _extends({}, current);
|
|
393
|
+
for (const [key, value] of Object.entries(patch)){
|
|
394
|
+
const existing = out[key];
|
|
395
|
+
if (isRecord(value) && isRecord(existing)) {
|
|
396
|
+
out[key] = _extends({}, plain(existing), value);
|
|
397
|
+
} else if (isRecord(value) && (typeof existing === 'string' || typeof existing === 'number')) {
|
|
398
|
+
out[key] = _extends({
|
|
399
|
+
xs: existing
|
|
400
|
+
}, value);
|
|
401
|
+
} else {
|
|
402
|
+
out[key] = value;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
return out;
|
|
406
|
+
}
|
|
407
|
+
/** A validated flat subtree as the nested shape `addNodeFromNested` takes. */ function nestSubtree(op) {
|
|
408
|
+
const visited = new Set();
|
|
409
|
+
const build = (id)=>{
|
|
410
|
+
visited.add(id);
|
|
411
|
+
const node = op.nodes[id];
|
|
412
|
+
return _extends({
|
|
413
|
+
componentId: node.componentId
|
|
414
|
+
}, node.pluginId ? {
|
|
415
|
+
pluginId: node.pluginId
|
|
416
|
+
} : {}, {
|
|
417
|
+
props: _extends({}, node.props)
|
|
418
|
+
}, node.sx ? {
|
|
419
|
+
sx: _extends({}, node.sx)
|
|
420
|
+
} : {}, node.hidden ? {
|
|
421
|
+
hidden: true
|
|
422
|
+
} : {}, {
|
|
423
|
+
nodes: node.nodes.filter((child)=>op.nodes[child] && !visited.has(child)).map((child)=>build(child))
|
|
424
|
+
});
|
|
425
|
+
};
|
|
426
|
+
return build(op.rootId);
|
|
427
|
+
}
|
|
428
|
+
function live(canvas, id) {
|
|
429
|
+
const node = canvas.getNode(id);
|
|
430
|
+
if (!node) throw new Error(`element ${id} is no longer on the canvas`);
|
|
431
|
+
return node;
|
|
432
|
+
}
|
|
433
|
+
function applyOne(canvas, op) {
|
|
434
|
+
switch(op.op){
|
|
435
|
+
case 'updateProps':
|
|
436
|
+
{
|
|
437
|
+
const node = live(canvas, op.nodeId);
|
|
438
|
+
// Spread the props the element has: `updateNodeProps` REPLACES the bag,
|
|
439
|
+
// and a patch of one setting would otherwise strip every other one.
|
|
440
|
+
const next = _extends({}, plain(node.props), op.props);
|
|
441
|
+
// Rich text renders `html` over `children`; proposed text replaces it.
|
|
442
|
+
if ('children' in op.props) delete next['html'];
|
|
443
|
+
canvas.updateNodeProps(node, next);
|
|
444
|
+
return;
|
|
445
|
+
}
|
|
446
|
+
case 'updateSx':
|
|
447
|
+
{
|
|
448
|
+
const node = live(canvas, op.nodeId);
|
|
449
|
+
canvas.updateNodeFields(node, {
|
|
450
|
+
sx: mergeSx(plain(node.sx), op.sx)
|
|
451
|
+
});
|
|
452
|
+
return;
|
|
453
|
+
}
|
|
454
|
+
case 'move':
|
|
455
|
+
var _op_index;
|
|
456
|
+
canvas.reparentNode(live(canvas, op.nodeId), live(canvas, op.parentId), (_op_index = op.index) != null ? _op_index : NaN);
|
|
457
|
+
return;
|
|
458
|
+
case 'remove':
|
|
459
|
+
canvas.deleteNode(live(canvas, op.nodeId));
|
|
460
|
+
return;
|
|
461
|
+
case 'rename':
|
|
462
|
+
canvas.updateNodeFields(live(canvas, op.nodeId), {
|
|
463
|
+
name: op.name
|
|
464
|
+
});
|
|
465
|
+
return;
|
|
466
|
+
case 'insertSubtree':
|
|
467
|
+
var _op_index1;
|
|
468
|
+
canvas.addNodeFromNested(nestSubtree(op), live(canvas, op.parentId), (_op_index1 = op.index) != null ? _op_index1 : NaN);
|
|
469
|
+
return;
|
|
470
|
+
case 'setSeo':
|
|
471
|
+
case 'saveAsComponent':
|
|
472
|
+
// Both are applied outside the canvas batch: search fields are staged
|
|
473
|
+
// into the editor's own form, and a component save mints a document
|
|
474
|
+
// first and then swaps the subtree for an instance of it.
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* The value a bound field holds on the live canvas right now, which becomes
|
|
480
|
+
* the property's default.
|
|
481
|
+
*
|
|
482
|
+
* `hideIf` is the exception: the part is on the page, so the property that
|
|
483
|
+
* hides it starts at no. Every other field answers with what the author can
|
|
484
|
+
* see, which is what makes the instance render exactly what was there.
|
|
485
|
+
*/ function currentValue(node, field) {
|
|
486
|
+
if (field === NODE_HIDE_IF_PROP) return false;
|
|
487
|
+
const value = plain(node.props)[field];
|
|
488
|
+
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
|
489
|
+
return value;
|
|
490
|
+
}
|
|
491
|
+
return undefined;
|
|
492
|
+
}
|
|
493
|
+
/**
|
|
494
|
+
* Whether a default the canvas gave is one the property's own control
|
|
495
|
+
* offers. A Choice whose current value is not among its answers is a
|
|
496
|
+
* selection that has changed since the proposal was made, and applying it
|
|
497
|
+
* would declare a property no page could ever set back.
|
|
498
|
+
*/ function defaultFitsProp(prop, value) {
|
|
499
|
+
var _prop_options;
|
|
500
|
+
if (!((_prop_options = prop.options) == null ? void 0 : _prop_options.length)) return true;
|
|
501
|
+
return prop.options.some((option)=>option.value === value);
|
|
502
|
+
}
|
|
503
|
+
/**
|
|
504
|
+
* The definition the new component holds: the promoted subtree, with each
|
|
505
|
+
* bound field replaced by its property's token.
|
|
506
|
+
*
|
|
507
|
+
* The defaults are read off the SAME fields a moment before they are
|
|
508
|
+
* replaced, so the instance that takes the subtree's place renders what the
|
|
509
|
+
* author was looking at. Returns null when a default no longer fits its
|
|
510
|
+
* property, which is the stale case.
|
|
511
|
+
*/ function componentDefinition(canvas, op) {
|
|
512
|
+
const nodes = reusableComponentDefinitionFrom(canvas.toJSON().nodes, op.nodeId);
|
|
513
|
+
const defaults = new Map();
|
|
514
|
+
for (const binding of op.bindings){
|
|
515
|
+
const live = canvas.getNode(binding.nodeId);
|
|
516
|
+
const stored = nodes[binding.nodeId];
|
|
517
|
+
if (!live || !stored) return null;
|
|
518
|
+
if (!defaults.has(binding.prop)) defaults.set(binding.prop, currentValue(live, binding.field));
|
|
519
|
+
stored['props'] = _extends({}, plain(stored['props']), {
|
|
520
|
+
[binding.field]: `{{prop.${binding.prop}}}`
|
|
521
|
+
});
|
|
522
|
+
}
|
|
523
|
+
const props = [];
|
|
524
|
+
for (const declared of op.props){
|
|
525
|
+
const value = defaults.get(declared.name);
|
|
526
|
+
if (!defaultFitsProp(declared, value)) return null;
|
|
527
|
+
props.push(_extends({}, declared, value === undefined ? {} : {
|
|
528
|
+
defaultValue: value
|
|
529
|
+
}));
|
|
530
|
+
}
|
|
531
|
+
return {
|
|
532
|
+
nodes,
|
|
533
|
+
props
|
|
534
|
+
};
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* Lands a confirmed proposal on the open editor: the canvas ops as ONE batch
|
|
538
|
+
* — one undo step, all or nothing — then any search fields staged into the
|
|
539
|
+
* editor's own form. Nothing is saved.
|
|
540
|
+
*/ export function applyAssistEdit(canvas, proposal, session) {
|
|
541
|
+
const check = checkAssistEdit(canvas, proposal, session);
|
|
542
|
+
if (check.ok === false) return check;
|
|
543
|
+
const open = session;
|
|
544
|
+
const canvasOps = proposal.ops.filter((op)=>op.op !== 'setSeo' && op.op !== 'saveAsComponent');
|
|
545
|
+
if (canvasOps.length) {
|
|
546
|
+
try {
|
|
547
|
+
canvas.batch(()=>{
|
|
548
|
+
for (const op of canvasOps)applyOne(canvas, op);
|
|
549
|
+
});
|
|
550
|
+
} catch (error) {
|
|
551
|
+
console.error('assist edit refused by the canvas', error);
|
|
552
|
+
return {
|
|
553
|
+
ok: false,
|
|
554
|
+
reason: 'refused',
|
|
555
|
+
message: 'The editor refused part of this change, so none of it was applied.'
|
|
556
|
+
};
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
const staged = [];
|
|
560
|
+
for (const op of proposal.ops){
|
|
561
|
+
if (op.op !== 'setSeo') continue;
|
|
562
|
+
const values = {};
|
|
563
|
+
for (const [field, value] of Object.entries(op.fields)){
|
|
564
|
+
values[screenSeoStageKey(field)] = String(value);
|
|
565
|
+
}
|
|
566
|
+
staged.push(...stageEditorSessionFields(open, values).staged);
|
|
567
|
+
}
|
|
568
|
+
return {
|
|
569
|
+
ok: true,
|
|
570
|
+
opCounts: assistEditOpCounts(proposal.ops),
|
|
571
|
+
staged
|
|
572
|
+
};
|
|
573
|
+
}
|
|
574
|
+
/**
|
|
575
|
+
* Lands a proposal that saves the selection as a reusable component
|
|
576
|
+
* (AGL-2908) — AGL-2866's recipe, in place, with no clipboard.
|
|
577
|
+
*
|
|
578
|
+
* The order is the manual action's order, and it matters:
|
|
579
|
+
*
|
|
580
|
+
* 1. the definition is read off the live subtree, each bound field replaced
|
|
581
|
+
* by its token and its current value kept as that property's default;
|
|
582
|
+
* 2. the component is created through the host resources route, where the
|
|
583
|
+
* server enforces the plan's entitlement and its own allow-list — so a
|
|
584
|
+
* refusal happens before the open document is touched at all;
|
|
585
|
+
* 3. the subtree is swapped for an instance of what was just created, inside
|
|
586
|
+
* ONE `batch` with the rest of the proposal's canvas ops: one undo step.
|
|
587
|
+
*
|
|
588
|
+
* The only document created is the component, exactly as Save as reusable
|
|
589
|
+
* component creates one. The page change is an unsaved edit on the version
|
|
590
|
+
* the editor has open, which the check has already refused to be a live one.
|
|
591
|
+
* Nothing is published and nothing is saved.
|
|
592
|
+
*/ export async function applyAssistEditSavingComponent(canvas, proposal, session, writer) {
|
|
593
|
+
const save = proposal.ops.find((op)=>op.op === 'saveAsComponent');
|
|
594
|
+
if (!save) return applyAssistEdit(canvas, proposal, session);
|
|
595
|
+
const check = checkAssistEdit(canvas, proposal, session);
|
|
596
|
+
if (check.ok === false) return check;
|
|
597
|
+
const definition = componentDefinition(canvas, save);
|
|
598
|
+
if (!definition) return STALE;
|
|
599
|
+
let componentId;
|
|
600
|
+
try {
|
|
601
|
+
componentId = await writer.createComponent({
|
|
602
|
+
name: save.name,
|
|
603
|
+
rootId: save.nodeId,
|
|
604
|
+
nodes: definition.nodes,
|
|
605
|
+
props: definition.props
|
|
606
|
+
});
|
|
607
|
+
} catch (error) {
|
|
608
|
+
console.error('assist edit could not create the component', error);
|
|
609
|
+
return {
|
|
610
|
+
ok: false,
|
|
611
|
+
reason: 'refused',
|
|
612
|
+
message: error instanceof Error && error.message ? error.message : 'The component could not be saved, so nothing on this page was changed.'
|
|
613
|
+
};
|
|
614
|
+
}
|
|
615
|
+
const canvasOps = proposal.ops.filter((op)=>op.op !== 'setSeo' && op.op !== 'saveAsComponent');
|
|
616
|
+
try {
|
|
617
|
+
canvas.batch(()=>{
|
|
618
|
+
for (const op of canvasOps)applyOne(canvas, op);
|
|
619
|
+
canvas.applyNodes(replaceSubtreeWithInstance(canvas.toJSON().nodes, save.nodeId, componentId, save.name));
|
|
620
|
+
});
|
|
621
|
+
} catch (error) {
|
|
622
|
+
console.error('assist edit refused by the canvas', error);
|
|
623
|
+
return {
|
|
624
|
+
ok: false,
|
|
625
|
+
reason: 'refused',
|
|
626
|
+
message: 'The component was saved, but the editor refused to swap this element for it. ' + 'Insert it from Your components instead.'
|
|
627
|
+
};
|
|
628
|
+
}
|
|
629
|
+
return {
|
|
630
|
+
ok: true,
|
|
631
|
+
opCounts: assistEditOpCounts(proposal.ops),
|
|
632
|
+
staged: []
|
|
633
|
+
};
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
//# sourceMappingURL=assist-edit-canvas.js.map
|