@prenta/core 5.10.0 → 7.0.0
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/CHANGELOG.md +43 -0
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +5 -15
- package/dist/actions.js.map +1 -1
- package/dist/ai/brand-voice-analyze.d.ts +1 -4
- package/dist/ai/brand-voice-analyze.d.ts.map +1 -1
- package/dist/ai/brand-voice-analyze.js +1 -2
- package/dist/ai/brand-voice-analyze.js.map +1 -1
- package/dist/ai/brand-voice-sources.d.ts +0 -2
- package/dist/ai/brand-voice-sources.d.ts.map +1 -1
- package/dist/ai/brand-voice-sources.js +2 -2
- package/dist/ai/brand-voice-sources.js.map +1 -1
- package/dist/ai/brand-voice-structured.d.ts +6 -6
- package/dist/ai/brand-voice-structured.d.ts.map +1 -1
- package/dist/ai/catalog.d.ts +8 -0
- package/dist/ai/catalog.d.ts.map +1 -1
- package/dist/ai/catalog.js +22 -0
- package/dist/ai/catalog.js.map +1 -1
- package/dist/ai/config-store.d.ts +18 -4
- package/dist/ai/config-store.d.ts.map +1 -1
- package/dist/ai/config-store.js +115 -20
- package/dist/ai/config-store.js.map +1 -1
- package/dist/ai/content-writing-generate.d.ts +10 -8
- package/dist/ai/content-writing-generate.d.ts.map +1 -1
- package/dist/ai/content-writing-generate.js +24 -59
- package/dist/ai/content-writing-generate.js.map +1 -1
- package/dist/ai/embeddings.d.ts +28 -0
- package/dist/ai/embeddings.d.ts.map +1 -0
- package/dist/ai/embeddings.js +36 -0
- package/dist/ai/embeddings.js.map +1 -0
- package/dist/ai/feature-defaults.d.ts +3 -3
- package/dist/ai/feature-defaults.d.ts.map +1 -1
- package/dist/ai/feature-defaults.js +24 -14
- package/dist/ai/feature-defaults.js.map +1 -1
- package/dist/ai/index.d.ts +15 -16
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +14 -15
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/models.d.ts +7 -3
- package/dist/ai/models.d.ts.map +1 -1
- package/dist/ai/models.js +10 -5
- package/dist/ai/models.js.map +1 -1
- package/dist/ai/plugin-errors.d.ts +9 -3
- package/dist/ai/plugin-errors.d.ts.map +1 -1
- package/dist/ai/plugin-errors.js +9 -3
- package/dist/ai/plugin-errors.js.map +1 -1
- package/dist/ai/plugin-import.d.ts +20 -0
- package/dist/ai/plugin-import.d.ts.map +1 -0
- package/dist/ai/plugin-import.js +24 -0
- package/dist/ai/plugin-import.js.map +1 -0
- package/dist/ai/prompt-safety.d.ts +23 -0
- package/dist/ai/prompt-safety.d.ts.map +1 -0
- package/dist/ai/prompt-safety.js +34 -0
- package/dist/ai/prompt-safety.js.map +1 -0
- package/dist/ai/providers/anthropic.d.ts.map +1 -1
- package/dist/ai/providers/anthropic.js +16 -1
- package/dist/ai/providers/anthropic.js.map +1 -1
- package/dist/ai/providers/http.d.ts +7 -2
- package/dist/ai/providers/http.d.ts.map +1 -1
- package/dist/ai/providers/http.js +13 -2
- package/dist/ai/providers/http.js.map +1 -1
- package/dist/ai/providers/index.d.ts +0 -7
- package/dist/ai/providers/index.d.ts.map +1 -1
- package/dist/ai/providers/index.js +1 -1
- package/dist/ai/providers/index.js.map +1 -1
- package/dist/ai/resolve.d.ts +7 -1
- package/dist/ai/resolve.d.ts.map +1 -1
- package/dist/ai/resolve.js +36 -3
- package/dist/ai/resolve.js.map +1 -1
- package/dist/ai/runtime-response.d.ts +27 -0
- package/dist/ai/runtime-response.d.ts.map +1 -0
- package/dist/ai/runtime-response.js +75 -0
- package/dist/ai/runtime-response.js.map +1 -0
- package/dist/ai/runtime.d.ts +9 -7
- package/dist/ai/runtime.d.ts.map +1 -1
- package/dist/ai/runtime.js +14 -19
- package/dist/ai/runtime.js.map +1 -1
- package/dist/ai/tasks/alt-text.d.ts +82 -0
- package/dist/ai/tasks/alt-text.d.ts.map +1 -0
- package/dist/ai/tasks/alt-text.js +171 -0
- package/dist/ai/tasks/alt-text.js.map +1 -0
- package/dist/ai/tasks/document-generation.d.ts +102 -0
- package/dist/ai/tasks/document-generation.d.ts.map +1 -0
- package/dist/ai/tasks/document-generation.js +321 -0
- package/dist/ai/tasks/document-generation.js.map +1 -0
- package/dist/ai/tasks/link-embeddings.d.ts +55 -0
- package/dist/ai/tasks/link-embeddings.d.ts.map +1 -0
- package/dist/ai/tasks/link-embeddings.js +160 -0
- package/dist/ai/tasks/link-embeddings.js.map +1 -0
- package/dist/ai/types.d.ts +15 -19
- package/dist/ai/types.d.ts.map +1 -1
- package/dist/ai/types.js +6 -7
- package/dist/ai/types.js.map +1 -1
- package/dist/ai/usage.d.ts +6 -4
- package/dist/ai/usage.d.ts.map +1 -1
- package/dist/ai/usage.js +6 -4
- package/dist/ai/usage.js.map +1 -1
- package/dist/ai/vector.d.ts +8 -0
- package/dist/ai/vector.d.ts.map +1 -0
- package/dist/ai/vector.js +24 -0
- package/dist/ai/vector.js.map +1 -0
- package/dist/api/responses.d.ts +1 -1
- package/dist/api/responses.d.ts.map +1 -1
- package/dist/api/responses.js +1 -1
- package/dist/api/responses.js.map +1 -1
- package/dist/api/route-helpers.d.ts +3 -20
- package/dist/api/route-helpers.d.ts.map +1 -1
- package/dist/api/route-helpers.js +12 -26
- package/dist/api/route-helpers.js.map +1 -1
- package/dist/api/routes/ai-authoring.d.ts.map +1 -1
- package/dist/api/routes/ai-authoring.js +132 -144
- package/dist/api/routes/ai-authoring.js.map +1 -1
- package/dist/api/routes/ai-seo.d.ts.map +1 -1
- package/dist/api/routes/ai-seo.js +44 -120
- package/dist/api/routes/ai-seo.js.map +1 -1
- package/dist/api/routes/ai-settings.d.ts.map +1 -1
- package/dist/api/routes/ai-settings.js +76 -28
- package/dist/api/routes/ai-settings.js.map +1 -1
- package/dist/api/routes/security-center.d.ts.map +1 -1
- package/dist/api/routes/security-center.js +5 -39
- package/dist/api/routes/security-center.js.map +1 -1
- package/dist/api/routes/seo-public.d.ts +0 -5
- package/dist/api/routes/seo-public.d.ts.map +1 -1
- package/dist/api/routes/seo-public.js +1 -1
- package/dist/api/routes/seo-public.js.map +1 -1
- package/dist/api/routes/seo.d.ts.map +1 -1
- package/dist/api/routes/seo.js +21 -48
- package/dist/api/routes/seo.js.map +1 -1
- package/dist/api/security-headers.d.ts +8 -0
- package/dist/api/security-headers.d.ts.map +1 -0
- package/dist/api/security-headers.js +13 -0
- package/dist/api/security-headers.js.map +1 -0
- package/dist/appearance/favicon-icon.d.ts +1 -1
- package/dist/appearance/favicon-icon.d.ts.map +1 -1
- package/dist/appearance/favicon-icon.js +1 -1
- package/dist/appearance/favicon-icon.js.map +1 -1
- package/dist/auth/index.d.ts +0 -6
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +0 -3
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/invites.d.ts +0 -5
- package/dist/auth/invites.d.ts.map +1 -1
- package/dist/auth/invites.js +3 -3
- package/dist/auth/invites.js.map +1 -1
- package/dist/auth/team.d.ts +4 -3
- package/dist/auth/team.d.ts.map +1 -1
- package/dist/auth/user-admin.d.ts +2 -1
- package/dist/auth/user-admin.d.ts.map +1 -1
- package/dist/billing/stripe-meter.d.ts +2 -1
- package/dist/billing/stripe-meter.d.ts.map +1 -1
- package/dist/cache/http.d.ts +0 -11
- package/dist/cache/http.d.ts.map +1 -1
- package/dist/cache/http.js +1 -1
- package/dist/cache/http.js.map +1 -1
- package/dist/cache/index.d.ts +0 -5
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/config/types.d.ts +19 -19
- package/dist/config/types.d.ts.map +1 -1
- package/dist/content/index.d.ts +2 -5
- package/dist/content/index.d.ts.map +1 -1
- package/dist/content/index.js +1 -3
- package/dist/content/index.js.map +1 -1
- package/dist/content/structured-data.d.ts +0 -14
- package/dist/content/structured-data.d.ts.map +1 -1
- package/dist/content/structured-data.js +3 -14
- package/dist/content/structured-data.js.map +1 -1
- package/dist/cron/index.d.ts +2 -3
- package/dist/cron/index.d.ts.map +1 -1
- package/dist/cron/index.js +0 -2
- package/dist/cron/index.js.map +1 -1
- package/dist/db/client-types.d.ts +2 -1
- package/dist/db/client-types.d.ts.map +1 -1
- package/dist/db/model-types.d.ts +0 -1
- package/dist/db/model-types.d.ts.map +1 -1
- package/dist/db.d.ts +0 -2
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +0 -1
- package/dist/db.js.map +1 -1
- package/dist/diagnostics/env.d.ts +1 -1
- package/dist/diagnostics/env.d.ts.map +1 -1
- package/dist/diagnostics/logger.d.ts +0 -24
- package/dist/diagnostics/logger.d.ts.map +1 -1
- package/dist/forms/entries.d.ts +0 -7
- package/dist/forms/entries.d.ts.map +1 -1
- package/dist/forms/entries.js +1 -19
- package/dist/forms/entries.js.map +1 -1
- package/dist/forms/files.d.ts +1 -1
- package/dist/forms/files.d.ts.map +1 -1
- package/dist/forms/index.d.ts +4 -6
- package/dist/forms/index.d.ts.map +1 -1
- package/dist/forms/index.js +3 -5
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/prefetch.d.ts +0 -6
- package/dist/forms/prefetch.d.ts.map +1 -1
- package/dist/forms/service.d.ts +0 -4
- package/dist/forms/service.d.ts.map +1 -1
- package/dist/forms/service.js +2 -8
- package/dist/forms/service.js.map +1 -1
- package/dist/forms/webmcp.d.ts +0 -2
- package/dist/forms/webmcp.d.ts.map +1 -1
- package/dist/forms/webmcp.js +1 -1
- package/dist/forms/webmcp.js.map +1 -1
- package/dist/generated/internal/class.js +4 -4
- package/dist/generated/internal/prismaNamespace.d.ts +0 -1
- package/dist/generated/internal/prismaNamespace.js +0 -1
- package/dist/generated/internal/prismaNamespaceBrowser.d.ts +0 -1
- package/dist/generated/internal/prismaNamespaceBrowser.js +0 -1
- package/dist/generated/models/Document.d.ts +1 -58
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/media/denormalize.d.ts +0 -7
- package/dist/media/denormalize.d.ts.map +1 -1
- package/dist/media/index.d.ts +0 -8
- package/dist/media/index.d.ts.map +1 -1
- package/dist/media/index.js +0 -5
- package/dist/media/index.js.map +1 -1
- package/dist/media/optimize.d.ts +0 -4
- package/dist/media/optimize.d.ts.map +1 -1
- package/dist/media/optimize.js +4 -4
- package/dist/media/optimize.js.map +1 -1
- package/dist/media/reoptimize.d.ts +2 -3
- package/dist/media/reoptimize.d.ts.map +1 -1
- package/dist/media/reoptimize.js +2 -2
- package/dist/media/reoptimize.js.map +1 -1
- package/dist/media/seo.d.ts +3 -8
- package/dist/media/seo.d.ts.map +1 -1
- package/dist/media/seo.js +1 -1
- package/dist/media/seo.js.map +1 -1
- package/dist/plan/features.d.ts +0 -1
- package/dist/plan/features.d.ts.map +1 -1
- package/dist/plan/features.js +0 -16
- package/dist/plan/features.js.map +1 -1
- package/dist/preview/event-bus.d.ts +2 -1
- package/dist/preview/event-bus.d.ts.map +1 -1
- package/dist/preview/index.d.ts +2 -1
- package/dist/preview/index.d.ts.map +1 -1
- package/dist/preview/sse-stream.d.ts +0 -13
- package/dist/preview/sse-stream.d.ts.map +1 -1
- package/dist/preview/sse-stream.js +2 -2
- package/dist/preview/sse-stream.js.map +1 -1
- package/dist/realtime/notifications.d.ts +4 -3
- package/dist/realtime/notifications.d.ts.map +1 -1
- package/dist/redirects/index.d.ts +4 -16
- package/dist/redirects/index.d.ts.map +1 -1
- package/dist/redirects/index.js +2 -9
- package/dist/redirects/index.js.map +1 -1
- package/dist/redirects/match.d.ts +0 -2
- package/dist/redirects/match.d.ts.map +1 -1
- package/dist/redirects/match.js +1 -1
- package/dist/redirects/match.js.map +1 -1
- package/dist/redirects/recovery.d.ts +0 -2
- package/dist/redirects/recovery.d.ts.map +1 -1
- package/dist/redirects/recovery.js +1 -1
- package/dist/redirects/recovery.js.map +1 -1
- package/dist/redirects/rerank.d.ts +4 -3
- package/dist/redirects/rerank.d.ts.map +1 -1
- package/dist/redirects/rerank.js +3 -18
- package/dist/redirects/rerank.js.map +1 -1
- package/dist/sections/validate.d.ts +0 -2
- package/dist/sections/validate.d.ts.map +1 -1
- package/dist/sections/validate.js +1 -1
- package/dist/sections/validate.js.map +1 -1
- package/dist/security/access.d.ts +0 -9
- package/dist/security/access.d.ts.map +1 -1
- package/dist/security/access.js +1 -3
- package/dist/security/access.js.map +1 -1
- package/dist/security/audit.d.ts +0 -20
- package/dist/security/audit.d.ts.map +1 -1
- package/dist/security/audit.js.map +1 -1
- package/dist/security/index.d.ts +2 -20
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +2 -7
- package/dist/security/index.js.map +1 -1
- package/dist/security/internal-keys.d.ts +0 -12
- package/dist/security/internal-keys.d.ts.map +1 -1
- package/dist/security/internal-keys.js +10 -12
- package/dist/security/internal-keys.js.map +1 -1
- package/dist/security/rate-limit-policy.d.ts +0 -2
- package/dist/security/rate-limit-policy.d.ts.map +1 -1
- package/dist/security/rate-limit-policy.js +1 -1
- package/dist/security/rate-limit-policy.js.map +1 -1
- package/dist/security/rate-limit.d.ts +2 -5
- package/dist/security/rate-limit.d.ts.map +1 -1
- package/dist/security/rate-limit.js +2 -2
- package/dist/security/rate-limit.js.map +1 -1
- package/dist/security/sanitize.d.ts +0 -3
- package/dist/security/sanitize.d.ts.map +1 -1
- package/dist/security/sanitize.js +0 -1
- package/dist/security/sanitize.js.map +1 -1
- package/dist/security/upload.d.ts +0 -3
- package/dist/security/upload.d.ts.map +1 -1
- package/dist/security/upload.js +0 -1
- package/dist/security/upload.js.map +1 -1
- package/dist/seo/ai-crawler-log.d.ts +0 -2
- package/dist/seo/ai-crawler-log.d.ts.map +1 -1
- package/dist/seo/ai-crawler-log.js +1 -1
- package/dist/seo/ai-crawler-log.js.map +1 -1
- package/dist/seo/audit-engine.d.ts +5 -5
- package/dist/seo/audit-engine.d.ts.map +1 -1
- package/dist/seo/audit-engine.js +1 -2
- package/dist/seo/audit-engine.js.map +1 -1
- package/dist/seo/audit-runner.d.ts +0 -7
- package/dist/seo/audit-runner.d.ts.map +1 -1
- package/dist/seo/audit-runner.js +1 -1
- package/dist/seo/audit-runner.js.map +1 -1
- package/dist/seo/audit-signals.d.ts +0 -2
- package/dist/seo/audit-signals.d.ts.map +1 -1
- package/dist/seo/audit-signals.js +1 -1
- package/dist/seo/audit-signals.js.map +1 -1
- package/dist/seo/autopilot-gate.d.ts +0 -1
- package/dist/seo/autopilot-gate.d.ts.map +1 -1
- package/dist/seo/autopilot-gate.js +1 -1
- package/dist/seo/autopilot-gate.js.map +1 -1
- package/dist/seo/autopilot-ledger.d.ts +2 -1
- package/dist/seo/autopilot-ledger.d.ts.map +1 -1
- package/dist/seo/autopilot-outcome.d.ts +0 -2
- package/dist/seo/autopilot-outcome.d.ts.map +1 -1
- package/dist/seo/autopilot-outcome.js +1 -1
- package/dist/seo/autopilot-outcome.js.map +1 -1
- package/dist/seo/autopilot-policy.d.ts +3 -38
- package/dist/seo/autopilot-policy.d.ts.map +1 -1
- package/dist/seo/autopilot-policy.js +3 -3
- package/dist/seo/autopilot-policy.js.map +1 -1
- package/dist/seo/autopilot.d.ts +4 -12
- package/dist/seo/autopilot.d.ts.map +1 -1
- package/dist/seo/autopilot.js +3 -3
- package/dist/seo/autopilot.js.map +1 -1
- package/dist/seo/config-store.d.ts +0 -2
- package/dist/seo/config-store.d.ts.map +1 -1
- package/dist/seo/config-store.js +1 -1
- package/dist/seo/config-store.js.map +1 -1
- package/dist/seo/digest.d.ts +8 -7
- package/dist/seo/digest.d.ts.map +1 -1
- package/dist/seo/faq-signals.d.ts +0 -4
- package/dist/seo/faq-signals.d.ts.map +1 -1
- package/dist/seo/faq-signals.js +4 -4
- package/dist/seo/faq-signals.js.map +1 -1
- package/dist/seo/fix-brief-export.d.ts +0 -2
- package/dist/seo/fix-brief-export.d.ts.map +1 -1
- package/dist/seo/fix-brief-export.js +1 -1
- package/dist/seo/fix-brief-export.js.map +1 -1
- package/dist/seo/geo-record.d.ts +0 -4
- package/dist/seo/geo-record.d.ts.map +1 -1
- package/dist/seo/geo-record.js +2 -2
- package/dist/seo/geo-record.js.map +1 -1
- package/dist/seo/geo-report.d.ts +4 -3
- package/dist/seo/geo-report.d.ts.map +1 -1
- package/dist/seo/geo-report.js +1 -1
- package/dist/seo/geo-report.js.map +1 -1
- package/dist/seo/index-status.d.ts +6 -5
- package/dist/seo/index-status.d.ts.map +1 -1
- package/dist/seo/index-status.js.map +1 -1
- package/dist/seo/index.d.ts +15 -90
- package/dist/seo/index.d.ts.map +1 -1
- package/dist/seo/index.js +10 -49
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/issue-batch-briefs.d.ts +2 -3
- package/dist/seo/issue-batch-briefs.d.ts.map +1 -1
- package/dist/seo/issue-batch-briefs.js +2 -2
- package/dist/seo/issue-batch-briefs.js.map +1 -1
- package/dist/seo/issue-content-brief.d.ts +2 -1
- package/dist/seo/issue-content-brief.d.ts.map +1 -1
- package/dist/seo/issue-content-research.d.ts +2 -2
- package/dist/seo/issue-content-research.d.ts.map +1 -1
- package/dist/seo/issue-content-research.js +1 -1
- package/dist/seo/issue-content-research.js.map +1 -1
- package/dist/seo/issue-fix-ai.d.ts +5 -4
- package/dist/seo/issue-fix-ai.d.ts.map +1 -1
- package/dist/seo/issue-fix-ai.js +4 -19
- package/dist/seo/issue-fix-ai.js.map +1 -1
- package/dist/seo/issue-fix-apply.d.ts +2 -11
- package/dist/seo/issue-fix-apply.d.ts.map +1 -1
- package/dist/seo/issue-fix-apply.js +4 -4
- package/dist/seo/issue-fix-apply.js.map +1 -1
- package/dist/seo/issue-fix-faq.d.ts +4 -7
- package/dist/seo/issue-fix-faq.d.ts.map +1 -1
- package/dist/seo/issue-fix-faq.js +4 -4
- package/dist/seo/issue-fix-faq.js.map +1 -1
- package/dist/seo/issue-fix-link-insert.d.ts +4 -14
- package/dist/seo/issue-fix-link-insert.d.ts.map +1 -1
- package/dist/seo/issue-fix-link-insert.js +5 -4
- package/dist/seo/issue-fix-link-insert.js.map +1 -1
- package/dist/seo/issue-fix-redirect.d.ts +0 -1
- package/dist/seo/issue-fix-redirect.d.ts.map +1 -1
- package/dist/seo/issue-fix.d.ts.map +1 -1
- package/dist/seo/issue-fix.js +1 -0
- package/dist/seo/issue-fix.js.map +1 -1
- package/dist/seo/link-graph.d.ts +2 -3
- package/dist/seo/link-graph.d.ts.map +1 -1
- package/dist/seo/link-graph.js +0 -0
- package/dist/seo/link-graph.js.map +1 -1
- package/dist/seo/link-suggest.d.ts +8 -2
- package/dist/seo/link-suggest.d.ts.map +1 -1
- package/dist/seo/link-suggest.js +38 -53
- package/dist/seo/link-suggest.js.map +1 -1
- package/dist/seo/page-meta.d.ts +1 -10
- package/dist/seo/page-meta.d.ts.map +1 -1
- package/dist/seo/page-meta.js +1 -1
- package/dist/seo/page-meta.js.map +1 -1
- package/dist/seo/proposals-bulk-apply.d.ts +3 -2
- package/dist/seo/proposals-bulk-apply.d.ts.map +1 -1
- package/dist/seo/proposals.d.ts +2 -2
- package/dist/seo/proposals.d.ts.map +1 -1
- package/dist/seo/rendered-fetch.d.ts +2 -1
- package/dist/seo/rendered-fetch.d.ts.map +1 -1
- package/dist/seo/score.d.ts +3 -7
- package/dist/seo/score.d.ts.map +1 -1
- package/dist/seo/score.js.map +1 -1
- package/dist/seo/search-console/client.d.ts +0 -4
- package/dist/seo/search-console/client.d.ts.map +1 -1
- package/dist/seo/search-console/client.js +2 -2
- package/dist/seo/search-console/client.js.map +1 -1
- package/dist/seo/search-console/sync.d.ts +0 -4
- package/dist/seo/search-console/sync.d.ts.map +1 -1
- package/dist/seo/search-console/sync.js +2 -2
- package/dist/seo/search-console/sync.js.map +1 -1
- package/dist/seo/search-console/types.d.ts +2 -1
- package/dist/seo/search-console/types.d.ts.map +1 -1
- package/dist/seo/sitemap-notify.d.ts +0 -8
- package/dist/seo/sitemap-notify.d.ts.map +1 -1
- package/dist/seo/sitemap-notify.js +1 -1
- package/dist/seo/sitemap-notify.js.map +1 -1
- package/dist/seo/title-templates.d.ts +2 -5
- package/dist/seo/title-templates.d.ts.map +1 -1
- package/dist/seo/title-templates.js +2 -2
- package/dist/seo/title-templates.js.map +1 -1
- package/dist/server-site.d.ts +0 -1
- package/dist/server-site.d.ts.map +1 -1
- package/dist/server-site.js +0 -1
- package/dist/server-site.js.map +1 -1
- package/dist/storage/index.d.ts +0 -2
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +0 -4
- package/dist/storage/index.js.map +1 -1
- package/dist/upgrade/version-check.d.ts +0 -2
- package/dist/upgrade/version-check.d.ts.map +1 -1
- package/dist/upgrade/version-check.js +1 -1
- package/dist/upgrade/version-check.js.map +1 -1
- package/dist/webhooks/index.d.ts +0 -8
- package/dist/webhooks/index.d.ts.map +1 -1
- package/dist/webhooks/index.js +1 -16
- package/dist/webhooks/index.js.map +1 -1
- package/package.json +1 -1
- package/prisma/migrations/0019_drop_content_graph/migration.sql +4 -0
- package/prisma/schema.prisma +0 -1
- package/dist/api/auth-context.d.ts +0 -3
- package/dist/api/auth-context.d.ts.map +0 -1
- package/dist/api/auth-context.js +0 -3
- package/dist/api/auth-context.js.map +0 -1
- package/dist/api/limiters.d.ts +0 -3
- package/dist/api/limiters.d.ts.map +0 -1
- package/dist/api/limiters.js +0 -3
- package/dist/api/limiters.js.map +0 -1
- package/dist/content/content-graph.d.ts +0 -25
- package/dist/content/content-graph.d.ts.map +0 -1
- package/dist/content/content-graph.js +0 -40
- package/dist/content/content-graph.js.map +0 -1
- package/dist/db/index.d.ts +0 -9
- package/dist/db/index.d.ts.map +0 -1
- package/dist/db/index.js +0 -5
- package/dist/db/index.js.map +0 -1
- package/dist/next/preview.d.ts +0 -10
- package/dist/next/preview.d.ts.map +0 -1
- package/dist/next/preview.js +0 -17
- package/dist/next/preview.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/ai/providers/http.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAa/E,gEAAgE;AAChE,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG;QAAE,OAAO,WAAW,CAAA;IACrD,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,aAAa,CAAA;IAC1D,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,cAAc,CAAA;IACzC,IAAI,MAAM,IAAI,GAAG;QAAE,OAAO,eAAe,CAAA;IACzC,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,iBAAiB,CAAC,MAA0B,EAAE,UAAmB;IAC/E,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW;YACd,OAAO,wBAAwB,CAAA;QACjC,KAAK,aAAa;YAChB,OAAO,qDAAqD,CAAA;QAC9D,KAAK,cAAc;YACjB,OAAO,2DAA2D,CAAA;QACpE,KAAK,eAAe;YAClB,OAAO,0EAA0E,CAAA;QACnF,KAAK,aAAa;YAChB,OAAO,6CAA6C,CAAA;QACtD;YACE,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBAC7C,OAAO,+EAA+E,CAAA;YACxF,CAAC;YACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvB,OAAO,+CAA+C,CAAA;YACxD,CAAC;YACD,OAAO,wCAAwC,CAAA;IACnD,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/ai/providers/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,13 +6,6 @@
|
|
|
6
6
|
import type { AIConnectionTestResult, AIProviderKey } from '../types.js';
|
|
7
7
|
import type { AdapterContext, GenerateEmbeddingsOptions, GenerateEmbeddingsResult, GenerateTextOptions, GenerateTextResult } from './http.js';
|
|
8
8
|
export type { AdapterContext, GenerateEmbeddingsOptions, GenerateEmbeddingsResult, GenerateTextOptions, GenerateTextResult, } from './http.js';
|
|
9
|
-
interface ProviderAdapter {
|
|
10
|
-
testConnection(ctx: AdapterContext): Promise<AIConnectionTestResult>;
|
|
11
|
-
listModels(ctx: AdapterContext): Promise<string[]>;
|
|
12
|
-
generateText(ctx: AdapterContext, opts: GenerateTextOptions): Promise<GenerateTextResult>;
|
|
13
|
-
generateEmbeddings?(ctx: AdapterContext, opts: GenerateEmbeddingsOptions): Promise<GenerateEmbeddingsResult>;
|
|
14
|
-
}
|
|
15
|
-
export declare function getAdapter(provider: AIProviderKey): ProviderAdapter;
|
|
16
9
|
export declare function testConnection(provider: AIProviderKey, ctx: AdapterContext): Promise<AIConnectionTestResult>;
|
|
17
10
|
export declare function listModels(provider: AIProviderKey, ctx: AdapterContext): Promise<string[]>;
|
|
18
11
|
export declare function generateText(provider: AIProviderKey, ctx: AdapterContext, opts: GenerateTextOptions): Promise<GenerateTextResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGxE,OAAO,KAAK,EACV,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,WAAW,CAAA;AAIlB,YAAY,EACV,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGxE,OAAO,KAAK,EACV,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,WAAW,CAAA;AAIlB,YAAY,EACV,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,WAAW,CAAA;AAuBlB,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,sBAAsB,CAAC,CAEjC;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE1F;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAE3E;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,aAAa,EACvB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CAMnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAQrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAoB/B,MAAM,QAAQ,GAA2C;IACvD,MAAM;IACN,SAAS;IACT,GAAG;IACH,MAAM;CACP,CAAA;AAED,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAQrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAoB/B,MAAM,QAAQ,GAA2C;IACvD,MAAM;IACN,SAAS;IACT,GAAG;IACH,MAAM;CACP,CAAA;AAED,SAAS,UAAU,CAAC,QAAuB;IACzC,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,QAAuB,EACvB,GAAmB;IAEnB,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAuB,EAAE,GAAmB;IACrE,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,QAAuB,EACvB,GAAmB,EACnB,IAAyB;IAEzB,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAAuB;IAChE,OAAO,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,kBAAkB,KAAK,UAAU,CAAA;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAuB,EACvB,GAAmB,EACnB,IAA+B;IAE/B,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IACpC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,yCAAyC,CAAC,CAAA;IAC5E,CAAC;IACD,OAAO,OAAO,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AAC9C,CAAC"}
|
package/dist/ai/resolve.d.ts
CHANGED
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
* capability (e.g. a vision feature falls back to `defaultVisionModelId`).
|
|
11
11
|
* 3. The global `defaultModelId`.
|
|
12
12
|
* 4. Any `fallbackModelIds` listed on the feature.
|
|
13
|
+
* 5. The curated provider default for the first enabled connection's provider
|
|
14
|
+
* (zero-config: an env-key bootstrap connection with nothing selected).
|
|
15
|
+
* Disabled connections are never candidates. Embedding features
|
|
16
|
+
* (`EMBEDDING_FEATURES`) prefer the first enabled connection whose provider
|
|
17
|
+
* can actually embed, since their embedding model is provider-fixed.
|
|
13
18
|
*
|
|
14
19
|
* The first candidate that is present in the catalog, available, AND satisfies
|
|
15
20
|
* every required capability wins. If none fully satisfy, we still return the
|
|
@@ -20,7 +25,7 @@
|
|
|
20
25
|
*/
|
|
21
26
|
import type { AIConfigDocument, AIModel } from './types.js';
|
|
22
27
|
/** Where the resolved model came from in the precedence chain above. */
|
|
23
|
-
|
|
28
|
+
type FeatureModelSource = 'feature-override' | 'capability-default' | 'global-default' | 'fallback' | 'provider-default' | 'none';
|
|
24
29
|
export interface ResolvedFeatureModel {
|
|
25
30
|
featureKey: string;
|
|
26
31
|
/** Catalog model id (`provider:modelId`), or the raw override when uncatalogued. */
|
|
@@ -38,4 +43,5 @@ export interface ResolvedFeatureModel {
|
|
|
38
43
|
export declare function resolveFeatureModel(config: AIConfigDocument, featureKey: string, catalog: AIModel[]): ResolvedFeatureModel;
|
|
39
44
|
/** Resolve routing for every configured feature, keyed by feature key. */
|
|
40
45
|
export declare function resolveAllFeatureModels(config: AIConfigDocument, catalog: AIModel[]): Record<string, ResolvedFeatureModel>;
|
|
46
|
+
export {};
|
|
41
47
|
//# sourceMappingURL=resolve.d.ts.map
|
package/dist/ai/resolve.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/ai/resolve.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/ai/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,KAAK,EACV,gBAAgB,EAChB,OAAO,EAIR,MAAM,YAAY,CAAA;AAEnB,wEAAwE;AACxE,KAAK,kBAAkB,GACnB,kBAAkB,GAClB,oBAAoB,GACpB,gBAAgB,GAChB,UAAU,GACV,kBAAkB,GAClB,MAAM,CAAA;AAEV,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,kBAAkB,CAAA;IAC1B,mFAAmF;IACnF,qBAAqB,EAAE,OAAO,CAAA;IAC9B,kFAAkF;IAClF,mBAAmB,EAAE,MAAM,EAAE,CAAA;CAC9B;AA4GD,gEAAgE;AAChE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,EAAE,GACjB,oBAAoB,CAiEtB;AAED,0EAA0E;AAC1E,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,OAAO,EAAE,GACjB,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAMtC"}
|
package/dist/ai/resolve.js
CHANGED
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
* capability (e.g. a vision feature falls back to `defaultVisionModelId`).
|
|
11
11
|
* 3. The global `defaultModelId`.
|
|
12
12
|
* 4. Any `fallbackModelIds` listed on the feature.
|
|
13
|
+
* 5. The curated provider default for the first enabled connection's provider
|
|
14
|
+
* (zero-config: an env-key bootstrap connection with nothing selected).
|
|
15
|
+
* Disabled connections are never candidates. Embedding features
|
|
16
|
+
* (`EMBEDDING_FEATURES`) prefer the first enabled connection whose provider
|
|
17
|
+
* can actually embed, since their embedding model is provider-fixed.
|
|
13
18
|
*
|
|
14
19
|
* The first candidate that is present in the catalog, available, AND satisfies
|
|
15
20
|
* every required capability wins. If none fully satisfy, we still return the
|
|
@@ -18,7 +23,8 @@
|
|
|
18
23
|
* simplified version of this for live preview, but THIS function is the source
|
|
19
24
|
* of truth consumed by the AI runtime.
|
|
20
25
|
*/
|
|
21
|
-
import { modelsMatch } from './catalog.js';
|
|
26
|
+
import { curatedDefaultModelId, modelsMatch } from './catalog.js';
|
|
27
|
+
import { EMBEDDING_FEATURES, embeddingsAvailableForProvider } from './embeddings.js';
|
|
22
28
|
/** Capability flags recognized on {@link AIModel.capabilities}. */
|
|
23
29
|
const CAPABILITY_KEYS = new Set([
|
|
24
30
|
'text',
|
|
@@ -48,8 +54,6 @@ function missingCaps(model, required) {
|
|
|
48
54
|
function capabilityDefault(settings, required) {
|
|
49
55
|
if (required.includes('imageGeneration'))
|
|
50
56
|
return settings.defaultImageGenerationModelId;
|
|
51
|
-
if (required.includes('embeddings'))
|
|
52
|
-
return settings.defaultEmbeddingModelId;
|
|
53
57
|
if (required.includes('vision'))
|
|
54
58
|
return settings.defaultVisionModelId;
|
|
55
59
|
if (required.includes('reasoning'))
|
|
@@ -74,6 +78,30 @@ function providerConnId(providers, providerKey, preferredId) {
|
|
|
74
78
|
return enabled.id;
|
|
75
79
|
return providers.find((p) => p.provider === providerKey)?.id;
|
|
76
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* True when a provider can supply a curated default model (custom endpoints
|
|
83
|
+
* have no curated catalog, so they can never be the zero-config fallback).
|
|
84
|
+
*/
|
|
85
|
+
function providerHasCuratedDefault(provider) {
|
|
86
|
+
return curatedDefaultModelId(provider, 'text') !== undefined;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Connection whose provider supplies the curated default when nothing else is
|
|
90
|
+
* configured. Only enabled connections with a curated catalog qualify (a
|
|
91
|
+
* `custom` connection listed first must not shadow OpenAI/Anthropic/xAI);
|
|
92
|
+
* embedding features prefer one whose provider can embed, falling back to the
|
|
93
|
+
* first qualifying connection so the runtime can still report `no_model` with
|
|
94
|
+
* a useful message.
|
|
95
|
+
*/
|
|
96
|
+
function providerDefaultConnection(providers, featureKey) {
|
|
97
|
+
const eligible = providers.filter((p) => p.enabled && providerHasCuratedDefault(p.provider));
|
|
98
|
+
if (EMBEDDING_FEATURES.has(featureKey)) {
|
|
99
|
+
const capable = eligible.find((p) => embeddingsAvailableForProvider(p.provider));
|
|
100
|
+
if (capable)
|
|
101
|
+
return capable;
|
|
102
|
+
}
|
|
103
|
+
return eligible[0];
|
|
104
|
+
}
|
|
77
105
|
function build(featureKey, model, source, config, required, preferredProviderId) {
|
|
78
106
|
const missing = missingCaps(model, required);
|
|
79
107
|
return {
|
|
@@ -91,11 +119,16 @@ export function resolveFeatureModel(config, featureKey, catalog) {
|
|
|
91
119
|
const { settings } = config;
|
|
92
120
|
const feature = settings.features.find((f) => f.key === featureKey);
|
|
93
121
|
const required = feature?.requiredCapabilities ?? [];
|
|
122
|
+
const defaultConn = providerDefaultConnection(config.providers, featureKey);
|
|
123
|
+
const providerDefault = defaultConn
|
|
124
|
+
? curatedDefaultModelId(defaultConn.provider, required.includes('vision') ? 'vision' : 'text')
|
|
125
|
+
: undefined;
|
|
94
126
|
const candidates = [
|
|
95
127
|
{ id: feature?.modelId, source: 'feature-override' },
|
|
96
128
|
{ id: capabilityDefault(settings, required), source: 'capability-default' },
|
|
97
129
|
{ id: settings.defaultModelId, source: 'global-default' },
|
|
98
130
|
...(feature?.fallbackModelIds ?? []).map((id) => ({ id, source: 'fallback' })),
|
|
131
|
+
{ id: providerDefault, source: 'provider-default' },
|
|
99
132
|
];
|
|
100
133
|
// Best case: first candidate that is catalogued, available, and capable.
|
|
101
134
|
let firstFound;
|
package/dist/ai/resolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/ai/resolve.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/ai/resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One HTTP mapping for every {@link RuntimeError}. Routes call this instead of
|
|
3
|
+
* hand-rolling status codes so the admin, MCP, and REST clients see the same
|
|
4
|
+
* contract everywhere: 403 disabled, 429 budget/cap, 503 not configured (with
|
|
5
|
+
* a setup hint), 502 the model or provider misbehaved.
|
|
6
|
+
*
|
|
7
|
+
* Responses carry the same headers as `errorResponse()` in
|
|
8
|
+
* `api/route-helpers.ts` (shared via `api/security-headers.ts`).
|
|
9
|
+
*/
|
|
10
|
+
import type { RuntimeError, RuntimeErrorCode } from './runtime.js';
|
|
11
|
+
/** Operator-facing next step for a refusal. Setup copy is stable; do not reword. */
|
|
12
|
+
export declare function setupHint(code: RuntimeErrorCode): string;
|
|
13
|
+
/** HTTP status + operator-facing copy for a refusal, before serialization. */
|
|
14
|
+
export interface RuntimeErrorDescription {
|
|
15
|
+
status: number;
|
|
16
|
+
message: string;
|
|
17
|
+
/** Present only for the 503 "not configured" codes. */
|
|
18
|
+
hint?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The single source of the status/message/hint contract. Use this when the
|
|
22
|
+
* caller needs the pieces (e.g. to fold into a non-Response result) and
|
|
23
|
+
* {@link runtimeErrorToResponse} when it needs the wire form.
|
|
24
|
+
*/
|
|
25
|
+
export declare function describeRuntimeError(err: RuntimeError): RuntimeErrorDescription;
|
|
26
|
+
export declare function runtimeErrorToResponse(err: RuntimeError): Response;
|
|
27
|
+
//# sourceMappingURL=runtime-response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-response.d.ts","sourceRoot":"","sources":["../../src/ai/runtime-response.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAElE,oFAAoF;AACpF,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAiCxD;AASD,8EAA8E;AAC9E,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,YAAY,GAAG,uBAAuB,CAqB/E;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,YAAY,GAAG,QAAQ,CAQlE"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One HTTP mapping for every {@link RuntimeError}. Routes call this instead of
|
|
3
|
+
* hand-rolling status codes so the admin, MCP, and REST clients see the same
|
|
4
|
+
* contract everywhere: 403 disabled, 429 budget/cap, 503 not configured (with
|
|
5
|
+
* a setup hint), 502 the model or provider misbehaved.
|
|
6
|
+
*
|
|
7
|
+
* Responses carry the same headers as `errorResponse()` in
|
|
8
|
+
* `api/route-helpers.ts` (shared via `api/security-headers.ts`).
|
|
9
|
+
*/
|
|
10
|
+
import { SECURITY_HEADERS } from '../api/security-headers.js';
|
|
11
|
+
/** Operator-facing next step for a refusal. Setup copy is stable; do not reword. */
|
|
12
|
+
export function setupHint(code) {
|
|
13
|
+
switch (code) {
|
|
14
|
+
case 'no_model':
|
|
15
|
+
return ('No default AI model is selected. In Settings > AI, choose a default model ' +
|
|
16
|
+
'in the AI Assistant card and click Save changes.');
|
|
17
|
+
case 'no_key':
|
|
18
|
+
return ('No API key is available for the connected provider. Add a key under ' +
|
|
19
|
+
'Provider connections or set the provider API key env var on your host.');
|
|
20
|
+
case 'no_provider':
|
|
21
|
+
return ('No AI provider can serve the selected model. Check Provider connections, ' +
|
|
22
|
+
'refresh models, and save your default model.');
|
|
23
|
+
case 'unsupported_input':
|
|
24
|
+
return 'Choose a vision-capable model for this feature in Settings > AI.';
|
|
25
|
+
case 'feature_disabled':
|
|
26
|
+
case 'budget_exceeded':
|
|
27
|
+
case 'rate_limited':
|
|
28
|
+
case 'provider_error':
|
|
29
|
+
case 'invalid_output':
|
|
30
|
+
return ('AI is not fully configured. Open Settings > AI, connect a provider, choose a ' +
|
|
31
|
+
'default model, and click Save changes.');
|
|
32
|
+
default: {
|
|
33
|
+
const _exhaustive = code;
|
|
34
|
+
return _exhaustive;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The single source of the status/message/hint contract. Use this when the
|
|
40
|
+
* caller needs the pieces (e.g. to fold into a non-Response result) and
|
|
41
|
+
* {@link runtimeErrorToResponse} when it needs the wire form.
|
|
42
|
+
*/
|
|
43
|
+
export function describeRuntimeError(err) {
|
|
44
|
+
switch (err.code) {
|
|
45
|
+
case 'feature_disabled':
|
|
46
|
+
return { status: 403, message: err.message };
|
|
47
|
+
case 'budget_exceeded':
|
|
48
|
+
case 'rate_limited':
|
|
49
|
+
return { status: 429, message: err.message };
|
|
50
|
+
case 'no_provider':
|
|
51
|
+
case 'no_model':
|
|
52
|
+
case 'no_key':
|
|
53
|
+
case 'unsupported_input':
|
|
54
|
+
return { status: 503, message: err.message, hint: setupHint(err.code) };
|
|
55
|
+
case 'provider_error':
|
|
56
|
+
return { status: 502, message: `AI provider error: ${err.message}` };
|
|
57
|
+
case 'invalid_output':
|
|
58
|
+
return { status: 502, message: err.message };
|
|
59
|
+
default: {
|
|
60
|
+
const _exhaustive = err.code;
|
|
61
|
+
return _exhaustive;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export function runtimeErrorToResponse(err) {
|
|
66
|
+
const d = describeRuntimeError(err);
|
|
67
|
+
const body = { error: d.message, code: err.code };
|
|
68
|
+
if (d.hint !== undefined)
|
|
69
|
+
body.hint = d.hint;
|
|
70
|
+
return new Response(JSON.stringify(body), {
|
|
71
|
+
status: d.status,
|
|
72
|
+
headers: { ...SECURITY_HEADERS },
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=runtime-response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-response.js","sourceRoot":"","sources":["../../src/ai/runtime-response.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAG7D,oFAAoF;AACpF,MAAM,UAAU,SAAS,CAAC,IAAsB;IAC9C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU;YACb,OAAO,CACL,4EAA4E;gBAC5E,kDAAkD,CACnD,CAAA;QACH,KAAK,QAAQ;YACX,OAAO,CACL,sEAAsE;gBACtE,wEAAwE,CACzE,CAAA;QACH,KAAK,aAAa;YAChB,OAAO,CACL,2EAA2E;gBAC3E,8CAA8C,CAC/C,CAAA;QACH,KAAK,mBAAmB;YACtB,OAAO,kEAAkE,CAAA;QAC3E,KAAK,kBAAkB,CAAC;QACxB,KAAK,iBAAiB,CAAC;QACvB,KAAK,cAAc,CAAC;QACpB,KAAK,gBAAgB,CAAC;QACtB,KAAK,gBAAgB;YACnB,OAAO,CACL,+EAA+E;gBAC/E,wCAAwC,CACzC,CAAA;QACH,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,IAAI,CAAA;YAC/B,OAAO,WAAW,CAAA;QACpB,CAAC;IACH,CAAC;AACH,CAAC;AAiBD;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAiB;IACpD,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,kBAAkB;YACrB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAA;QAC9C,KAAK,iBAAiB,CAAC;QACvB,KAAK,cAAc;YACjB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAA;QAC9C,KAAK,aAAa,CAAC;QACnB,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ,CAAC;QACd,KAAK,mBAAmB;YACtB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;QACzE,KAAK,gBAAgB;YACnB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,sBAAsB,GAAG,CAAC,OAAO,EAAE,EAAE,CAAA;QACtE,KAAK,gBAAgB;YACnB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAA;QAC9C,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,GAAG,CAAC,IAAI,CAAA;YACnC,OAAO,WAAW,CAAA;QACpB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAiB;IACtD,MAAM,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAA;IACnC,MAAM,IAAI,GAAqB,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAA;IACnE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAA;IAC5C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACxC,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,OAAO,EAAE,EAAE,GAAG,gBAAgB,EAAE;KACjC,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/ai/runtime.d.ts
CHANGED
|
@@ -16,15 +16,18 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import type { ZodType } from 'zod';
|
|
18
18
|
import { stripJsonFences } from './brand-voice-analyze.js';
|
|
19
|
-
import type
|
|
19
|
+
import { type ImageInput } from './providers/http.js';
|
|
20
|
+
import type { AIModelCapabilities, AIProviderKey } from './types.js';
|
|
20
21
|
/** Re-exported so JSON callers get the fence stripper from the same module as the helper. */
|
|
21
22
|
export { stripJsonFences };
|
|
22
23
|
/**
|
|
23
24
|
* Why a feature could not run. Distinct codes let callers map to HTTP status.
|
|
24
25
|
* `invalid_output` is specific to {@link generateJsonForFeature}: the model
|
|
25
26
|
* answered, but the reply never matched the requested schema.
|
|
27
|
+
* `unsupported_input` means the request carried images but the resolved model
|
|
28
|
+
* is catalogued without the `vision` capability — no provider call was made.
|
|
26
29
|
*/
|
|
27
|
-
export type RuntimeErrorCode = 'feature_disabled' | 'no_provider' | 'no_model' | 'no_key' | 'budget_exceeded' | 'rate_limited' | 'provider_error' | 'invalid_output';
|
|
30
|
+
export type RuntimeErrorCode = 'feature_disabled' | 'no_provider' | 'no_model' | 'no_key' | 'budget_exceeded' | 'rate_limited' | 'provider_error' | 'invalid_output' | 'unsupported_input';
|
|
28
31
|
export interface RuntimeError {
|
|
29
32
|
ok: false;
|
|
30
33
|
code: RuntimeErrorCode;
|
|
@@ -44,12 +47,9 @@ export interface ResolvedFeatureRuntime {
|
|
|
44
47
|
providerModelId: string;
|
|
45
48
|
/** When true, omit temperature / top_p / top_k on the provider request. */
|
|
46
49
|
disallowsSampling: boolean;
|
|
50
|
+
/** Catalog capabilities of the resolved model; undefined when uncatalogued. */
|
|
51
|
+
capabilities?: AIModelCapabilities;
|
|
47
52
|
}
|
|
48
|
-
/**
|
|
49
|
-
* Is a configured AI feature turned on? Unknown keys default to enabled so that
|
|
50
|
-
* callers gating on a key the config doesn't track yet don't silently break.
|
|
51
|
-
*/
|
|
52
|
-
export declare function isAiFeatureEnabled(db: unknown, featureKey: string): Promise<boolean>;
|
|
53
53
|
/**
|
|
54
54
|
* Resolve provider + model + key + budget for a feature, enforcing the toggle.
|
|
55
55
|
* Pure resolution — performs no model call. Returns a discriminated result so
|
|
@@ -61,6 +61,8 @@ export interface GenerateForFeatureInput {
|
|
|
61
61
|
system?: string;
|
|
62
62
|
maxTokens?: number;
|
|
63
63
|
temperature?: number;
|
|
64
|
+
/** Images for vision models. Refused with `unsupported_input` when the model lacks `vision`. */
|
|
65
|
+
images?: ImageInput[];
|
|
64
66
|
/** Recorded on the usage audit entry so spend is attributable. */
|
|
65
67
|
userId?: string;
|
|
66
68
|
/**
|
package/dist/ai/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAGlC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/ai/runtime.js
CHANGED
|
@@ -19,6 +19,7 @@ import { stripJsonFences } from './brand-voice-analyze.js';
|
|
|
19
19
|
import { resolveWireModelId } from './catalog.js';
|
|
20
20
|
import { getAIConfig, resolveProviderKey } from './config-store.js';
|
|
21
21
|
import { getModels } from './models.js';
|
|
22
|
+
import { EMBEDDING_MODELS, embeddingsAvailableForProvider } from './embeddings.js';
|
|
22
23
|
import { generateEmbeddings as adapterGenerateEmbeddings, generateText as adapterGenerateText, } from './providers/index.js';
|
|
23
24
|
import { AdapterHttpError } from './providers/http.js';
|
|
24
25
|
import { resolveFeatureModel } from './resolve.js';
|
|
@@ -29,15 +30,6 @@ export { stripJsonFences };
|
|
|
29
30
|
function err(code, message) {
|
|
30
31
|
return { ok: false, code, message };
|
|
31
32
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Is a configured AI feature turned on? Unknown keys default to enabled so that
|
|
34
|
-
* callers gating on a key the config doesn't track yet don't silently break.
|
|
35
|
-
*/
|
|
36
|
-
export async function isAiFeatureEnabled(db, featureKey) {
|
|
37
|
-
const config = await getAIConfig(db);
|
|
38
|
-
const feature = config.settings.features.find((f) => f.key === featureKey);
|
|
39
|
-
return feature ? feature.enabled : true;
|
|
40
|
-
}
|
|
41
33
|
/**
|
|
42
34
|
* Resolve provider + model + key + budget for a feature, enforcing the toggle.
|
|
43
35
|
* Pure resolution — performs no model call. Returns a discriminated result so
|
|
@@ -96,6 +88,7 @@ export async function resolveFeatureRuntime(db, featureKey) {
|
|
|
96
88
|
modelId: resolved.modelId,
|
|
97
89
|
providerModelId,
|
|
98
90
|
disallowsSampling: modelDisallowsSampling(providerModelId, resolved.model?.capabilities),
|
|
91
|
+
capabilities: resolved.model?.capabilities,
|
|
99
92
|
};
|
|
100
93
|
}
|
|
101
94
|
/** `openai:gpt-4o` -> `gpt-4o`; leaves bare ids untouched. */
|
|
@@ -114,6 +107,14 @@ export async function generateTextForFeature(db, featureKey, input) {
|
|
|
114
107
|
const resolved = await resolveFeatureRuntime(db, featureKey);
|
|
115
108
|
if (!resolved.ok)
|
|
116
109
|
return resolved;
|
|
110
|
+
// Vision gate: a catalogued model that explicitly lacks `vision` is refused
|
|
111
|
+
// before any network call. Uncatalogued models (no capabilities) attempt the
|
|
112
|
+
// call and let the provider decide. The message names the model only —
|
|
113
|
+
// never the image bytes.
|
|
114
|
+
const hasImages = Array.isArray(input.images) && input.images.length > 0;
|
|
115
|
+
if (hasImages && resolved.capabilities && resolved.capabilities.vision === false) {
|
|
116
|
+
return err('unsupported_input', `The selected model (${resolved.modelId}) cannot analyze images. Choose a vision-capable model for this feature in Settings > AI.`);
|
|
117
|
+
}
|
|
117
118
|
// Inject the active brand voice into the system prompt when the caller opts
|
|
118
119
|
// in (content-writing surfaces do; metadata/structured ones don't).
|
|
119
120
|
let system = input.system;
|
|
@@ -136,6 +137,7 @@ export async function generateTextForFeature(db, featureKey, input) {
|
|
|
136
137
|
system,
|
|
137
138
|
maxTokens: input.maxTokens,
|
|
138
139
|
temperature,
|
|
140
|
+
images: hasImages ? input.images : undefined,
|
|
139
141
|
});
|
|
140
142
|
await recordUsage(db, {
|
|
141
143
|
featureKey,
|
|
@@ -219,15 +221,6 @@ export async function generateJsonForFeature(db, featureKey, input) {
|
|
|
219
221
|
}
|
|
220
222
|
return err('invalid_output', `AI returned output that did not match the expected shape (${lastError}).`);
|
|
221
223
|
}
|
|
222
|
-
/**
|
|
223
|
-
* Default embedding model per provider. Providers absent from this map have no
|
|
224
|
-
* embeddings API — `embedForFeature` returns a typed `no_model` error for them
|
|
225
|
-
* and callers fall back to their non-AI behavior.
|
|
226
|
-
*/
|
|
227
|
-
const EMBEDDING_MODELS = {
|
|
228
|
-
openai: 'text-embedding-3-small',
|
|
229
|
-
custom: 'text-embedding-3-small',
|
|
230
|
-
};
|
|
231
224
|
/**
|
|
232
225
|
* Run embeddings for a feature through the governed path: resolve → enforce
|
|
233
226
|
* (toggle, budget, daily cap) → call → record usage. Same error contract as
|
|
@@ -246,7 +239,9 @@ export async function embedForFeature(db, featureKey, texts, input = {}) {
|
|
|
246
239
|
const resolved = await resolveFeatureRuntime(db, featureKey);
|
|
247
240
|
if (!resolved.ok)
|
|
248
241
|
return resolved;
|
|
249
|
-
const embeddingModel =
|
|
242
|
+
const embeddingModel = embeddingsAvailableForProvider(resolved.providerKey)
|
|
243
|
+
? EMBEDDING_MODELS[resolved.providerKey]
|
|
244
|
+
: undefined;
|
|
250
245
|
if (!embeddingModel) {
|
|
251
246
|
return err('no_model', `The "${resolved.providerKey}" provider does not support embeddings.`);
|
|
252
247
|
}
|
package/dist/ai/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EACL,kBAAkB,IAAI,yBAAyB,EAC/C,YAAY,IAAI,mBAAmB,GACpC,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider-free prompt + normalization for accessible alt text. Moved from
|
|
3
|
+
* `@prenta/plugin-ai` (`media/alt-text-generator.ts`, `alt-text-prompt.ts`,
|
|
4
|
+
* `media/json.ts`) in Spec B; the model call runs through
|
|
5
|
+
* `generateJsonForFeature` under the `ai.features.mediaAltText` feature
|
|
6
|
+
* (toggle, daily cap, budget, usage metering), so this module never touches a
|
|
7
|
+
* provider.
|
|
8
|
+
*
|
|
9
|
+
* Vision-then-heuristic: when image bytes are supplied the vision path is
|
|
10
|
+
* tried first. If the resolved model is catalogued without `vision` the
|
|
11
|
+
* runtime refuses with `unsupported_input` *before* any network call, and we
|
|
12
|
+
* rerun text-only with confidence capped at {@link HEURISTIC_MAX_CONFIDENCE}.
|
|
13
|
+
* Every other runtime refusal propagates to the caller.
|
|
14
|
+
*
|
|
15
|
+
* Image bytes (`base64`) only ever travel in the adapter request body — they
|
|
16
|
+
* are never logged, audited, or echoed into an error message.
|
|
17
|
+
*/
|
|
18
|
+
import { z } from 'zod';
|
|
19
|
+
import type { ImageInput } from '../providers/http.js';
|
|
20
|
+
import { type RuntimeError } from '../runtime.js';
|
|
21
|
+
export declare const ALT_TEXT_FEATURE = "ai.features.mediaAltText";
|
|
22
|
+
/** Max confidence we'll report for a text-only (no real image) heuristic. */
|
|
23
|
+
export declare const HEURISTIC_MAX_CONFIDENCE = 0.4;
|
|
24
|
+
export interface AltTextContext {
|
|
25
|
+
pageTitle?: string;
|
|
26
|
+
surroundingText?: string;
|
|
27
|
+
purpose?: 'decorative' | 'informative' | 'functional';
|
|
28
|
+
}
|
|
29
|
+
export interface AltTextResult {
|
|
30
|
+
altText: string;
|
|
31
|
+
isDecorative: boolean;
|
|
32
|
+
confidence: number;
|
|
33
|
+
alternatives: string[];
|
|
34
|
+
/** True only when a real vision model analyzed the image bytes. */
|
|
35
|
+
usedVision: boolean;
|
|
36
|
+
}
|
|
37
|
+
/** Lenient on purpose: every key is optional so a partial reply still normalizes. */
|
|
38
|
+
export declare const AltTextSchema: z.ZodObject<{
|
|
39
|
+
altText: z.ZodOptional<z.ZodString>;
|
|
40
|
+
isDecorative: z.ZodOptional<z.ZodBoolean>;
|
|
41
|
+
alternatives: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
42
|
+
confidence: z.ZodOptional<z.ZodNumber>;
|
|
43
|
+
}, "strip", z.ZodTypeAny, {
|
|
44
|
+
altText?: string | undefined;
|
|
45
|
+
confidence?: number | undefined;
|
|
46
|
+
isDecorative?: boolean | undefined;
|
|
47
|
+
alternatives?: string[] | undefined;
|
|
48
|
+
}, {
|
|
49
|
+
altText?: string | undefined;
|
|
50
|
+
confidence?: number | undefined;
|
|
51
|
+
isDecorative?: boolean | undefined;
|
|
52
|
+
alternatives?: string[] | undefined;
|
|
53
|
+
}>;
|
|
54
|
+
/** Normalize model output to publishing-ready alt text. */
|
|
55
|
+
export declare function normalizeGeneratedAltText(raw: string, isDecorative: boolean): string;
|
|
56
|
+
export declare function buildAltTextPrompt(ctx: AltTextContext, opts: {
|
|
57
|
+
vision: boolean;
|
|
58
|
+
fileName: string;
|
|
59
|
+
}): {
|
|
60
|
+
system: string;
|
|
61
|
+
prompt: string;
|
|
62
|
+
};
|
|
63
|
+
export interface GenerateAltTextArgs {
|
|
64
|
+
/** Used only to derive the file name shown to the text-only heuristic. */
|
|
65
|
+
imageUrl: string;
|
|
66
|
+
/** Image bytes when the caller could fetch them; `null` forces the heuristic. */
|
|
67
|
+
image: ImageInput | null;
|
|
68
|
+
context: AltTextContext;
|
|
69
|
+
/** Recorded on the usage audit entry so spend is attributable. */
|
|
70
|
+
userId?: string;
|
|
71
|
+
/** Injectable fetch for tests; forwarded to the provider adapter. */
|
|
72
|
+
fetchImpl?: typeof fetch;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Governed alt-text generation. Tries the vision path when image bytes are
|
|
76
|
+
* available; if the resolved model is catalogued without `vision`
|
|
77
|
+
* (`unsupported_input`) it reruns text-only with confidence capped at
|
|
78
|
+
* {@link HEURISTIC_MAX_CONFIDENCE}. Every other runtime refusal propagates.
|
|
79
|
+
* A `decorative` purpose short-circuits with no model call.
|
|
80
|
+
*/
|
|
81
|
+
export declare function generateAltText(db: unknown, args: GenerateAltTextArgs): Promise<AltTextResult | RuntimeError>;
|
|
82
|
+
//# sourceMappingURL=alt-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alt-text.d.ts","sourceRoot":"","sources":["../../../src/ai/tasks/alt-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAA0B,KAAK,YAAY,EAAE,MAAM,eAAe,CAAA;AAEzE,eAAO,MAAM,gBAAgB,6BAA6B,CAAA;AAC1D,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB,MAAM,CAAA;AAkC3C,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,YAAY,CAAA;CACtD;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,mEAAmE;IACnE,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,qFAAqF;AACrF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;EAKxB,CAAA;AAIF,2DAA2D;AAC3D,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAOpF;AAQD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAmBpC;AAoCD,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAA;IAChB,iFAAiF;IACjF,KAAK,EAAE,UAAU,GAAG,IAAI,CAAA;IACxB,OAAO,EAAE,cAAc,CAAA;IACvB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;CACzB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,aAAa,GAAG,YAAY,CAAC,CA6BvC"}
|