gazetta 0.7.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/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 -0
- package/dist/admin-api/index.d.ts.map +1 -1
- package/dist/admin-api/index.js +254 -9
- 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 +6 -1
- package/dist/admin-api/routes/assets.d.ts.map +1 -1
- package/dist/admin-api/routes/assets.js +167 -14
- package/dist/admin-api/routes/assets.js.map +1 -1
- 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 +127 -92
- 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 +157 -117
- 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 +508 -92
- 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 +16 -0
- package/dist/admin-api/schemas/assets.d.ts.map +1 -1
- package/dist/admin-api/schemas/assets.js +15 -0
- package/dist/admin-api/schemas/assets.js.map +1 -1
- 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 +8 -0
- package/dist/admin-api/schemas/index.d.ts.map +1 -1
- package/dist/admin-api/schemas/index.js +8 -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 -10
- package/dist/admin-api/source-context.d.ts.map +1 -1
- package/dist/admin-api/source-context.js +43 -5
- 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/find-refs.d.ts +1 -1
- package/dist/assets/find-refs.js +1 -1
- package/dist/assets/find-refs.js.map +1 -1
- package/dist/assets/rename.js +1 -1
- package/dist/assets/rename.js.map +1 -1
- package/dist/assets/replace.js +1 -1
- package/dist/assets/replace.js.map +1 -1
- package/dist/assets/resolve.js +4 -4
- package/dist/assets/resolve.js.map +1 -1
- package/dist/assets/serve-route.js +2 -2
- package/dist/assets/serve-route.js.map +1 -1
- package/dist/assets/validate.d.ts +1 -1
- package/dist/assets/validate.js +1 -1
- 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/bootstrap.d.ts +15 -8
- package/dist/cli/bootstrap.d.ts.map +1 -1
- package/dist/cli/bootstrap.js +59 -23
- 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 +712 -395
- 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 +25 -23
- 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/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/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/history-recorder.d.ts +5 -5
- package/dist/history-recorder.d.ts.map +1 -1
- package/dist/history-recorder.js +4 -4
- package/dist/history-recorder.js.map +1 -1
- package/dist/history-restorer.js +2 -2
- package/dist/history-restorer.js.map +1 -1
- package/dist/history.d.ts +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 +26 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -5
- package/dist/index.js.map +1 -1
- package/dist/locale.d.ts +5 -1
- package/dist/locale.d.ts.map +1 -1
- package/dist/locale.js +6 -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/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/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.map +1 -1
- package/dist/publish-rendered.js +75 -6
- 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.map +1 -1
- package/dist/publish.js +1 -10
- 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.map +1 -1
- package/dist/resolver.js +47 -23
- 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/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 -95
- 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/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 +10 -17
- package/dist/transforms/index.d.ts.map +1 -1
- package/dist/transforms/index.js +4 -28
- package/dist/transforms/index.js.map +1 -1
- package/dist/transforms/sharp.d.ts +15 -1
- package/dist/transforms/sharp.d.ts.map +1 -1
- package/dist/transforms/sharp.js +34 -20
- package/dist/transforms/sharp.js.map +1 -1
- package/dist/types.d.ts +379 -52
- 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 +54 -31
- package/admin-dist/assets/index-BO9-CXmW.css +0 -1
- package/admin-dist/assets/index-Ufu8zZH_.js +0 -668
- 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/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
|
@@ -9,8 +9,29 @@
|
|
|
9
9
|
* a proper `{ jsonSchema, ... }` envelope.
|
|
10
10
|
*/
|
|
11
11
|
import { z } from 'zod';
|
|
12
|
+
import { IssueSchema } from './validation.js';
|
|
12
13
|
/** Summary used in list responses (GET /api/templates). */
|
|
13
14
|
export const TemplateSummarySchema = z.object({
|
|
14
15
|
name: z.string(),
|
|
15
16
|
});
|
|
17
|
+
/**
|
|
18
|
+
* GET /api/templates/:name/impact (Validation Cut 6).
|
|
19
|
+
*
|
|
20
|
+
* One row per page or fragment that uses the template — top-level
|
|
21
|
+
* (manifest.template) AND nested inline components (recursive walk).
|
|
22
|
+
* `issues` is the scanner's per-item issue list; empty when the item
|
|
23
|
+
* is clean.
|
|
24
|
+
*/
|
|
25
|
+
export const TemplateImpactItemSchema = z.object({
|
|
26
|
+
kind: z.enum(['page', 'fragment']),
|
|
27
|
+
name: z.string(),
|
|
28
|
+
itemPath: z.string(),
|
|
29
|
+
issues: z.array(IssueSchema),
|
|
30
|
+
});
|
|
31
|
+
export const TemplateImpactResponseSchema = z.object({
|
|
32
|
+
template: z.string(),
|
|
33
|
+
items: z.array(TemplateImpactItemSchema),
|
|
34
|
+
/** Convenience: items.filter(i => i.issues.length > 0).length. */
|
|
35
|
+
affectedItemCount: z.number().int().nonnegative(),
|
|
36
|
+
});
|
|
16
37
|
//# sourceMappingURL=templates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/admin-api/schemas/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/admin-api/schemas/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,2DAA2D;AAC3D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAA;AAGF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;CAC7B,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;IACxC,kEAAkE;IAClE,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CAClD,CAAC,CAAA"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for the validation response. The save handlers return a 409
|
|
3
|
+
* with `ValidationFailedResponseSchema` when save-delta validation finds
|
|
4
|
+
* error-severity issues. Cut 2 adds the `/api/validation/issues` GET shape
|
|
5
|
+
* for the background scanner's accumulated state.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
export declare const SeveritySchema: z.ZodEnum<{
|
|
9
|
+
error: "error";
|
|
10
|
+
info: "info";
|
|
11
|
+
warn: "warn";
|
|
12
|
+
}>;
|
|
13
|
+
export type Severity = z.infer<typeof SeveritySchema>;
|
|
14
|
+
export declare const IssueSchema: z.ZodObject<{
|
|
15
|
+
validator: z.ZodString;
|
|
16
|
+
severity: z.ZodEnum<{
|
|
17
|
+
error: "error";
|
|
18
|
+
info: "info";
|
|
19
|
+
warn: "warn";
|
|
20
|
+
}>;
|
|
21
|
+
message: z.ZodString;
|
|
22
|
+
itemPath: z.ZodString;
|
|
23
|
+
contentPath: z.ZodOptional<z.ZodString>;
|
|
24
|
+
suppressible: z.ZodOptional<z.ZodBoolean>;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
export type Issue = z.infer<typeof IssueSchema>;
|
|
27
|
+
/**
|
|
28
|
+
* 409 response body when save-delta validation blocks a write.
|
|
29
|
+
*
|
|
30
|
+
* `code` is a stable string for client dispatch; `issues` is the full set
|
|
31
|
+
* found (both `error` and below — the client decides what to render).
|
|
32
|
+
*/
|
|
33
|
+
export declare const ValidationFailedResponseSchema: z.ZodObject<{
|
|
34
|
+
code: z.ZodLiteral<"VALIDATION_FAILED">;
|
|
35
|
+
issues: z.ZodArray<z.ZodObject<{
|
|
36
|
+
validator: z.ZodString;
|
|
37
|
+
severity: z.ZodEnum<{
|
|
38
|
+
error: "error";
|
|
39
|
+
info: "info";
|
|
40
|
+
warn: "warn";
|
|
41
|
+
}>;
|
|
42
|
+
message: z.ZodString;
|
|
43
|
+
itemPath: z.ZodString;
|
|
44
|
+
contentPath: z.ZodOptional<z.ZodString>;
|
|
45
|
+
suppressible: z.ZodOptional<z.ZodBoolean>;
|
|
46
|
+
}, z.core.$strip>>;
|
|
47
|
+
}, z.core.$strip>;
|
|
48
|
+
export type ValidationFailedResponse = z.infer<typeof ValidationFailedResponseSchema>;
|
|
49
|
+
/**
|
|
50
|
+
* GET /api/validation/issues — current accumulated issues from the background
|
|
51
|
+
* scanner (Cut 2). The drawer fetches this on admin load + on save SSE; it
|
|
52
|
+
* doesn't run scans itself.
|
|
53
|
+
*/
|
|
54
|
+
export declare const ValidationIssuesResponseSchema: z.ZodObject<{
|
|
55
|
+
issues: z.ZodArray<z.ZodObject<{
|
|
56
|
+
validator: z.ZodString;
|
|
57
|
+
severity: z.ZodEnum<{
|
|
58
|
+
error: "error";
|
|
59
|
+
info: "info";
|
|
60
|
+
warn: "warn";
|
|
61
|
+
}>;
|
|
62
|
+
message: z.ZodString;
|
|
63
|
+
itemPath: z.ZodString;
|
|
64
|
+
contentPath: z.ZodOptional<z.ZodString>;
|
|
65
|
+
suppressible: z.ZodOptional<z.ZodBoolean>;
|
|
66
|
+
}, z.core.$strip>>;
|
|
67
|
+
total: z.ZodNumber;
|
|
68
|
+
}, z.core.$strip>;
|
|
69
|
+
export type ValidationIssuesResponse = z.infer<typeof ValidationIssuesResponseSchema>;
|
|
70
|
+
/**
|
|
71
|
+
* POST /api/publish/audit — run pre-publish-stage validators against the
|
|
72
|
+
* items operator is about to publish. Cut 4.
|
|
73
|
+
*/
|
|
74
|
+
export declare const PublishAuditRequestSchema: z.ZodObject<{
|
|
75
|
+
target: z.ZodString;
|
|
76
|
+
items: z.ZodArray<z.ZodObject<{
|
|
77
|
+
kind: z.ZodEnum<{
|
|
78
|
+
page: "page";
|
|
79
|
+
fragment: "fragment";
|
|
80
|
+
}>;
|
|
81
|
+
name: z.ZodString;
|
|
82
|
+
}, z.core.$strip>>;
|
|
83
|
+
}, z.core.$strip>;
|
|
84
|
+
export type PublishAuditRequest = z.infer<typeof PublishAuditRequestSchema>;
|
|
85
|
+
export declare const PublishAuditResponseSchema: z.ZodObject<{
|
|
86
|
+
issues: z.ZodArray<z.ZodObject<{
|
|
87
|
+
validator: z.ZodString;
|
|
88
|
+
severity: z.ZodEnum<{
|
|
89
|
+
error: "error";
|
|
90
|
+
info: "info";
|
|
91
|
+
warn: "warn";
|
|
92
|
+
}>;
|
|
93
|
+
message: z.ZodString;
|
|
94
|
+
itemPath: z.ZodString;
|
|
95
|
+
contentPath: z.ZodOptional<z.ZodString>;
|
|
96
|
+
suppressible: z.ZodOptional<z.ZodBoolean>;
|
|
97
|
+
}, z.core.$strip>>;
|
|
98
|
+
strict: z.ZodBoolean;
|
|
99
|
+
}, z.core.$strip>;
|
|
100
|
+
export type PublishAuditResponse = z.infer<typeof PublishAuditResponseSchema>;
|
|
101
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/admin-api/schemas/validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,cAAc;;;;EAAoC,CAAA;AAC/D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAErD,eAAO,MAAM,WAAW;;;;;;;;;;;iBAOtB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAA;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;iBAGzC,CAAA;AACF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAErF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;iBAKzC,CAAA;AACF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAA;AAErF;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;iBAUpC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAE3E,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;iBAKrC,CAAA;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for the validation response. The save handlers return a 409
|
|
3
|
+
* with `ValidationFailedResponseSchema` when save-delta validation finds
|
|
4
|
+
* error-severity issues. Cut 2 adds the `/api/validation/issues` GET shape
|
|
5
|
+
* for the background scanner's accumulated state.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
export const SeveritySchema = z.enum(['error', 'warn', 'info']);
|
|
9
|
+
export const IssueSchema = z.object({
|
|
10
|
+
validator: z.string(),
|
|
11
|
+
severity: SeveritySchema,
|
|
12
|
+
message: z.string(),
|
|
13
|
+
itemPath: z.string(),
|
|
14
|
+
contentPath: z.string().optional(),
|
|
15
|
+
suppressible: z.boolean().optional(),
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* 409 response body when save-delta validation blocks a write.
|
|
19
|
+
*
|
|
20
|
+
* `code` is a stable string for client dispatch; `issues` is the full set
|
|
21
|
+
* found (both `error` and below — the client decides what to render).
|
|
22
|
+
*/
|
|
23
|
+
export const ValidationFailedResponseSchema = z.object({
|
|
24
|
+
code: z.literal('VALIDATION_FAILED'),
|
|
25
|
+
issues: z.array(IssueSchema),
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* GET /api/validation/issues — current accumulated issues from the background
|
|
29
|
+
* scanner (Cut 2). The drawer fetches this on admin load + on save SSE; it
|
|
30
|
+
* doesn't run scans itself.
|
|
31
|
+
*/
|
|
32
|
+
export const ValidationIssuesResponseSchema = z.object({
|
|
33
|
+
/** All current issues across the site, flat list. UI groups by `itemPath`. */
|
|
34
|
+
issues: z.array(IssueSchema),
|
|
35
|
+
/** Total count (== issues.length) — convenience field for the dot/badge. */
|
|
36
|
+
total: z.number().int().nonnegative(),
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* POST /api/publish/audit — run pre-publish-stage validators against the
|
|
40
|
+
* items operator is about to publish. Cut 4.
|
|
41
|
+
*/
|
|
42
|
+
export const PublishAuditRequestSchema = z.object({
|
|
43
|
+
/** Destination target name. Drives `publishAudit.strict` lookup. */
|
|
44
|
+
target: z.string(),
|
|
45
|
+
/** Items being published — mirrors the publish request shape. */
|
|
46
|
+
items: z.array(z.object({
|
|
47
|
+
kind: z.enum(['page', 'fragment']),
|
|
48
|
+
name: z.string(),
|
|
49
|
+
})),
|
|
50
|
+
});
|
|
51
|
+
export const PublishAuditResponseSchema = z.object({
|
|
52
|
+
/** All issues found at pre-publish stage, with strict promotion already applied. */
|
|
53
|
+
issues: z.array(IssueSchema),
|
|
54
|
+
/** True when target's `publishAudit.strict` is set — surfaced for the UI. */
|
|
55
|
+
strict: z.boolean(),
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/admin-api/schemas/validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAG/D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,cAAc;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAA;AAGF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;CAC7B,CAAC,CAAA;AAGF;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IACrD,8EAA8E;IAC9E,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IAC5B,4EAA4E;IAC5E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CACtC,CAAC,CAAA;AAGF;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,oEAAoE;IACpE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,iEAAiE;IACjE,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;KACjB,CAAC,CACH;CACF,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,oFAAoF;IACpF,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IAC5B,6EAA6E;IAC7E,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACpB,CAAC,CAAA"}
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
* source storage + siteDir pair; tomorrow it can be built from a
|
|
9
9
|
* TargetRegistry's selected editable target with no changes to routes.
|
|
10
10
|
*/
|
|
11
|
-
import type { StorageProvider, SiteManifest } from '../types.js';
|
|
11
|
+
import type { GazettaManifest, StorageProvider, SiteManifest } from '../types.js';
|
|
12
|
+
import type { AdminCache } from '../cache/types.js';
|
|
12
13
|
import { type ContentRoot } from '../content-root.js';
|
|
13
14
|
import { type Site, type LoadSiteOptions } from '../site-loader.js';
|
|
14
15
|
import type { TargetRegistry } from '../targets.js';
|
|
@@ -25,7 +26,7 @@ export interface SourceContext {
|
|
|
25
26
|
*/
|
|
26
27
|
readonly siteDir: string;
|
|
27
28
|
/**
|
|
28
|
-
* Absolute path to the project's site directory — where site.
|
|
29
|
+
* Absolute path to the project's site directory — where site.config.ts lives,
|
|
29
30
|
* and the parent of `templates/` and `admin/`. Independent of storage
|
|
30
31
|
* rooting: always the on-disk project path, even when the content storage
|
|
31
32
|
* is target-rooted elsewhere.
|
|
@@ -44,21 +45,43 @@ export interface SourceContext {
|
|
|
44
45
|
/**
|
|
45
46
|
* Optional history provider for recording revisions on save. Absent
|
|
46
47
|
* when history is disabled for this target (via
|
|
47
|
-
* `history.enabled: false` in site.
|
|
48
|
+
* `history.enabled: false` in site.config.ts) or when history isn't
|
|
48
49
|
* wired at the caller (tests, legacy setups). Save routes check for
|
|
49
50
|
* presence before recording — no-op if absent.
|
|
50
51
|
*/
|
|
51
52
|
readonly history?: HistoryProvider;
|
|
52
53
|
/**
|
|
53
|
-
* Project-level site manifest — read once from sites/{name}/site.
|
|
54
|
+
* Project-level site manifest — read once from sites/{name}/site.config.ts
|
|
54
55
|
* at boot. Routes pass this to loadSite({ manifest }) so content
|
|
55
|
-
* discovery works without a target-level site.
|
|
56
|
+
* discovery works without a target-level site.config.ts.
|
|
56
57
|
*/
|
|
57
58
|
readonly manifest?: SiteManifest;
|
|
59
|
+
/**
|
|
60
|
+
* Project-level Gazetta manifest — read once from gazetta.config.ts at
|
|
61
|
+
* boot. Carries cross-site defaults inherited via the three-rung chain
|
|
62
|
+
* (gazetta → site → target). Absent when no `gazetta.config.ts` exists.
|
|
63
|
+
*/
|
|
64
|
+
readonly gazettaManifest?: GazettaManifest;
|
|
65
|
+
/**
|
|
66
|
+
* Per-source `AdminCache` instance — already wrapped via `forSite()`
|
|
67
|
+
* so keys are scoped to this source's site name. Always present;
|
|
68
|
+
* `createSourceContext` lazily builds a `MemoryCache` when the caller
|
|
69
|
+
* doesn't supply one.
|
|
70
|
+
*
|
|
71
|
+
* Routes that read site-derived data (page summaries, fragment lists,
|
|
72
|
+
* dependents) read this cache through `loadSiteFromSource` — every
|
|
73
|
+
* load of the same source returns a `Site` whose `cache` field is the
|
|
74
|
+
* same instance, so consumers share entries across requests.
|
|
75
|
+
*
|
|
76
|
+
* Save handlers invalidate via `source.cache.invalidatePrefix('pages:')`
|
|
77
|
+
* etc. on writes (Cut 4).
|
|
78
|
+
*/
|
|
79
|
+
readonly cache: AdminCache;
|
|
58
80
|
}
|
|
59
81
|
/**
|
|
60
82
|
* Load a site from a SourceContext. Passes the project-level manifest
|
|
61
|
-
* so loadSite doesn't need a target-level site.
|
|
83
|
+
* so loadSite doesn't need a target-level site config file. Forwards
|
|
84
|
+
* the source's per-site cache so every load shares one cache instance.
|
|
62
85
|
*/
|
|
63
86
|
export declare function loadSiteFromSource(source: SourceContext, opts?: Partial<LoadSiteOptions>): Promise<Site>;
|
|
64
87
|
export interface CreateSourceContextOptions {
|
|
@@ -68,13 +91,32 @@ export interface CreateSourceContextOptions {
|
|
|
68
91
|
/** Absolute project site directory. Defaults to `siteDir` for backward compat. */
|
|
69
92
|
projectSiteDir?: string;
|
|
70
93
|
history?: HistoryProvider;
|
|
71
|
-
/** Project-level site manifest — passed to loadSite so targets don't need site.
|
|
94
|
+
/** Project-level site manifest — passed to loadSite so targets don't need their own site config. */
|
|
72
95
|
manifest?: SiteManifest;
|
|
96
|
+
/** Optional gazetta-level manifest; first rung of the three-rung config chain. */
|
|
97
|
+
gazettaManifest?: GazettaManifest;
|
|
98
|
+
/**
|
|
99
|
+
* Pre-built unscoped `AdminCache` — typically the operator's
|
|
100
|
+
* gazetta.config.ts default or per-site override (Path X). When
|
|
101
|
+
* provided, `createSourceContext` wraps it with `forSite()` using
|
|
102
|
+
* the manifest's site name. When absent, a fresh `MemoryCache()`
|
|
103
|
+
* is built and wrapped.
|
|
104
|
+
*
|
|
105
|
+
* The wrapping happens here (not at every loadSite call) so all
|
|
106
|
+
* loads of the same source share one site-scoped cache instance.
|
|
107
|
+
*/
|
|
108
|
+
cache?: AdminCache;
|
|
109
|
+
/**
|
|
110
|
+
* Site name used for `forSite()` key scoping. Defaults to
|
|
111
|
+
* `manifest.name`. Required when `manifest` is absent and the
|
|
112
|
+
* caller still wants a site-scoped cache.
|
|
113
|
+
*/
|
|
114
|
+
siteName?: string;
|
|
73
115
|
}
|
|
74
116
|
export declare function createSourceContext(opts: CreateSourceContextOptions): SourceContext;
|
|
75
117
|
/**
|
|
76
118
|
* Build a HistoryProvider for a resolved target. Returns `undefined`
|
|
77
|
-
* when history is disabled (via site.
|
|
119
|
+
* when history is disabled (via site.config.ts `history.enabled: false`).
|
|
78
120
|
* Injected via `SourceContextFromRegistryOptions.buildHistory` so the
|
|
79
121
|
* source-context module stays agnostic of target-config parsing — the
|
|
80
122
|
* caller (admin-api boot) owns the enabled/retention decision.
|
|
@@ -91,7 +133,7 @@ export interface SourceContextFromRegistryOptions {
|
|
|
91
133
|
*/
|
|
92
134
|
siteDir?: string;
|
|
93
135
|
/**
|
|
94
|
-
* Absolute project site directory — where site.
|
|
136
|
+
* Absolute project site directory — where site.config.ts lives. Required.
|
|
95
137
|
* This is independent of the target's storage rooting.
|
|
96
138
|
*/
|
|
97
139
|
projectSiteDir: string;
|
|
@@ -99,6 +141,8 @@ export interface SourceContextFromRegistryOptions {
|
|
|
99
141
|
buildHistory?: BuildHistory;
|
|
100
142
|
/** Project-level site manifest. */
|
|
101
143
|
manifest?: SiteManifest;
|
|
144
|
+
/** Optional gazetta-level manifest. */
|
|
145
|
+
gazettaManifest?: GazettaManifest;
|
|
102
146
|
}
|
|
103
147
|
/**
|
|
104
148
|
* Construct a SourceContext from a TargetRegistry, picking the given target
|
|
@@ -121,7 +165,17 @@ export declare function createSourceContextFromRegistry(opts: SourceContextFromR
|
|
|
121
165
|
* The resolver is called once per handler invocation; implementations can
|
|
122
166
|
* memoize where appropriate.
|
|
123
167
|
*/
|
|
124
|
-
export
|
|
168
|
+
export interface SourceContextResolver {
|
|
169
|
+
(targetName: string | undefined): SourceContext | Promise<SourceContext>;
|
|
170
|
+
/**
|
|
171
|
+
* Walk every SourceContext the resolver has memoized. The static
|
|
172
|
+
* resolver yields its single context; the registry resolver yields
|
|
173
|
+
* every per-target context built on-demand. Used by `gazetta dev`'s
|
|
174
|
+
* file watcher to invalidate AdminCache entries on out-of-band
|
|
175
|
+
* manifest changes (git pull, manual edit, e2e test wipes).
|
|
176
|
+
*/
|
|
177
|
+
forEachBuilt(fn: (source: SourceContext) => void | Promise<void>): Promise<void>;
|
|
178
|
+
}
|
|
125
179
|
/** Static resolver — always returns the given SourceContext regardless of requested target. */
|
|
126
180
|
export declare function staticSourceResolver(source: SourceContext): SourceContextResolver;
|
|
127
181
|
export interface RegistrySourceResolverOptions {
|
|
@@ -147,6 +201,8 @@ export interface RegistrySourceResolverOptions {
|
|
|
147
201
|
buildHistory?: BuildHistory;
|
|
148
202
|
/** Project-level site manifest. */
|
|
149
203
|
manifest?: SiteManifest;
|
|
204
|
+
/** Optional gazetta-level manifest. */
|
|
205
|
+
gazettaManifest?: GazettaManifest;
|
|
150
206
|
}
|
|
151
207
|
/**
|
|
152
208
|
* Registry-backed resolver — picks the named target (or the registry's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-context.d.ts","sourceRoot":"","sources":["../../src/admin-api/source-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"source-context.d.ts","sourceRoot":"","sources":["../../src/admin-api/source-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,16 +8,40 @@
|
|
|
8
8
|
* source storage + siteDir pair; tomorrow it can be built from a
|
|
9
9
|
* TargetRegistry's selected editable target with no changes to routes.
|
|
10
10
|
*/
|
|
11
|
+
import { memoryCache } from '../cache/factories.js';
|
|
12
|
+
import { forSite } from '../cache/per-site.js';
|
|
11
13
|
import { createContentRoot } from '../content-root.js';
|
|
12
14
|
import { loadSite } from '../site-loader.js';
|
|
13
15
|
/**
|
|
14
16
|
* Load a site from a SourceContext. Passes the project-level manifest
|
|
15
|
-
* so loadSite doesn't need a target-level site.
|
|
17
|
+
* so loadSite doesn't need a target-level site config file. Forwards
|
|
18
|
+
* the source's per-site cache so every load shares one cache instance.
|
|
16
19
|
*/
|
|
17
20
|
export function loadSiteFromSource(source, opts) {
|
|
18
|
-
return loadSite({
|
|
21
|
+
return loadSite({
|
|
22
|
+
contentRoot: source.contentRoot,
|
|
23
|
+
manifest: source.manifest,
|
|
24
|
+
cache: source.cache,
|
|
25
|
+
...opts,
|
|
26
|
+
});
|
|
19
27
|
}
|
|
20
28
|
export function createSourceContext(opts) {
|
|
29
|
+
// Site-scoped cache: wrap the operator-supplied (or fresh) instance
|
|
30
|
+
// once, here, so every loadSiteFromSource() call shares it. Per the
|
|
31
|
+
// single-Site-per-process invariant, the source's site name is
|
|
32
|
+
// stable for the process lifetime.
|
|
33
|
+
//
|
|
34
|
+
// Fallback chain:
|
|
35
|
+
// 1. opts.cache — caller owns lifetime explicitly (preferred)
|
|
36
|
+
// 2. opts.manifest.cache — operator's instance from gazetta.config
|
|
37
|
+
// defaults.cache (hoisted into site.cache by applyGazettaDefaults
|
|
38
|
+
// in the loader). Without this fallback the operator's tuned
|
|
39
|
+
// cache is silently ignored on the registry / direct-loadSite
|
|
40
|
+
// paths that pass `manifest` but not `cache`.
|
|
41
|
+
// 3. fresh memoryCache() — single-Site-per-process invariant means
|
|
42
|
+
// each process gets its own; safe default.
|
|
43
|
+
const siteName = opts.siteName ?? opts.manifest?.name ?? 'unnamed';
|
|
44
|
+
const cache = forSite(opts.cache ?? opts.manifest?.cache ?? memoryCache(), siteName);
|
|
21
45
|
return {
|
|
22
46
|
storage: opts.storage,
|
|
23
47
|
siteDir: opts.siteDir,
|
|
@@ -25,6 +49,8 @@ export function createSourceContext(opts) {
|
|
|
25
49
|
contentRoot: createContentRoot(opts.storage, opts.siteDir),
|
|
26
50
|
history: opts.history,
|
|
27
51
|
manifest: opts.manifest,
|
|
52
|
+
gazettaManifest: opts.gazettaManifest,
|
|
53
|
+
cache,
|
|
28
54
|
};
|
|
29
55
|
}
|
|
30
56
|
/**
|
|
@@ -42,13 +68,18 @@ export function createSourceContextFromRegistry(opts) {
|
|
|
42
68
|
projectSiteDir: opts.projectSiteDir,
|
|
43
69
|
history: opts.buildHistory?.(name, storage),
|
|
44
70
|
manifest: opts.manifest,
|
|
71
|
+
gazettaManifest: opts.gazettaManifest,
|
|
45
72
|
}),
|
|
46
73
|
targetName: name,
|
|
47
74
|
};
|
|
48
75
|
}
|
|
49
76
|
/** Static resolver — always returns the given SourceContext regardless of requested target. */
|
|
50
77
|
export function staticSourceResolver(source) {
|
|
51
|
-
|
|
78
|
+
const resolve = ((_targetName) => source);
|
|
79
|
+
resolve.forEachBuilt = async (fn) => {
|
|
80
|
+
await fn(source);
|
|
81
|
+
};
|
|
82
|
+
return resolve;
|
|
52
83
|
}
|
|
53
84
|
/**
|
|
54
85
|
* Registry-backed resolver — picks the named target (or the registry's
|
|
@@ -58,7 +89,7 @@ export function staticSourceResolver(source) {
|
|
|
58
89
|
*/
|
|
59
90
|
export function registrySourceResolver(opts) {
|
|
60
91
|
const cache = new Map();
|
|
61
|
-
|
|
92
|
+
const resolve = (async (targetName) => {
|
|
62
93
|
const name = targetName ?? opts.registry.defaultEditable();
|
|
63
94
|
const cached = cache.get(name);
|
|
64
95
|
if (cached)
|
|
@@ -66,7 +97,7 @@ export function registrySourceResolver(opts) {
|
|
|
66
97
|
// Cross-target reads may hit targets that weren't pre-initialized by
|
|
67
98
|
// the bootstrap (dev only inits the editable local target by default).
|
|
68
99
|
// If the target is configured but its provider hasn't been built yet,
|
|
69
|
-
// let the caller lazy-init. Unknown targets (not in site.
|
|
100
|
+
// let the caller lazy-init. Unknown targets (not in site.config.ts at all)
|
|
70
101
|
// fall through so registry.get throws a clean UnknownTargetError.
|
|
71
102
|
const isConfigured = opts.registry.list().includes(name);
|
|
72
103
|
if (opts.lazyInit && isConfigured) {
|
|
@@ -84,9 +115,16 @@ export function registrySourceResolver(opts) {
|
|
|
84
115
|
buildHistory: opts.buildHistory,
|
|
85
116
|
siteDir: opts.siteDir,
|
|
86
117
|
manifest: opts.manifest,
|
|
118
|
+
gazettaManifest: opts.gazettaManifest,
|
|
87
119
|
});
|
|
88
120
|
cache.set(name, ctx);
|
|
89
121
|
return ctx;
|
|
122
|
+
});
|
|
123
|
+
resolve.forEachBuilt = async (fn) => {
|
|
124
|
+
for (const ctx of cache.values()) {
|
|
125
|
+
await fn(ctx);
|
|
126
|
+
}
|
|
90
127
|
};
|
|
128
|
+
return resolve;
|
|
91
129
|
}
|
|
92
130
|
//# sourceMappingURL=source-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-context.js","sourceRoot":"","sources":["../../src/admin-api/source-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,iBAAiB,EAAoB,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAmC,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"source-context.js","sourceRoot":"","sources":["../../src/admin-api/source-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { AltGenerateInput, AltTextAdapter } from '../alt/adapter.js';
|
|
2
|
+
/** Approximate characters-per-output-token for max-tokens derivation. */
|
|
3
|
+
export declare const CHARS_PER_TOKEN = 4;
|
|
4
|
+
/** Floor for derived max-tokens; ensures small maxChars still gives the model room. */
|
|
5
|
+
export declare const MIN_MAX_TOKENS = 64;
|
|
6
|
+
/**
|
|
7
|
+
* Provider-specific request closure passed to the scaffold. The closure
|
|
8
|
+
* makes the actual SDK call and returns the response text.
|
|
9
|
+
*
|
|
10
|
+
* The scaffold supplies:
|
|
11
|
+
* - `bytes` / `mime` from prepared input
|
|
12
|
+
* - `systemPrompt` already prepended with operator override (if any)
|
|
13
|
+
* - `maxTokens` already resolved (operator override OR derived from maxChars)
|
|
14
|
+
* - `userPrompt` from the suggester's compose-prompt output (the
|
|
15
|
+
* base prompt minus operator's prepend; useful for OpenAI/Ollama
|
|
16
|
+
* which split system vs. user)
|
|
17
|
+
* - `request` original AltRequest for adapters that want maxChars / locale
|
|
18
|
+
* - `signal` AbortSignal forwarded from caller
|
|
19
|
+
*/
|
|
20
|
+
export interface ProviderCallInput {
|
|
21
|
+
bytes: Uint8Array;
|
|
22
|
+
mime: string;
|
|
23
|
+
systemPrompt: string;
|
|
24
|
+
maxTokens: number;
|
|
25
|
+
request: AltGenerateInput['request'];
|
|
26
|
+
signal?: AbortSignal;
|
|
27
|
+
}
|
|
28
|
+
export interface AdapterScaffoldOptions {
|
|
29
|
+
/** Stable identifier for diagnostics ('anthropic', 'openai', 'ollama'). */
|
|
30
|
+
name: string;
|
|
31
|
+
/** MIME types the underlying provider accepts. */
|
|
32
|
+
supportedMimes: ReadonlySet<string>;
|
|
33
|
+
/** Operator-supplied system prompt; prepended to the system-composed prompt. */
|
|
34
|
+
operatorSystemPrompt?: string;
|
|
35
|
+
/** Operator-supplied max tokens; overrides derivation from maxChars. */
|
|
36
|
+
operatorMaxTokens?: number;
|
|
37
|
+
/** Provider-specific refusal markers; layered on top of shared markers. */
|
|
38
|
+
refusalMarkers: readonly string[];
|
|
39
|
+
/**
|
|
40
|
+
* Provider SDK call. Returns response text on success; throws on
|
|
41
|
+
* transport / API failure. Aborts should propagate as-is so the
|
|
42
|
+
* suggester's `signal.aborted` check returns null.
|
|
43
|
+
*/
|
|
44
|
+
callProvider(input: ProviderCallInput): Promise<string>;
|
|
45
|
+
/**
|
|
46
|
+
* True for the SDK's user-abort exception type. Different SDKs throw
|
|
47
|
+
* different abort types; the scaffold lets each provider declare
|
|
48
|
+
* which one to pass through unchanged.
|
|
49
|
+
*/
|
|
50
|
+
isAbortError(err: unknown): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Optional human-readable context appended to error messages
|
|
53
|
+
* (e.g., "Is Ollama running at http://localhost:11434?").
|
|
54
|
+
*/
|
|
55
|
+
errorContextSuffix?: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Build an `AltTextAdapter` from provider-specific configuration. Owns
|
|
59
|
+
* the orchestration so per-provider files contribute only the SDK call
|
|
60
|
+
* and shape parsing.
|
|
61
|
+
*/
|
|
62
|
+
export declare function buildAltAdapterFromScaffold(opts: AdapterScaffoldOptions): AltTextAdapter;
|
|
63
|
+
//# sourceMappingURL=adapter-scaffold.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-scaffold.d.ts","sourceRoot":"","sources":["../../src/ai/adapter-scaffold.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,gBAAgB,EAAiB,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAExF,yEAAyE;AACzE,eAAO,MAAM,eAAe,IAAI,CAAA;AAChC,uFAAuF;AACvF,eAAO,MAAM,cAAc,KAAK,CAAA;AAEhC;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,UAAU,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAA;IACpC,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAA;IACZ,kDAAkD;IAClD,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACnC,gFAAgF;IAChF,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,2EAA2E;IAC3E,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvD;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAA;IACnC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,sBAAsB,GAAG,cAAc,CAyDxF"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared scaffolding for `AltTextAdapter` implementations.
|
|
3
|
+
*
|
|
4
|
+
* Per Phase 4 of the Path X migration: the three v1.5 providers (Anthropic,
|
|
5
|
+
* OpenAI, Ollama) share substantial orchestration — operator-supplied
|
|
6
|
+
* prompt prepending, max-tokens derivation, refusal-marker layering, error
|
|
7
|
+
* translation. This module owns those shared concerns; per-provider files
|
|
8
|
+
* contribute only the provider-specific call (`callProvider`), abort
|
|
9
|
+
* detection (`isAbortError`), and refusal markers (`refusalMarkers`).
|
|
10
|
+
*
|
|
11
|
+
* # SOLID
|
|
12
|
+
*
|
|
13
|
+
* - SRP: this module owns the alt-text adapter orchestration. Provider
|
|
14
|
+
* files own the SDK call + response parsing.
|
|
15
|
+
* - OCP: adding a fourth provider supplies a `callProvider` closure;
|
|
16
|
+
* no edits to scaffolding.
|
|
17
|
+
* - LSP: every adapter built via this scaffold honors the
|
|
18
|
+
* `AltTextAdapter` contract identically.
|
|
19
|
+
* - DIP: scaffold depends on `AltTextAdapter`, `AltGenerateInput`,
|
|
20
|
+
* `AltSuggestion` — abstractions, not provider SDK types.
|
|
21
|
+
*/
|
|
22
|
+
import { AIAdapterFailedError, AIError } from './errors.js';
|
|
23
|
+
import { detectRefusal } from './refusal.js';
|
|
24
|
+
/** Approximate characters-per-output-token for max-tokens derivation. */
|
|
25
|
+
export const CHARS_PER_TOKEN = 4;
|
|
26
|
+
/** Floor for derived max-tokens; ensures small maxChars still gives the model room. */
|
|
27
|
+
export const MIN_MAX_TOKENS = 64;
|
|
28
|
+
/**
|
|
29
|
+
* Build an `AltTextAdapter` from provider-specific configuration. Owns
|
|
30
|
+
* the orchestration so per-provider files contribute only the SDK call
|
|
31
|
+
* and shape parsing.
|
|
32
|
+
*/
|
|
33
|
+
export function buildAltAdapterFromScaffold(opts) {
|
|
34
|
+
const operatorSystemPrompt = opts.operatorSystemPrompt;
|
|
35
|
+
const operatorMaxTokens = opts.operatorMaxTokens;
|
|
36
|
+
return {
|
|
37
|
+
name: opts.name,
|
|
38
|
+
supports(mime) {
|
|
39
|
+
return opts.supportedMimes.has(mime);
|
|
40
|
+
},
|
|
41
|
+
async generate(input, signal) {
|
|
42
|
+
// max_tokens: operator override > derived from maxChars.
|
|
43
|
+
const maxTokens = operatorMaxTokens ?? Math.max(MIN_MAX_TOKENS, Math.ceil(input.request.maxChars / CHARS_PER_TOKEN));
|
|
44
|
+
// System prompt: operator-supplied prepends to the system-composed
|
|
45
|
+
// prompt (per design-ai.md "Prompt composition"). Empty/absent
|
|
46
|
+
// operator prompt → just the system-composed.
|
|
47
|
+
const systemPrompt = operatorSystemPrompt ? `${operatorSystemPrompt}\n\n${input.prompt}` : input.prompt;
|
|
48
|
+
let text;
|
|
49
|
+
try {
|
|
50
|
+
text = await opts.callProvider({
|
|
51
|
+
bytes: input.bytes,
|
|
52
|
+
mime: input.mime,
|
|
53
|
+
systemPrompt,
|
|
54
|
+
maxTokens,
|
|
55
|
+
request: input.request,
|
|
56
|
+
signal,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
// Aborts pass through — suggester checks `signal.aborted` and
|
|
61
|
+
// returns null. Wrapping into AIAdapterFailedError would lose
|
|
62
|
+
// the abort signal.
|
|
63
|
+
if (opts.isAbortError(err))
|
|
64
|
+
throw err;
|
|
65
|
+
// AI-domain errors thrown by the provider's response-parsing
|
|
66
|
+
// (e.g., AIInvalidResponseError when the SDK returns no text
|
|
67
|
+
// block) pass through unchanged. Only transport / SDK-level
|
|
68
|
+
// failures get wrapped as AIAdapterFailedError.
|
|
69
|
+
if (err instanceof AIError)
|
|
70
|
+
throw err;
|
|
71
|
+
const suffix = opts.errorContextSuffix ? `. ${opts.errorContextSuffix}` : '';
|
|
72
|
+
if (err instanceof Error) {
|
|
73
|
+
throw new AIAdapterFailedError(`${opts.name} alt-text generation failed: ${err.message}${suffix}`, {
|
|
74
|
+
cause: err,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
throw new AIAdapterFailedError(`${opts.name} alt-text generation failed: unknown error${suffix}`);
|
|
78
|
+
}
|
|
79
|
+
const trimmed = text.trim();
|
|
80
|
+
const refusal = detectRefusal(trimmed, opts.refusalMarkers);
|
|
81
|
+
return {
|
|
82
|
+
text: trimmed,
|
|
83
|
+
refused: refusal.refused,
|
|
84
|
+
refusalReason: refusal.reason,
|
|
85
|
+
};
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=adapter-scaffold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-scaffold.js","sourceRoot":"","sources":["../../src/ai/adapter-scaffold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAG5C,yEAAyE;AACzE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAA;AAChC,uFAAuF;AACvF,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAA;AAuDhC;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAA4B;IACtE,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAA;IACtD,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAA;IAEhD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,CAAC,IAAY;YACnB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACtC,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,KAAuB,EAAE,MAAoB;YAC1D,yDAAyD;YACzD,MAAM,SAAS,GACb,iBAAiB,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAA;YAEpG,mEAAmE;YACnE,+DAA+D;YAC/D,8CAA8C;YAC9C,MAAM,YAAY,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAAG,oBAAoB,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAA;YAEvG,IAAI,IAAY,CAAA;YAChB,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC;oBAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,YAAY;oBACZ,SAAS;oBACT,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,MAAM;iBACP,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,8DAA8D;gBAC9D,8DAA8D;gBAC9D,oBAAoB;gBACpB,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;oBAAE,MAAM,GAAG,CAAA;gBACrC,6DAA6D;gBAC7D,6DAA6D;gBAC7D,4DAA4D;gBAC5D,gDAAgD;gBAChD,IAAI,GAAG,YAAY,OAAO;oBAAE,MAAM,GAAG,CAAA;gBACrC,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC5E,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;oBACzB,MAAM,IAAI,oBAAoB,CAAC,GAAG,IAAI,CAAC,IAAI,gCAAgC,GAAG,CAAC,OAAO,GAAG,MAAM,EAAE,EAAE;wBACjG,KAAK,EAAE,GAAG;qBACX,CAAC,CAAA;gBACJ,CAAC;gBACD,MAAM,IAAI,oBAAoB,CAAC,GAAG,IAAI,CAAC,IAAI,6CAA6C,MAAM,EAAE,CAAC,CAAA;YACnG,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAC3B,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;YAC3D,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,aAAa,EAAE,OAAO,CAAC,MAAM;aAC9B,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|