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.
Files changed (738) hide show
  1. package/admin-dist/assets/index-CBeq0rRb.js +693 -0
  2. package/admin-dist/assets/index-Dtg1dTZQ.css +1 -0
  3. package/admin-dist/assets/rolldown-runtime-BYbx6iT9.js +1 -0
  4. package/admin-dist/assets/{vendor-primevue-C0Q_YTCb.js → vendor-primevue-CBGHkaXv.js} +183 -39
  5. package/admin-dist/assets/{vendor-react-BipDVGow.js → vendor-react-BdW_kNCG.js} +2 -2
  6. package/admin-dist/assets/vendor-rjsf-lN2SztQt.js +33 -0
  7. package/admin-dist/assets/vendor-tiptap-C36yDquB.js +141 -0
  8. package/admin-dist/assets/vendor-vue-Bt5uR1VW.js +1 -0
  9. package/admin-dist/assets/workbox-window.prod.es5-DGMtIXHc.js +2 -0
  10. package/admin-dist/index.html +8 -8
  11. package/admin-dist/sw.js +1 -0
  12. package/dist/admin-api/archived-name-conflict.d.ts +31 -0
  13. package/dist/admin-api/archived-name-conflict.d.ts.map +1 -0
  14. package/dist/admin-api/archived-name-conflict.js +226 -0
  15. package/dist/admin-api/archived-name-conflict.js.map +1 -0
  16. package/dist/admin-api/cache-stats-logger.d.ts +83 -0
  17. package/dist/admin-api/cache-stats-logger.d.ts.map +1 -0
  18. package/dist/admin-api/cache-stats-logger.js +59 -0
  19. package/dist/admin-api/cache-stats-logger.js.map +1 -0
  20. package/dist/admin-api/hook-audit-emitter.d.ts +38 -0
  21. package/dist/admin-api/hook-audit-emitter.d.ts.map +1 -0
  22. package/dist/admin-api/hook-audit-emitter.js +21 -0
  23. package/dist/admin-api/hook-audit-emitter.js.map +1 -0
  24. package/dist/admin-api/index.d.ts +84 -0
  25. package/dist/admin-api/index.d.ts.map +1 -1
  26. package/dist/admin-api/index.js +254 -9
  27. package/dist/admin-api/index.js.map +1 -1
  28. package/dist/admin-api/middleware/audit.d.ts +25 -0
  29. package/dist/admin-api/middleware/audit.d.ts.map +1 -0
  30. package/dist/admin-api/middleware/audit.js +65 -0
  31. package/dist/admin-api/middleware/audit.js.map +1 -0
  32. package/dist/admin-api/middleware/capability.d.ts +8 -0
  33. package/dist/admin-api/middleware/capability.d.ts.map +1 -0
  34. package/dist/admin-api/middleware/capability.js +65 -0
  35. package/dist/admin-api/middleware/capability.js.map +1 -0
  36. package/dist/admin-api/middleware/principal.d.ts +18 -0
  37. package/dist/admin-api/middleware/principal.d.ts.map +1 -0
  38. package/dist/admin-api/middleware/principal.js +128 -0
  39. package/dist/admin-api/middleware/principal.js.map +1 -0
  40. package/dist/admin-api/routes/archive-review.d.ts +80 -0
  41. package/dist/admin-api/routes/archive-review.d.ts.map +1 -0
  42. package/dist/admin-api/routes/archive-review.js +70 -0
  43. package/dist/admin-api/routes/archive-review.js.map +1 -0
  44. package/dist/admin-api/routes/archive.d.ts +145 -0
  45. package/dist/admin-api/routes/archive.d.ts.map +1 -0
  46. package/dist/admin-api/routes/archive.js +540 -0
  47. package/dist/admin-api/routes/archive.js.map +1 -0
  48. package/dist/admin-api/routes/assets.d.ts +6 -1
  49. package/dist/admin-api/routes/assets.d.ts.map +1 -1
  50. package/dist/admin-api/routes/assets.js +167 -14
  51. package/dist/admin-api/routes/assets.js.map +1 -1
  52. package/dist/admin-api/routes/audit.d.ts +71 -0
  53. package/dist/admin-api/routes/audit.d.ts.map +1 -0
  54. package/dist/admin-api/routes/audit.js +178 -0
  55. package/dist/admin-api/routes/audit.js.map +1 -0
  56. package/dist/admin-api/routes/compare.d.ts.map +1 -1
  57. package/dist/admin-api/routes/compare.js +3 -2
  58. package/dist/admin-api/routes/compare.js.map +1 -1
  59. package/dist/admin-api/routes/fields.d.ts.map +1 -1
  60. package/dist/admin-api/routes/fields.js +2 -1
  61. package/dist/admin-api/routes/fields.js.map +1 -1
  62. package/dist/admin-api/routes/fragments.d.ts +13 -1
  63. package/dist/admin-api/routes/fragments.d.ts.map +1 -1
  64. package/dist/admin-api/routes/fragments.js +127 -92
  65. package/dist/admin-api/routes/fragments.js.map +1 -1
  66. package/dist/admin-api/routes/health.d.ts +60 -0
  67. package/dist/admin-api/routes/health.d.ts.map +1 -0
  68. package/dist/admin-api/routes/health.js +65 -0
  69. package/dist/admin-api/routes/health.js.map +1 -0
  70. package/dist/admin-api/routes/history.d.ts +2 -1
  71. package/dist/admin-api/routes/history.d.ts.map +1 -1
  72. package/dist/admin-api/routes/history.js +26 -4
  73. package/dist/admin-api/routes/history.js.map +1 -1
  74. package/dist/admin-api/routes/pages.d.ts +20 -1
  75. package/dist/admin-api/routes/pages.d.ts.map +1 -1
  76. package/dist/admin-api/routes/pages.js +157 -117
  77. package/dist/admin-api/routes/pages.js.map +1 -1
  78. package/dist/admin-api/routes/preview.d.ts.map +1 -1
  79. package/dist/admin-api/routes/preview.js +56 -17
  80. package/dist/admin-api/routes/preview.js.map +1 -1
  81. package/dist/admin-api/routes/publish.d.ts +19 -1
  82. package/dist/admin-api/routes/publish.d.ts.map +1 -1
  83. package/dist/admin-api/routes/publish.js +508 -92
  84. package/dist/admin-api/routes/publish.js.map +1 -1
  85. package/dist/admin-api/routes/rename.d.ts +62 -0
  86. package/dist/admin-api/routes/rename.d.ts.map +1 -0
  87. package/dist/admin-api/routes/rename.js +366 -0
  88. package/dist/admin-api/routes/rename.js.map +1 -0
  89. package/dist/admin-api/routes/site.d.ts.map +1 -1
  90. package/dist/admin-api/routes/site.js +6 -18
  91. package/dist/admin-api/routes/site.js.map +1 -1
  92. package/dist/admin-api/routes/system.d.ts +23 -0
  93. package/dist/admin-api/routes/system.d.ts.map +1 -0
  94. package/dist/admin-api/routes/system.js +115 -0
  95. package/dist/admin-api/routes/system.js.map +1 -0
  96. package/dist/admin-api/routes/templates.d.ts +11 -1
  97. package/dist/admin-api/routes/templates.d.ts.map +1 -1
  98. package/dist/admin-api/routes/templates.js +36 -3
  99. package/dist/admin-api/routes/templates.js.map +1 -1
  100. package/dist/admin-api/routes/validation.d.ts +47 -0
  101. package/dist/admin-api/routes/validation.d.ts.map +1 -0
  102. package/dist/admin-api/routes/validation.js +120 -0
  103. package/dist/admin-api/routes/validation.js.map +1 -0
  104. package/dist/admin-api/schemas/archive.d.ts +124 -0
  105. package/dist/admin-api/schemas/archive.d.ts.map +1 -0
  106. package/dist/admin-api/schemas/archive.js +93 -0
  107. package/dist/admin-api/schemas/archive.js.map +1 -0
  108. package/dist/admin-api/schemas/assets.d.ts +16 -0
  109. package/dist/admin-api/schemas/assets.d.ts.map +1 -1
  110. package/dist/admin-api/schemas/assets.js +15 -0
  111. package/dist/admin-api/schemas/assets.js.map +1 -1
  112. package/dist/admin-api/schemas/audit.d.ts +175 -0
  113. package/dist/admin-api/schemas/audit.d.ts.map +1 -0
  114. package/dist/admin-api/schemas/audit.js +91 -0
  115. package/dist/admin-api/schemas/audit.js.map +1 -0
  116. package/dist/admin-api/schemas/error.d.ts +94 -0
  117. package/dist/admin-api/schemas/error.d.ts.map +1 -0
  118. package/dist/admin-api/schemas/error.js +79 -0
  119. package/dist/admin-api/schemas/error.js.map +1 -0
  120. package/dist/admin-api/schemas/fragments.d.ts +2 -0
  121. package/dist/admin-api/schemas/fragments.d.ts.map +1 -1
  122. package/dist/admin-api/schemas/fragments.js +4 -0
  123. package/dist/admin-api/schemas/fragments.js.map +1 -1
  124. package/dist/admin-api/schemas/index.d.ts +8 -0
  125. package/dist/admin-api/schemas/index.d.ts.map +1 -1
  126. package/dist/admin-api/schemas/index.js +8 -0
  127. package/dist/admin-api/schemas/index.js.map +1 -1
  128. package/dist/admin-api/schemas/pages.d.ts +2 -0
  129. package/dist/admin-api/schemas/pages.d.ts.map +1 -1
  130. package/dist/admin-api/schemas/pages.js +11 -0
  131. package/dist/admin-api/schemas/pages.js.map +1 -1
  132. package/dist/admin-api/schemas/rename.d.ts +77 -0
  133. package/dist/admin-api/schemas/rename.d.ts.map +1 -0
  134. package/dist/admin-api/schemas/rename.js +75 -0
  135. package/dist/admin-api/schemas/rename.js.map +1 -0
  136. package/dist/admin-api/schemas/site.d.ts +3 -2
  137. package/dist/admin-api/schemas/site.d.ts.map +1 -1
  138. package/dist/admin-api/schemas/site.js +3 -2
  139. package/dist/admin-api/schemas/site.js.map +1 -1
  140. package/dist/admin-api/schemas/system.d.ts +28 -0
  141. package/dist/admin-api/schemas/system.d.ts.map +1 -0
  142. package/dist/admin-api/schemas/system.js +35 -0
  143. package/dist/admin-api/schemas/system.js.map +1 -0
  144. package/dist/admin-api/schemas/targets.d.ts +55 -0
  145. package/dist/admin-api/schemas/targets.d.ts.map +1 -1
  146. package/dist/admin-api/schemas/targets.js +46 -0
  147. package/dist/admin-api/schemas/targets.js.map +1 -1
  148. package/dist/admin-api/schemas/templates.d.ts +54 -0
  149. package/dist/admin-api/schemas/templates.d.ts.map +1 -1
  150. package/dist/admin-api/schemas/templates.js +21 -0
  151. package/dist/admin-api/schemas/templates.js.map +1 -1
  152. package/dist/admin-api/schemas/validation.d.ts +101 -0
  153. package/dist/admin-api/schemas/validation.d.ts.map +1 -0
  154. package/dist/admin-api/schemas/validation.js +57 -0
  155. package/dist/admin-api/schemas/validation.js.map +1 -0
  156. package/dist/admin-api/source-context.d.ts +66 -10
  157. package/dist/admin-api/source-context.d.ts.map +1 -1
  158. package/dist/admin-api/source-context.js +43 -5
  159. package/dist/admin-api/source-context.js.map +1 -1
  160. package/dist/ai/adapter-scaffold.d.ts +63 -0
  161. package/dist/ai/adapter-scaffold.d.ts.map +1 -0
  162. package/dist/ai/adapter-scaffold.js +89 -0
  163. package/dist/ai/adapter-scaffold.js.map +1 -0
  164. package/dist/ai/compose-prompt.d.ts +50 -0
  165. package/dist/ai/compose-prompt.d.ts.map +1 -0
  166. package/dist/ai/compose-prompt.js +49 -0
  167. package/dist/ai/compose-prompt.js.map +1 -0
  168. package/dist/ai/errors.d.ts +65 -0
  169. package/dist/ai/errors.d.ts.map +1 -0
  170. package/dist/ai/errors.js +59 -0
  171. package/dist/ai/errors.js.map +1 -0
  172. package/dist/ai/index.d.ts +17 -0
  173. package/dist/ai/index.d.ts.map +1 -0
  174. package/dist/ai/index.js +16 -0
  175. package/dist/ai/index.js.map +1 -0
  176. package/dist/ai/provider.d.ts +76 -0
  177. package/dist/ai/provider.d.ts.map +1 -0
  178. package/dist/ai/provider.js +13 -0
  179. package/dist/ai/provider.js.map +1 -0
  180. package/dist/ai/refusal.d.ts +50 -0
  181. package/dist/ai/refusal.d.ts.map +1 -0
  182. package/dist/ai/refusal.js +100 -0
  183. package/dist/ai/refusal.js.map +1 -0
  184. package/dist/ai/vision-prep.d.ts +32 -0
  185. package/dist/ai/vision-prep.d.ts.map +1 -0
  186. package/dist/ai/vision-prep.js +113 -0
  187. package/dist/ai/vision-prep.js.map +1 -0
  188. package/dist/alt/adapter.d.ts +140 -0
  189. package/dist/alt/adapter.d.ts.map +1 -0
  190. package/dist/alt/adapter.js +7 -0
  191. package/dist/alt/adapter.js.map +1 -0
  192. package/dist/alt/anthropic.d.ts +63 -0
  193. package/dist/alt/anthropic.d.ts.map +1 -0
  194. package/dist/alt/anthropic.js +147 -0
  195. package/dist/alt/anthropic.js.map +1 -0
  196. package/dist/alt/config.d.ts +67 -0
  197. package/dist/alt/config.d.ts.map +1 -0
  198. package/dist/alt/config.js +41 -0
  199. package/dist/alt/config.js.map +1 -0
  200. package/dist/alt/factory.d.ts +19 -0
  201. package/dist/alt/factory.d.ts.map +1 -0
  202. package/dist/alt/factory.js +69 -0
  203. package/dist/alt/factory.js.map +1 -0
  204. package/dist/alt/null-adapter.d.ts +3 -0
  205. package/dist/alt/null-adapter.d.ts.map +1 -0
  206. package/dist/alt/null-adapter.js +43 -0
  207. package/dist/alt/null-adapter.js.map +1 -0
  208. package/dist/alt/ollama.d.ts +40 -0
  209. package/dist/alt/ollama.d.ts.map +1 -0
  210. package/dist/alt/ollama.js +139 -0
  211. package/dist/alt/ollama.js.map +1 -0
  212. package/dist/alt/openai.d.ts +46 -0
  213. package/dist/alt/openai.d.ts.map +1 -0
  214. package/dist/alt/openai.js +118 -0
  215. package/dist/alt/openai.js.map +1 -0
  216. package/dist/alt/prompt-policies.d.ts +79 -0
  217. package/dist/alt/prompt-policies.d.ts.map +1 -0
  218. package/dist/alt/prompt-policies.js +67 -0
  219. package/dist/alt/prompt-policies.js.map +1 -0
  220. package/dist/alt/route-handler.d.ts +56 -0
  221. package/dist/alt/route-handler.d.ts.map +1 -0
  222. package/dist/alt/route-handler.js +122 -0
  223. package/dist/alt/route-handler.js.map +1 -0
  224. package/dist/alt/suggester.d.ts +57 -0
  225. package/dist/alt/suggester.d.ts.map +1 -0
  226. package/dist/alt/suggester.js +133 -0
  227. package/dist/alt/suggester.js.map +1 -0
  228. package/dist/app.js +1 -1
  229. package/dist/app.js.map +1 -1
  230. package/dist/archive-aliases.d.ts +79 -0
  231. package/dist/archive-aliases.d.ts.map +1 -0
  232. package/dist/archive-aliases.js +60 -0
  233. package/dist/archive-aliases.js.map +1 -0
  234. package/dist/archive-helpers.d.ts +73 -0
  235. package/dist/archive-helpers.d.ts.map +1 -0
  236. package/dist/archive-helpers.js +94 -0
  237. package/dist/archive-helpers.js.map +1 -0
  238. package/dist/assets/find-refs.d.ts +1 -1
  239. package/dist/assets/find-refs.js +1 -1
  240. package/dist/assets/find-refs.js.map +1 -1
  241. package/dist/assets/rename.js +1 -1
  242. package/dist/assets/rename.js.map +1 -1
  243. package/dist/assets/replace.js +1 -1
  244. package/dist/assets/replace.js.map +1 -1
  245. package/dist/assets/resolve.js +4 -4
  246. package/dist/assets/resolve.js.map +1 -1
  247. package/dist/assets/serve-route.js +2 -2
  248. package/dist/assets/serve-route.js.map +1 -1
  249. package/dist/assets/validate.d.ts +1 -1
  250. package/dist/assets/validate.js +1 -1
  251. package/dist/audit/config.d.ts +75 -0
  252. package/dist/audit/config.d.ts.map +1 -0
  253. package/dist/audit/config.js +91 -0
  254. package/dist/audit/config.js.map +1 -0
  255. package/dist/audit/context.d.ts +98 -0
  256. package/dist/audit/context.d.ts.map +1 -0
  257. package/dist/audit/context.js +51 -0
  258. package/dist/audit/context.js.map +1 -0
  259. package/dist/audit/errors.d.ts +73 -0
  260. package/dist/audit/errors.d.ts.map +1 -0
  261. package/dist/audit/errors.js +78 -0
  262. package/dist/audit/errors.js.map +1 -0
  263. package/dist/audit/index.d.ts +16 -0
  264. package/dist/audit/index.d.ts.map +1 -0
  265. package/dist/audit/index.js +10 -0
  266. package/dist/audit/index.js.map +1 -0
  267. package/dist/audit/provider.d.ts +73 -0
  268. package/dist/audit/provider.d.ts.map +1 -0
  269. package/dist/audit/provider.js +2 -0
  270. package/dist/audit/provider.js.map +1 -0
  271. package/dist/audit/providers/history.d.ts +66 -0
  272. package/dist/audit/providers/history.d.ts.map +1 -0
  273. package/dist/audit/providers/history.js +102 -0
  274. package/dist/audit/providers/history.js.map +1 -0
  275. package/dist/audit/pseudonymize.d.ts +26 -0
  276. package/dist/audit/pseudonymize.d.ts.map +1 -0
  277. package/dist/audit/pseudonymize.js +86 -0
  278. package/dist/audit/pseudonymize.js.map +1 -0
  279. package/dist/audit/recorder.d.ts +102 -0
  280. package/dist/audit/recorder.d.ts.map +1 -0
  281. package/dist/audit/recorder.js +55 -0
  282. package/dist/audit/recorder.js.map +1 -0
  283. package/dist/audit/retention.d.ts +83 -0
  284. package/dist/audit/retention.d.ts.map +1 -0
  285. package/dist/audit/retention.js +142 -0
  286. package/dist/audit/retention.js.map +1 -0
  287. package/dist/audit/source-ip.d.ts +32 -0
  288. package/dist/audit/source-ip.d.ts.map +1 -0
  289. package/dist/audit/source-ip.js +164 -0
  290. package/dist/audit/source-ip.js.map +1 -0
  291. package/dist/audit/types.d.ts +143 -0
  292. package/dist/audit/types.d.ts.map +1 -0
  293. package/dist/audit/types.js +33 -0
  294. package/dist/audit/types.js.map +1 -0
  295. package/dist/audit/user-agent.d.ts +28 -0
  296. package/dist/audit/user-agent.d.ts.map +1 -0
  297. package/dist/audit/user-agent.js +63 -0
  298. package/dist/audit/user-agent.js.map +1 -0
  299. package/dist/auth/capabilities.d.ts +28 -0
  300. package/dist/auth/capabilities.d.ts.map +1 -0
  301. package/dist/auth/capabilities.js +101 -0
  302. package/dist/auth/capabilities.js.map +1 -0
  303. package/dist/auth/config.d.ts +109 -0
  304. package/dist/auth/config.d.ts.map +1 -0
  305. package/dist/auth/config.js +221 -0
  306. package/dist/auth/config.js.map +1 -0
  307. package/dist/auth/errors.d.ts +72 -0
  308. package/dist/auth/errors.d.ts.map +1 -0
  309. package/dist/auth/errors.js +78 -0
  310. package/dist/auth/errors.js.map +1 -0
  311. package/dist/auth/factory.d.ts +43 -0
  312. package/dist/auth/factory.d.ts.map +1 -0
  313. package/dist/auth/factory.js +48 -0
  314. package/dist/auth/factory.js.map +1 -0
  315. package/dist/auth/index.d.ts +21 -0
  316. package/dist/auth/index.d.ts.map +1 -0
  317. package/dist/auth/index.js +14 -0
  318. package/dist/auth/index.js.map +1 -0
  319. package/dist/auth/ip-match.d.ts +29 -0
  320. package/dist/auth/ip-match.d.ts.map +1 -0
  321. package/dist/auth/ip-match.js +162 -0
  322. package/dist/auth/ip-match.js.map +1 -0
  323. package/dist/auth/provider.d.ts +76 -0
  324. package/dist/auth/provider.d.ts.map +1 -0
  325. package/dist/auth/provider.js +2 -0
  326. package/dist/auth/provider.js.map +1 -0
  327. package/dist/auth/providers/aws-cognito.d.ts +55 -0
  328. package/dist/auth/providers/aws-cognito.d.ts.map +1 -0
  329. package/dist/auth/providers/aws-cognito.js +114 -0
  330. package/dist/auth/providers/aws-cognito.js.map +1 -0
  331. package/dist/auth/providers/azure-easy-auth.d.ts +7 -0
  332. package/dist/auth/providers/azure-easy-auth.d.ts.map +1 -0
  333. package/dist/auth/providers/azure-easy-auth.js +48 -0
  334. package/dist/auth/providers/azure-easy-auth.js.map +1 -0
  335. package/dist/auth/providers/cloudflare-access.d.ts +71 -0
  336. package/dist/auth/providers/cloudflare-access.d.ts.map +1 -0
  337. package/dist/auth/providers/cloudflare-access.js +120 -0
  338. package/dist/auth/providers/cloudflare-access.js.map +1 -0
  339. package/dist/auth/providers/forwarded-user.d.ts +31 -0
  340. package/dist/auth/providers/forwarded-user.d.ts.map +1 -0
  341. package/dist/auth/providers/forwarded-user.js +72 -0
  342. package/dist/auth/providers/forwarded-user.js.map +1 -0
  343. package/dist/auth/providers/none.d.ts +6 -0
  344. package/dist/auth/providers/none.d.ts.map +1 -0
  345. package/dist/auth/providers/none.js +19 -0
  346. package/dist/auth/providers/none.js.map +1 -0
  347. package/dist/auth/providers/tailscale.d.ts +7 -0
  348. package/dist/auth/providers/tailscale.d.ts.map +1 -0
  349. package/dist/auth/providers/tailscale.js +30 -0
  350. package/dist/auth/providers/tailscale.js.map +1 -0
  351. package/dist/auth/role-resolver.d.ts +38 -0
  352. package/dist/auth/role-resolver.d.ts.map +1 -0
  353. package/dist/auth/role-resolver.js +92 -0
  354. package/dist/auth/role-resolver.js.map +1 -0
  355. package/dist/auth/types.d.ts +150 -0
  356. package/dist/auth/types.d.ts.map +1 -0
  357. package/dist/auth/types.js +60 -0
  358. package/dist/auth/types.js.map +1 -0
  359. package/dist/cache/errors.d.ts +41 -0
  360. package/dist/cache/errors.d.ts.map +1 -0
  361. package/dist/cache/errors.js +44 -0
  362. package/dist/cache/errors.js.map +1 -0
  363. package/dist/cache/factories.d.ts +17 -0
  364. package/dist/cache/factories.d.ts.map +1 -0
  365. package/dist/cache/factories.js +17 -0
  366. package/dist/cache/factories.js.map +1 -0
  367. package/dist/cache/keys.d.ts +63 -0
  368. package/dist/cache/keys.d.ts.map +1 -0
  369. package/dist/cache/keys.js +145 -0
  370. package/dist/cache/keys.js.map +1 -0
  371. package/dist/cache/memory.d.ts +51 -0
  372. package/dist/cache/memory.d.ts.map +1 -0
  373. package/dist/cache/memory.js +204 -0
  374. package/dist/cache/memory.js.map +1 -0
  375. package/dist/cache/per-site.d.ts +22 -0
  376. package/dist/cache/per-site.d.ts.map +1 -0
  377. package/dist/cache/per-site.js +114 -0
  378. package/dist/cache/per-site.js.map +1 -0
  379. package/dist/cache/types.d.ts +142 -0
  380. package/dist/cache/types.d.ts.map +1 -0
  381. package/dist/cache/types.js +33 -0
  382. package/dist/cache/types.js.map +1 -0
  383. package/dist/cli/archive.d.ts +44 -0
  384. package/dist/cli/archive.d.ts.map +1 -0
  385. package/dist/cli/archive.js +310 -0
  386. package/dist/cli/archive.js.map +1 -0
  387. package/dist/cli/bootstrap.d.ts +15 -8
  388. package/dist/cli/bootstrap.d.ts.map +1 -1
  389. package/dist/cli/bootstrap.js +59 -23
  390. package/dist/cli/bootstrap.js.map +1 -1
  391. package/dist/cli/dev-template-watcher.d.ts +29 -0
  392. package/dist/cli/dev-template-watcher.d.ts.map +1 -0
  393. package/dist/cli/dev-template-watcher.js +38 -0
  394. package/dist/cli/dev-template-watcher.js.map +1 -0
  395. package/dist/cli/history.d.ts.map +1 -1
  396. package/dist/cli/history.js +5 -3
  397. package/dist/cli/history.js.map +1 -1
  398. package/dist/cli/index.js +712 -395
  399. package/dist/cli/index.js.map +1 -1
  400. package/dist/cli/validate-flags.d.ts +29 -0
  401. package/dist/cli/validate-flags.d.ts.map +1 -0
  402. package/dist/cli/validate-flags.js +49 -0
  403. package/dist/cli/validate-flags.js.map +1 -0
  404. package/dist/compare.d.ts +1 -1
  405. package/dist/compare.d.ts.map +1 -1
  406. package/dist/compare.js +25 -23
  407. package/dist/compare.js.map +1 -1
  408. package/dist/component-ids.d.ts +25 -0
  409. package/dist/component-ids.d.ts.map +1 -0
  410. package/dist/component-ids.js +83 -0
  411. package/dist/component-ids.js.map +1 -0
  412. package/dist/config/define.d.ts +61 -0
  413. package/dist/config/define.d.ts.map +1 -0
  414. package/dist/config/define.js +64 -0
  415. package/dist/config/define.js.map +1 -0
  416. package/dist/config/errors.d.ts +32 -0
  417. package/dist/config/errors.d.ts.map +1 -0
  418. package/dist/config/errors.js +40 -0
  419. package/dist/config/errors.js.map +1 -0
  420. package/dist/config/index.d.ts +13 -0
  421. package/dist/config/index.d.ts.map +1 -0
  422. package/dist/config/index.js +20 -0
  423. package/dist/config/index.js.map +1 -0
  424. package/dist/config/loader.d.ts +105 -0
  425. package/dist/config/loader.d.ts.map +1 -0
  426. package/dist/config/loader.js +265 -0
  427. package/dist/config/loader.js.map +1 -0
  428. package/dist/config/schemas.d.ts +89 -0
  429. package/dist/config/schemas.d.ts.map +1 -0
  430. package/dist/config/schemas.js +172 -0
  431. package/dist/config/schemas.js.map +1 -0
  432. package/dist/config/types.d.ts +32 -0
  433. package/dist/config/types.d.ts.map +1 -0
  434. package/dist/config/types.js +15 -0
  435. package/dist/config/types.js.map +1 -0
  436. package/dist/deploy/cloudflare-workers.d.ts +46 -0
  437. package/dist/deploy/cloudflare-workers.d.ts.map +1 -0
  438. package/dist/deploy/cloudflare-workers.js +213 -0
  439. package/dist/deploy/cloudflare-workers.js.map +1 -0
  440. package/dist/deploy/errors.d.ts +66 -0
  441. package/dist/deploy/errors.d.ts.map +1 -0
  442. package/dist/deploy/errors.js +82 -0
  443. package/dist/deploy/errors.js.map +1 -0
  444. package/dist/deploy/index.d.ts +9 -0
  445. package/dist/deploy/index.d.ts.map +1 -0
  446. package/dist/deploy/index.js +3 -0
  447. package/dist/deploy/index.js.map +1 -0
  448. package/dist/deploy/types.d.ts +162 -0
  449. package/dist/deploy/types.d.ts.map +1 -0
  450. package/dist/deploy/types.js +2 -0
  451. package/dist/deploy/types.js.map +1 -0
  452. package/dist/fragments/create.d.ts +70 -0
  453. package/dist/fragments/create.d.ts.map +1 -0
  454. package/dist/fragments/create.js +93 -0
  455. package/dist/fragments/create.js.map +1 -0
  456. package/dist/fragments/publish.d.ts +37 -0
  457. package/dist/fragments/publish.d.ts.map +1 -0
  458. package/dist/fragments/publish.js +52 -0
  459. package/dist/fragments/publish.js.map +1 -0
  460. package/dist/fragments/save.d.ts +81 -0
  461. package/dist/fragments/save.d.ts.map +1 -0
  462. package/dist/fragments/save.js +105 -0
  463. package/dist/fragments/save.js.map +1 -0
  464. package/dist/history-recorder.d.ts +5 -5
  465. package/dist/history-recorder.d.ts.map +1 -1
  466. package/dist/history-recorder.js +4 -4
  467. package/dist/history-recorder.js.map +1 -1
  468. package/dist/history-restorer.js +2 -2
  469. package/dist/history-restorer.js.map +1 -1
  470. package/dist/history.d.ts +1 -1
  471. package/dist/hooks/audit-emitter.d.ts +73 -0
  472. package/dist/hooks/audit-emitter.d.ts.map +1 -0
  473. package/dist/hooks/audit-emitter.js +13 -0
  474. package/dist/hooks/audit-emitter.js.map +1 -0
  475. package/dist/hooks/context.d.ts +78 -0
  476. package/dist/hooks/context.d.ts.map +1 -0
  477. package/dist/hooks/context.js +56 -0
  478. package/dist/hooks/context.js.map +1 -0
  479. package/dist/hooks/contribution.d.ts +90 -0
  480. package/dist/hooks/contribution.d.ts.map +1 -0
  481. package/dist/hooks/contribution.js +2 -0
  482. package/dist/hooks/contribution.js.map +1 -0
  483. package/dist/hooks/dispatch.d.ts +30 -0
  484. package/dist/hooks/dispatch.d.ts.map +1 -0
  485. package/dist/hooks/dispatch.js +252 -0
  486. package/dist/hooks/dispatch.js.map +1 -0
  487. package/dist/hooks/errors.d.ts +100 -0
  488. package/dist/hooks/errors.d.ts.map +1 -0
  489. package/dist/hooks/errors.js +103 -0
  490. package/dist/hooks/errors.js.map +1 -0
  491. package/dist/hooks/index.d.ts +15 -0
  492. package/dist/hooks/index.d.ts.map +1 -0
  493. package/dist/hooks/index.js +6 -0
  494. package/dist/hooks/index.js.map +1 -0
  495. package/dist/hooks/registry.d.ts +53 -0
  496. package/dist/hooks/registry.d.ts.map +1 -0
  497. package/dist/hooks/registry.js +139 -0
  498. package/dist/hooks/registry.js.map +1 -0
  499. package/dist/hooks/storage.d.ts +43 -0
  500. package/dist/hooks/storage.d.ts.map +1 -0
  501. package/dist/hooks/storage.js +2 -0
  502. package/dist/hooks/storage.js.map +1 -0
  503. package/dist/hooks/types.d.ts +324 -0
  504. package/dist/hooks/types.d.ts.map +1 -0
  505. package/dist/hooks/types.js +2 -0
  506. package/dist/hooks/types.js.map +1 -0
  507. package/dist/index.d.ts +26 -6
  508. package/dist/index.d.ts.map +1 -1
  509. package/dist/index.js +49 -5
  510. package/dist/index.js.map +1 -1
  511. package/dist/locale.d.ts +5 -1
  512. package/dist/locale.d.ts.map +1 -1
  513. package/dist/locale.js +6 -2
  514. package/dist/locale.js.map +1 -1
  515. package/dist/manifest-save.d.ts +255 -0
  516. package/dist/manifest-save.d.ts.map +1 -0
  517. package/dist/manifest-save.js +260 -0
  518. package/dist/manifest-save.js.map +1 -0
  519. package/dist/manifest.d.ts +1 -2
  520. package/dist/manifest.d.ts.map +1 -1
  521. package/dist/manifest.js +43 -44
  522. package/dist/manifest.js.map +1 -1
  523. package/dist/node-floor.d.ts +3 -0
  524. package/dist/node-floor.d.ts.map +1 -0
  525. package/dist/node-floor.js +3 -0
  526. package/dist/node-floor.js.map +1 -0
  527. package/dist/pages/create.d.ts +103 -0
  528. package/dist/pages/create.d.ts.map +1 -0
  529. package/dist/pages/create.js +117 -0
  530. package/dist/pages/create.js.map +1 -0
  531. package/dist/pages/publish.d.ts +59 -0
  532. package/dist/pages/publish.d.ts.map +1 -0
  533. package/dist/pages/publish.js +78 -0
  534. package/dist/pages/publish.js.map +1 -0
  535. package/dist/pages/save.d.ts +97 -0
  536. package/dist/pages/save.d.ts.map +1 -0
  537. package/dist/pages/save.js +138 -0
  538. package/dist/pages/save.js.map +1 -0
  539. package/dist/providers/factories.d.ts +65 -0
  540. package/dist/providers/factories.d.ts.map +1 -0
  541. package/dist/providers/factories.js +189 -0
  542. package/dist/providers/factories.js.map +1 -0
  543. package/dist/publish-item.d.ts +225 -0
  544. package/dist/publish-item.d.ts.map +1 -0
  545. package/dist/publish-item.js +210 -0
  546. package/dist/publish-item.js.map +1 -0
  547. package/dist/publish-rendered.d.ts.map +1 -1
  548. package/dist/publish-rendered.js +75 -6
  549. package/dist/publish-rendered.js.map +1 -1
  550. package/dist/publish-renderers.d.ts +132 -0
  551. package/dist/publish-renderers.d.ts.map +1 -0
  552. package/dist/publish-renderers.js +240 -0
  553. package/dist/publish-renderers.js.map +1 -0
  554. package/dist/publish-run.d.ts +223 -0
  555. package/dist/publish-run.d.ts.map +1 -0
  556. package/dist/publish-run.js +307 -0
  557. package/dist/publish-run.js.map +1 -0
  558. package/dist/publish.d.ts.map +1 -1
  559. package/dist/publish.js +1 -10
  560. package/dist/publish.js.map +1 -1
  561. package/dist/render-for-analysis.d.ts +24 -0
  562. package/dist/render-for-analysis.d.ts.map +1 -0
  563. package/dist/render-for-analysis.js +146 -0
  564. package/dist/render-for-analysis.js.map +1 -0
  565. package/dist/resolver.d.ts.map +1 -1
  566. package/dist/resolver.js +47 -23
  567. package/dist/resolver.js.map +1 -1
  568. package/dist/runtime/archive-marker.d.ts +62 -0
  569. package/dist/runtime/archive-marker.d.ts.map +1 -0
  570. package/dist/runtime/archive-marker.js +88 -0
  571. package/dist/runtime/archive-marker.js.map +1 -0
  572. package/dist/runtime/capability-gap-warnings.d.ts +42 -0
  573. package/dist/runtime/capability-gap-warnings.d.ts.map +1 -0
  574. package/dist/runtime/capability-gap-warnings.js +28 -0
  575. package/dist/runtime/capability-gap-warnings.js.map +1 -0
  576. package/dist/runtime/redirects-emit.d.ts +93 -0
  577. package/dist/runtime/redirects-emit.d.ts.map +1 -0
  578. package/dist/runtime/redirects-emit.js +89 -0
  579. package/dist/runtime/redirects-emit.js.map +1 -0
  580. package/dist/runtime/runtime-capabilities.d.ts +79 -0
  581. package/dist/runtime/runtime-capabilities.d.ts.map +1 -0
  582. package/dist/runtime/runtime-capabilities.js +60 -0
  583. package/dist/runtime/runtime-capabilities.js.map +1 -0
  584. package/dist/save-etag.d.ts +69 -0
  585. package/dist/save-etag.d.ts.map +1 -0
  586. package/dist/save-etag.js +118 -0
  587. package/dist/save-etag.js.map +1 -0
  588. package/dist/site-loader.d.ts +42 -4
  589. package/dist/site-loader.d.ts.map +1 -1
  590. package/dist/site-loader.js +27 -8
  591. package/dist/site-loader.js.map +1 -1
  592. package/dist/targets.d.ts +21 -12
  593. package/dist/targets.d.ts.map +1 -1
  594. package/dist/targets.js +27 -95
  595. package/dist/targets.js.map +1 -1
  596. package/dist/testing/admin-cache-contract.d.ts +52 -0
  597. package/dist/testing/admin-cache-contract.d.ts.map +1 -0
  598. package/dist/testing/admin-cache-contract.js +203 -0
  599. package/dist/testing/admin-cache-contract.js.map +1 -0
  600. package/dist/testing/index.d.ts +11 -0
  601. package/dist/testing/index.d.ts.map +1 -0
  602. package/dist/testing/index.js +11 -0
  603. package/dist/testing/index.js.map +1 -0
  604. package/dist/transforms/factories.d.ts +16 -0
  605. package/dist/transforms/factories.d.ts.map +1 -0
  606. package/dist/transforms/factories.js +18 -0
  607. package/dist/transforms/factories.js.map +1 -0
  608. package/dist/transforms/index.d.ts +10 -17
  609. package/dist/transforms/index.d.ts.map +1 -1
  610. package/dist/transforms/index.js +4 -28
  611. package/dist/transforms/index.js.map +1 -1
  612. package/dist/transforms/sharp.d.ts +15 -1
  613. package/dist/transforms/sharp.d.ts.map +1 -1
  614. package/dist/transforms/sharp.js +34 -20
  615. package/dist/transforms/sharp.js.map +1 -1
  616. package/dist/types.d.ts +379 -52
  617. package/dist/types.d.ts.map +1 -1
  618. package/dist/types.js +20 -1
  619. package/dist/types.js.map +1 -1
  620. package/dist/validation/alt-required-walker.d.ts +27 -0
  621. package/dist/validation/alt-required-walker.d.ts.map +1 -0
  622. package/dist/validation/alt-required-walker.js +108 -0
  623. package/dist/validation/alt-required-walker.js.map +1 -0
  624. package/dist/validation/default-registry.d.ts +12 -0
  625. package/dist/validation/default-registry.d.ts.map +1 -0
  626. package/dist/validation/default-registry.js +55 -0
  627. package/dist/validation/default-registry.js.map +1 -0
  628. package/dist/validation/publish-audit.d.ts +44 -0
  629. package/dist/validation/publish-audit.d.ts.map +1 -0
  630. package/dist/validation/publish-audit.js +64 -0
  631. package/dist/validation/publish-audit.js.map +1 -0
  632. package/dist/validation/registry.d.ts +23 -0
  633. package/dist/validation/registry.d.ts.map +1 -0
  634. package/dist/validation/registry.js +15 -0
  635. package/dist/validation/registry.js.map +1 -0
  636. package/dist/validation/save-delta.d.ts +46 -0
  637. package/dist/validation/save-delta.d.ts.map +1 -0
  638. package/dist/validation/save-delta.js +57 -0
  639. package/dist/validation/save-delta.js.map +1 -0
  640. package/dist/validation/scanner.d.ts +91 -0
  641. package/dist/validation/scanner.d.ts.map +1 -0
  642. package/dist/validation/scanner.js +327 -0
  643. package/dist/validation/scanner.js.map +1 -0
  644. package/dist/validation/template-impact.d.ts +52 -0
  645. package/dist/validation/template-impact.d.ts.map +1 -0
  646. package/dist/validation/template-impact.js +53 -0
  647. package/dist/validation/template-impact.js.map +1 -0
  648. package/dist/validation/types.d.ts +123 -0
  649. package/dist/validation/types.d.ts.map +1 -0
  650. package/dist/validation/types.js +7 -0
  651. package/dist/validation/types.js.map +1 -0
  652. package/dist/validation/validators/accessibility.d.ts +3 -0
  653. package/dist/validation/validators/accessibility.d.ts.map +1 -0
  654. package/dist/validation/validators/accessibility.js +106 -0
  655. package/dist/validation/validators/accessibility.js.map +1 -0
  656. package/dist/validation/validators/aliasof-points-to-archived.d.ts +40 -0
  657. package/dist/validation/validators/aliasof-points-to-archived.d.ts.map +1 -0
  658. package/dist/validation/validators/aliasof-points-to-archived.js +34 -0
  659. package/dist/validation/validators/aliasof-points-to-archived.js.map +1 -0
  660. package/dist/validation/validators/alt-required.d.ts +3 -0
  661. package/dist/validation/validators/alt-required.d.ts.map +1 -0
  662. package/dist/validation/validators/alt-required.js +118 -0
  663. package/dist/validation/validators/alt-required.js.map +1 -0
  664. package/dist/validation/validators/archive-not-supported-on-target.d.ts +3 -0
  665. package/dist/validation/validators/archive-not-supported-on-target.d.ts.map +1 -0
  666. package/dist/validation/validators/archive-not-supported-on-target.js +38 -0
  667. package/dist/validation/validators/archive-not-supported-on-target.js.map +1 -0
  668. package/dist/validation/validators/broken-links.d.ts +3 -0
  669. package/dist/validation/validators/broken-links.d.ts.map +1 -0
  670. package/dist/validation/validators/broken-links.js +190 -0
  671. package/dist/validation/validators/broken-links.js.map +1 -0
  672. package/dist/validation/validators/circular-alias.d.ts +36 -0
  673. package/dist/validation/validators/circular-alias.d.ts.map +1 -0
  674. package/dist/validation/validators/circular-alias.js +63 -0
  675. package/dist/validation/validators/circular-alias.js.map +1 -0
  676. package/dist/validation/validators/circular-fragment.d.ts +15 -0
  677. package/dist/validation/validators/circular-fragment.d.ts.map +1 -0
  678. package/dist/validation/validators/circular-fragment.js +97 -0
  679. package/dist/validation/validators/circular-fragment.js.map +1 -0
  680. package/dist/validation/validators/dangling-alias.d.ts +38 -0
  681. package/dist/validation/validators/dangling-alias.d.ts.map +1 -0
  682. package/dist/validation/validators/dangling-alias.js +31 -0
  683. package/dist/validation/validators/dangling-alias.js.map +1 -0
  684. package/dist/validation/validators/deploy-target-type-supported.d.ts +3 -0
  685. package/dist/validation/validators/deploy-target-type-supported.d.ts.map +1 -0
  686. package/dist/validation/validators/deploy-target-type-supported.js +32 -0
  687. package/dist/validation/validators/deploy-target-type-supported.js.map +1 -0
  688. package/dist/validation/validators/dynamic-route-conflict.d.ts +18 -0
  689. package/dist/validation/validators/dynamic-route-conflict.d.ts.map +1 -0
  690. package/dist/validation/validators/dynamic-route-conflict.js +80 -0
  691. package/dist/validation/validators/dynamic-route-conflict.js.map +1 -0
  692. package/dist/validation/validators/html-validity.d.ts +3 -0
  693. package/dist/validation/validators/html-validity.d.ts.map +1 -0
  694. package/dist/validation/validators/html-validity.js +89 -0
  695. package/dist/validation/validators/html-validity.js.map +1 -0
  696. package/dist/validation/validators/orphaned-locale-file.d.ts +21 -0
  697. package/dist/validation/validators/orphaned-locale-file.d.ts.map +1 -0
  698. package/dist/validation/validators/orphaned-locale-file.js +84 -0
  699. package/dist/validation/validators/orphaned-locale-file.js.map +1 -0
  700. package/dist/validation/validators/referenced-archived-without-alias.d.ts +3 -0
  701. package/dist/validation/validators/referenced-archived-without-alias.d.ts.map +1 -0
  702. package/dist/validation/validators/referenced-archived-without-alias.js +65 -0
  703. package/dist/validation/validators/referenced-archived-without-alias.js.map +1 -0
  704. package/dist/validation/validators/referenced-asset-exists.d.ts +13 -0
  705. package/dist/validation/validators/referenced-asset-exists.d.ts.map +1 -0
  706. package/dist/validation/validators/referenced-asset-exists.js +80 -0
  707. package/dist/validation/validators/referenced-asset-exists.js.map +1 -0
  708. package/dist/validation/validators/referenced-fragment-exists.d.ts +9 -0
  709. package/dist/validation/validators/referenced-fragment-exists.d.ts.map +1 -0
  710. package/dist/validation/validators/referenced-fragment-exists.js +52 -0
  711. package/dist/validation/validators/referenced-fragment-exists.js.map +1 -0
  712. package/dist/validation/validators/referenced-template-exists.d.ts +10 -0
  713. package/dist/validation/validators/referenced-template-exists.d.ts.map +1 -0
  714. package/dist/validation/validators/referenced-template-exists.js +74 -0
  715. package/dist/validation/validators/referenced-template-exists.js.map +1 -0
  716. package/dist/validation/validators/schema-conformance.d.ts +17 -0
  717. package/dist/validation/validators/schema-conformance.d.ts.map +1 -0
  718. package/dist/validation/validators/schema-conformance.js +94 -0
  719. package/dist/validation/validators/schema-conformance.js.map +1 -0
  720. package/dist/validation/validators/target-deploy-coverage.d.ts +3 -0
  721. package/dist/validation/validators/target-deploy-coverage.d.ts.map +1 -0
  722. package/dist/validation/validators/target-deploy-coverage.js +37 -0
  723. package/dist/validation/validators/target-deploy-coverage.js.map +1 -0
  724. package/dist/validation/validators/unused-fragment.d.ts +16 -0
  725. package/dist/validation/validators/unused-fragment.d.ts.map +1 -0
  726. package/dist/validation/validators/unused-fragment.js +86 -0
  727. package/dist/validation/validators/unused-fragment.js.map +1 -0
  728. package/package.json +54 -31
  729. package/admin-dist/assets/index-BO9-CXmW.css +0 -1
  730. package/admin-dist/assets/index-Ufu8zZH_.js +0 -668
  731. package/admin-dist/assets/rolldown-runtime-COnpUsM8.js +0 -1
  732. package/admin-dist/assets/vendor-rjsf-HKBAjOmQ.js +0 -32
  733. package/admin-dist/assets/vendor-tiptap-IyO99U4R.js +0 -142
  734. package/admin-dist/assets/vendor-vue-D3wBSmDf.js +0 -1
  735. package/dist/publish-locale.d.ts +0 -44
  736. package/dist/publish-locale.d.ts.map +0 -1
  737. package/dist/publish-locale.js +0 -103
  738. 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;AAEvB,2DAA2D;AAC3D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,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.yaml lives,
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.yaml) or when history isn't
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.yaml
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.yaml.
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.yaml.
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.yaml. */
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.yaml `history.enabled: false`).
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.yaml lives. Required.
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 type SourceContextResolver = (targetName: string | undefined) => SourceContext | Promise<SourceContext>;
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":"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"}
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.yaml.
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({ contentRoot: source.contentRoot, manifest: source.manifest, ...opts });
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
- return () => source;
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
- return async (targetName) => {
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.yaml at all)
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":"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"}
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"}