@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,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/ 'use client';
|
|
17
|
+
import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
18
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
19
|
+
import { pluginDocsHelp } from "@aglyn/aglyn/app-utils/docs-help";
|
|
20
|
+
import { seoListingFieldCount, seoListingFieldTooLong } from "@aglyn/aglyn/app-utils/seo-listing-fields";
|
|
21
|
+
import { Alert, Box, Button, Chip, CircularProgress, Link, Stack, Typography } from "@mui/material";
|
|
22
|
+
import { useCallback, useState } from "react";
|
|
23
|
+
import { aiProductCopyProposals, aiProductsJobInputs } from "../model/ai-products.js";
|
|
24
|
+
import { isAiJobMoving, useAiProductsJobs } from "./use-ai-products-jobs.js";
|
|
25
|
+
/**
|
|
26
|
+
* "Write with AI" in the commerce product editor (AGL-2916), through the
|
|
27
|
+
* `productEditor` zone. A `products` job writes the product's description,
|
|
28
|
+
* search listing, tags, categories and clearer option names from what the
|
|
29
|
+
* editor holds: its name, text, tags and options, and its first photo for a
|
|
30
|
+
* model that reads pictures. The proposal is shown in full, with any fact the
|
|
31
|
+
* copy could not know marked for the person to fill in, and "Put in the
|
|
32
|
+
* fields" stages it in the editor as unsaved changes. Save product is the
|
|
33
|
+
* write; this card never writes a product.
|
|
34
|
+
*/ /** The brief a product copy job carries, which the jobs list shows. */ export const aiProductCopyBrief = (name)=>`Write the storefront copy for ${name.trim()}`;
|
|
35
|
+
/** The values a proposal stages, in the editor's terms. */ export function aiProductCopyValues(proposal) {
|
|
36
|
+
const values = proposal.values;
|
|
37
|
+
if (!values) return {};
|
|
38
|
+
return _extends({
|
|
39
|
+
description: values.description,
|
|
40
|
+
tags: values.tags,
|
|
41
|
+
categoryIds: values.categoryIds,
|
|
42
|
+
seoTitle: values.seoTitle,
|
|
43
|
+
seoDescription: values.seoDescription
|
|
44
|
+
}, values.optionNames.length ? {
|
|
45
|
+
optionNames: values.optionNames
|
|
46
|
+
} : {});
|
|
47
|
+
}
|
|
48
|
+
function Field(props) {
|
|
49
|
+
return /*#__PURE__*/ _jsxs(Stack, {
|
|
50
|
+
spacing: 0.25,
|
|
51
|
+
children: [
|
|
52
|
+
/*#__PURE__*/ _jsxs(Stack, {
|
|
53
|
+
direction: "row",
|
|
54
|
+
spacing: 1,
|
|
55
|
+
sx: {
|
|
56
|
+
alignItems: 'center'
|
|
57
|
+
},
|
|
58
|
+
children: [
|
|
59
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
60
|
+
variant: "caption",
|
|
61
|
+
color: "text.secondary",
|
|
62
|
+
sx: {
|
|
63
|
+
flexGrow: 1
|
|
64
|
+
},
|
|
65
|
+
children: props.label
|
|
66
|
+
}),
|
|
67
|
+
props.count
|
|
68
|
+
]
|
|
69
|
+
}),
|
|
70
|
+
props.children
|
|
71
|
+
]
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/** The proposed copy, field by field. */ export function AiProductCopyProposalView(props) {
|
|
75
|
+
const { proposal } = props;
|
|
76
|
+
const values = proposal.values;
|
|
77
|
+
if (!values) return null;
|
|
78
|
+
const renamed = values.optionNames.map((name, index)=>{
|
|
79
|
+
var _proposal_optionNamesBefore_index;
|
|
80
|
+
return {
|
|
81
|
+
before: (_proposal_optionNamesBefore_index = proposal.optionNamesBefore[index]) != null ? _proposal_optionNamesBefore_index : '',
|
|
82
|
+
after: name
|
|
83
|
+
};
|
|
84
|
+
}).filter((pair)=>pair.before !== pair.after);
|
|
85
|
+
return /*#__PURE__*/ _jsxs(Stack, {
|
|
86
|
+
spacing: 1,
|
|
87
|
+
children: [
|
|
88
|
+
/*#__PURE__*/ _jsx(Field, {
|
|
89
|
+
label: "Description",
|
|
90
|
+
children: /*#__PURE__*/ _jsx(Typography, {
|
|
91
|
+
variant: "body2",
|
|
92
|
+
sx: {
|
|
93
|
+
whiteSpace: 'pre-wrap',
|
|
94
|
+
wordBreak: 'break-word'
|
|
95
|
+
},
|
|
96
|
+
children: values.description
|
|
97
|
+
})
|
|
98
|
+
}),
|
|
99
|
+
values.tags.length ? /*#__PURE__*/ _jsx(Field, {
|
|
100
|
+
label: "Tags",
|
|
101
|
+
children: /*#__PURE__*/ _jsx(Stack, {
|
|
102
|
+
direction: "row",
|
|
103
|
+
spacing: 0.5,
|
|
104
|
+
useFlexGap: true,
|
|
105
|
+
sx: {
|
|
106
|
+
flexWrap: 'wrap'
|
|
107
|
+
},
|
|
108
|
+
children: values.tags.map((tag)=>/*#__PURE__*/ _jsx(Chip, {
|
|
109
|
+
size: "small",
|
|
110
|
+
variant: "outlined",
|
|
111
|
+
label: tag
|
|
112
|
+
}, tag))
|
|
113
|
+
})
|
|
114
|
+
}) : null,
|
|
115
|
+
proposal.categories.length ? /*#__PURE__*/ _jsx(Field, {
|
|
116
|
+
label: "Categories",
|
|
117
|
+
children: /*#__PURE__*/ _jsx(Typography, {
|
|
118
|
+
variant: "body2",
|
|
119
|
+
children: proposal.categories.map((category)=>category.name).join(', ')
|
|
120
|
+
})
|
|
121
|
+
}) : null,
|
|
122
|
+
renamed.length ? /*#__PURE__*/ _jsx(Field, {
|
|
123
|
+
label: "Option names",
|
|
124
|
+
children: /*#__PURE__*/ _jsx(Typography, {
|
|
125
|
+
variant: "body2",
|
|
126
|
+
children: renamed.map((pair)=>`${pair.before || 'Unnamed'} → ${pair.after}`).join(', ')
|
|
127
|
+
})
|
|
128
|
+
}) : null,
|
|
129
|
+
/*#__PURE__*/ _jsx(Field, {
|
|
130
|
+
label: "Search title",
|
|
131
|
+
count: /*#__PURE__*/ _jsx(Chip, {
|
|
132
|
+
size: "small",
|
|
133
|
+
variant: "outlined",
|
|
134
|
+
color: seoListingFieldTooLong('title', values.seoTitle) ? 'error' : 'default',
|
|
135
|
+
label: seoListingFieldCount('title', values.seoTitle)
|
|
136
|
+
}),
|
|
137
|
+
children: /*#__PURE__*/ _jsx(Typography, {
|
|
138
|
+
variant: "body2",
|
|
139
|
+
children: values.seoTitle
|
|
140
|
+
})
|
|
141
|
+
}),
|
|
142
|
+
/*#__PURE__*/ _jsx(Field, {
|
|
143
|
+
label: "Search description",
|
|
144
|
+
count: /*#__PURE__*/ _jsx(Chip, {
|
|
145
|
+
size: "small",
|
|
146
|
+
variant: "outlined",
|
|
147
|
+
color: seoListingFieldTooLong('description', values.seoDescription) ? 'error' : 'default',
|
|
148
|
+
label: seoListingFieldCount('description', values.seoDescription)
|
|
149
|
+
}),
|
|
150
|
+
children: /*#__PURE__*/ _jsx(Typography, {
|
|
151
|
+
variant: "body2",
|
|
152
|
+
children: values.seoDescription
|
|
153
|
+
})
|
|
154
|
+
}),
|
|
155
|
+
proposal.gaps.length ? /*#__PURE__*/ _jsx(Alert, {
|
|
156
|
+
severity: "warning",
|
|
157
|
+
children: `Fill in what the copy could not know before you save: ${proposal.gaps.map((gap)=>`[${gap}]`).join(', ')}.`
|
|
158
|
+
}) : null,
|
|
159
|
+
proposal.notes.map((note)=>/*#__PURE__*/ _jsx(Typography, {
|
|
160
|
+
variant: "caption",
|
|
161
|
+
color: "text.secondary",
|
|
162
|
+
children: note
|
|
163
|
+
}, note))
|
|
164
|
+
]
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
export function AiProductCopyCard(props) {
|
|
168
|
+
var _jobs_find, _jobs_find1, _ref, _aiProductCopyProposals_find;
|
|
169
|
+
const { hostId, product, proposeValues } = props;
|
|
170
|
+
const { orgId, verdict, jobs, notice, start } = useAiProductsJobs({
|
|
171
|
+
hostId,
|
|
172
|
+
orgId: props.orgId,
|
|
173
|
+
follows: (job)=>job.brief === aiProductCopyBrief(product.name)
|
|
174
|
+
});
|
|
175
|
+
const [startedId, setStartedId] = useState(null);
|
|
176
|
+
const [busy, setBusy] = useState(false);
|
|
177
|
+
const [staged, setStaged] = useState(null);
|
|
178
|
+
const write = useCallback(async ()=>{
|
|
179
|
+
setBusy(true);
|
|
180
|
+
setStaged(null);
|
|
181
|
+
try {
|
|
182
|
+
var _product_mediaUrls_;
|
|
183
|
+
const job = await start(aiProductCopyBrief(product.name), aiProductsJobInputs({
|
|
184
|
+
target: 'product',
|
|
185
|
+
product: {
|
|
186
|
+
id: product.id,
|
|
187
|
+
name: product.name,
|
|
188
|
+
type: product.type,
|
|
189
|
+
text: product.description,
|
|
190
|
+
tags: product.tags,
|
|
191
|
+
categoryIds: product.categoryIds,
|
|
192
|
+
options: product.options,
|
|
193
|
+
imageUrl: (_product_mediaUrls_ = product.mediaUrls[0]) != null ? _product_mediaUrls_ : null,
|
|
194
|
+
seoTitle: product.seoTitle,
|
|
195
|
+
seoDescription: product.seoDescription
|
|
196
|
+
}
|
|
197
|
+
}));
|
|
198
|
+
if (job) setStartedId(job.id);
|
|
199
|
+
} finally{
|
|
200
|
+
setBusy(false);
|
|
201
|
+
}
|
|
202
|
+
}, [
|
|
203
|
+
start,
|
|
204
|
+
product
|
|
205
|
+
]);
|
|
206
|
+
if (verdict !== 'ready') return null;
|
|
207
|
+
// The job this card started, or the latest one that wrote this saved product's copy.
|
|
208
|
+
const job = startedId ? (_jobs_find = jobs.find((entry)=>entry.id === startedId)) != null ? _jobs_find : null : product.id ? (_jobs_find1 = jobs.find((entry)=>aiProductCopyProposals(entry).some((proposal)=>proposal.product.id === product.id))) != null ? _jobs_find1 : null : null;
|
|
209
|
+
const proposal = job ? (_ref = (_aiProductCopyProposals_find = aiProductCopyProposals(job).find((entry)=>entry.product.id === product.id)) != null ? _aiProductCopyProposals_find : aiProductCopyProposals(job)[0]) != null ? _ref : null : null;
|
|
210
|
+
const running = isAiJobMoving(job);
|
|
211
|
+
const unnamed = !product.name.trim();
|
|
212
|
+
const help = pluginDocsHelp('aiProducts', {
|
|
213
|
+
excerpt: 'Write a product’s description, search listing and tags from what it says and shows. It is put in the fields as unsaved changes; nothing is saved until you save.'
|
|
214
|
+
});
|
|
215
|
+
return /*#__PURE__*/ _jsx(Box, {
|
|
216
|
+
sx: {
|
|
217
|
+
border: 1,
|
|
218
|
+
borderColor: 'divider',
|
|
219
|
+
borderRadius: 1,
|
|
220
|
+
p: 1.5
|
|
221
|
+
},
|
|
222
|
+
"aria-label": "Product copy assistant",
|
|
223
|
+
children: /*#__PURE__*/ _jsxs(Stack, {
|
|
224
|
+
spacing: 1.5,
|
|
225
|
+
children: [
|
|
226
|
+
/*#__PURE__*/ _jsxs(Stack, {
|
|
227
|
+
direction: "row",
|
|
228
|
+
spacing: 1,
|
|
229
|
+
sx: {
|
|
230
|
+
alignItems: 'baseline'
|
|
231
|
+
},
|
|
232
|
+
children: [
|
|
233
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
234
|
+
variant: "subtitle2",
|
|
235
|
+
sx: {
|
|
236
|
+
flexGrow: 1
|
|
237
|
+
},
|
|
238
|
+
children: 'Write with AI'
|
|
239
|
+
}),
|
|
240
|
+
/*#__PURE__*/ _jsx(Link, {
|
|
241
|
+
href: help.href,
|
|
242
|
+
target: "_blank",
|
|
243
|
+
rel: "noopener",
|
|
244
|
+
variant: "caption",
|
|
245
|
+
title: help.excerpt,
|
|
246
|
+
children: 'How it works'
|
|
247
|
+
})
|
|
248
|
+
]
|
|
249
|
+
}),
|
|
250
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
251
|
+
variant: "body2",
|
|
252
|
+
color: "text.secondary",
|
|
253
|
+
children: 'Writes the description, search listing and tags, suggests categories and clearer option names, ' + 'from the product’s name, text, tags and options and its first photo. Prices are never written.'
|
|
254
|
+
}),
|
|
255
|
+
/*#__PURE__*/ _jsxs(Stack, {
|
|
256
|
+
direction: "row",
|
|
257
|
+
spacing: 1,
|
|
258
|
+
sx: {
|
|
259
|
+
alignItems: 'center'
|
|
260
|
+
},
|
|
261
|
+
children: [
|
|
262
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
263
|
+
size: "small",
|
|
264
|
+
variant: "outlined",
|
|
265
|
+
disabled: busy || running || unnamed || !orgId,
|
|
266
|
+
onClick: ()=>void write(),
|
|
267
|
+
children: proposal ? 'Write again' : 'Write copy'
|
|
268
|
+
}),
|
|
269
|
+
busy || running ? /*#__PURE__*/ _jsx(CircularProgress, {
|
|
270
|
+
size: 16,
|
|
271
|
+
"aria-label": "Writing the copy"
|
|
272
|
+
}) : null,
|
|
273
|
+
unnamed ? /*#__PURE__*/ _jsx(Typography, {
|
|
274
|
+
variant: "caption",
|
|
275
|
+
color: "text.secondary",
|
|
276
|
+
children: 'Name the product first.'
|
|
277
|
+
}) : null
|
|
278
|
+
]
|
|
279
|
+
}),
|
|
280
|
+
notice ? /*#__PURE__*/ _jsx(Alert, {
|
|
281
|
+
severity: "warning",
|
|
282
|
+
children: notice
|
|
283
|
+
}) : null,
|
|
284
|
+
(job == null ? void 0 : job.error) && !(proposal == null ? void 0 : proposal.values) ? /*#__PURE__*/ _jsx(Alert, {
|
|
285
|
+
severity: job.status === 'failed' ? 'error' : 'warning',
|
|
286
|
+
children: job.error
|
|
287
|
+
}) : null,
|
|
288
|
+
(proposal == null ? void 0 : proposal.skipped) ? /*#__PURE__*/ _jsx(Alert, {
|
|
289
|
+
severity: "info",
|
|
290
|
+
children: proposal.skipped
|
|
291
|
+
}) : null,
|
|
292
|
+
(proposal == null ? void 0 : proposal.values) && job ? /*#__PURE__*/ _jsxs(Stack, {
|
|
293
|
+
spacing: 1,
|
|
294
|
+
children: [
|
|
295
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
296
|
+
variant: "subtitle2",
|
|
297
|
+
children: 'Proposed copy'
|
|
298
|
+
}),
|
|
299
|
+
/*#__PURE__*/ _jsx(AiProductCopyProposalView, {
|
|
300
|
+
proposal: proposal
|
|
301
|
+
}),
|
|
302
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
303
|
+
size: "small",
|
|
304
|
+
variant: "contained",
|
|
305
|
+
sx: {
|
|
306
|
+
alignSelf: 'flex-start'
|
|
307
|
+
},
|
|
308
|
+
disabled: staged === job.id,
|
|
309
|
+
onClick: ()=>{
|
|
310
|
+
proposeValues(aiProductCopyValues(proposal), job.id);
|
|
311
|
+
setStaged(job.id);
|
|
312
|
+
},
|
|
313
|
+
children: 'Put in the fields'
|
|
314
|
+
})
|
|
315
|
+
]
|
|
316
|
+
}) : null,
|
|
317
|
+
staged ? /*#__PURE__*/ _jsx(Alert, {
|
|
318
|
+
severity: "success",
|
|
319
|
+
children: 'In the fields as unsaved changes. Review them, then press Save product.'
|
|
320
|
+
}) : null
|
|
321
|
+
]
|
|
322
|
+
})
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
AiProductCopyCard.displayName = 'AiProductCopyCard';
|
|
326
|
+
export default AiProductCopyCard;
|
|
327
|
+
|
|
328
|
+
//# sourceMappingURL=ai-product-copy-card.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/plugins/ai/src/lib/components/ai-product-copy-card.component.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use client'\n\nimport { pluginDocsHelp } from '@aglyn/aglyn/app-utils/docs-help'\nimport { seoListingFieldCount, seoListingFieldTooLong } from '@aglyn/aglyn/app-utils/seo-listing-fields'\nimport type {\n ConsoleProductCopyValues,\n ConsoleProductEditorZoneProps,\n} from '@aglyn/aglyn/plugin-manager/feature-plugins'\nimport { Alert, Box, Button, Chip, CircularProgress, Link, Stack, Typography } from '@mui/material'\nimport { useCallback, useState, type ReactNode } from 'react'\nimport {\n aiProductCopyProposals,\n aiProductsJobInputs,\n type AiProductCopyProposal,\n} from '../model/ai-products'\nimport { isAiJobMoving, useAiProductsJobs } from './use-ai-products-jobs'\n\n/**\n * \"Write with AI\" in the commerce product editor (AGL-2916), through the\n * `productEditor` zone. A `products` job writes the product's description,\n * search listing, tags, categories and clearer option names from what the\n * editor holds: its name, text, tags and options, and its first photo for a\n * model that reads pictures. The proposal is shown in full, with any fact the\n * copy could not know marked for the person to fill in, and \"Put in the\n * fields\" stages it in the editor as unsaved changes. Save product is the\n * write; this card never writes a product.\n */\n\n/** The brief a product copy job carries, which the jobs list shows. */\nexport const aiProductCopyBrief = (name: string) => `Write the storefront copy for ${name.trim()}`\n\n/** The values a proposal stages, in the editor's terms. */\nexport function aiProductCopyValues(proposal: AiProductCopyProposal): ConsoleProductCopyValues {\n const values = proposal.values\n if (!values) return {}\n return {\n description: values.description,\n tags: values.tags,\n categoryIds: values.categoryIds,\n seoTitle: values.seoTitle,\n seoDescription: values.seoDescription,\n ...(values.optionNames.length ? { optionNames: values.optionNames } : {}),\n }\n}\n\nfunction Field(props: { label: string; children: ReactNode; count?: ReactNode }) {\n return (\n <Stack spacing={0.25}>\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'center' }}>\n <Typography variant=\"caption\" color=\"text.secondary\" sx={{ flexGrow: 1 }}>\n {props.label}\n </Typography>\n {props.count}\n </Stack>\n {props.children}\n </Stack>\n )\n}\n\n/** The proposed copy, field by field. */\nexport function AiProductCopyProposalView(props: { proposal: AiProductCopyProposal }) {\n const { proposal } = props\n const values = proposal.values\n if (!values) return null\n const renamed = values.optionNames\n .map((name, index) => ({ before: proposal.optionNamesBefore[index] ?? '', after: name }))\n .filter((pair) => pair.before !== pair.after)\n return (\n <Stack spacing={1}>\n <Field label=\"Description\">\n <Typography variant=\"body2\" sx={{ whiteSpace: 'pre-wrap', wordBreak: 'break-word' }}>\n {values.description}\n </Typography>\n </Field>\n {values.tags.length ? (\n <Field label=\"Tags\">\n <Stack direction=\"row\" spacing={0.5} useFlexGap sx={{ flexWrap: 'wrap' }}>\n {values.tags.map((tag) => (\n <Chip key={tag} size=\"small\" variant=\"outlined\" label={tag} />\n ))}\n </Stack>\n </Field>\n ) : null}\n {proposal.categories.length ? (\n <Field label=\"Categories\">\n <Typography variant=\"body2\">{proposal.categories.map((category) => category.name).join(', ')}</Typography>\n </Field>\n ) : null}\n {renamed.length ? (\n <Field label=\"Option names\">\n <Typography variant=\"body2\">\n {renamed.map((pair) => `${pair.before || 'Unnamed'} → ${pair.after}`).join(', ')}\n </Typography>\n </Field>\n ) : null}\n <Field\n label=\"Search title\"\n count={\n <Chip\n size=\"small\"\n variant=\"outlined\"\n color={seoListingFieldTooLong('title', values.seoTitle) ? 'error' : 'default'}\n label={seoListingFieldCount('title', values.seoTitle)}\n />\n }\n >\n <Typography variant=\"body2\">{values.seoTitle}</Typography>\n </Field>\n <Field\n label=\"Search description\"\n count={\n <Chip\n size=\"small\"\n variant=\"outlined\"\n color={seoListingFieldTooLong('description', values.seoDescription) ? 'error' : 'default'}\n label={seoListingFieldCount('description', values.seoDescription)}\n />\n }\n >\n <Typography variant=\"body2\">{values.seoDescription}</Typography>\n </Field>\n {proposal.gaps.length ? (\n <Alert severity=\"warning\">\n {`Fill in what the copy could not know before you save: ${proposal.gaps.map((gap) => `[${gap}]`).join(', ')}.`}\n </Alert>\n ) : null}\n {proposal.notes.map((note) => (\n <Typography key={note} variant=\"caption\" color=\"text.secondary\">\n {note}\n </Typography>\n ))}\n </Stack>\n )\n}\n\nexport function AiProductCopyCard(props: ConsoleProductEditorZoneProps) {\n const { hostId, product, proposeValues } = props\n const { orgId, verdict, jobs, notice, start } = useAiProductsJobs({\n hostId,\n orgId: props.orgId,\n follows: (job) => job.brief === aiProductCopyBrief(product.name),\n })\n const [startedId, setStartedId] = useState<string | null>(null)\n const [busy, setBusy] = useState(false)\n const [staged, setStaged] = useState<string | null>(null)\n\n const write = useCallback(async () => {\n setBusy(true)\n setStaged(null)\n try {\n const job = await start(\n aiProductCopyBrief(product.name),\n aiProductsJobInputs({\n target: 'product',\n product: {\n id: product.id,\n name: product.name,\n type: product.type,\n text: product.description,\n tags: product.tags,\n categoryIds: product.categoryIds,\n options: product.options,\n imageUrl: product.mediaUrls[0] ?? null,\n seoTitle: product.seoTitle,\n seoDescription: product.seoDescription,\n },\n }),\n )\n if (job) setStartedId(job.id)\n } finally {\n setBusy(false)\n }\n }, [start, product])\n\n if (verdict !== 'ready') return null\n\n // The job this card started, or the latest one that wrote this saved product's copy.\n const job = startedId\n ? (jobs.find((entry) => entry.id === startedId) ?? null)\n : product.id\n ? (jobs.find((entry) => aiProductCopyProposals(entry).some((proposal) => proposal.product.id === product.id)) ??\n null)\n : null\n const proposal = job\n ? (aiProductCopyProposals(job).find((entry) => entry.product.id === product.id) ?? aiProductCopyProposals(job)[0] ?? null)\n : null\n const running = isAiJobMoving(job)\n const unnamed = !product.name.trim()\n const help = pluginDocsHelp('aiProducts', {\n excerpt:\n 'Write a product’s description, search listing and tags from what it says and shows. It is put in the fields as unsaved changes; nothing is saved until you save.',\n })\n\n return (\n <Box sx={{ border: 1, borderColor: 'divider', borderRadius: 1, p: 1.5 }} aria-label=\"Product copy assistant\">\n <Stack spacing={1.5}>\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'baseline' }}>\n <Typography variant=\"subtitle2\" sx={{ flexGrow: 1 }}>\n {'Write with AI'}\n </Typography>\n <Link href={help.href} target=\"_blank\" rel=\"noopener\" variant=\"caption\" title={help.excerpt}>\n {'How it works'}\n </Link>\n </Stack>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {'Writes the description, search listing and tags, suggests categories and clearer option names, ' +\n 'from the product’s name, text, tags and options and its first photo. Prices are never written.'}\n </Typography>\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'center' }}>\n <Button size=\"small\" variant=\"outlined\" disabled={busy || running || unnamed || !orgId} onClick={() => void write()}>\n {proposal ? 'Write again' : 'Write copy'}\n </Button>\n {busy || running ? <CircularProgress size={16} aria-label=\"Writing the copy\" /> : null}\n {unnamed ? (\n <Typography variant=\"caption\" color=\"text.secondary\">\n {'Name the product first.'}\n </Typography>\n ) : null}\n </Stack>\n {notice ? <Alert severity=\"warning\">{notice}</Alert> : null}\n {job?.error && !proposal?.values ? (\n <Alert severity={job.status === 'failed' ? 'error' : 'warning'}>{job.error}</Alert>\n ) : null}\n {proposal?.skipped ? <Alert severity=\"info\">{proposal.skipped}</Alert> : null}\n {proposal?.values && job ? (\n <Stack spacing={1}>\n <Typography variant=\"subtitle2\">{'Proposed copy'}</Typography>\n <AiProductCopyProposalView proposal={proposal} />\n <Button\n size=\"small\"\n variant=\"contained\"\n sx={{ alignSelf: 'flex-start' }}\n disabled={staged === job.id}\n onClick={() => {\n proposeValues(aiProductCopyValues(proposal), job.id)\n setStaged(job.id)\n }}\n >\n {'Put in the fields'}\n </Button>\n </Stack>\n ) : null}\n {staged ? (\n <Alert severity=\"success\">{'In the fields as unsaved changes. Review them, then press Save product.'}</Alert>\n ) : null}\n </Stack>\n </Box>\n )\n}\nAiProductCopyCard.displayName = 'AiProductCopyCard'\n\nexport default AiProductCopyCard\n"],"names":["pluginDocsHelp","seoListingFieldCount","seoListingFieldTooLong","Alert","Box","Button","Chip","CircularProgress","Link","Stack","Typography","useCallback","useState","aiProductCopyProposals","aiProductsJobInputs","isAiJobMoving","useAiProductsJobs","aiProductCopyBrief","name","trim","aiProductCopyValues","proposal","values","description","tags","categoryIds","seoTitle","seoDescription","optionNames","length","Field","props","spacing","direction","sx","alignItems","variant","color","flexGrow","label","count","children","AiProductCopyProposalView","renamed","map","index","before","optionNamesBefore","after","filter","pair","whiteSpace","wordBreak","useFlexGap","flexWrap","tag","size","categories","category","join","gaps","severity","gap","notes","note","AiProductCopyCard","jobs","hostId","product","proposeValues","orgId","verdict","notice","start","follows","job","brief","startedId","setStartedId","busy","setBusy","staged","setStaged","write","target","id","type","text","options","imageUrl","mediaUrls","find","entry","some","running","unnamed","help","excerpt","border","borderColor","borderRadius","p","aria-label","href","rel","title","disabled","onClick","error","status","skipped","alignSelf","displayName"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ConsoleProductImportZoneProps } from '@aglyn/aglyn/plugin-manager/feature-plugins';
|
|
2
|
+
/**
|
|
3
|
+
* "Write copy with AI as they land" in the commerce CSV import dialog
|
|
4
|
+
* (AGL-2916), through the `productImport` zone. The box sets an option on the
|
|
5
|
+
* import; once the import has created its products, the products hub's AI
|
|
6
|
+
* card starts one copy job for them, and its proposals wait there for review
|
|
7
|
+
* like any other. Nothing is written to an imported product until a person
|
|
8
|
+
* applies its copy.
|
|
9
|
+
*/
|
|
10
|
+
export declare function AiProductImportOption(props: ConsoleProductImportZoneProps): import("react").JSX.Element;
|
|
11
|
+
export declare namespace AiProductImportOption {
|
|
12
|
+
var displayName: string;
|
|
13
|
+
}
|
|
14
|
+
export default AiProductImportOption;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/ 'use client';
|
|
17
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
18
|
+
import { Checkbox, FormControlLabel, Stack, Typography } from "@mui/material";
|
|
19
|
+
import { AI_PRODUCTS_BULK_MAX, AI_PRODUCTS_IMPORT_WRITE_COPY } from "../model/ai-products.js";
|
|
20
|
+
import { useAiProductsJobs } from "./use-ai-products-jobs.js";
|
|
21
|
+
/**
|
|
22
|
+
* "Write copy with AI as they land" in the commerce CSV import dialog
|
|
23
|
+
* (AGL-2916), through the `productImport` zone. The box sets an option on the
|
|
24
|
+
* import; once the import has created its products, the products hub's AI
|
|
25
|
+
* card starts one copy job for them, and its proposals wait there for review
|
|
26
|
+
* like any other. Nothing is written to an imported product until a person
|
|
27
|
+
* applies its copy.
|
|
28
|
+
*/ export function AiProductImportOption(props) {
|
|
29
|
+
const { hostId, count, options, setOption } = props;
|
|
30
|
+
const { verdict } = useAiProductsJobs({
|
|
31
|
+
hostId,
|
|
32
|
+
orgId: props.orgId
|
|
33
|
+
});
|
|
34
|
+
if (verdict !== 'ready') return null;
|
|
35
|
+
const covered = Math.min(count, AI_PRODUCTS_BULK_MAX);
|
|
36
|
+
return /*#__PURE__*/ _jsxs(Stack, {
|
|
37
|
+
spacing: 0.25,
|
|
38
|
+
children: [
|
|
39
|
+
/*#__PURE__*/ _jsx(FormControlLabel, {
|
|
40
|
+
control: /*#__PURE__*/ _jsx(Checkbox, {
|
|
41
|
+
size: "small",
|
|
42
|
+
checked: Boolean(options[AI_PRODUCTS_IMPORT_WRITE_COPY]),
|
|
43
|
+
onChange: (event)=>setOption(AI_PRODUCTS_IMPORT_WRITE_COPY, event.target.checked)
|
|
44
|
+
}),
|
|
45
|
+
label: "Write descriptions, search listings and tags with AI as they land"
|
|
46
|
+
}),
|
|
47
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
48
|
+
variant: "caption",
|
|
49
|
+
color: "text.secondary",
|
|
50
|
+
children: (count > AI_PRODUCTS_BULK_MAX ? `Copy is written for the first ${covered} of the ${count} products. ` : '') + 'You review it on the products page before any is saved. Prices are never written.'
|
|
51
|
+
})
|
|
52
|
+
]
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
AiProductImportOption.displayName = 'AiProductImportOption';
|
|
56
|
+
export default AiProductImportOption;
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=ai-product-import-option.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/plugins/ai/src/lib/components/ai-product-import-option.component.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use client'\n\nimport type { ConsoleProductImportZoneProps } from '@aglyn/aglyn/plugin-manager/feature-plugins'\nimport { Checkbox, FormControlLabel, Stack, Typography } from '@mui/material'\nimport { AI_PRODUCTS_BULK_MAX, AI_PRODUCTS_IMPORT_WRITE_COPY } from '../model/ai-products'\nimport { useAiProductsJobs } from './use-ai-products-jobs'\n\n/**\n * \"Write copy with AI as they land\" in the commerce CSV import dialog\n * (AGL-2916), through the `productImport` zone. The box sets an option on the\n * import; once the import has created its products, the products hub's AI\n * card starts one copy job for them, and its proposals wait there for review\n * like any other. Nothing is written to an imported product until a person\n * applies its copy.\n */\nexport function AiProductImportOption(props: ConsoleProductImportZoneProps) {\n const { hostId, count, options, setOption } = props\n const { verdict } = useAiProductsJobs({ hostId, orgId: props.orgId })\n if (verdict !== 'ready') return null\n const covered = Math.min(count, AI_PRODUCTS_BULK_MAX)\n return (\n <Stack spacing={0.25}>\n <FormControlLabel\n control={\n <Checkbox\n size=\"small\"\n checked={Boolean(options[AI_PRODUCTS_IMPORT_WRITE_COPY])}\n onChange={(event) => setOption(AI_PRODUCTS_IMPORT_WRITE_COPY, event.target.checked)}\n />\n }\n label=\"Write descriptions, search listings and tags with AI as they land\"\n />\n <Typography variant=\"caption\" color=\"text.secondary\">\n {(count > AI_PRODUCTS_BULK_MAX\n ? `Copy is written for the first ${covered} of the ${count} products. `\n : '') + 'You review it on the products page before any is saved. Prices are never written.'}\n </Typography>\n </Stack>\n )\n}\nAiProductImportOption.displayName = 'AiProductImportOption'\n\nexport default AiProductImportOption\n"],"names":["Checkbox","FormControlLabel","Stack","Typography","AI_PRODUCTS_BULK_MAX","AI_PRODUCTS_IMPORT_WRITE_COPY","useAiProductsJobs","AiProductImportOption","props","hostId","count","options","setOption","verdict","orgId","covered","Math","min","spacing","control","size","checked","Boolean","onChange","event","target","label","variant","color","displayName"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GACD;;AAGA,SAASA,QAAQ,EAAEC,gBAAgB,EAAEC,KAAK,EAAEC,UAAU,QAAQ,gBAAe;AAC7E,SAASC,oBAAoB,EAAEC,6BAA6B,QAAQ,0BAAsB;AAC1F,SAASC,iBAAiB,QAAQ,4BAAwB;AAE1D;;;;;;;CAOC,GACD,OAAO,SAASC,sBAAsBC,KAAoC;IACxE,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAEC,SAAS,EAAE,GAAGJ;IAC9C,MAAM,EAAEK,OAAO,EAAE,GAAGP,kBAAkB;QAAEG;QAAQK,OAAON,MAAMM,KAAK;IAAC;IACnE,IAAID,YAAY,SAAS,OAAO;IAChC,MAAME,UAAUC,KAAKC,GAAG,CAACP,OAAON;IAChC,qBACE,MAACF;QAAMgB,SAAS;;0BACd,KAACjB;gBACCkB,uBACE,KAACnB;oBACCoB,MAAK;oBACLC,SAASC,QAAQX,OAAO,CAACN,8BAA8B;oBACvDkB,UAAU,CAACC,QAAUZ,UAAUP,+BAA+BmB,MAAMC,MAAM,CAACJ,OAAO;;gBAGtFK,OAAM;;0BAER,KAACvB;gBAAWwB,SAAQ;gBAAUC,OAAM;0BACjC,AAAClB,CAAAA,QAAQN,uBACN,CAAC,8BAA8B,EAAEW,QAAQ,QAAQ,EAAEL,MAAM,WAAW,CAAC,GACrE,EAAC,IAAK;;;;AAIlB;AACAH,sBAAsBsB,WAAW,GAAG;AAEpC,eAAetB,sBAAqB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ConsoleProductsHubZoneProps } from '@aglyn/aglyn/plugin-manager/feature-plugins';
|
|
2
|
+
type BriefKind = 'catalog' | 'categories';
|
|
3
|
+
/** What each brief dialog says. */
|
|
4
|
+
export declare const AI_PRODUCTS_BRIEF_COPY: Readonly<Record<BriefKind, {
|
|
5
|
+
title: string;
|
|
6
|
+
label: string;
|
|
7
|
+
placeholder: string;
|
|
8
|
+
next: string;
|
|
9
|
+
submit: string;
|
|
10
|
+
}>>;
|
|
11
|
+
export declare function AiProductsHubCard(props: ConsoleProductsHubZoneProps): import("react").JSX.Element;
|
|
12
|
+
export declare namespace AiProductsHubCard {
|
|
13
|
+
var displayName: string;
|
|
14
|
+
}
|
|
15
|
+
export default AiProductsHubCard;
|