@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,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/ 'use client';
|
|
17
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
18
|
+
import { pluginDocsHelp } from "@aglyn/aglyn/app-utils/docs-help";
|
|
19
|
+
import { useHostOrgId } from "@aglyn/tenant-feature-instance";
|
|
20
|
+
import { Alert, Box, Button, CircularProgress, Link, Stack, TextField, Typography } from "@mui/material";
|
|
21
|
+
import { useMemo, useState } from "react";
|
|
22
|
+
import { AI_CRM_EMAIL_RECORD_KINDS, AI_CRM_EMAIL_REQUEST_MAX_CHARS } from "../model/ai-crm.js";
|
|
23
|
+
import { useAiCrmAnswer } from "./use-ai-crm-answer.js";
|
|
24
|
+
const emailKindOf = (kind)=>AI_CRM_EMAIL_RECORD_KINDS.includes(kind) ? kind : null;
|
|
25
|
+
/**
|
|
26
|
+
* "Draft the message" (AGL-2917), in the CRM's one-to-one composer through
|
|
27
|
+
* the `recordEmail` zone: the member says what the email should say, a `crm`
|
|
28
|
+
* job drafts a subject and a message from that and the record's timeline, and
|
|
29
|
+
* the draft goes into the composer through `proposeDraft`, which asks before
|
|
30
|
+
* it replaces a written message.
|
|
31
|
+
*
|
|
32
|
+
* Nothing here sends anything, and nothing can: the composer's Send is the
|
|
33
|
+
* member's. A draft is asked afresh each time, so the card recalls no earlier
|
|
34
|
+
* one, and the answer door serves a draft only to the member who asked.
|
|
35
|
+
*/ export function AiCrmEmailDraft(props) {
|
|
36
|
+
var _ref, _props_orgId;
|
|
37
|
+
var _run_job;
|
|
38
|
+
const { hostId, record, proposeDraft } = props;
|
|
39
|
+
const hostOrgId = useHostOrgId(props.orgId || !hostId ? undefined : hostId);
|
|
40
|
+
const orgId = (_ref = (_props_orgId = props.orgId) != null ? _props_orgId : hostOrgId) != null ? _ref : undefined;
|
|
41
|
+
const kind = emailKindOf(record.kind);
|
|
42
|
+
const recordId = record.id;
|
|
43
|
+
const wanted = useMemo(()=>kind ? {
|
|
44
|
+
kind: 'email',
|
|
45
|
+
record: {
|
|
46
|
+
kind,
|
|
47
|
+
id: recordId
|
|
48
|
+
}
|
|
49
|
+
} : null, [
|
|
50
|
+
kind,
|
|
51
|
+
recordId
|
|
52
|
+
]);
|
|
53
|
+
const run = useAiCrmAnswer({
|
|
54
|
+
orgId,
|
|
55
|
+
hostId,
|
|
56
|
+
wanted,
|
|
57
|
+
recall: 'none'
|
|
58
|
+
});
|
|
59
|
+
const [request, setRequest] = useState('');
|
|
60
|
+
if (!kind || run.verdict !== 'ready') return null;
|
|
61
|
+
const working = run.busy || run.running;
|
|
62
|
+
const help = pluginDocsHelp('aiCrm', {
|
|
63
|
+
anchor: '#draft-an-email',
|
|
64
|
+
excerpt: 'Describe the email and a draft goes into the message. Nothing is sent until you press Send.'
|
|
65
|
+
});
|
|
66
|
+
const draft = async ()=>{
|
|
67
|
+
const answer = await run.ask(request.trim(), {
|
|
68
|
+
task: 'email',
|
|
69
|
+
record: kind,
|
|
70
|
+
recordId
|
|
71
|
+
});
|
|
72
|
+
if ((answer == null ? void 0 : answer.proposal.kind) !== 'email') return;
|
|
73
|
+
proposeDraft({
|
|
74
|
+
subject: answer.proposal.subject,
|
|
75
|
+
body: answer.proposal.body
|
|
76
|
+
}, answer.jobId);
|
|
77
|
+
};
|
|
78
|
+
return /*#__PURE__*/ _jsx(Box, {
|
|
79
|
+
sx: {
|
|
80
|
+
border: 1,
|
|
81
|
+
borderColor: 'divider',
|
|
82
|
+
borderRadius: 1,
|
|
83
|
+
p: 1.5
|
|
84
|
+
},
|
|
85
|
+
"aria-label": "Draft with AI",
|
|
86
|
+
children: /*#__PURE__*/ _jsxs(Stack, {
|
|
87
|
+
spacing: 1,
|
|
88
|
+
children: [
|
|
89
|
+
/*#__PURE__*/ _jsxs(Stack, {
|
|
90
|
+
direction: "row",
|
|
91
|
+
spacing: 1,
|
|
92
|
+
sx: {
|
|
93
|
+
alignItems: 'baseline'
|
|
94
|
+
},
|
|
95
|
+
children: [
|
|
96
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
97
|
+
variant: "subtitle2",
|
|
98
|
+
sx: {
|
|
99
|
+
flexGrow: 1
|
|
100
|
+
},
|
|
101
|
+
children: 'Draft with AI'
|
|
102
|
+
}),
|
|
103
|
+
/*#__PURE__*/ _jsx(Link, {
|
|
104
|
+
href: help.href,
|
|
105
|
+
target: "_blank",
|
|
106
|
+
rel: "noopener",
|
|
107
|
+
variant: "caption",
|
|
108
|
+
title: help.excerpt,
|
|
109
|
+
children: 'How it works'
|
|
110
|
+
})
|
|
111
|
+
]
|
|
112
|
+
}),
|
|
113
|
+
/*#__PURE__*/ _jsx(TextField, {
|
|
114
|
+
size: "small",
|
|
115
|
+
multiline: true,
|
|
116
|
+
minRows: 2,
|
|
117
|
+
label: "What should the email say?",
|
|
118
|
+
placeholder: "Follow up on the quote and offer a call next week",
|
|
119
|
+
helperText: "Written from what you ask and this record's timeline. Nothing is sent until you press Send.",
|
|
120
|
+
value: request,
|
|
121
|
+
onChange: (event)=>setRequest(event.target.value.slice(0, AI_CRM_EMAIL_REQUEST_MAX_CHARS)),
|
|
122
|
+
disabled: working
|
|
123
|
+
}),
|
|
124
|
+
/*#__PURE__*/ _jsxs(Stack, {
|
|
125
|
+
direction: "row",
|
|
126
|
+
spacing: 1,
|
|
127
|
+
sx: {
|
|
128
|
+
alignItems: 'center'
|
|
129
|
+
},
|
|
130
|
+
children: [
|
|
131
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
132
|
+
size: "small",
|
|
133
|
+
variant: "outlined",
|
|
134
|
+
disabled: working || !orgId || !request.trim(),
|
|
135
|
+
onClick: ()=>void draft(),
|
|
136
|
+
children: 'Draft the message'
|
|
137
|
+
}),
|
|
138
|
+
working ? /*#__PURE__*/ _jsx(CircularProgress, {
|
|
139
|
+
size: 16,
|
|
140
|
+
"aria-label": "Drafting the message"
|
|
141
|
+
}) : null
|
|
142
|
+
]
|
|
143
|
+
}),
|
|
144
|
+
run.notice ? /*#__PURE__*/ _jsx(Alert, {
|
|
145
|
+
severity: "warning",
|
|
146
|
+
children: run.notice
|
|
147
|
+
}) : null,
|
|
148
|
+
((_run_job = run.job) == null ? void 0 : _run_job.error) && !run.answer ? /*#__PURE__*/ _jsx(Alert, {
|
|
149
|
+
severity: run.job.status === 'failed' ? 'error' : 'warning',
|
|
150
|
+
children: run.job.error
|
|
151
|
+
}) : null
|
|
152
|
+
]
|
|
153
|
+
})
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
AiCrmEmailDraft.displayName = 'AiCrmEmailDraft';
|
|
157
|
+
export default AiCrmEmailDraft;
|
|
158
|
+
|
|
159
|
+
//# sourceMappingURL=ai-crm-email-draft.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/plugins/ai/src/lib/components/ai-crm-email-draft.component.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use client'\n\nimport { pluginDocsHelp } from '@aglyn/aglyn/app-utils/docs-help'\nimport type { ConsoleRecordEmailZoneProps } from '@aglyn/aglyn/plugin-manager/feature-plugins'\nimport { useHostOrgId } from '@aglyn/tenant-feature-instance'\nimport { Alert, Box, Button, CircularProgress, Link, Stack, TextField, Typography } from '@mui/material'\nimport { useMemo, useState } from 'react'\nimport {\n AI_CRM_EMAIL_RECORD_KINDS,\n AI_CRM_EMAIL_REQUEST_MAX_CHARS,\n type AiCrmAnswerWanted,\n type AiCrmRecordKind,\n} from '../model/ai-crm'\nimport { useAiCrmAnswer } from './use-ai-crm-answer'\n\nconst emailKindOf = (kind: string): AiCrmRecordKind | null =>\n (AI_CRM_EMAIL_RECORD_KINDS as readonly string[]).includes(kind) ? (kind as AiCrmRecordKind) : null\n\n/**\n * \"Draft the message\" (AGL-2917), in the CRM's one-to-one composer through\n * the `recordEmail` zone: the member says what the email should say, a `crm`\n * job drafts a subject and a message from that and the record's timeline, and\n * the draft goes into the composer through `proposeDraft`, which asks before\n * it replaces a written message.\n *\n * Nothing here sends anything, and nothing can: the composer's Send is the\n * member's. A draft is asked afresh each time, so the card recalls no earlier\n * one, and the answer door serves a draft only to the member who asked.\n */\nexport function AiCrmEmailDraft(props: ConsoleRecordEmailZoneProps) {\n const { hostId, record, proposeDraft } = props\n const hostOrgId = useHostOrgId(props.orgId || !hostId ? undefined : hostId)\n const orgId = props.orgId ?? hostOrgId ?? undefined\n const kind = emailKindOf(record.kind)\n const recordId = record.id\n const wanted = useMemo<AiCrmAnswerWanted | null>(\n () => (kind ? { kind: 'email', record: { kind, id: recordId } } : null),\n [kind, recordId],\n )\n const run = useAiCrmAnswer({ orgId, hostId, wanted, recall: 'none' })\n const [request, setRequest] = useState('')\n\n if (!kind || run.verdict !== 'ready') return null\n\n const working = run.busy || run.running\n const help = pluginDocsHelp('aiCrm', {\n anchor: '#draft-an-email',\n excerpt: 'Describe the email and a draft goes into the message. Nothing is sent until you press Send.',\n })\n\n const draft = async () => {\n const answer = await run.ask(request.trim(), { task: 'email', record: kind, recordId })\n if (answer?.proposal.kind !== 'email') return\n proposeDraft({ subject: answer.proposal.subject, body: answer.proposal.body }, answer.jobId)\n }\n\n return (\n <Box sx={{ border: 1, borderColor: 'divider', borderRadius: 1, p: 1.5 }} aria-label=\"Draft with AI\">\n <Stack spacing={1}>\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'baseline' }}>\n <Typography variant=\"subtitle2\" sx={{ flexGrow: 1 }}>\n {'Draft 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 <TextField\n size=\"small\"\n multiline\n minRows={2}\n label=\"What should the email say?\"\n placeholder=\"Follow up on the quote and offer a call next week\"\n helperText=\"Written from what you ask and this record's timeline. Nothing is sent until you press Send.\"\n value={request}\n onChange={(event) => setRequest(event.target.value.slice(0, AI_CRM_EMAIL_REQUEST_MAX_CHARS))}\n disabled={working}\n />\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'center' }}>\n <Button\n size=\"small\"\n variant=\"outlined\"\n disabled={working || !orgId || !request.trim()}\n onClick={() => void draft()}\n >\n {'Draft the message'}\n </Button>\n {working ? <CircularProgress size={16} aria-label=\"Drafting the message\" /> : null}\n </Stack>\n {run.notice ? <Alert severity=\"warning\">{run.notice}</Alert> : null}\n {run.job?.error && !run.answer ? (\n <Alert severity={run.job.status === 'failed' ? 'error' : 'warning'}>{run.job.error}</Alert>\n ) : null}\n </Stack>\n </Box>\n )\n}\nAiCrmEmailDraft.displayName = 'AiCrmEmailDraft'\n\nexport default AiCrmEmailDraft\n"],"names":["pluginDocsHelp","useHostOrgId","Alert","Box","Button","CircularProgress","Link","Stack","TextField","Typography","useMemo","useState","AI_CRM_EMAIL_RECORD_KINDS","AI_CRM_EMAIL_REQUEST_MAX_CHARS","useAiCrmAnswer","emailKindOf","kind","includes","AiCrmEmailDraft","props","run","hostId","record","proposeDraft","hostOrgId","orgId","undefined","recordId","id","wanted","recall","request","setRequest","verdict","working","busy","running","help","anchor","excerpt","draft","answer","ask","trim","task","proposal","subject","body","jobId","sx","border","borderColor","borderRadius","p","aria-label","spacing","direction","alignItems","variant","flexGrow","href","target","rel","title","size","multiline","minRows","label","placeholder","helperText","value","onChange","event","slice","disabled","onClick","notice","severity","job","error","status","displayName"],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ConsoleImportMappingZoneProps } from '@aglyn/aglyn/plugin-manager/feature-plugins';
|
|
2
|
+
import { type AiCrmColumnMatch } from '../model/ai-crm';
|
|
3
|
+
/** A job's matches as the import drawer's matching: column index to field key. */
|
|
4
|
+
export declare function aiCrmMappingOf(matches: readonly AiCrmColumnMatch[]): Record<number, string>;
|
|
5
|
+
/**
|
|
6
|
+
* "Match columns" (AGL-2917), in a CRM spreadsheet import through the
|
|
7
|
+
* `importMapping` zone: a `crm` job matches the file's columns to the fields
|
|
8
|
+
* the import fills, and the matching goes into the drawer's own table and
|
|
9
|
+
* preview through `proposeMapping`. The drawer's Import is the write.
|
|
10
|
+
*
|
|
11
|
+
* What is sent is what the zone hands over: each column's header and the
|
|
12
|
+
* shape of its values, read in the browser, never a cell. A file is new each
|
|
13
|
+
* time, so the card recalls no earlier matching, and the answer door serves a
|
|
14
|
+
* matching only to the member who asked.
|
|
15
|
+
*/
|
|
16
|
+
export declare function AiCrmImportMapping(props: ConsoleImportMappingZoneProps): import("react").JSX.Element;
|
|
17
|
+
export declare namespace AiCrmImportMapping {
|
|
18
|
+
var displayName: string;
|
|
19
|
+
}
|
|
20
|
+
export default AiCrmImportMapping;
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/ 'use client';
|
|
17
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
18
|
+
import { pluginDocsHelp } from "@aglyn/aglyn/app-utils/docs-help";
|
|
19
|
+
import { useHostOrgId } from "@aglyn/tenant-feature-instance";
|
|
20
|
+
import { Alert, Box, Button, CircularProgress, Link, Stack, Typography } from "@mui/material";
|
|
21
|
+
import { useMemo, useState } from "react";
|
|
22
|
+
import { AI_CRM_IMPORT_COLLECTIONS, AI_CRM_MAX_COLUMNS, aiCrmColumnsInput } from "../model/ai-crm.js";
|
|
23
|
+
import { useAiCrmAnswer } from "./use-ai-crm-answer.js";
|
|
24
|
+
const collectionOf = (collection)=>AI_CRM_IMPORT_COLLECTIONS.includes(collection) ? collection : null;
|
|
25
|
+
/** A job's matches as the import drawer's matching: column index to field key. */ export function aiCrmMappingOf(matches) {
|
|
26
|
+
return Object.fromEntries(matches.map((match)=>[
|
|
27
|
+
match.column,
|
|
28
|
+
match.field
|
|
29
|
+
]));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* "Match columns" (AGL-2917), in a CRM spreadsheet import through the
|
|
33
|
+
* `importMapping` zone: a `crm` job matches the file's columns to the fields
|
|
34
|
+
* the import fills, and the matching goes into the drawer's own table and
|
|
35
|
+
* preview through `proposeMapping`. The drawer's Import is the write.
|
|
36
|
+
*
|
|
37
|
+
* What is sent is what the zone hands over: each column's header and the
|
|
38
|
+
* shape of its values, read in the browser, never a cell. A file is new each
|
|
39
|
+
* time, so the card recalls no earlier matching, and the answer door serves a
|
|
40
|
+
* matching only to the member who asked.
|
|
41
|
+
*/ export function AiCrmImportMapping(props) {
|
|
42
|
+
var _ref, _props_orgId;
|
|
43
|
+
var _run_job;
|
|
44
|
+
const { hostId, columns, proposeMapping } = props;
|
|
45
|
+
const hostOrgId = useHostOrgId(props.orgId || !hostId ? undefined : hostId);
|
|
46
|
+
const orgId = (_ref = (_props_orgId = props.orgId) != null ? _props_orgId : hostOrgId) != null ? _ref : undefined;
|
|
47
|
+
const collection = collectionOf(props.collection);
|
|
48
|
+
const wanted = useMemo(()=>collection ? {
|
|
49
|
+
kind: 'mapping',
|
|
50
|
+
collection
|
|
51
|
+
} : null, [
|
|
52
|
+
collection
|
|
53
|
+
]);
|
|
54
|
+
const run = useAiCrmAnswer({
|
|
55
|
+
orgId,
|
|
56
|
+
hostId,
|
|
57
|
+
wanted,
|
|
58
|
+
recall: 'none'
|
|
59
|
+
});
|
|
60
|
+
const [matched, setMatched] = useState(null);
|
|
61
|
+
if (!collection || run.verdict !== 'ready') return null;
|
|
62
|
+
const working = run.busy || run.running;
|
|
63
|
+
const tooMany = columns.length > AI_CRM_MAX_COLUMNS;
|
|
64
|
+
const help = pluginDocsHelp('aiCrm', {
|
|
65
|
+
anchor: '#match-columns',
|
|
66
|
+
excerpt: "Suggests which column fills which field. Only each column's header and the kind of values in it are sent."
|
|
67
|
+
});
|
|
68
|
+
const match = async ()=>{
|
|
69
|
+
setMatched(null);
|
|
70
|
+
const answer = await run.ask(`Match the columns of a ${collection} import`, {
|
|
71
|
+
task: 'mapping',
|
|
72
|
+
collection,
|
|
73
|
+
columns: aiCrmColumnsInput(columns)
|
|
74
|
+
});
|
|
75
|
+
if ((answer == null ? void 0 : answer.proposal.kind) !== 'mapping') return;
|
|
76
|
+
proposeMapping(aiCrmMappingOf(answer.proposal.matches), answer.jobId);
|
|
77
|
+
setMatched({
|
|
78
|
+
jobId: answer.jobId,
|
|
79
|
+
count: answer.proposal.matches.length,
|
|
80
|
+
of: answer.proposal.columns
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
return /*#__PURE__*/ _jsx(Box, {
|
|
84
|
+
sx: {
|
|
85
|
+
border: 1,
|
|
86
|
+
borderColor: 'divider',
|
|
87
|
+
borderRadius: 1,
|
|
88
|
+
p: 1.5
|
|
89
|
+
},
|
|
90
|
+
"aria-label": "Match columns with AI",
|
|
91
|
+
children: /*#__PURE__*/ _jsxs(Stack, {
|
|
92
|
+
spacing: 1,
|
|
93
|
+
children: [
|
|
94
|
+
/*#__PURE__*/ _jsxs(Stack, {
|
|
95
|
+
direction: "row",
|
|
96
|
+
spacing: 1,
|
|
97
|
+
sx: {
|
|
98
|
+
alignItems: 'baseline'
|
|
99
|
+
},
|
|
100
|
+
children: [
|
|
101
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
102
|
+
variant: "subtitle2",
|
|
103
|
+
sx: {
|
|
104
|
+
flexGrow: 1
|
|
105
|
+
},
|
|
106
|
+
children: 'Match columns with AI'
|
|
107
|
+
}),
|
|
108
|
+
/*#__PURE__*/ _jsx(Link, {
|
|
109
|
+
href: help.href,
|
|
110
|
+
target: "_blank",
|
|
111
|
+
rel: "noopener",
|
|
112
|
+
variant: "caption",
|
|
113
|
+
title: help.excerpt,
|
|
114
|
+
children: 'How it works'
|
|
115
|
+
})
|
|
116
|
+
]
|
|
117
|
+
}),
|
|
118
|
+
/*#__PURE__*/ _jsx(Typography, {
|
|
119
|
+
variant: "caption",
|
|
120
|
+
color: "text.secondary",
|
|
121
|
+
children: 'Only each column’s header and the kind of values under it are sent, never a row of your file.'
|
|
122
|
+
}),
|
|
123
|
+
/*#__PURE__*/ _jsxs(Stack, {
|
|
124
|
+
direction: "row",
|
|
125
|
+
spacing: 1,
|
|
126
|
+
sx: {
|
|
127
|
+
alignItems: 'center'
|
|
128
|
+
},
|
|
129
|
+
children: [
|
|
130
|
+
/*#__PURE__*/ _jsx(Button, {
|
|
131
|
+
size: "small",
|
|
132
|
+
variant: "outlined",
|
|
133
|
+
disabled: working || !orgId || !columns.length || tooMany,
|
|
134
|
+
onClick: ()=>void match(),
|
|
135
|
+
children: 'Match columns'
|
|
136
|
+
}),
|
|
137
|
+
working ? /*#__PURE__*/ _jsx(CircularProgress, {
|
|
138
|
+
size: 16,
|
|
139
|
+
"aria-label": "Matching columns"
|
|
140
|
+
}) : null
|
|
141
|
+
]
|
|
142
|
+
}),
|
|
143
|
+
tooMany ? /*#__PURE__*/ _jsx(Typography, {
|
|
144
|
+
variant: "caption",
|
|
145
|
+
color: "text.secondary",
|
|
146
|
+
children: `AI matches files of up to ${AI_CRM_MAX_COLUMNS} columns.`
|
|
147
|
+
}) : null,
|
|
148
|
+
matched ? /*#__PURE__*/ _jsx(Alert, {
|
|
149
|
+
severity: matched.count ? 'success' : 'info',
|
|
150
|
+
children: matched.count ? `Matched ${matched.count} of ${matched.of} columns. Check the matches below before you import.` : 'No column matched a field. Choose the matches below.'
|
|
151
|
+
}) : null,
|
|
152
|
+
run.notice ? /*#__PURE__*/ _jsx(Alert, {
|
|
153
|
+
severity: "warning",
|
|
154
|
+
children: run.notice
|
|
155
|
+
}) : null,
|
|
156
|
+
((_run_job = run.job) == null ? void 0 : _run_job.error) && !run.answer ? /*#__PURE__*/ _jsx(Alert, {
|
|
157
|
+
severity: run.job.status === 'failed' ? 'error' : 'warning',
|
|
158
|
+
children: run.job.error
|
|
159
|
+
}) : null
|
|
160
|
+
]
|
|
161
|
+
})
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
AiCrmImportMapping.displayName = 'AiCrmImportMapping';
|
|
165
|
+
export default AiCrmImportMapping;
|
|
166
|
+
|
|
167
|
+
//# sourceMappingURL=ai-crm-import-mapping.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/plugins/ai/src/lib/components/ai-crm-import-mapping.component.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n'use client'\n\nimport { pluginDocsHelp } from '@aglyn/aglyn/app-utils/docs-help'\nimport type { ConsoleImportMappingZoneProps } from '@aglyn/aglyn/plugin-manager/feature-plugins'\nimport { useHostOrgId } from '@aglyn/tenant-feature-instance'\nimport { Alert, Box, Button, CircularProgress, Link, Stack, Typography } from '@mui/material'\nimport { useMemo, useState } from 'react'\nimport {\n AI_CRM_IMPORT_COLLECTIONS,\n AI_CRM_MAX_COLUMNS,\n aiCrmColumnsInput,\n type AiCrmAnswerWanted,\n type AiCrmColumnMatch,\n type AiCrmImportCollection,\n} from '../model/ai-crm'\nimport { useAiCrmAnswer } from './use-ai-crm-answer'\n\nconst collectionOf = (collection: string): AiCrmImportCollection | null =>\n (AI_CRM_IMPORT_COLLECTIONS as readonly string[]).includes(collection)\n ? (collection as AiCrmImportCollection)\n : null\n\n/** A job's matches as the import drawer's matching: column index to field key. */\nexport function aiCrmMappingOf(matches: readonly AiCrmColumnMatch[]): Record<number, string> {\n return Object.fromEntries(matches.map((match) => [match.column, match.field]))\n}\n\n/**\n * \"Match columns\" (AGL-2917), in a CRM spreadsheet import through the\n * `importMapping` zone: a `crm` job matches the file's columns to the fields\n * the import fills, and the matching goes into the drawer's own table and\n * preview through `proposeMapping`. The drawer's Import is the write.\n *\n * What is sent is what the zone hands over: each column's header and the\n * shape of its values, read in the browser, never a cell. A file is new each\n * time, so the card recalls no earlier matching, and the answer door serves a\n * matching only to the member who asked.\n */\nexport function AiCrmImportMapping(props: ConsoleImportMappingZoneProps) {\n const { hostId, columns, proposeMapping } = props\n const hostOrgId = useHostOrgId(props.orgId || !hostId ? undefined : hostId)\n const orgId = props.orgId ?? hostOrgId ?? undefined\n const collection = collectionOf(props.collection)\n const wanted = useMemo<AiCrmAnswerWanted | null>(\n () => (collection ? { kind: 'mapping', collection } : null),\n [collection],\n )\n const run = useAiCrmAnswer({ orgId, hostId, wanted, recall: 'none' })\n const [matched, setMatched] = useState<{ jobId: string; count: number; of: number } | null>(null)\n\n if (!collection || run.verdict !== 'ready') return null\n\n const working = run.busy || run.running\n const tooMany = columns.length > AI_CRM_MAX_COLUMNS\n const help = pluginDocsHelp('aiCrm', {\n anchor: '#match-columns',\n excerpt: \"Suggests which column fills which field. Only each column's header and the kind of values in it are sent.\",\n })\n\n const match = async () => {\n setMatched(null)\n const answer = await run.ask(`Match the columns of a ${collection} import`, {\n task: 'mapping',\n collection,\n columns: aiCrmColumnsInput(columns),\n })\n if (answer?.proposal.kind !== 'mapping') return\n proposeMapping(aiCrmMappingOf(answer.proposal.matches), answer.jobId)\n setMatched({ jobId: answer.jobId, count: answer.proposal.matches.length, of: answer.proposal.columns })\n }\n\n return (\n <Box sx={{ border: 1, borderColor: 'divider', borderRadius: 1, p: 1.5 }} aria-label=\"Match columns with AI\">\n <Stack spacing={1}>\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'baseline' }}>\n <Typography variant=\"subtitle2\" sx={{ flexGrow: 1 }}>\n {'Match columns 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=\"caption\" color=\"text.secondary\">\n {'Only each column’s header and the kind of values under it are sent, never a row of your file.'}\n </Typography>\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'center' }}>\n <Button\n size=\"small\"\n variant=\"outlined\"\n disabled={working || !orgId || !columns.length || tooMany}\n onClick={() => void match()}\n >\n {'Match columns'}\n </Button>\n {working ? <CircularProgress size={16} aria-label=\"Matching columns\" /> : null}\n </Stack>\n {tooMany ? (\n <Typography variant=\"caption\" color=\"text.secondary\">\n {`AI matches files of up to ${AI_CRM_MAX_COLUMNS} columns.`}\n </Typography>\n ) : null}\n {matched ? (\n <Alert severity={matched.count ? 'success' : 'info'}>\n {matched.count\n ? `Matched ${matched.count} of ${matched.of} columns. Check the matches below before you import.`\n : 'No column matched a field. Choose the matches below.'}\n </Alert>\n ) : null}\n {run.notice ? <Alert severity=\"warning\">{run.notice}</Alert> : null}\n {run.job?.error && !run.answer ? (\n <Alert severity={run.job.status === 'failed' ? 'error' : 'warning'}>{run.job.error}</Alert>\n ) : null}\n </Stack>\n </Box>\n )\n}\nAiCrmImportMapping.displayName = 'AiCrmImportMapping'\n\nexport default AiCrmImportMapping\n"],"names":["pluginDocsHelp","useHostOrgId","Alert","Box","Button","CircularProgress","Link","Stack","Typography","useMemo","useState","AI_CRM_IMPORT_COLLECTIONS","AI_CRM_MAX_COLUMNS","aiCrmColumnsInput","useAiCrmAnswer","collectionOf","collection","includes","aiCrmMappingOf","matches","Object","fromEntries","map","match","column","field","AiCrmImportMapping","props","run","hostId","columns","proposeMapping","hostOrgId","orgId","undefined","wanted","kind","recall","matched","setMatched","verdict","working","busy","running","tooMany","length","help","anchor","excerpt","answer","ask","task","proposal","jobId","count","of","sx","border","borderColor","borderRadius","p","aria-label","spacing","direction","alignItems","variant","flexGrow","href","target","rel","title","color","size","disabled","onClick","severity","notice","job","error","status","displayName"],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ConsoleRecordInsightsZoneProps } from '@aglyn/aglyn/plugin-manager/feature-plugins';
|
|
2
|
+
import type { ConsoleProposedTask } from '@aglyn/aglyn/plugin-manager/record-zone-props';
|
|
3
|
+
import { type AiCrmNextStep } from '../model/ai-crm';
|
|
4
|
+
/** When a suggested task is due, in words. */
|
|
5
|
+
export declare function aiCrmDueWords(dueInDays: number): string;
|
|
6
|
+
/** A suggested next step as the task form takes it. */
|
|
7
|
+
export declare function aiCrmTaskOf(step: AiCrmNextStep): ConsoleProposedTask;
|
|
8
|
+
/**
|
|
9
|
+
* "Summarize this contact" (AGL-2917), on a CRM record's page through the
|
|
10
|
+
* `recordInsights` zone: a contact's, company's, deal's or lead's summary,
|
|
11
|
+
* with a suggested next step, a deal's suggested stage and a lead's standing.
|
|
12
|
+
*
|
|
13
|
+
* The card writes nothing. A next step goes to the page's own task form
|
|
14
|
+
* through `proposeTask`, whose Save is the write, and a stage to the page's
|
|
15
|
+
* stage move through `proposeStage`, which asks the member first. A summary
|
|
16
|
+
* any member asked for is shown to every member who can open the record, and
|
|
17
|
+
* asking again for an unchanged record reuses it at no cost.
|
|
18
|
+
*
|
|
19
|
+
* It renders nothing until the jobs route has answered for this workspace:
|
|
20
|
+
* the shell decided the plan and the permission, but the release flag is the
|
|
21
|
+
* route's, and a 404 there is this card staying absent.
|
|
22
|
+
*/
|
|
23
|
+
export declare function AiCrmRecordCard(props: ConsoleRecordInsightsZoneProps): import("react").JSX.Element;
|
|
24
|
+
export declare namespace AiCrmRecordCard {
|
|
25
|
+
var displayName: string;
|
|
26
|
+
}
|
|
27
|
+
export default AiCrmRecordCard;
|