gazetta 0.6.0 → 0.8.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/admin-dist/assets/index-CBeq0rRb.js +693 -0
- package/admin-dist/assets/index-Dtg1dTZQ.css +1 -0
- package/admin-dist/assets/rolldown-runtime-BYbx6iT9.js +1 -0
- package/admin-dist/assets/{vendor-primevue-C0Q_YTCb.js → vendor-primevue-CBGHkaXv.js} +183 -39
- package/admin-dist/assets/{vendor-react-BipDVGow.js → vendor-react-BdW_kNCG.js} +2 -2
- package/admin-dist/assets/vendor-rjsf-lN2SztQt.js +33 -0
- package/admin-dist/assets/vendor-tiptap-C36yDquB.js +141 -0
- package/admin-dist/assets/vendor-vue-Bt5uR1VW.js +1 -0
- package/admin-dist/assets/workbox-window.prod.es5-DGMtIXHc.js +2 -0
- package/admin-dist/index.html +8 -8
- package/admin-dist/sw.js +1 -0
- package/dist/admin-api/archived-name-conflict.d.ts +31 -0
- package/dist/admin-api/archived-name-conflict.d.ts.map +1 -0
- package/dist/admin-api/archived-name-conflict.js +226 -0
- package/dist/admin-api/archived-name-conflict.js.map +1 -0
- package/dist/admin-api/cache-stats-logger.d.ts +83 -0
- package/dist/admin-api/cache-stats-logger.d.ts.map +1 -0
- package/dist/admin-api/cache-stats-logger.js +59 -0
- package/dist/admin-api/cache-stats-logger.js.map +1 -0
- package/dist/admin-api/error-response.d.ts +21 -0
- package/dist/admin-api/error-response.d.ts.map +1 -0
- package/dist/admin-api/error-response.js +12 -0
- package/dist/admin-api/error-response.js.map +1 -0
- package/dist/admin-api/hook-audit-emitter.d.ts +38 -0
- package/dist/admin-api/hook-audit-emitter.d.ts.map +1 -0
- package/dist/admin-api/hook-audit-emitter.js +21 -0
- package/dist/admin-api/hook-audit-emitter.js.map +1 -0
- package/dist/admin-api/index.d.ts +84 -2
- package/dist/admin-api/index.d.ts.map +1 -1
- package/dist/admin-api/index.js +257 -32
- package/dist/admin-api/index.js.map +1 -1
- package/dist/admin-api/middleware/audit.d.ts +25 -0
- package/dist/admin-api/middleware/audit.d.ts.map +1 -0
- package/dist/admin-api/middleware/audit.js +65 -0
- package/dist/admin-api/middleware/audit.js.map +1 -0
- package/dist/admin-api/middleware/capability.d.ts +8 -0
- package/dist/admin-api/middleware/capability.d.ts.map +1 -0
- package/dist/admin-api/middleware/capability.js +65 -0
- package/dist/admin-api/middleware/capability.js.map +1 -0
- package/dist/admin-api/middleware/principal.d.ts +18 -0
- package/dist/admin-api/middleware/principal.d.ts.map +1 -0
- package/dist/admin-api/middleware/principal.js +128 -0
- package/dist/admin-api/middleware/principal.js.map +1 -0
- package/dist/admin-api/routes/archive-review.d.ts +80 -0
- package/dist/admin-api/routes/archive-review.d.ts.map +1 -0
- package/dist/admin-api/routes/archive-review.js +70 -0
- package/dist/admin-api/routes/archive-review.js.map +1 -0
- package/dist/admin-api/routes/archive.d.ts +145 -0
- package/dist/admin-api/routes/archive.d.ts.map +1 -0
- package/dist/admin-api/routes/archive.js +540 -0
- package/dist/admin-api/routes/archive.js.map +1 -0
- package/dist/admin-api/routes/assets.d.ts +21 -0
- package/dist/admin-api/routes/assets.d.ts.map +1 -0
- package/dist/admin-api/routes/assets.js +586 -0
- package/dist/admin-api/routes/assets.js.map +1 -0
- package/dist/admin-api/routes/audit.d.ts +71 -0
- package/dist/admin-api/routes/audit.d.ts.map +1 -0
- package/dist/admin-api/routes/audit.js +178 -0
- package/dist/admin-api/routes/audit.js.map +1 -0
- package/dist/admin-api/routes/compare.d.ts.map +1 -1
- package/dist/admin-api/routes/compare.js +3 -2
- package/dist/admin-api/routes/compare.js.map +1 -1
- package/dist/admin-api/routes/fields.d.ts.map +1 -1
- package/dist/admin-api/routes/fields.js +2 -1
- package/dist/admin-api/routes/fields.js.map +1 -1
- package/dist/admin-api/routes/fragments.d.ts +13 -1
- package/dist/admin-api/routes/fragments.d.ts.map +1 -1
- package/dist/admin-api/routes/fragments.js +128 -67
- package/dist/admin-api/routes/fragments.js.map +1 -1
- package/dist/admin-api/routes/health.d.ts +60 -0
- package/dist/admin-api/routes/health.d.ts.map +1 -0
- package/dist/admin-api/routes/health.js +65 -0
- package/dist/admin-api/routes/health.js.map +1 -0
- package/dist/admin-api/routes/history.d.ts +2 -1
- package/dist/admin-api/routes/history.d.ts.map +1 -1
- package/dist/admin-api/routes/history.js +26 -4
- package/dist/admin-api/routes/history.js.map +1 -1
- package/dist/admin-api/routes/pages.d.ts +20 -1
- package/dist/admin-api/routes/pages.d.ts.map +1 -1
- package/dist/admin-api/routes/pages.js +158 -85
- package/dist/admin-api/routes/pages.js.map +1 -1
- package/dist/admin-api/routes/preview.d.ts.map +1 -1
- package/dist/admin-api/routes/preview.js +56 -17
- package/dist/admin-api/routes/preview.js.map +1 -1
- package/dist/admin-api/routes/publish.d.ts +19 -1
- package/dist/admin-api/routes/publish.d.ts.map +1 -1
- package/dist/admin-api/routes/publish.js +548 -99
- package/dist/admin-api/routes/publish.js.map +1 -1
- package/dist/admin-api/routes/rename.d.ts +62 -0
- package/dist/admin-api/routes/rename.d.ts.map +1 -0
- package/dist/admin-api/routes/rename.js +366 -0
- package/dist/admin-api/routes/rename.js.map +1 -0
- package/dist/admin-api/routes/site.d.ts.map +1 -1
- package/dist/admin-api/routes/site.js +6 -18
- package/dist/admin-api/routes/site.js.map +1 -1
- package/dist/admin-api/routes/system.d.ts +23 -0
- package/dist/admin-api/routes/system.d.ts.map +1 -0
- package/dist/admin-api/routes/system.js +115 -0
- package/dist/admin-api/routes/system.js.map +1 -0
- package/dist/admin-api/routes/templates.d.ts +11 -1
- package/dist/admin-api/routes/templates.d.ts.map +1 -1
- package/dist/admin-api/routes/templates.js +36 -3
- package/dist/admin-api/routes/templates.js.map +1 -1
- package/dist/admin-api/routes/validation.d.ts +47 -0
- package/dist/admin-api/routes/validation.d.ts.map +1 -0
- package/dist/admin-api/routes/validation.js +120 -0
- package/dist/admin-api/routes/validation.js.map +1 -0
- package/dist/admin-api/schemas/archive.d.ts +124 -0
- package/dist/admin-api/schemas/archive.d.ts.map +1 -0
- package/dist/admin-api/schemas/archive.js +93 -0
- package/dist/admin-api/schemas/archive.js.map +1 -0
- package/dist/admin-api/schemas/assets.d.ts +64 -0
- package/dist/admin-api/schemas/assets.d.ts.map +1 -0
- package/dist/admin-api/schemas/assets.js +59 -0
- package/dist/admin-api/schemas/assets.js.map +1 -0
- package/dist/admin-api/schemas/audit.d.ts +175 -0
- package/dist/admin-api/schemas/audit.d.ts.map +1 -0
- package/dist/admin-api/schemas/audit.js +91 -0
- package/dist/admin-api/schemas/audit.js.map +1 -0
- package/dist/admin-api/schemas/error.d.ts +94 -0
- package/dist/admin-api/schemas/error.d.ts.map +1 -0
- package/dist/admin-api/schemas/error.js +79 -0
- package/dist/admin-api/schemas/error.js.map +1 -0
- package/dist/admin-api/schemas/fragments.d.ts +2 -0
- package/dist/admin-api/schemas/fragments.d.ts.map +1 -1
- package/dist/admin-api/schemas/fragments.js +4 -0
- package/dist/admin-api/schemas/fragments.js.map +1 -1
- package/dist/admin-api/schemas/index.d.ts +10 -0
- package/dist/admin-api/schemas/index.d.ts.map +1 -1
- package/dist/admin-api/schemas/index.js +10 -0
- package/dist/admin-api/schemas/index.js.map +1 -1
- package/dist/admin-api/schemas/pages.d.ts +2 -0
- package/dist/admin-api/schemas/pages.d.ts.map +1 -1
- package/dist/admin-api/schemas/pages.js +11 -0
- package/dist/admin-api/schemas/pages.js.map +1 -1
- package/dist/admin-api/schemas/rename.d.ts +77 -0
- package/dist/admin-api/schemas/rename.d.ts.map +1 -0
- package/dist/admin-api/schemas/rename.js +75 -0
- package/dist/admin-api/schemas/rename.js.map +1 -0
- package/dist/admin-api/schemas/site.d.ts +3 -2
- package/dist/admin-api/schemas/site.d.ts.map +1 -1
- package/dist/admin-api/schemas/site.js +3 -2
- package/dist/admin-api/schemas/site.js.map +1 -1
- package/dist/admin-api/schemas/system.d.ts +28 -0
- package/dist/admin-api/schemas/system.d.ts.map +1 -0
- package/dist/admin-api/schemas/system.js +35 -0
- package/dist/admin-api/schemas/system.js.map +1 -0
- package/dist/admin-api/schemas/targets.d.ts +55 -0
- package/dist/admin-api/schemas/targets.d.ts.map +1 -1
- package/dist/admin-api/schemas/targets.js +46 -0
- package/dist/admin-api/schemas/targets.js.map +1 -1
- package/dist/admin-api/schemas/templates.d.ts +54 -0
- package/dist/admin-api/schemas/templates.d.ts.map +1 -1
- package/dist/admin-api/schemas/templates.js +21 -0
- package/dist/admin-api/schemas/templates.js.map +1 -1
- package/dist/admin-api/schemas/validation.d.ts +101 -0
- package/dist/admin-api/schemas/validation.d.ts.map +1 -0
- package/dist/admin-api/schemas/validation.js +57 -0
- package/dist/admin-api/schemas/validation.js.map +1 -0
- package/dist/admin-api/source-context.d.ts +66 -17
- package/dist/admin-api/source-context.d.ts.map +1 -1
- package/dist/admin-api/source-context.js +43 -8
- package/dist/admin-api/source-context.js.map +1 -1
- package/dist/ai/adapter-scaffold.d.ts +63 -0
- package/dist/ai/adapter-scaffold.d.ts.map +1 -0
- package/dist/ai/adapter-scaffold.js +89 -0
- package/dist/ai/adapter-scaffold.js.map +1 -0
- package/dist/ai/compose-prompt.d.ts +50 -0
- package/dist/ai/compose-prompt.d.ts.map +1 -0
- package/dist/ai/compose-prompt.js +49 -0
- package/dist/ai/compose-prompt.js.map +1 -0
- package/dist/ai/errors.d.ts +65 -0
- package/dist/ai/errors.d.ts.map +1 -0
- package/dist/ai/errors.js +59 -0
- package/dist/ai/errors.js.map +1 -0
- package/dist/ai/index.d.ts +17 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +16 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/provider.d.ts +76 -0
- package/dist/ai/provider.d.ts.map +1 -0
- package/dist/ai/provider.js +13 -0
- package/dist/ai/provider.js.map +1 -0
- package/dist/ai/refusal.d.ts +50 -0
- package/dist/ai/refusal.d.ts.map +1 -0
- package/dist/ai/refusal.js +100 -0
- package/dist/ai/refusal.js.map +1 -0
- package/dist/ai/vision-prep.d.ts +32 -0
- package/dist/ai/vision-prep.d.ts.map +1 -0
- package/dist/ai/vision-prep.js +113 -0
- package/dist/ai/vision-prep.js.map +1 -0
- package/dist/alt/adapter.d.ts +140 -0
- package/dist/alt/adapter.d.ts.map +1 -0
- package/dist/alt/adapter.js +7 -0
- package/dist/alt/adapter.js.map +1 -0
- package/dist/alt/anthropic.d.ts +63 -0
- package/dist/alt/anthropic.d.ts.map +1 -0
- package/dist/alt/anthropic.js +147 -0
- package/dist/alt/anthropic.js.map +1 -0
- package/dist/alt/config.d.ts +67 -0
- package/dist/alt/config.d.ts.map +1 -0
- package/dist/alt/config.js +41 -0
- package/dist/alt/config.js.map +1 -0
- package/dist/alt/factory.d.ts +19 -0
- package/dist/alt/factory.d.ts.map +1 -0
- package/dist/alt/factory.js +69 -0
- package/dist/alt/factory.js.map +1 -0
- package/dist/alt/null-adapter.d.ts +3 -0
- package/dist/alt/null-adapter.d.ts.map +1 -0
- package/dist/alt/null-adapter.js +43 -0
- package/dist/alt/null-adapter.js.map +1 -0
- package/dist/alt/ollama.d.ts +40 -0
- package/dist/alt/ollama.d.ts.map +1 -0
- package/dist/alt/ollama.js +139 -0
- package/dist/alt/ollama.js.map +1 -0
- package/dist/alt/openai.d.ts +46 -0
- package/dist/alt/openai.d.ts.map +1 -0
- package/dist/alt/openai.js +118 -0
- package/dist/alt/openai.js.map +1 -0
- package/dist/alt/prompt-policies.d.ts +79 -0
- package/dist/alt/prompt-policies.d.ts.map +1 -0
- package/dist/alt/prompt-policies.js +67 -0
- package/dist/alt/prompt-policies.js.map +1 -0
- package/dist/alt/route-handler.d.ts +56 -0
- package/dist/alt/route-handler.d.ts.map +1 -0
- package/dist/alt/route-handler.js +122 -0
- package/dist/alt/route-handler.js.map +1 -0
- package/dist/alt/suggester.d.ts +57 -0
- package/dist/alt/suggester.d.ts.map +1 -0
- package/dist/alt/suggester.js +133 -0
- package/dist/alt/suggester.js.map +1 -0
- package/dist/app.js +1 -1
- package/dist/app.js.map +1 -1
- package/dist/archive-aliases.d.ts +79 -0
- package/dist/archive-aliases.d.ts.map +1 -0
- package/dist/archive-aliases.js +60 -0
- package/dist/archive-aliases.js.map +1 -0
- package/dist/archive-helpers.d.ts +73 -0
- package/dist/archive-helpers.d.ts.map +1 -0
- package/dist/archive-helpers.js +94 -0
- package/dist/archive-helpers.js.map +1 -0
- package/dist/assets/analyze-audio.d.ts +3 -0
- package/dist/assets/analyze-audio.d.ts.map +1 -0
- package/dist/assets/analyze-audio.js +80 -0
- package/dist/assets/analyze-audio.js.map +1 -0
- package/dist/assets/analyze-image.d.ts +19 -0
- package/dist/assets/analyze-image.d.ts.map +1 -0
- package/dist/assets/analyze-image.js +123 -0
- package/dist/assets/analyze-image.js.map +1 -0
- package/dist/assets/analyze.d.ts +94 -0
- package/dist/assets/analyze.d.ts.map +1 -0
- package/dist/assets/analyze.js +45 -0
- package/dist/assets/analyze.js.map +1 -0
- package/dist/assets/asset-deps.d.ts +30 -0
- package/dist/assets/asset-deps.d.ts.map +1 -0
- package/dist/assets/asset-deps.js +42 -0
- package/dist/assets/asset-deps.js.map +1 -0
- package/dist/assets/asset-paths.d.ts +155 -0
- package/dist/assets/asset-paths.d.ts.map +1 -0
- package/dist/assets/asset-paths.js +197 -0
- package/dist/assets/asset-paths.js.map +1 -0
- package/dist/assets/delete.d.ts +75 -0
- package/dist/assets/delete.d.ts.map +1 -0
- package/dist/assets/delete.js +82 -0
- package/dist/assets/delete.js.map +1 -0
- package/dist/assets/errors.d.ts +241 -0
- package/dist/assets/errors.d.ts.map +1 -0
- package/dist/assets/errors.js +300 -0
- package/dist/assets/errors.js.map +1 -0
- package/dist/assets/find-refs.d.ts +37 -0
- package/dist/assets/find-refs.d.ts.map +1 -0
- package/dist/assets/find-refs.js +35 -0
- package/dist/assets/find-refs.js.map +1 -0
- package/dist/assets/hash.d.ts +13 -0
- package/dist/assets/hash.d.ts.map +1 -0
- package/dist/assets/hash.js +43 -0
- package/dist/assets/hash.js.map +1 -0
- package/dist/assets/image-metadata.d.ts +11 -0
- package/dist/assets/image-metadata.d.ts.map +1 -0
- package/dist/assets/image-metadata.js +31 -0
- package/dist/assets/image-metadata.js.map +1 -0
- package/dist/assets/ingest-locale.d.ts +86 -0
- package/dist/assets/ingest-locale.d.ts.map +1 -0
- package/dist/assets/ingest-locale.js +209 -0
- package/dist/assets/ingest-locale.js.map +1 -0
- package/dist/assets/ingest.d.ts +96 -0
- package/dist/assets/ingest.d.ts.map +1 -0
- package/dist/assets/ingest.js +308 -0
- package/dist/assets/ingest.js.map +1 -0
- package/dist/assets/kind-compat.d.ts +34 -0
- package/dist/assets/kind-compat.d.ts.map +1 -0
- package/dist/assets/kind-compat.js +33 -0
- package/dist/assets/kind-compat.js.map +1 -0
- package/dist/assets/list.d.ts +46 -0
- package/dist/assets/list.d.ts.map +1 -0
- package/dist/assets/list.js +102 -0
- package/dist/assets/list.js.map +1 -0
- package/dist/assets/manifest-default.d.ts +56 -0
- package/dist/assets/manifest-default.d.ts.map +1 -0
- package/dist/assets/manifest-default.js +120 -0
- package/dist/assets/manifest-default.js.map +1 -0
- package/dist/assets/manifest-filename.d.ts +52 -0
- package/dist/assets/manifest-filename.d.ts.map +1 -0
- package/dist/assets/manifest-filename.js +104 -0
- package/dist/assets/manifest-filename.js.map +1 -0
- package/dist/assets/manifest-locale.d.ts +60 -0
- package/dist/assets/manifest-locale.d.ts.map +1 -0
- package/dist/assets/manifest-locale.js +206 -0
- package/dist/assets/manifest-locale.js.map +1 -0
- package/dist/assets/manifest-merge.d.ts +66 -0
- package/dist/assets/manifest-merge.d.ts.map +1 -0
- package/dist/assets/manifest-merge.js +82 -0
- package/dist/assets/manifest-merge.js.map +1 -0
- package/dist/assets/manifest.d.ts +83 -0
- package/dist/assets/manifest.d.ts.map +1 -0
- package/dist/assets/manifest.js +93 -0
- package/dist/assets/manifest.js.map +1 -0
- package/dist/assets/mime-sniff.d.ts +18 -0
- package/dist/assets/mime-sniff.d.ts.map +1 -0
- package/dist/assets/mime-sniff.js +84 -0
- package/dist/assets/mime-sniff.js.map +1 -0
- package/dist/assets/preprocess-svg.d.ts +3 -0
- package/dist/assets/preprocess-svg.d.ts.map +1 -0
- package/dist/assets/preprocess-svg.js +49 -0
- package/dist/assets/preprocess-svg.js.map +1 -0
- package/dist/assets/preprocess.d.ts +62 -0
- package/dist/assets/preprocess.d.ts.map +1 -0
- package/dist/assets/preprocess.js +86 -0
- package/dist/assets/preprocess.js.map +1 -0
- package/dist/assets/publish-plan.d.ts +41 -0
- package/dist/assets/publish-plan.d.ts.map +1 -0
- package/dist/assets/publish-plan.js +49 -0
- package/dist/assets/publish-plan.js.map +1 -0
- package/dist/assets/publish.d.ts +33 -0
- package/dist/assets/publish.d.ts.map +1 -0
- package/dist/assets/publish.js +81 -0
- package/dist/assets/publish.js.map +1 -0
- package/dist/assets/refs.d.ts +37 -0
- package/dist/assets/refs.d.ts.map +1 -0
- package/dist/assets/refs.js +33 -0
- package/dist/assets/refs.js.map +1 -0
- package/dist/assets/remove-override.d.ts +42 -0
- package/dist/assets/remove-override.d.ts.map +1 -0
- package/dist/assets/remove-override.js +53 -0
- package/dist/assets/remove-override.js.map +1 -0
- package/dist/assets/rename.d.ts +43 -0
- package/dist/assets/rename.d.ts.map +1 -0
- package/dist/assets/rename.js +271 -0
- package/dist/assets/rename.js.map +1 -0
- package/dist/assets/replace.d.ts +37 -0
- package/dist/assets/replace.d.ts.map +1 -0
- package/dist/assets/replace.js +195 -0
- package/dist/assets/replace.js.map +1 -0
- package/dist/assets/resolve.d.ts +141 -0
- package/dist/assets/resolve.d.ts.map +1 -0
- package/dist/assets/resolve.js +381 -0
- package/dist/assets/resolve.js.map +1 -0
- package/dist/assets/rewrite-manifest-asset-ref.d.ts +44 -0
- package/dist/assets/rewrite-manifest-asset-ref.d.ts.map +1 -0
- package/dist/assets/rewrite-manifest-asset-ref.js +51 -0
- package/dist/assets/rewrite-manifest-asset-ref.js.map +1 -0
- package/dist/assets/scan-manifest-for-asset.d.ts +63 -0
- package/dist/assets/scan-manifest-for-asset.d.ts.map +1 -0
- package/dist/assets/scan-manifest-for-asset.js +105 -0
- package/dist/assets/scan-manifest-for-asset.js.map +1 -0
- package/dist/assets/serve-route.d.ts +45 -0
- package/dist/assets/serve-route.d.ts.map +1 -0
- package/dist/assets/serve-route.js +123 -0
- package/dist/assets/serve-route.js.map +1 -0
- package/dist/assets/svg-sanitize.d.ts +38 -0
- package/dist/assets/svg-sanitize.d.ts.map +1 -0
- package/dist/assets/svg-sanitize.js +209 -0
- package/dist/assets/svg-sanitize.js.map +1 -0
- package/dist/assets/update-metadata.d.ts +61 -0
- package/dist/assets/update-metadata.d.ts.map +1 -0
- package/dist/assets/update-metadata.js +82 -0
- package/dist/assets/update-metadata.js.map +1 -0
- package/dist/assets/url.d.ts +82 -0
- package/dist/assets/url.d.ts.map +1 -0
- package/dist/assets/url.js +103 -0
- package/dist/assets/url.js.map +1 -0
- package/dist/assets/validate.d.ts +74 -0
- package/dist/assets/validate.d.ts.map +1 -0
- package/dist/assets/validate.js +136 -0
- package/dist/assets/validate.js.map +1 -0
- package/dist/assets/variants.d.ts +23 -0
- package/dist/assets/variants.d.ts.map +1 -0
- package/dist/assets/variants.js +74 -0
- package/dist/assets/variants.js.map +1 -0
- package/dist/audit/config.d.ts +75 -0
- package/dist/audit/config.d.ts.map +1 -0
- package/dist/audit/config.js +91 -0
- package/dist/audit/config.js.map +1 -0
- package/dist/audit/context.d.ts +98 -0
- package/dist/audit/context.d.ts.map +1 -0
- package/dist/audit/context.js +51 -0
- package/dist/audit/context.js.map +1 -0
- package/dist/audit/errors.d.ts +73 -0
- package/dist/audit/errors.d.ts.map +1 -0
- package/dist/audit/errors.js +78 -0
- package/dist/audit/errors.js.map +1 -0
- package/dist/audit/index.d.ts +16 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +10 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/provider.d.ts +73 -0
- package/dist/audit/provider.d.ts.map +1 -0
- package/dist/audit/provider.js +2 -0
- package/dist/audit/provider.js.map +1 -0
- package/dist/audit/providers/history.d.ts +66 -0
- package/dist/audit/providers/history.d.ts.map +1 -0
- package/dist/audit/providers/history.js +102 -0
- package/dist/audit/providers/history.js.map +1 -0
- package/dist/audit/pseudonymize.d.ts +26 -0
- package/dist/audit/pseudonymize.d.ts.map +1 -0
- package/dist/audit/pseudonymize.js +86 -0
- package/dist/audit/pseudonymize.js.map +1 -0
- package/dist/audit/recorder.d.ts +102 -0
- package/dist/audit/recorder.d.ts.map +1 -0
- package/dist/audit/recorder.js +55 -0
- package/dist/audit/recorder.js.map +1 -0
- package/dist/audit/retention.d.ts +83 -0
- package/dist/audit/retention.d.ts.map +1 -0
- package/dist/audit/retention.js +142 -0
- package/dist/audit/retention.js.map +1 -0
- package/dist/audit/source-ip.d.ts +32 -0
- package/dist/audit/source-ip.d.ts.map +1 -0
- package/dist/audit/source-ip.js +164 -0
- package/dist/audit/source-ip.js.map +1 -0
- package/dist/audit/types.d.ts +143 -0
- package/dist/audit/types.d.ts.map +1 -0
- package/dist/audit/types.js +33 -0
- package/dist/audit/types.js.map +1 -0
- package/dist/audit/user-agent.d.ts +28 -0
- package/dist/audit/user-agent.d.ts.map +1 -0
- package/dist/audit/user-agent.js +63 -0
- package/dist/audit/user-agent.js.map +1 -0
- package/dist/auth/capabilities.d.ts +28 -0
- package/dist/auth/capabilities.d.ts.map +1 -0
- package/dist/auth/capabilities.js +101 -0
- package/dist/auth/capabilities.js.map +1 -0
- package/dist/auth/config.d.ts +109 -0
- package/dist/auth/config.d.ts.map +1 -0
- package/dist/auth/config.js +221 -0
- package/dist/auth/config.js.map +1 -0
- package/dist/auth/errors.d.ts +72 -0
- package/dist/auth/errors.d.ts.map +1 -0
- package/dist/auth/errors.js +78 -0
- package/dist/auth/errors.js.map +1 -0
- package/dist/auth/factory.d.ts +43 -0
- package/dist/auth/factory.d.ts.map +1 -0
- package/dist/auth/factory.js +48 -0
- package/dist/auth/factory.js.map +1 -0
- package/dist/auth/index.d.ts +21 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +14 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/ip-match.d.ts +29 -0
- package/dist/auth/ip-match.d.ts.map +1 -0
- package/dist/auth/ip-match.js +162 -0
- package/dist/auth/ip-match.js.map +1 -0
- package/dist/auth/provider.d.ts +76 -0
- package/dist/auth/provider.d.ts.map +1 -0
- package/dist/auth/provider.js +2 -0
- package/dist/auth/provider.js.map +1 -0
- package/dist/auth/providers/aws-cognito.d.ts +55 -0
- package/dist/auth/providers/aws-cognito.d.ts.map +1 -0
- package/dist/auth/providers/aws-cognito.js +114 -0
- package/dist/auth/providers/aws-cognito.js.map +1 -0
- package/dist/auth/providers/azure-easy-auth.d.ts +7 -0
- package/dist/auth/providers/azure-easy-auth.d.ts.map +1 -0
- package/dist/auth/providers/azure-easy-auth.js +48 -0
- package/dist/auth/providers/azure-easy-auth.js.map +1 -0
- package/dist/auth/providers/cloudflare-access.d.ts +71 -0
- package/dist/auth/providers/cloudflare-access.d.ts.map +1 -0
- package/dist/auth/providers/cloudflare-access.js +120 -0
- package/dist/auth/providers/cloudflare-access.js.map +1 -0
- package/dist/auth/providers/forwarded-user.d.ts +31 -0
- package/dist/auth/providers/forwarded-user.d.ts.map +1 -0
- package/dist/auth/providers/forwarded-user.js +72 -0
- package/dist/auth/providers/forwarded-user.js.map +1 -0
- package/dist/auth/providers/none.d.ts +6 -0
- package/dist/auth/providers/none.d.ts.map +1 -0
- package/dist/auth/providers/none.js +19 -0
- package/dist/auth/providers/none.js.map +1 -0
- package/dist/auth/providers/tailscale.d.ts +7 -0
- package/dist/auth/providers/tailscale.d.ts.map +1 -0
- package/dist/auth/providers/tailscale.js +30 -0
- package/dist/auth/providers/tailscale.js.map +1 -0
- package/dist/auth/role-resolver.d.ts +38 -0
- package/dist/auth/role-resolver.d.ts.map +1 -0
- package/dist/auth/role-resolver.js +92 -0
- package/dist/auth/role-resolver.js.map +1 -0
- package/dist/auth/types.d.ts +150 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +60 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/cache/errors.d.ts +41 -0
- package/dist/cache/errors.d.ts.map +1 -0
- package/dist/cache/errors.js +44 -0
- package/dist/cache/errors.js.map +1 -0
- package/dist/cache/factories.d.ts +17 -0
- package/dist/cache/factories.d.ts.map +1 -0
- package/dist/cache/factories.js +17 -0
- package/dist/cache/factories.js.map +1 -0
- package/dist/cache/keys.d.ts +63 -0
- package/dist/cache/keys.d.ts.map +1 -0
- package/dist/cache/keys.js +145 -0
- package/dist/cache/keys.js.map +1 -0
- package/dist/cache/memory.d.ts +51 -0
- package/dist/cache/memory.d.ts.map +1 -0
- package/dist/cache/memory.js +204 -0
- package/dist/cache/memory.js.map +1 -0
- package/dist/cache/per-site.d.ts +22 -0
- package/dist/cache/per-site.d.ts.map +1 -0
- package/dist/cache/per-site.js +114 -0
- package/dist/cache/per-site.js.map +1 -0
- package/dist/cache/types.d.ts +142 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +33 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/cli/archive.d.ts +44 -0
- package/dist/cli/archive.d.ts.map +1 -0
- package/dist/cli/archive.js +310 -0
- package/dist/cli/archive.js.map +1 -0
- package/dist/cli/assets-cli.d.ts +58 -0
- package/dist/cli/assets-cli.d.ts.map +1 -0
- package/dist/cli/assets-cli.js +233 -0
- package/dist/cli/assets-cli.js.map +1 -0
- package/dist/cli/assets-display.d.ts +112 -0
- package/dist/cli/assets-display.d.ts.map +1 -0
- package/dist/cli/assets-display.js +106 -0
- package/dist/cli/assets-display.js.map +1 -0
- package/dist/cli/bootstrap.d.ts +15 -10
- package/dist/cli/bootstrap.d.ts.map +1 -1
- package/dist/cli/bootstrap.js +59 -24
- package/dist/cli/bootstrap.js.map +1 -1
- package/dist/cli/dev-template-watcher.d.ts +29 -0
- package/dist/cli/dev-template-watcher.d.ts.map +1 -0
- package/dist/cli/dev-template-watcher.js +38 -0
- package/dist/cli/dev-template-watcher.js.map +1 -0
- package/dist/cli/history.d.ts.map +1 -1
- package/dist/cli/history.js +5 -3
- package/dist/cli/history.js.map +1 -1
- package/dist/cli/index.js +737 -374
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/validate-flags.d.ts +29 -0
- package/dist/cli/validate-flags.d.ts.map +1 -0
- package/dist/cli/validate-flags.js +49 -0
- package/dist/cli/validate-flags.js.map +1 -0
- package/dist/compare.d.ts +1 -1
- package/dist/compare.d.ts.map +1 -1
- package/dist/compare.js +40 -35
- package/dist/compare.js.map +1 -1
- package/dist/component-ids.d.ts +25 -0
- package/dist/component-ids.d.ts.map +1 -0
- package/dist/component-ids.js +83 -0
- package/dist/component-ids.js.map +1 -0
- package/dist/config/define.d.ts +61 -0
- package/dist/config/define.d.ts.map +1 -0
- package/dist/config/define.js +64 -0
- package/dist/config/define.js.map +1 -0
- package/dist/config/errors.d.ts +32 -0
- package/dist/config/errors.d.ts.map +1 -0
- package/dist/config/errors.js +40 -0
- package/dist/config/errors.js.map +1 -0
- package/dist/config/index.d.ts +13 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +20 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +105 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +265 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schemas.d.ts +89 -0
- package/dist/config/schemas.d.ts.map +1 -0
- package/dist/config/schemas.js +172 -0
- package/dist/config/schemas.js.map +1 -0
- package/dist/config/types.d.ts +32 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +15 -0
- package/dist/config/types.js.map +1 -0
- package/dist/dep-sidecars.d.ts +127 -0
- package/dist/dep-sidecars.d.ts.map +1 -0
- package/dist/dep-sidecars.js +122 -0
- package/dist/dep-sidecars.js.map +1 -0
- package/dist/deploy/cloudflare-workers.d.ts +46 -0
- package/dist/deploy/cloudflare-workers.d.ts.map +1 -0
- package/dist/deploy/cloudflare-workers.js +213 -0
- package/dist/deploy/cloudflare-workers.js.map +1 -0
- package/dist/deploy/errors.d.ts +66 -0
- package/dist/deploy/errors.d.ts.map +1 -0
- package/dist/deploy/errors.js +82 -0
- package/dist/deploy/errors.js.map +1 -0
- package/dist/deploy/index.d.ts +9 -0
- package/dist/deploy/index.d.ts.map +1 -0
- package/dist/deploy/index.js +3 -0
- package/dist/deploy/index.js.map +1 -0
- package/dist/deploy/types.d.ts +162 -0
- package/dist/deploy/types.d.ts.map +1 -0
- package/dist/deploy/types.js +2 -0
- package/dist/deploy/types.js.map +1 -0
- package/dist/editor/AssetEmbeddedWidget.d.ts +3 -0
- package/dist/editor/AssetEmbeddedWidget.d.ts.map +1 -0
- package/dist/editor/AssetEmbeddedWidget.js +146 -0
- package/dist/editor/AssetEmbeddedWidget.js.map +1 -0
- package/dist/editor/mount.d.ts +12 -1
- package/dist/editor/mount.d.ts.map +1 -1
- package/dist/editor/mount.js +36 -5
- package/dist/editor/mount.js.map +1 -1
- package/dist/format.d.ts +44 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +65 -0
- package/dist/format.js.map +1 -0
- package/dist/fragment-deps.d.ts +24 -0
- package/dist/fragment-deps.d.ts.map +1 -0
- package/dist/fragment-deps.js +20 -0
- package/dist/fragment-deps.js.map +1 -0
- package/dist/fragments/create.d.ts +70 -0
- package/dist/fragments/create.d.ts.map +1 -0
- package/dist/fragments/create.js +93 -0
- package/dist/fragments/create.js.map +1 -0
- package/dist/fragments/publish.d.ts +37 -0
- package/dist/fragments/publish.d.ts.map +1 -0
- package/dist/fragments/publish.js +52 -0
- package/dist/fragments/publish.js.map +1 -0
- package/dist/fragments/save.d.ts +81 -0
- package/dist/fragments/save.d.ts.map +1 -0
- package/dist/fragments/save.js +105 -0
- package/dist/fragments/save.js.map +1 -0
- package/dist/hash.d.ts +0 -6
- package/dist/hash.d.ts.map +1 -1
- package/dist/hash.js +0 -18
- package/dist/hash.js.map +1 -1
- package/dist/history-provider.d.ts.map +1 -1
- package/dist/history-provider.js +30 -8
- package/dist/history-provider.js.map +1 -1
- package/dist/history-recorder.d.ts +10 -6
- package/dist/history-recorder.d.ts.map +1 -1
- package/dist/history-recorder.js +13 -5
- package/dist/history-recorder.js.map +1 -1
- package/dist/history-restorer.d.ts.map +1 -1
- package/dist/history-restorer.js +34 -2
- package/dist/history-restorer.js.map +1 -1
- package/dist/history.d.ts +26 -8
- package/dist/history.d.ts.map +1 -1
- package/dist/hooks/audit-emitter.d.ts +73 -0
- package/dist/hooks/audit-emitter.d.ts.map +1 -0
- package/dist/hooks/audit-emitter.js +13 -0
- package/dist/hooks/audit-emitter.js.map +1 -0
- package/dist/hooks/context.d.ts +78 -0
- package/dist/hooks/context.d.ts.map +1 -0
- package/dist/hooks/context.js +56 -0
- package/dist/hooks/context.js.map +1 -0
- package/dist/hooks/contribution.d.ts +90 -0
- package/dist/hooks/contribution.d.ts.map +1 -0
- package/dist/hooks/contribution.js +2 -0
- package/dist/hooks/contribution.js.map +1 -0
- package/dist/hooks/dispatch.d.ts +30 -0
- package/dist/hooks/dispatch.d.ts.map +1 -0
- package/dist/hooks/dispatch.js +252 -0
- package/dist/hooks/dispatch.js.map +1 -0
- package/dist/hooks/errors.d.ts +100 -0
- package/dist/hooks/errors.d.ts.map +1 -0
- package/dist/hooks/errors.js +103 -0
- package/dist/hooks/errors.js.map +1 -0
- package/dist/hooks/index.d.ts +15 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +6 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/registry.d.ts +53 -0
- package/dist/hooks/registry.d.ts.map +1 -0
- package/dist/hooks/registry.js +139 -0
- package/dist/hooks/registry.js.map +1 -0
- package/dist/hooks/storage.d.ts +43 -0
- package/dist/hooks/storage.d.ts.map +1 -0
- package/dist/hooks/storage.js +2 -0
- package/dist/hooks/storage.js.map +1 -0
- package/dist/hooks/types.d.ts +324 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +2 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +27 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +50 -7
- package/dist/index.js.map +1 -1
- package/dist/locale.d.ts +25 -1
- package/dist/locale.d.ts.map +1 -1
- package/dist/locale.js +44 -2
- package/dist/locale.js.map +1 -1
- package/dist/manifest-save.d.ts +255 -0
- package/dist/manifest-save.d.ts.map +1 -0
- package/dist/manifest-save.js +260 -0
- package/dist/manifest-save.js.map +1 -0
- package/dist/manifest.d.ts +1 -2
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +43 -44
- package/dist/manifest.js.map +1 -1
- package/dist/node-floor.d.ts +3 -0
- package/dist/node-floor.d.ts.map +1 -0
- package/dist/node-floor.js +3 -0
- package/dist/node-floor.js.map +1 -0
- package/dist/pages/create.d.ts +103 -0
- package/dist/pages/create.d.ts.map +1 -0
- package/dist/pages/create.js +117 -0
- package/dist/pages/create.js.map +1 -0
- package/dist/pages/publish.d.ts +59 -0
- package/dist/pages/publish.d.ts.map +1 -0
- package/dist/pages/publish.js +78 -0
- package/dist/pages/publish.js.map +1 -0
- package/dist/pages/save.d.ts +97 -0
- package/dist/pages/save.d.ts.map +1 -0
- package/dist/pages/save.js +138 -0
- package/dist/pages/save.js.map +1 -0
- package/dist/providers/_atomic-write.d.ts +9 -0
- package/dist/providers/_atomic-write.d.ts.map +1 -0
- package/dist/providers/_atomic-write.js +72 -0
- package/dist/providers/_atomic-write.js.map +1 -0
- package/dist/providers/_rm-ignore-missing.d.ts +31 -0
- package/dist/providers/_rm-ignore-missing.d.ts.map +1 -0
- package/dist/providers/_rm-ignore-missing.js +12 -0
- package/dist/providers/_rm-ignore-missing.js.map +1 -0
- package/dist/providers/_stream-interop.d.ts +23 -0
- package/dist/providers/_stream-interop.d.ts.map +1 -0
- package/dist/providers/_stream-interop.js +21 -0
- package/dist/providers/_stream-interop.js.map +1 -0
- package/dist/providers/azure-blob.d.ts.map +1 -1
- package/dist/providers/azure-blob.js +60 -0
- package/dist/providers/azure-blob.js.map +1 -1
- package/dist/providers/factories.d.ts +65 -0
- package/dist/providers/factories.d.ts.map +1 -0
- package/dist/providers/factories.js +189 -0
- package/dist/providers/factories.js.map +1 -0
- package/dist/providers/filesystem.d.ts +4 -0
- package/dist/providers/filesystem.d.ts.map +1 -1
- package/dist/providers/filesystem.js +63 -2
- package/dist/providers/filesystem.js.map +1 -1
- package/dist/providers/s3.d.ts.map +1 -1
- package/dist/providers/s3.js +84 -1
- package/dist/providers/s3.js.map +1 -1
- package/dist/publish-item.d.ts +225 -0
- package/dist/publish-item.d.ts.map +1 -0
- package/dist/publish-item.js +210 -0
- package/dist/publish-item.js.map +1 -0
- package/dist/publish-rendered.d.ts +37 -17
- package/dist/publish-rendered.d.ts.map +1 -1
- package/dist/publish-rendered.js +144 -71
- package/dist/publish-rendered.js.map +1 -1
- package/dist/publish-renderers.d.ts +132 -0
- package/dist/publish-renderers.d.ts.map +1 -0
- package/dist/publish-renderers.js +240 -0
- package/dist/publish-renderers.js.map +1 -0
- package/dist/publish-run.d.ts +223 -0
- package/dist/publish-run.d.ts.map +1 -0
- package/dist/publish-run.js +307 -0
- package/dist/publish-run.js.map +1 -0
- package/dist/publish.d.ts +13 -12
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +24 -57
- package/dist/publish.js.map +1 -1
- package/dist/render-for-analysis.d.ts +24 -0
- package/dist/render-for-analysis.d.ts.map +1 -0
- package/dist/render-for-analysis.js +146 -0
- package/dist/render-for-analysis.js.map +1 -0
- package/dist/resolver.d.ts +12 -2
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +101 -32
- package/dist/resolver.js.map +1 -1
- package/dist/runtime/archive-marker.d.ts +62 -0
- package/dist/runtime/archive-marker.d.ts.map +1 -0
- package/dist/runtime/archive-marker.js +88 -0
- package/dist/runtime/archive-marker.js.map +1 -0
- package/dist/runtime/capability-gap-warnings.d.ts +42 -0
- package/dist/runtime/capability-gap-warnings.d.ts.map +1 -0
- package/dist/runtime/capability-gap-warnings.js +28 -0
- package/dist/runtime/capability-gap-warnings.js.map +1 -0
- package/dist/runtime/redirects-emit.d.ts +93 -0
- package/dist/runtime/redirects-emit.d.ts.map +1 -0
- package/dist/runtime/redirects-emit.js +89 -0
- package/dist/runtime/redirects-emit.js.map +1 -0
- package/dist/runtime/runtime-capabilities.d.ts +79 -0
- package/dist/runtime/runtime-capabilities.d.ts.map +1 -0
- package/dist/runtime/runtime-capabilities.js +60 -0
- package/dist/runtime/runtime-capabilities.js.map +1 -0
- package/dist/save-etag.d.ts +69 -0
- package/dist/save-etag.d.ts.map +1 -0
- package/dist/save-etag.js +118 -0
- package/dist/save-etag.js.map +1 -0
- package/dist/schema/dimensions.d.ts +78 -0
- package/dist/schema/dimensions.d.ts.map +1 -0
- package/dist/schema/dimensions.js +97 -0
- package/dist/schema/dimensions.js.map +1 -0
- package/dist/schema/helpers.d.ts +108 -0
- package/dist/schema/helpers.d.ts.map +1 -0
- package/dist/schema/helpers.js +133 -0
- package/dist/schema/helpers.js.map +1 -0
- package/dist/schema/index.d.ts +27 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +25 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/types.d.ts +390 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +25 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/selector-chain.d.ts +63 -0
- package/dist/selector-chain.d.ts.map +1 -0
- package/dist/selector-chain.js +58 -0
- package/dist/selector-chain.js.map +1 -0
- package/dist/sidecars.d.ts +19 -18
- package/dist/sidecars.d.ts.map +1 -1
- package/dist/sidecars.js +70 -62
- package/dist/sidecars.js.map +1 -1
- package/dist/site-loader.d.ts +42 -4
- package/dist/site-loader.d.ts.map +1 -1
- package/dist/site-loader.js +27 -8
- package/dist/site-loader.js.map +1 -1
- package/dist/targets.d.ts +21 -12
- package/dist/targets.d.ts.map +1 -1
- package/dist/targets.js +27 -117
- package/dist/targets.js.map +1 -1
- package/dist/testing/admin-cache-contract.d.ts +52 -0
- package/dist/testing/admin-cache-contract.d.ts.map +1 -0
- package/dist/testing/admin-cache-contract.js +203 -0
- package/dist/testing/admin-cache-contract.js.map +1 -0
- package/dist/testing/index.d.ts +11 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +11 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/themes.d.ts +69 -0
- package/dist/themes.d.ts.map +1 -0
- package/dist/themes.js +85 -0
- package/dist/themes.js.map +1 -0
- package/dist/transforms/adapter.d.ts +115 -0
- package/dist/transforms/adapter.d.ts.map +1 -0
- package/dist/transforms/adapter.js +2 -0
- package/dist/transforms/adapter.js.map +1 -0
- package/dist/transforms/cloudflare.d.ts +17 -0
- package/dist/transforms/cloudflare.d.ts.map +1 -0
- package/dist/transforms/cloudflare.js +110 -0
- package/dist/transforms/cloudflare.js.map +1 -0
- package/dist/transforms/factories.d.ts +16 -0
- package/dist/transforms/factories.d.ts.map +1 -0
- package/dist/transforms/factories.js +18 -0
- package/dist/transforms/factories.js.map +1 -0
- package/dist/transforms/index.d.ts +17 -0
- package/dist/transforms/index.d.ts.map +1 -0
- package/dist/transforms/index.js +6 -0
- package/dist/transforms/index.js.map +1 -0
- package/dist/transforms/sharp.d.ts +17 -0
- package/dist/transforms/sharp.d.ts.map +1 -0
- package/dist/transforms/sharp.js +57 -0
- package/dist/transforms/sharp.js.map +1 -0
- package/dist/types.d.ts +485 -34
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +20 -1
- package/dist/types.js.map +1 -1
- package/dist/validation/alt-required-walker.d.ts +27 -0
- package/dist/validation/alt-required-walker.d.ts.map +1 -0
- package/dist/validation/alt-required-walker.js +108 -0
- package/dist/validation/alt-required-walker.js.map +1 -0
- package/dist/validation/default-registry.d.ts +12 -0
- package/dist/validation/default-registry.d.ts.map +1 -0
- package/dist/validation/default-registry.js +55 -0
- package/dist/validation/default-registry.js.map +1 -0
- package/dist/validation/publish-audit.d.ts +44 -0
- package/dist/validation/publish-audit.d.ts.map +1 -0
- package/dist/validation/publish-audit.js +64 -0
- package/dist/validation/publish-audit.js.map +1 -0
- package/dist/validation/registry.d.ts +23 -0
- package/dist/validation/registry.d.ts.map +1 -0
- package/dist/validation/registry.js +15 -0
- package/dist/validation/registry.js.map +1 -0
- package/dist/validation/save-delta.d.ts +46 -0
- package/dist/validation/save-delta.d.ts.map +1 -0
- package/dist/validation/save-delta.js +57 -0
- package/dist/validation/save-delta.js.map +1 -0
- package/dist/validation/scanner.d.ts +91 -0
- package/dist/validation/scanner.d.ts.map +1 -0
- package/dist/validation/scanner.js +327 -0
- package/dist/validation/scanner.js.map +1 -0
- package/dist/validation/template-impact.d.ts +52 -0
- package/dist/validation/template-impact.d.ts.map +1 -0
- package/dist/validation/template-impact.js +53 -0
- package/dist/validation/template-impact.js.map +1 -0
- package/dist/validation/types.d.ts +123 -0
- package/dist/validation/types.d.ts.map +1 -0
- package/dist/validation/types.js +7 -0
- package/dist/validation/types.js.map +1 -0
- package/dist/validation/validators/accessibility.d.ts +3 -0
- package/dist/validation/validators/accessibility.d.ts.map +1 -0
- package/dist/validation/validators/accessibility.js +106 -0
- package/dist/validation/validators/accessibility.js.map +1 -0
- package/dist/validation/validators/aliasof-points-to-archived.d.ts +40 -0
- package/dist/validation/validators/aliasof-points-to-archived.d.ts.map +1 -0
- package/dist/validation/validators/aliasof-points-to-archived.js +34 -0
- package/dist/validation/validators/aliasof-points-to-archived.js.map +1 -0
- package/dist/validation/validators/alt-required.d.ts +3 -0
- package/dist/validation/validators/alt-required.d.ts.map +1 -0
- package/dist/validation/validators/alt-required.js +118 -0
- package/dist/validation/validators/alt-required.js.map +1 -0
- package/dist/validation/validators/archive-not-supported-on-target.d.ts +3 -0
- package/dist/validation/validators/archive-not-supported-on-target.d.ts.map +1 -0
- package/dist/validation/validators/archive-not-supported-on-target.js +38 -0
- package/dist/validation/validators/archive-not-supported-on-target.js.map +1 -0
- package/dist/validation/validators/broken-links.d.ts +3 -0
- package/dist/validation/validators/broken-links.d.ts.map +1 -0
- package/dist/validation/validators/broken-links.js +190 -0
- package/dist/validation/validators/broken-links.js.map +1 -0
- package/dist/validation/validators/circular-alias.d.ts +36 -0
- package/dist/validation/validators/circular-alias.d.ts.map +1 -0
- package/dist/validation/validators/circular-alias.js +63 -0
- package/dist/validation/validators/circular-alias.js.map +1 -0
- package/dist/validation/validators/circular-fragment.d.ts +15 -0
- package/dist/validation/validators/circular-fragment.d.ts.map +1 -0
- package/dist/validation/validators/circular-fragment.js +97 -0
- package/dist/validation/validators/circular-fragment.js.map +1 -0
- package/dist/validation/validators/dangling-alias.d.ts +38 -0
- package/dist/validation/validators/dangling-alias.d.ts.map +1 -0
- package/dist/validation/validators/dangling-alias.js +31 -0
- package/dist/validation/validators/dangling-alias.js.map +1 -0
- package/dist/validation/validators/deploy-target-type-supported.d.ts +3 -0
- package/dist/validation/validators/deploy-target-type-supported.d.ts.map +1 -0
- package/dist/validation/validators/deploy-target-type-supported.js +32 -0
- package/dist/validation/validators/deploy-target-type-supported.js.map +1 -0
- package/dist/validation/validators/dynamic-route-conflict.d.ts +18 -0
- package/dist/validation/validators/dynamic-route-conflict.d.ts.map +1 -0
- package/dist/validation/validators/dynamic-route-conflict.js +80 -0
- package/dist/validation/validators/dynamic-route-conflict.js.map +1 -0
- package/dist/validation/validators/html-validity.d.ts +3 -0
- package/dist/validation/validators/html-validity.d.ts.map +1 -0
- package/dist/validation/validators/html-validity.js +89 -0
- package/dist/validation/validators/html-validity.js.map +1 -0
- package/dist/validation/validators/orphaned-locale-file.d.ts +21 -0
- package/dist/validation/validators/orphaned-locale-file.d.ts.map +1 -0
- package/dist/validation/validators/orphaned-locale-file.js +84 -0
- package/dist/validation/validators/orphaned-locale-file.js.map +1 -0
- package/dist/validation/validators/referenced-archived-without-alias.d.ts +3 -0
- package/dist/validation/validators/referenced-archived-without-alias.d.ts.map +1 -0
- package/dist/validation/validators/referenced-archived-without-alias.js +65 -0
- package/dist/validation/validators/referenced-archived-without-alias.js.map +1 -0
- package/dist/validation/validators/referenced-asset-exists.d.ts +13 -0
- package/dist/validation/validators/referenced-asset-exists.d.ts.map +1 -0
- package/dist/validation/validators/referenced-asset-exists.js +80 -0
- package/dist/validation/validators/referenced-asset-exists.js.map +1 -0
- package/dist/validation/validators/referenced-fragment-exists.d.ts +9 -0
- package/dist/validation/validators/referenced-fragment-exists.d.ts.map +1 -0
- package/dist/validation/validators/referenced-fragment-exists.js +52 -0
- package/dist/validation/validators/referenced-fragment-exists.js.map +1 -0
- package/dist/validation/validators/referenced-template-exists.d.ts +10 -0
- package/dist/validation/validators/referenced-template-exists.d.ts.map +1 -0
- package/dist/validation/validators/referenced-template-exists.js +74 -0
- package/dist/validation/validators/referenced-template-exists.js.map +1 -0
- package/dist/validation/validators/schema-conformance.d.ts +17 -0
- package/dist/validation/validators/schema-conformance.d.ts.map +1 -0
- package/dist/validation/validators/schema-conformance.js +94 -0
- package/dist/validation/validators/schema-conformance.js.map +1 -0
- package/dist/validation/validators/target-deploy-coverage.d.ts +3 -0
- package/dist/validation/validators/target-deploy-coverage.d.ts.map +1 -0
- package/dist/validation/validators/target-deploy-coverage.js +37 -0
- package/dist/validation/validators/target-deploy-coverage.js.map +1 -0
- package/dist/validation/validators/unused-fragment.d.ts +16 -0
- package/dist/validation/validators/unused-fragment.d.ts.map +1 -0
- package/dist/validation/validators/unused-fragment.js +86 -0
- package/dist/validation/validators/unused-fragment.js.map +1 -0
- package/package.json +69 -27
- package/admin-dist/assets/index-B6pVot0Y.css +0 -1
- package/admin-dist/assets/index-DniLwxJA.js +0 -609
- package/admin-dist/assets/rolldown-runtime-COnpUsM8.js +0 -1
- package/admin-dist/assets/vendor-rjsf-HKBAjOmQ.js +0 -32
- package/admin-dist/assets/vendor-tiptap-IyO99U4R.js +0 -142
- package/admin-dist/assets/vendor-vue-D3wBSmDf.js +0 -1
- package/dist/providers/r2.d.ts +0 -8
- package/dist/providers/r2.d.ts.map +0 -1
- package/dist/providers/r2.js +0 -86
- package/dist/providers/r2.js.map +0 -1
- package/dist/publish-locale.d.ts +0 -44
- package/dist/publish-locale.d.ts.map +0 -1
- package/dist/publish-locale.js +0 -103
- package/dist/publish-locale.js.map +0 -1
- package/dist/source-sidecars.d.ts +0 -32
- package/dist/source-sidecars.d.ts.map +0 -1
- package/dist/source-sidecars.js +0 -98
- package/dist/source-sidecars.js.map +0 -1
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Refusal detection for AI provider responses.
|
|
3
|
+
*
|
|
4
|
+
* # Why this lives in `ai/` and not `alt/`
|
|
5
|
+
*
|
|
6
|
+
* Provider safety refusals look the same regardless of task. Whether
|
|
7
|
+
* the model is asked to describe an image (alt-text) or translate a
|
|
8
|
+
* paragraph (future), a refusal arrives as a 200 OK with text like
|
|
9
|
+
* "I can't help with that" in the response body — structurally
|
|
10
|
+
* indistinguishable from a successful response without inspection.
|
|
11
|
+
*
|
|
12
|
+
* v1.5's only consumer is `alt/`, but refusal detection is conceptually
|
|
13
|
+
* cross-task. Right structure now beats right structure later, per
|
|
14
|
+
* [team-preferences rule 18]: "extract shared code when you first see
|
|
15
|
+
* the split concern". Translation as the documented next consumer
|
|
16
|
+
* (per [design-ai-implementation.md]) makes this a known split.
|
|
17
|
+
*
|
|
18
|
+
* # Marker maintenance
|
|
19
|
+
*
|
|
20
|
+
* The marker list below MUST stay current as providers tune their
|
|
21
|
+
* safety messaging. Plan: review at every major model version bump
|
|
22
|
+
* (e.g., when an adapter's `defaultModel` jumps a major). Provider-
|
|
23
|
+
* specific phrases live in the adapter (passed via `adapterMarkers`)
|
|
24
|
+
* so generic markers and provider-specific ones can evolve
|
|
25
|
+
* independently.
|
|
26
|
+
*
|
|
27
|
+
* # SOLID lenses
|
|
28
|
+
*
|
|
29
|
+
* - SRP: this module owns "raw text → structured refusal info"
|
|
30
|
+
* - OCP: per-adapter markers extend without touching the shared list
|
|
31
|
+
* - DIP: callers depend on `detectRefusal`, not on substring inspection
|
|
32
|
+
* scattered across the codebase
|
|
33
|
+
*/
|
|
34
|
+
/**
|
|
35
|
+
* Cross-provider refusal phrases. Lowercase substrings — the matcher
|
|
36
|
+
* lowercases both sides, so casing in the upstream response doesn't
|
|
37
|
+
* matter. Order is irrelevant; `Array.some` is fine at this size.
|
|
38
|
+
*
|
|
39
|
+
* Each entry corresponds to a phrase observed across at least two
|
|
40
|
+
* providers' refusal outputs. Provider-specific phrasing belongs in
|
|
41
|
+
* the adapter, passed via `adapterMarkers`.
|
|
42
|
+
*/
|
|
43
|
+
const SHARED_REFUSAL_MARKERS = [
|
|
44
|
+
"i can't describe",
|
|
45
|
+
'i cannot describe',
|
|
46
|
+
"i'm not able to describe",
|
|
47
|
+
'i am not able to describe',
|
|
48
|
+
"i'm unable to describe",
|
|
49
|
+
'i am unable to describe',
|
|
50
|
+
"i can't provide",
|
|
51
|
+
'i cannot provide',
|
|
52
|
+
"i'm unable to provide",
|
|
53
|
+
'i am unable to provide',
|
|
54
|
+
"i can't help",
|
|
55
|
+
'i cannot help',
|
|
56
|
+
"i'm not able to help",
|
|
57
|
+
"i'm sorry, but",
|
|
58
|
+
];
|
|
59
|
+
/**
|
|
60
|
+
* Minimum useful response length. Below this, even a non-refusal
|
|
61
|
+
* response is too short to be a real description — treat as a refusal
|
|
62
|
+
* with a generic reason. Calibrated for the alt-text use case where
|
|
63
|
+
* five chars is below "Cat." (4) but above "Hi" (2); empty responses
|
|
64
|
+
* also fall through here.
|
|
65
|
+
*
|
|
66
|
+
* If a future task has different length expectations (e.g., a single-
|
|
67
|
+
* word tag), the consumer should normalize the response before passing
|
|
68
|
+
* it to `detectRefusal`, OR the threshold becomes a parameter. Don't
|
|
69
|
+
* generalize speculatively — wait for the second task to force the
|
|
70
|
+
* shape.
|
|
71
|
+
*/
|
|
72
|
+
const MIN_USEFUL_LENGTH = 5;
|
|
73
|
+
/**
|
|
74
|
+
* Detect whether `text` is a refusal. Caller passes adapter-specific
|
|
75
|
+
* markers (e.g., Anthropic's particular phrasing) on top of the shared
|
|
76
|
+
* list.
|
|
77
|
+
*
|
|
78
|
+
* Returns `{ refused: false, reason: null }` for descriptive responses;
|
|
79
|
+
* `{ refused: true, reason: <truncated text> }` otherwise. Reason is
|
|
80
|
+
* truncated to 200 chars so logs and UI toasts don't render arbitrarily
|
|
81
|
+
* long refusal blocks.
|
|
82
|
+
*/
|
|
83
|
+
export function detectRefusal(text, adapterMarkers = []) {
|
|
84
|
+
const lower = text.toLowerCase();
|
|
85
|
+
for (const marker of SHARED_REFUSAL_MARKERS) {
|
|
86
|
+
if (lower.includes(marker)) {
|
|
87
|
+
return { refused: true, reason: text.slice(0, 200) };
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
for (const marker of adapterMarkers) {
|
|
91
|
+
if (lower.includes(marker.toLowerCase())) {
|
|
92
|
+
return { refused: true, reason: text.slice(0, 200) };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (text.trim().length < MIN_USEFUL_LENGTH) {
|
|
96
|
+
return { refused: true, reason: 'Empty or unusably short response' };
|
|
97
|
+
}
|
|
98
|
+
return { refused: false, reason: null };
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=refusal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refusal.js","sourceRoot":"","sources":["../../src/ai/refusal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH;;;;;;;;GAQG;AACH,MAAM,sBAAsB,GAAsB;IAChD,kBAAkB;IAClB,mBAAmB;IACnB,0BAA0B;IAC1B,2BAA2B;IAC3B,wBAAwB;IACxB,yBAAyB;IACzB,iBAAiB;IACjB,kBAAkB;IAClB,uBAAuB;IACvB,wBAAwB;IACxB,cAAc;IACd,eAAe;IACf,sBAAsB;IACtB,gBAAgB;CACjB,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAQ3B;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,iBAAoC,EAAE;IAChF,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IAChC,KAAK,MAAM,MAAM,IAAI,sBAAsB,EAAE,CAAC;QAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;QACtD,CAAC;IACH,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;QACtD,CAAC;IACH,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,iBAAiB,EAAE,CAAC;QAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAA;IACtE,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;AACzC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Default long-edge cap. Per-call override available via `maxEdge`. */
|
|
2
|
+
export declare const MAX_EDGE = 768;
|
|
3
|
+
export interface PrepareInput {
|
|
4
|
+
/** Source bytes (raw asset bytes, post-preprocess). */
|
|
5
|
+
bytes: Uint8Array;
|
|
6
|
+
/** Source MIME type from the asset manifest. */
|
|
7
|
+
mime: string;
|
|
8
|
+
/**
|
|
9
|
+
* For animated images, the analyzer's extracted first-frame poster
|
|
10
|
+
* bytes (always PNG). When provided, used directly — no further
|
|
11
|
+
* rasterization. Skip for static images.
|
|
12
|
+
*/
|
|
13
|
+
posterBytes?: Uint8Array;
|
|
14
|
+
/** Long-edge cap override; defaults to {@link MAX_EDGE}. */
|
|
15
|
+
maxEdge?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface PreparedImage {
|
|
18
|
+
/** Bytes ready to send to a vision provider. */
|
|
19
|
+
bytes: Uint8Array;
|
|
20
|
+
/** MIME of the prepared bytes — `image/jpeg` or `image/png`. */
|
|
21
|
+
mime: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Prepare image bytes for a vision-call. Single async call that picks
|
|
25
|
+
* the right code path based on input.
|
|
26
|
+
*
|
|
27
|
+
* Throws on hard failures (corrupt source bytes that sharp can't
|
|
28
|
+
* decode, even past metadata). Callers wrap in their adapter's error
|
|
29
|
+
* taxonomy.
|
|
30
|
+
*/
|
|
31
|
+
export declare function prepareForVision(input: PrepareInput): Promise<PreparedImage>;
|
|
32
|
+
//# sourceMappingURL=vision-prep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vision-prep.d.ts","sourceRoot":"","sources":["../../src/ai/vision-prep.ts"],"names":[],"mappings":"AA2DA,wEAAwE;AACxE,eAAO,MAAM,QAAQ,MAAM,CAAA;AAE3B,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,KAAK,EAAE,UAAU,CAAA;IACjB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,WAAW,CAAC,EAAE,UAAU,CAAA;IACxB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,KAAK,EAAE,UAAU,CAAA;IACjB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAA;CACb;AAWD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAuClF"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Image preprocessing for vision-using AI tasks.
|
|
3
|
+
*
|
|
4
|
+
* # Single responsibility
|
|
5
|
+
*
|
|
6
|
+
* Take raw asset bytes; return bytes suitable for sending to a vision
|
|
7
|
+
* provider. Concretely:
|
|
8
|
+
*
|
|
9
|
+
* - Resize to `MAX_EDGE` long-edge (default 768) preserving aspect ratio
|
|
10
|
+
* - Re-encode to JPEG (or PNG if alpha) post-resize
|
|
11
|
+
* - Rasterize SVG to PNG at MAX_EDGE
|
|
12
|
+
* - Pass through if already small (no needless re-encode)
|
|
13
|
+
* - Use the analyzer-extracted poster bytes for animated images
|
|
14
|
+
*
|
|
15
|
+
* No knowledge of providers, prompts, refusal, or task-specific config.
|
|
16
|
+
*
|
|
17
|
+
* # Why 768
|
|
18
|
+
*
|
|
19
|
+
* Smallest size that fits all v1.5 providers natively without quality
|
|
20
|
+
* loss:
|
|
21
|
+
*
|
|
22
|
+
* - Ollama llama3.2-vision native input is 1120×1120
|
|
23
|
+
* - Anthropic Claude (non-Opus) recommended max long edge is 1568
|
|
24
|
+
* - OpenAI gpt-4o "high detail" mode targets 768 as the short-edge
|
|
25
|
+
* value when tiling 512×512 — chosen by OpenAI as the size where
|
|
26
|
+
* in-image text remains legible
|
|
27
|
+
*
|
|
28
|
+
* 768 sits below all three ceilings, makes OpenAI tile to exactly
|
|
29
|
+
* 4 tiles + base = 765 tokens, and produces predictable cost on
|
|
30
|
+
* Anthropic (~786 tokens for a 768×768 image, well under the 1568
|
|
31
|
+
* token ceiling).
|
|
32
|
+
*
|
|
33
|
+
* Going lower (e.g., 512) hits OpenAI's "low detail" tier which the
|
|
34
|
+
* provider's own docs mark as worse for in-image text. Going higher
|
|
35
|
+
* exceeds Ollama's native input so the model downsamples internally
|
|
36
|
+
* — we'd be paying upload bandwidth for bytes that get discarded.
|
|
37
|
+
*
|
|
38
|
+
* # Per-task override
|
|
39
|
+
*
|
|
40
|
+
* Vision tasks that need different sizing (e.g., a future tag-suggestion
|
|
41
|
+
* task on detailed product shots wanting 1024) pass `maxEdge` per call.
|
|
42
|
+
* `MAX_EDGE` is the default; `prepareForVision` accepts an override.
|
|
43
|
+
*
|
|
44
|
+
* # Animated images
|
|
45
|
+
*
|
|
46
|
+
* The animated-image analyzer (shipped in media v1) extracts a
|
|
47
|
+
* first-frame PNG poster as a supplementary file. Suggester callers
|
|
48
|
+
* pass those bytes via `posterBytes` — `prepareForVision` skips its
|
|
49
|
+
* own rasterization and uses the poster directly. Cross-feature reuse
|
|
50
|
+
* over duplication.
|
|
51
|
+
*
|
|
52
|
+
* # SOLID lenses
|
|
53
|
+
*
|
|
54
|
+
* - SRP: this module owns "raw asset bytes → vision-call bytes"
|
|
55
|
+
* - OCP: a future `pdf-prep.ts` peer handles document tasks the same way
|
|
56
|
+
* - DIP: callers depend on `prepareForVision`, not on sharp directly
|
|
57
|
+
*/
|
|
58
|
+
import sharp from 'sharp';
|
|
59
|
+
/** Default long-edge cap. Per-call override available via `maxEdge`. */
|
|
60
|
+
export const MAX_EDGE = 768;
|
|
61
|
+
/**
|
|
62
|
+
* SVG rasterization density. 144 dpi is a sensible doubled-72-dpi
|
|
63
|
+
* default that produces ~2x the nominal SVG dimensions. Combined with
|
|
64
|
+
* the resize step, the final output is bounded by `maxEdge` regardless
|
|
65
|
+
* of the SVG's intrinsic size — density only affects rendering quality
|
|
66
|
+
* before the cap kicks in.
|
|
67
|
+
*/
|
|
68
|
+
const SVG_DENSITY = 144;
|
|
69
|
+
/**
|
|
70
|
+
* Prepare image bytes for a vision-call. Single async call that picks
|
|
71
|
+
* the right code path based on input.
|
|
72
|
+
*
|
|
73
|
+
* Throws on hard failures (corrupt source bytes that sharp can't
|
|
74
|
+
* decode, even past metadata). Callers wrap in their adapter's error
|
|
75
|
+
* taxonomy.
|
|
76
|
+
*/
|
|
77
|
+
export async function prepareForVision(input) {
|
|
78
|
+
const maxEdge = input.maxEdge ?? MAX_EDGE;
|
|
79
|
+
// Animated source: use the pre-extracted poster bytes (always PNG).
|
|
80
|
+
// Posters are extracted at upload time and already represent the
|
|
81
|
+
// first frame; for vision-call purposes that's what we want.
|
|
82
|
+
if (input.posterBytes) {
|
|
83
|
+
return { bytes: input.posterBytes, mime: 'image/png' };
|
|
84
|
+
}
|
|
85
|
+
// SVG: rasterize to PNG at the cap. Vector input has no intrinsic
|
|
86
|
+
// pixel size; we pick density × resize to bound the output.
|
|
87
|
+
if (input.mime === 'image/svg+xml') {
|
|
88
|
+
const buf = await sharp(input.bytes, { density: SVG_DENSITY })
|
|
89
|
+
.resize({ width: maxEdge, height: maxEdge, fit: 'inside' })
|
|
90
|
+
.png()
|
|
91
|
+
.toBuffer();
|
|
92
|
+
return { bytes: new Uint8Array(buf), mime: 'image/png' };
|
|
93
|
+
}
|
|
94
|
+
// Raster: resize if larger than maxEdge on long edge; otherwise pass
|
|
95
|
+
// through. Avoids a no-op JPEG-of-JPEG re-encode that would lose
|
|
96
|
+
// quality without saving bandwidth.
|
|
97
|
+
const meta = await sharp(input.bytes).metadata();
|
|
98
|
+
const longEdge = Math.max(meta.width ?? 0, meta.height ?? 0);
|
|
99
|
+
if (longEdge > 0 && longEdge <= maxEdge) {
|
|
100
|
+
return { bytes: input.bytes, mime: input.mime };
|
|
101
|
+
}
|
|
102
|
+
// Preserve PNG when source has alpha (logos with transparency lose
|
|
103
|
+
// semantically when flattened to JPEG). Otherwise JPEG quality 85 —
|
|
104
|
+
// sharp's default for `.jpeg()`, well-balanced for AI input.
|
|
105
|
+
const hasAlpha = meta.hasAlpha === true;
|
|
106
|
+
const pipeline = sharp(input.bytes).resize({ width: maxEdge, height: maxEdge, fit: 'inside' });
|
|
107
|
+
const buf = hasAlpha ? await pipeline.png().toBuffer() : await pipeline.jpeg({ quality: 85 }).toBuffer();
|
|
108
|
+
return {
|
|
109
|
+
bytes: new Uint8Array(buf),
|
|
110
|
+
mime: hasAlpha ? 'image/png' : 'image/jpeg',
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=vision-prep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vision-prep.js","sourceRoot":"","sources":["../../src/ai/vision-prep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,wEAAwE;AACxE,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAA;AAwB3B;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,GAAG,CAAA;AAEvB;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAmB;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAA;IAEzC,oEAAoE;IACpE,iEAAiE;IACjE,6DAA6D;IAC7D,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;IACxD,CAAC;IAED,kEAAkE;IAClE,4DAA4D;IAC5D,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;aAC3D,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;aAC1D,GAAG,EAAE;aACL,QAAQ,EAAE,CAAA;QACb,OAAO,EAAE,KAAK,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;IAC1D,CAAC;IAED,qEAAqE;IACrE,iEAAiE;IACjE,oCAAoC;IACpC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAA;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;IAC5D,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QACxC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;IACjD,CAAC;IAED,mEAAmE;IACnE,oEAAoE;IACpE,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAA;IACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC9F,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAA;IACxG,OAAO;QACL,KAAK,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC;QAC1B,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;KAC5C,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `AltTextAdapter` — provider-substitutable interface for generating
|
|
3
|
+
* alt text from image bytes.
|
|
4
|
+
*
|
|
5
|
+
* Three concrete implementations ship in v1.5: `anthropicAltAdapter`,
|
|
6
|
+
* `openAIAltAdapter`, `ollamaAltAdapter` (commits 3-5). One safe
|
|
7
|
+
* default also ships: `nullAltAdapter` (this commit), used when no
|
|
8
|
+
* adapter is configured for the target.
|
|
9
|
+
*
|
|
10
|
+
* # SOLID lenses
|
|
11
|
+
*
|
|
12
|
+
* - SRP: this module owns the alt-text task contracts (request,
|
|
13
|
+
* suggestion, adapter interface). Nothing else lives here.
|
|
14
|
+
* - OCP: new providers implement the interface and slot into the
|
|
15
|
+
* factory (commit 6). No existing module changes.
|
|
16
|
+
* - LSP: every adapter — including `nullAltAdapter` — honors the
|
|
17
|
+
* same contract. Substitutable in tests.
|
|
18
|
+
* - ISP: adapter exposes only `name`, `supports`, `generate` — no
|
|
19
|
+
* UI concerns, no config concerns.
|
|
20
|
+
* - DIP: callers depend on this interface, not on Anthropic SDK,
|
|
21
|
+
* OpenAI SDK, or Ollama HTTP details.
|
|
22
|
+
*
|
|
23
|
+
* # Why `AltSuggestion` carries refused state
|
|
24
|
+
*
|
|
25
|
+
* Vision providers can return a 200 OK with refusal text in the
|
|
26
|
+
* content field (e.g., "I can't describe this image"). The structural
|
|
27
|
+
* cut: refusal is a *successful API call with a domain-level no*.
|
|
28
|
+
* Treating refusal as a structured field — not as inspecting `text`
|
|
29
|
+
* for substrings in every consumer — keeps DIP. UI consumers branch
|
|
30
|
+
* on `refused`, not on text patterns.
|
|
31
|
+
*
|
|
32
|
+
* Considered and rejected: a `confidence: number | null` field.
|
|
33
|
+
* Vision providers don't expose calibrated confidence for free-form
|
|
34
|
+
* description tasks; a hardcoded null would be a stub-on-the-interface
|
|
35
|
+
* (LSP violation, per [team-preferences rule 18]). If a future
|
|
36
|
+
* provider exposes real calibrated confidence, it lands as a separate
|
|
37
|
+
* field — not as a retrofit of a placeholder.
|
|
38
|
+
*/
|
|
39
|
+
import type { PromptPolicy } from '../ai/compose-prompt.js';
|
|
40
|
+
/**
|
|
41
|
+
* What the caller wants. Provider-agnostic. Each field has a documented
|
|
42
|
+
* default applied by the factory when callers don't specify.
|
|
43
|
+
*/
|
|
44
|
+
export interface AltRequest {
|
|
45
|
+
/**
|
|
46
|
+
* Target language for the description (BCP 47 locale code; 'en',
|
|
47
|
+
* 'fr', 'pt-BR'). The model writes alt directly in this language —
|
|
48
|
+
* no separate translation pass. Default 'en'.
|
|
49
|
+
*/
|
|
50
|
+
locale: string;
|
|
51
|
+
/**
|
|
52
|
+
* Soft length suggestion in characters. Used in prompt guidance
|
|
53
|
+
* ("Maximum N characters") and as native `max_tokens` derivation
|
|
54
|
+
* for adapters that have it. Default 125 (WAI-ARIA convention).
|
|
55
|
+
*
|
|
56
|
+
* NOT enforced by the suggester or adapter — if the model returns
|
|
57
|
+
* longer text, the consumer sees the full string and can edit. Hard
|
|
58
|
+
* truncation would lose meaning.
|
|
59
|
+
*/
|
|
60
|
+
maxChars: number;
|
|
61
|
+
/**
|
|
62
|
+
* Output style. Closed enum; extended additively (future:
|
|
63
|
+
* `'marketing' | 'technical'`).
|
|
64
|
+
*/
|
|
65
|
+
style: AltStyle;
|
|
66
|
+
}
|
|
67
|
+
/** Closed enum; extends additively. */
|
|
68
|
+
export type AltStyle = 'descriptive';
|
|
69
|
+
/** Default `AltRequest` values, applied by the suggester when callers omit fields. */
|
|
70
|
+
export declare const DEFAULT_ALT_REQUEST: AltRequest;
|
|
71
|
+
/**
|
|
72
|
+
* What the suggester delivers. `text` is the model's output (which may
|
|
73
|
+
* be a refusal). `refused` is the structured signal: when true, don't
|
|
74
|
+
* auto-fill, surface `refusalReason` to the author instead.
|
|
75
|
+
*/
|
|
76
|
+
export interface AltSuggestion {
|
|
77
|
+
text: string;
|
|
78
|
+
/** True when the model declined or couldn't describe the image. */
|
|
79
|
+
refused: boolean;
|
|
80
|
+
/** Truncated reason text when refused; null otherwise. */
|
|
81
|
+
refusalReason: string | null;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Input to an adapter's `generate` call. The suggester does prep:
|
|
85
|
+
*
|
|
86
|
+
* - Resolves `AltRequest` from caller-provided fields + defaults
|
|
87
|
+
* - Composes the prompt via `composePrompt(request, policies)`
|
|
88
|
+
* - Calls `prepareForVision` on the bytes
|
|
89
|
+
*
|
|
90
|
+
* The adapter receives both the structured request (for native params
|
|
91
|
+
* like Anthropic's `max_tokens`) and the composed prompt string (for
|
|
92
|
+
* adapters that just inject text). Pre-computed once per call.
|
|
93
|
+
*/
|
|
94
|
+
export interface AltGenerateInput {
|
|
95
|
+
/** Bytes ready to send to the provider (post-prep, ≤ maxImageEdge). */
|
|
96
|
+
bytes: Uint8Array;
|
|
97
|
+
/** MIME of the prepared bytes — `image/jpeg` or `image/png`. */
|
|
98
|
+
mime: string;
|
|
99
|
+
/** Structured request — adapters with native parameters use this. */
|
|
100
|
+
request: AltRequest;
|
|
101
|
+
/** Composed prompt string — adapters that just need a prompt use this. */
|
|
102
|
+
prompt: string;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Per-task adapter contract. Every implementation honors this exactly;
|
|
106
|
+
* substitutable across tests and production via the factory.
|
|
107
|
+
*
|
|
108
|
+
* Throws on transport / provider errors (`AIAdapterFailedError` from
|
|
109
|
+
* `ai/errors.ts`). Refusals are NOT thrown — they're returned in the
|
|
110
|
+
* structured `AltSuggestion`. The distinction: throws are runtime
|
|
111
|
+
* failures (retryable; gateway-level concern); refusals are domain
|
|
112
|
+
* outcomes (not retryable; user-level concern).
|
|
113
|
+
*/
|
|
114
|
+
export interface AltTextAdapter {
|
|
115
|
+
/** Stable identifier for diagnostics ('anthropic', 'openai', 'ollama', 'null'). */
|
|
116
|
+
readonly name: string;
|
|
117
|
+
/**
|
|
118
|
+
* True when this adapter can describe the given MIME. v1.5 adapters
|
|
119
|
+
* support image MIMEs only. The null adapter returns false for
|
|
120
|
+
* everything.
|
|
121
|
+
*/
|
|
122
|
+
supports(mime: string): boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Generate alt text. Forwards `signal` to the underlying provider
|
|
125
|
+
* call so consumers can cancel in-flight requests (e.g., when the
|
|
126
|
+
* author starts typing into the alt field).
|
|
127
|
+
*
|
|
128
|
+
* Throws `AIAdapterFailedError` / `AIInvalidResponseError` on
|
|
129
|
+
* transport or response-shape failures. Returns refusals as
|
|
130
|
+
* `AltSuggestion` with `refused: true`.
|
|
131
|
+
*/
|
|
132
|
+
generate(input: AltGenerateInput, signal?: AbortSignal): Promise<AltSuggestion>;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Type alias for prompt policies operating on alt-text requests.
|
|
136
|
+
* Per-task policy modules implement these and pass arrays to the
|
|
137
|
+
* generic `composePrompt<AltRequest>(req, policies)`.
|
|
138
|
+
*/
|
|
139
|
+
export type AltPromptPolicy = PromptPolicy<AltRequest>;
|
|
140
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/alt/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE3D;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;;;;;;OAQG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,KAAK,EAAE,QAAQ,CAAA;CAChB;AAED,uCAAuC;AACvC,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAA;AAEpC,sFAAsF;AACtF,eAAO,MAAM,mBAAmB,EAAE,UAIjC,CAAA;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,mEAAmE;IACnE,OAAO,EAAE,OAAO,CAAA;IAChB,0DAA0D;IAC1D,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,KAAK,EAAE,UAAU,CAAA;IACjB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAA;IACZ,qEAAqE;IACrE,OAAO,EAAE,UAAU,CAAA;IACnB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,mFAAmF;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IAE/B;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;CAChF;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/alt/adapter.ts"],"names":[],"mappings":"AAuEA,sFAAsF;AACtF,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,GAAG;IACb,KAAK,EAAE,aAAa;CACrB,CAAA"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { AIProvider } from '../ai/provider.js';
|
|
2
|
+
import type { AltTextAdapter } from './adapter.js';
|
|
3
|
+
/**
|
|
4
|
+
* Default model for the Anthropic adapter. Haiku is the cost-optimized
|
|
5
|
+
* choice for the alt-text task (~$0.003/image at 768x768 input). Sites
|
|
6
|
+
* needing higher quality set `altText.model` in `site.config.ts` to a
|
|
7
|
+
* Sonnet or Opus model.
|
|
8
|
+
*/
|
|
9
|
+
export declare const ANTHROPIC_DEFAULT_MODEL = "claude-haiku-4-5";
|
|
10
|
+
/**
|
|
11
|
+
* Anthropic transport-only options. Per Path X (single-axis with
|
|
12
|
+
* transport-vs-task split for AI), these fields bind to "which Anthropic
|
|
13
|
+
* account at which endpoint" — not to per-task tuning. Per-task config
|
|
14
|
+
* (model, systemPrompt, maxTokens) lives on the resolver-supplied
|
|
15
|
+
* `AltTextTaskConfig`, not here.
|
|
16
|
+
*/
|
|
17
|
+
export interface AnthropicTransportOptions {
|
|
18
|
+
apiKey: string;
|
|
19
|
+
/**
|
|
20
|
+
* Optional override of the SDK base URL — handy for tests pointing
|
|
21
|
+
* at msw, or future operators routing through a private proxy.
|
|
22
|
+
*/
|
|
23
|
+
baseURL?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Override the SDK's retry count (default 2). Tests pass 0 to keep
|
|
26
|
+
* runs deterministic and fast; production sticks with the default
|
|
27
|
+
* so transient 429/5xx are auto-retried with backoff.
|
|
28
|
+
*/
|
|
29
|
+
maxRetries?: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Internal type for `createAnthropicAltAdapter` callers (tests).
|
|
33
|
+
* Combines transport with per-task config so existing tests don't have
|
|
34
|
+
* to thread two arguments. New code goes through the operator-facing
|
|
35
|
+
* `anthropicProvider(transport).altText(taskConfig)` chain.
|
|
36
|
+
*/
|
|
37
|
+
export interface AnthropicAltAdapterOptions extends AnthropicTransportOptions {
|
|
38
|
+
/** Model ID; defaults to {@link ANTHROPIC_DEFAULT_MODEL} when absent. */
|
|
39
|
+
model?: string;
|
|
40
|
+
/** Operator-supplied system prompt; prepended to system-composed prompt. */
|
|
41
|
+
systemPrompt?: string;
|
|
42
|
+
/** Generation token cap; provider derives from maxChars when absent. */
|
|
43
|
+
maxTokens?: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Construct the Anthropic alt-text adapter. Internal factory — kept
|
|
47
|
+
* public for tests + advanced wiring. Operator-facing config goes
|
|
48
|
+
* through `anthropicProvider(transport).altText(taskConfig)` (Path X).
|
|
49
|
+
*/
|
|
50
|
+
export declare function createAnthropicAltAdapter(opts: AnthropicAltAdapterOptions): AltTextAdapter;
|
|
51
|
+
/**
|
|
52
|
+
* Operator-facing Anthropic provider. Constructs the transport-only
|
|
53
|
+
* `AIProvider` used in `site.config.ts`:
|
|
54
|
+
*
|
|
55
|
+
* const anthropic = anthropicProvider({ apiKey: process.env.ANTHROPIC_API_KEY! })
|
|
56
|
+
* ai: { provider: anthropic, model: 'claude-haiku-4-5' }
|
|
57
|
+
*
|
|
58
|
+
* The provider exposes per-task builders (`.altText({...})`); the
|
|
59
|
+
* resolver supplies the merged `AltTextTaskConfig` from the three-rung
|
|
60
|
+
* inheritance chain at boot.
|
|
61
|
+
*/
|
|
62
|
+
export declare function anthropicProvider(transport: AnthropicTransportOptions): AIProvider;
|
|
63
|
+
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/alt/anthropic.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,mBAAmB,CAAA;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AASlD;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,qBAAqB,CAAA;AAUzD;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,0BAA2B,SAAQ,yBAAyB;IAC3E,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAOD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,0BAA0B,GAAG,cAAc,CAoD1F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,yBAAyB,GAAG,UAAU,CAelF"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anthropic Claude adapter — alt-text via the `messages.create` vision API.
|
|
3
|
+
*
|
|
4
|
+
* # Defaults
|
|
5
|
+
*
|
|
6
|
+
* - Model: `claude-haiku-4-5` (cost-effective vision; ~$0.003/image).
|
|
7
|
+
* Sites needing higher quality override via `altText.model` in `site.config.ts`.
|
|
8
|
+
*
|
|
9
|
+
* # API contract details (verified against @anthropic-ai/sdk v0.92.0)
|
|
10
|
+
*
|
|
11
|
+
* - Image content: `{ type: 'image', source: { type: 'base64',
|
|
12
|
+
* media_type, data: <base64-string> } }`. SDK requires base64-encoded
|
|
13
|
+
* string, not raw bytes/Uint8Array.
|
|
14
|
+
* - Accepted MIME types: `image/jpeg`, `image/png`, `image/gif`,
|
|
15
|
+
* `image/webp`. After `prepareForVision`, our bytes are always JPEG
|
|
16
|
+
* or PNG, both supported.
|
|
17
|
+
* - `max_tokens` is required by the API. Scaffold derives it from
|
|
18
|
+
* `request.maxChars` unless operator overrides via `maxTokens`.
|
|
19
|
+
* - `system` parameter at the top level (not a message role). The
|
|
20
|
+
* scaffold-prepared `systemPrompt` (operator override + composed)
|
|
21
|
+
* becomes the system prompt; the user message holds the image.
|
|
22
|
+
*
|
|
23
|
+
* # AbortSignal
|
|
24
|
+
*
|
|
25
|
+
* - Passed via `messages.create(body, { signal })`. SDK throws
|
|
26
|
+
* `APIUserAbortError` on abort; scaffold's `isAbortError` recognizes
|
|
27
|
+
* it so the suggester can return null on cancellation.
|
|
28
|
+
*
|
|
29
|
+
* # SOLID
|
|
30
|
+
*
|
|
31
|
+
* - SRP: this module owns the Anthropic-specific request shape and
|
|
32
|
+
* response parsing only. Orchestration (prompt-prepend, max-tokens
|
|
33
|
+
* derivation, error translation, refusal detection) lives in
|
|
34
|
+
* `ai/adapter-scaffold.ts`.
|
|
35
|
+
* - LSP: implements `AltTextAdapter` exactly via the scaffold —
|
|
36
|
+
* substitutable.
|
|
37
|
+
* - DIP: callers depend on `AltTextAdapter`; never on `Anthropic` SDK
|
|
38
|
+
* type directly.
|
|
39
|
+
*/
|
|
40
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
41
|
+
import { AIInvalidResponseError } from '../ai/errors.js';
|
|
42
|
+
import { buildAltAdapterFromScaffold } from '../ai/adapter-scaffold.js';
|
|
43
|
+
/**
|
|
44
|
+
* Anthropic-specific refusal phrases observed in production responses
|
|
45
|
+
* but not yet in `ai/refusal.ts`'s shared list. Maintained here so
|
|
46
|
+
* provider-specific markers evolve independently of the shared list.
|
|
47
|
+
*/
|
|
48
|
+
const ANTHROPIC_REFUSAL_MARKERS = ['i cannot create captions', 'i cannot generate descriptions'];
|
|
49
|
+
/**
|
|
50
|
+
* Default model for the Anthropic adapter. Haiku is the cost-optimized
|
|
51
|
+
* choice for the alt-text task (~$0.003/image at 768x768 input). Sites
|
|
52
|
+
* needing higher quality set `altText.model` in `site.config.ts` to a
|
|
53
|
+
* Sonnet or Opus model.
|
|
54
|
+
*/
|
|
55
|
+
export const ANTHROPIC_DEFAULT_MODEL = 'claude-haiku-4-5';
|
|
56
|
+
/**
|
|
57
|
+
* Anthropic only accepts a subset of image MIME types. After
|
|
58
|
+
* `prepareForVision` our bytes are JPEG or PNG, but defending here
|
|
59
|
+
* means a future caller invoking the adapter directly with WebP or
|
|
60
|
+
* GIF still gets the right answer.
|
|
61
|
+
*/
|
|
62
|
+
const ANTHROPIC_SUPPORTED_MIMES = new Set(['image/jpeg', 'image/png', 'image/gif', 'image/webp']);
|
|
63
|
+
/** Encode a Uint8Array as a base64 string for the API call. */
|
|
64
|
+
function toBase64(bytes) {
|
|
65
|
+
return Buffer.from(bytes).toString('base64');
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Construct the Anthropic alt-text adapter. Internal factory — kept
|
|
69
|
+
* public for tests + advanced wiring. Operator-facing config goes
|
|
70
|
+
* through `anthropicProvider(transport).altText(taskConfig)` (Path X).
|
|
71
|
+
*/
|
|
72
|
+
export function createAnthropicAltAdapter(opts) {
|
|
73
|
+
const client = new Anthropic({
|
|
74
|
+
apiKey: opts.apiKey,
|
|
75
|
+
baseURL: opts.baseURL,
|
|
76
|
+
maxRetries: opts.maxRetries,
|
|
77
|
+
});
|
|
78
|
+
const model = opts.model ?? ANTHROPIC_DEFAULT_MODEL;
|
|
79
|
+
return buildAltAdapterFromScaffold({
|
|
80
|
+
name: 'anthropic',
|
|
81
|
+
supportedMimes: ANTHROPIC_SUPPORTED_MIMES,
|
|
82
|
+
operatorSystemPrompt: opts.systemPrompt,
|
|
83
|
+
operatorMaxTokens: opts.maxTokens,
|
|
84
|
+
refusalMarkers: ANTHROPIC_REFUSAL_MARKERS,
|
|
85
|
+
isAbortError: err => err instanceof Anthropic.APIUserAbortError,
|
|
86
|
+
async callProvider({ bytes, mime, systemPrompt, maxTokens, signal }) {
|
|
87
|
+
const response = await client.messages.create({
|
|
88
|
+
model,
|
|
89
|
+
max_tokens: maxTokens,
|
|
90
|
+
system: systemPrompt,
|
|
91
|
+
messages: [
|
|
92
|
+
{
|
|
93
|
+
role: 'user',
|
|
94
|
+
content: [
|
|
95
|
+
{
|
|
96
|
+
type: 'image',
|
|
97
|
+
source: {
|
|
98
|
+
type: 'base64',
|
|
99
|
+
// SDK accepts the four MIMEs above; cast is safe
|
|
100
|
+
// because supports() guards entry.
|
|
101
|
+
media_type: mime,
|
|
102
|
+
data: toBase64(bytes),
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
},
|
|
107
|
+
],
|
|
108
|
+
}, { signal });
|
|
109
|
+
// Response shape: `content` is an array of blocks; alt-text comes
|
|
110
|
+
// back as a single text block. Defensive against tool-use blocks
|
|
111
|
+
// or unexpected shapes by finding the first text block.
|
|
112
|
+
const textBlock = response.content.find(block => block.type === 'text');
|
|
113
|
+
if (!textBlock || textBlock.type !== 'text') {
|
|
114
|
+
throw new AIInvalidResponseError('Anthropic response contained no text content block');
|
|
115
|
+
}
|
|
116
|
+
return textBlock.text;
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Operator-facing Anthropic provider. Constructs the transport-only
|
|
122
|
+
* `AIProvider` used in `site.config.ts`:
|
|
123
|
+
*
|
|
124
|
+
* const anthropic = anthropicProvider({ apiKey: process.env.ANTHROPIC_API_KEY! })
|
|
125
|
+
* ai: { provider: anthropic, model: 'claude-haiku-4-5' }
|
|
126
|
+
*
|
|
127
|
+
* The provider exposes per-task builders (`.altText({...})`); the
|
|
128
|
+
* resolver supplies the merged `AltTextTaskConfig` from the three-rung
|
|
129
|
+
* inheritance chain at boot.
|
|
130
|
+
*/
|
|
131
|
+
export function anthropicProvider(transport) {
|
|
132
|
+
if (!transport.apiKey) {
|
|
133
|
+
throw new Error('anthropicProvider: "apiKey" is required (typically `process.env.ANTHROPIC_API_KEY!`)');
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
name: 'anthropic',
|
|
137
|
+
altText(taskConfig) {
|
|
138
|
+
return createAnthropicAltAdapter({
|
|
139
|
+
...transport,
|
|
140
|
+
model: taskConfig.model,
|
|
141
|
+
systemPrompt: taskConfig.systemPrompt,
|
|
142
|
+
maxTokens: taskConfig.maxTokens,
|
|
143
|
+
});
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=anthropic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/alt/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,OAAO,SAAS,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAExD,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AAGvE;;;;GAIG;AACH,MAAM,yBAAyB,GAAsB,CAAC,0BAA0B,EAAE,gCAAgC,CAAC,CAAA;AAEnH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAAkB,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAA;AAuCjG,+DAA+D;AAC/D,SAAS,QAAQ,CAAC,KAAiB;IACjC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAgC;IACxE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,uBAAuB,CAAA;IAEnD,OAAO,2BAA2B,CAAC;QACjC,IAAI,EAAE,WAAW;QACjB,cAAc,EAAE,yBAAyB;QACzC,oBAAoB,EAAE,IAAI,CAAC,YAAY;QACvC,iBAAiB,EAAE,IAAI,CAAC,SAAS;QACjC,cAAc,EAAE,yBAAyB;QACzC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,SAAS,CAAC,iBAAiB;QAC/D,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE;YACjE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAC3C;gBACE,KAAK;gBACL,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,YAAY;gBACpB,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,OAAO;gCACb,MAAM,EAAE;oCACN,IAAI,EAAE,QAAQ;oCACd,iDAAiD;oCACjD,mCAAmC;oCACnC,UAAU,EAAE,IAA+D;oCAC3E,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC;iCACtB;6BACF;yBACF;qBACF;iBACF;aACF,EACD,EAAE,MAAM,EAAE,CACX,CAAA;YAED,kEAAkE;YAClE,iEAAiE;YACjE,wDAAwD;YACxD,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;YACvE,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC5C,MAAM,IAAI,sBAAsB,CAAC,oDAAoD,CAAC,CAAA;YACxF,CAAC;YACD,OAAO,SAAS,CAAC,IAAI,CAAA;QACvB,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAoC;IACpE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAA;IACzG,CAAC;IACD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO,CAAC,UAA6B;YACnC,OAAO,yBAAyB,CAAC;gBAC/B,GAAG,SAAS;gBACZ,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,YAAY,EAAE,UAAU,CAAC,YAAY;gBACrC,SAAS,EAAE,UAAU,CAAC,SAAS;aAChC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC"}
|