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
@@ -24,7 +24,11 @@ import { updateAssetMetadata } from '../../assets/update-metadata.js';
24
24
  import { buildSelector } from '../../schema/dimensions.js';
25
25
  import { isValidLocale } from '../../locale.js';
26
26
  import { isValidTheme } from '../../themes.js';
27
+ import { suggestAltForAsset } from '../../alt/route-handler.js';
27
28
  import { respondWithAssetError } from '../error-response.js';
29
+ import { requireCapability } from '../middleware/capability.js';
30
+ import { buildHookContext, dispatchAfterUpload, dispatchBeforeUpload, HookCancellation, HookTimeout, } from '../../hooks/index.js';
31
+ import { makeAuditFiringEmitter } from '../hook-audit-emitter.js';
28
32
  /**
29
33
  * Pull a Selector out of the request's query params, validating each
30
34
  * dimension's value as it reads. Returns `null` when no dimension is
@@ -58,9 +62,10 @@ function selectorFromQuery(c) {
58
62
  }
59
63
  /** Where assets live, relative to the target storage root. */
60
64
  const ASSETS_ROOT = 'assets';
61
- export function assetRoutes(resolve) {
65
+ export function assetRoutes(resolve, opts = {}) {
62
66
  const app = new Hono();
63
- app.get('/api/assets', async (c) => {
67
+ const hooks = opts.hooks;
68
+ app.get('/api/assets', requireCapability('read:assets'), async (c) => {
64
69
  const source = await resolve(c.req.query('target'));
65
70
  try {
66
71
  const summaries = await listAssets({
@@ -76,7 +81,7 @@ export function assetRoutes(resolve) {
76
81
  throw err;
77
82
  }
78
83
  });
79
- app.get('/api/assets/:name', async (c) => {
84
+ app.get('/api/assets/:name', requireCapability('read:assets'), async (c) => {
80
85
  const name = c.req.param('name');
81
86
  const source = await resolve(c.req.query('target'));
82
87
  try {
@@ -123,7 +128,7 @@ export function assetRoutes(resolve) {
123
128
  * 404 Not Found — asset missing
124
129
  * 500 Storage — underlying write failed
125
130
  */
126
- app.patch('/api/assets/:name', async (c) => {
131
+ app.patch('/api/assets/:name', requireCapability('edit:assets'), async (c) => {
127
132
  const name = c.req.param('name');
128
133
  const source = await resolve(c.req.query('target'));
129
134
  let body;
@@ -195,7 +200,7 @@ export function assetRoutes(resolve) {
195
200
  throw err;
196
201
  }
197
202
  });
198
- app.delete('/api/assets/:name', async (c) => {
203
+ app.delete('/api/assets/:name', requireCapability('delete:assets'), async (c) => {
199
204
  const name = c.req.param('name');
200
205
  const source = await resolve(c.req.query('target'));
201
206
  try {
@@ -245,7 +250,7 @@ export function assetRoutes(resolve) {
245
250
  * 409 Name Collision — new name already taken
246
251
  * 500 Storage Failure — underlying read/write/rm failed mid-operation
247
252
  */
248
- app.post('/api/assets/:name/rename-to/:newName', async (c) => {
253
+ app.post('/api/assets/:name/rename-to/:newName', requireCapability('edit:assets'), async (c) => {
249
254
  const oldName = c.req.param('name');
250
255
  const newName = c.req.param('newName');
251
256
  const source = await resolve(c.req.query('target'));
@@ -269,7 +274,7 @@ export function assetRoutes(resolve) {
269
274
  throw err;
270
275
  }
271
276
  });
272
- app.post('/api/assets/:name/replace-with/:newName', async (c) => {
277
+ app.post('/api/assets/:name/replace-with/:newName', requireCapability('edit:assets'), async (c) => {
273
278
  const oldName = c.req.param('name');
274
279
  const newName = c.req.param('newName');
275
280
  const source = await resolve(c.req.query('target'));
@@ -292,6 +297,89 @@ export function assetRoutes(resolve) {
292
297
  throw err;
293
298
  }
294
299
  });
300
+ /**
301
+ * POST /api/assets/:name/suggest-alt — generate alt text for the
302
+ * named asset using the configured AI adapter.
303
+ *
304
+ * Server fetches asset bytes from storage; client only passes the
305
+ * name and target. Locale (?locale=fr) controls the language the
306
+ * model writes in (direct generation, no translation pipeline).
307
+ *
308
+ * Refusals return 200 with `{ refused: true, refusalReason }` —
309
+ * the API call succeeded; the model declined. UI consumers branch
310
+ * on `refused` to decide whether to surface the text or the reason.
311
+ *
312
+ * Responses:
313
+ * 200 OK — { text, refused, refusalReason }
314
+ * 400 Bad Request — invalid locale code
315
+ * 404 Not Found — asset doesn't exist on this target
316
+ * 502 Bad Gateway — adapter call failed (network, auth, etc.)
317
+ * 503 Unavailable — no adapter configured / MIME unsupported
318
+ */
319
+ app.post('/api/assets/:name/suggest-alt', requireCapability('edit:assets'), async (c) => {
320
+ const name = c.req.param('name');
321
+ const localeRaw = c.req.query('locale');
322
+ if (localeRaw !== undefined && !isValidLocale(localeRaw)) {
323
+ return c.json({ code: 'BAD_REQUEST', message: `Invalid locale code: ${localeRaw}` }, 400);
324
+ }
325
+ const locale = localeRaw ?? 'en';
326
+ const source = await resolve(c.req.query('target'));
327
+ if (!source.manifest) {
328
+ // Without the site manifest we can't read `ai:` / `altText:`
329
+ // config. Treat as unconfigured rather than failing — same
330
+ // posture as a missing block.
331
+ return c.json({ code: 'AI_ADAPTER_UNAVAILABLE', message: 'Site manifest not available; AI alt-text not configured.' }, 503);
332
+ }
333
+ const targetConfig = source.targetName ? source.manifest.targets?.[source.targetName] : undefined;
334
+ try {
335
+ const result = await suggestAltForAsset({
336
+ name,
337
+ assetsRoot: ASSETS_ROOT,
338
+ storage: source.storage,
339
+ site: source.manifest,
340
+ target: targetConfig,
341
+ gazetta: source.gazettaManifest,
342
+ locale,
343
+ });
344
+ switch (result.kind) {
345
+ case 'ok': {
346
+ // Audit the suggest-alt invocation per design-ai.md +
347
+ // cross-foundation gap #4. Refusal is recorded as
348
+ // metadata.refused: true (the API call succeeded; the
349
+ // model declined — outcome stays 'success'). Provider
350
+ // name + locale + refusalReason carried in metadata so
351
+ // forensic queries can answer "why did this image not
352
+ // get alt?" without re-fetching context.
353
+ await c.var.audit.record({
354
+ action: 'ai-suggest-alt',
355
+ outcome: 'success',
356
+ scope: { kind: 'asset', name },
357
+ metadata: {
358
+ provider: result.provider,
359
+ locale,
360
+ refused: result.suggestion.refused,
361
+ ...(result.suggestion.refused && result.suggestion.refusalReason
362
+ ? { refusalReason: result.suggestion.refusalReason }
363
+ : {}),
364
+ },
365
+ });
366
+ return c.json(result.suggestion, 200);
367
+ }
368
+ case 'unavailable':
369
+ return c.json({ code: 'AI_ADAPTER_UNAVAILABLE', message: result.message }, 503);
370
+ case 'failed':
371
+ return c.json({ code: 'AI_ADAPTER_FAILED', message: result.message }, 502);
372
+ case 'not-found':
373
+ return c.json({ code: 'ASSET_MANIFEST_NOT_FOUND', message: result.message }, 404);
374
+ }
375
+ }
376
+ catch (err) {
377
+ const res = respondWithAssetError(c, err);
378
+ if (res)
379
+ return res;
380
+ throw err;
381
+ }
382
+ });
295
383
  /**
296
384
  * POST /api/assets/:name/locale-bytes — upload a locale (or theme,
297
385
  * or compound) bytes override for an existing asset.
@@ -307,7 +395,7 @@ export function assetRoutes(resolve) {
307
395
  * 409 Kind Mismatch — override MIME category differs from default
308
396
  * 500 Storage Failure — underlying write failed
309
397
  */
310
- app.post('/api/assets/:name/locale-bytes', async (c) => {
398
+ app.post('/api/assets/:name/locale-bytes', requireCapability('edit:assets'), async (c) => {
311
399
  const name = c.req.param('name');
312
400
  const selectorOrErr = selectorFromQuery(c);
313
401
  if (selectorOrErr instanceof Response)
@@ -357,7 +445,7 @@ export function assetRoutes(resolve) {
357
445
  * 404 Not Found — asset or override doesn't exist
358
446
  * 500 Storage Failure — underlying rm failed
359
447
  */
360
- app.delete('/api/assets/:name/locale-bytes', async (c) => {
448
+ app.delete('/api/assets/:name/locale-bytes', requireCapability('edit:assets'), async (c) => {
361
449
  const name = c.req.param('name');
362
450
  const selectorOrErr = selectorFromQuery(c);
363
451
  if (selectorOrErr instanceof Response)
@@ -386,7 +474,7 @@ export function assetRoutes(resolve) {
386
474
  throw err;
387
475
  }
388
476
  });
389
- app.post('/api/assets', async (c) => {
477
+ app.post('/api/assets', requireCapability('edit:assets'), async (c) => {
390
478
  const source = await resolve(c.req.query('target'));
391
479
  // Hono's parseBody reads multipart into a { [field]: string | File } map.
392
480
  const body = await c.req.parseBody();
@@ -401,24 +489,89 @@ export function assetRoutes(resolve) {
401
489
  }
402
490
  // alt: absent → null, empty string → "" (decorative), string → the value
403
491
  const alt = typeof altRaw === 'string' ? altRaw : null;
404
- // Pull per-target upload policy from site.yaml. When the source
492
+ // Pull per-target upload policy from site.config.ts. When the source
405
493
  // didn't resolve a named target (legacy static-resolver path) or
406
494
  // the site manifest isn't wired, ingest falls back to the default
407
495
  // size cap.
408
496
  const targetConfig = source.targetName ? source.manifest?.targets?.[source.targetName] : undefined;
409
497
  const policy = targetConfig?.assets;
498
+ // beforeUpload hooks per design-hooks.md "Asset lifecycle".
499
+ // Cut 6 wires hooks BEFORE the ingest pipeline (which runs the
500
+ // existing UploadPreprocessor + UploadAnalyzer internally).
501
+ // Hooks see raw bytes + initial metadata; their mutations flow
502
+ // into ingestAsset.
503
+ //
504
+ // Design's "hooks AFTER preprocessor/analyzer" goal would
505
+ // require ingestAsset to expose internal hook points; deferred
506
+ // until concrete operator demand for analyzer-extracted EXIF
507
+ // / dimensions in beforeUpload. Operators inspecting analyzer
508
+ // output today use afterUpload (sees the persisted manifest).
509
+ let uploadBytes;
510
+ try {
511
+ uploadBytes = new Uint8Array(await file.arrayBuffer());
512
+ }
513
+ catch (err) {
514
+ return c.json({ code: 'BAD_REQUEST', message: `Failed to read file bytes: ${err.message}` }, 400);
515
+ }
516
+ let initialAsset = {
517
+ name,
518
+ mime: file.type || 'application/octet-stream',
519
+ size: uploadBytes.byteLength,
520
+ ...(alt !== null ? { alt } : {}),
521
+ };
522
+ const hookCtx = hooks
523
+ ? buildHookContext({
524
+ principal: c.var.principal,
525
+ storage: source.storage,
526
+ target: source.targetName,
527
+ requestId: c.req.header('x-request-id') ?? crypto.randomUUID(),
528
+ site: { name: source.manifest?.name },
529
+ auditEmit: makeAuditFiringEmitter(c.var.audit),
530
+ })
531
+ : null;
532
+ if (hooks && hookCtx) {
533
+ try {
534
+ const mutated = await dispatchBeforeUpload(hooks, initialAsset, uploadBytes, hookCtx);
535
+ initialAsset = mutated.asset;
536
+ uploadBytes = mutated.bytes;
537
+ }
538
+ catch (err) {
539
+ if (err instanceof HookCancellation || err instanceof HookTimeout) {
540
+ return c.json({ code: 'HOOK_CANCELLED', hook: err.hookName, reason: err.message }, 409);
541
+ }
542
+ throw err;
543
+ }
544
+ }
410
545
  try {
411
546
  const result = await ingestAsset({
412
547
  storage: source.storage,
413
548
  assetsRoot: ASSETS_ROOT,
414
- bytes: file.stream(),
415
- requestedName: name,
416
- alt,
549
+ // Wrap the (possibly hook-mutated) bytes back into a stream
550
+ // for ingestAsset's stream-shaped contract. One chunk; the
551
+ // bytes are already in memory (we materialized above).
552
+ bytes: new ReadableStream({
553
+ start(controller) {
554
+ controller.enqueue(uploadBytes);
555
+ controller.close();
556
+ },
557
+ }),
558
+ requestedName: initialAsset.name,
559
+ alt: initialAsset.alt ?? null,
417
560
  uploadedBy: '',
418
561
  policy,
419
562
  history: source.history,
420
563
  contentRoot: source.contentRoot,
421
564
  });
565
+ // afterUpload hooks per design-hooks.md "Asset lifecycle"
566
+ // step 5. Observational; failures logged. Sees the persisted
567
+ // hash + final manifest fields (via the asset shape).
568
+ if (hooks && hookCtx) {
569
+ await dispatchAfterUpload(hooks, {
570
+ ...initialAsset,
571
+ // Manifest's hash is the canonical post-ingest digest.
572
+ // initialAsset.size + name passed through unchanged.
573
+ }, { asset: initialAsset, hash: result.manifest.hash ?? '' }, hookCtx);
574
+ }
422
575
  return c.json({ manifest: result.manifest, bytesPath: result.bytesPath }, 201);
423
576
  }
424
577
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/admin-api/routes/assets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../../src/admin-api/routes/assets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAA2B,MAAM,iCAAiC,CAAA;AAC9F,OAAO,EAAE,aAAa,EAAiB,MAAM,4BAA4B,CAAA;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAE/D,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,GAGZ,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAMjE;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,CAAwD;IACjF,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IACpC,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAClC,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IAC5D,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,wBAAwB,MAAM,EAAE,EAAE,CAAC,EAAE;YACtG,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,uBAAuB,KAAK,EAAE,EAAE,CAAC,EAAE;YACpG,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,aAAa,CAAC;QACnB,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC,CAAA;AACJ,CAAC;AAED,8DAA8D;AAC9D,MAAM,WAAW,GAAG,QAAQ,CAAA;AAE5B,MAAM,UAAU,WAAW,CAAC,OAA8B,EAAE,OAA2B,EAAE;IACvF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAY,CAAA;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IAExB,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QACjE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACnD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC;gBACjC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,WAAW;aACxB,CAAC,CAAA;YACF,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACzC,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAA;YACnB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QACvE,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACnD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAA;YACtE,+DAA+D;YAC/D,8DAA8D;YAC9D,iEAAiE;YACjE,uBAAuB;YACvB,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;YACnF,MAAM,OAAO,GAAa,EAAE,CAAA;YAC5B,MAAM,MAAM,GAAa,EAAE,CAAA;YAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBACzC,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC3E,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxE,CAAC;YACD,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;QACrD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACzC,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAA;YACnB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEF;;;;;;;;;;;;;;;;;OAiBG;IACH,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QACzE,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QAEnD,IAAI,IAAa,CAAA;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,wBAAwB,EAAE,EAAE,GAAG,CAAC,CAAA;QAChF,CAAC;QAED,MAAM,KAAK,GAAuB,EAAE,CAAA;QACpC,MAAM,GAAG,GAAG,IAA+B,CAAA;QAC3C,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAA;YACjB,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACxC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,4BAA4B,EAAE,EAAE,GAAG,CAAC,CAAA;YACpF,CAAC;YACD,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;QACf,CAAC;QACD,IAAI,YAAY,IAAI,GAAG,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAA;YACxB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACf,KAAK,CAAC,UAAU,GAAG,IAAI,CAAA;YACzB,CAAC;iBAAM,IACL,CAAC,KAAK,IAAI;gBACV,OAAO,CAAC,KAAK,QAAQ;gBACrB,OAAQ,CAA6B,CAAC,CAAC,KAAK,QAAQ;gBACpD,OAAQ,CAA6B,CAAC,CAAC,KAAK,QAAQ,EACpD,CAAC;gBACD,MAAM,EAAE,GAAG,CAA6B,CAAA;gBACxC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,sCAAsC,EAAE,EAAE,GAAG,CAAC,CAAA;gBAC9F,CAAC;gBACD,KAAK,CAAC,UAAU,GAAG,EAAE,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,qDAAqD,EAAE,EAAE,GAAG,CAAC,CAAA;YAC7G,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;gBACxC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,WAAW;gBACvB,SAAS,EAAE,IAAI;gBACf,KAAK;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAA;YACF,iEAAiE;YACjE,2DAA2D;YAC3D,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;YAClF,MAAM,OAAO,GAAa,EAAE,CAAA;YAC5B,MAAM,MAAM,GAAa,EAAE,CAAA;YAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBACzC,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC3E,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxE,CAAC;YACD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QAClE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACzC,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAA;YACnB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,eAAe,CAAC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QAC5E,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACnD,IAAI,CAAC;YACH,MAAM,WAAW,CAAC;gBAChB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,WAAW;gBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAA;YACF,qEAAqE;YACrE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACzC,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAA;YACnB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEF;;;;;;;;;;;;OAYG;IACH;;;;;;;;;;;;;OAaG;IACH,GAAG,CAAC,IAAI,CAAC,sCAAsC,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QAC3F,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACnC,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACtC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACnD,IAAI,CAAC;YACH,MAAM,WAAW,CAAC;gBAChB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,WAAW;gBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO;gBACP,OAAO;gBACP,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAA;YACF,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACzC,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAA;YACnB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,yCAAyC,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QAC9F,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACnC,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACtC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACnD,IAAI,CAAC;YACH,MAAM,YAAY,CAAC;gBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,WAAW;gBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO;gBACP,OAAO;gBACP,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC,CAAA;YACF,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACzC,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAA;YACnB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEF;;;;;;;;;;;;;;;;;;OAkBG;IACH,GAAG,CAAC,IAAI,CAAC,+BAA+B,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QACpF,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACvC,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,wBAAwB,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;QAC3F,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,IAAI,IAAI,CAAA;QAEhC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,6DAA6D;YAC7D,2DAA2D;YAC3D,8BAA8B;YAC9B,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,0DAA0D,EAAE,EACvG,GAAG,CACJ,CAAA;QACH,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAEjG,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;gBACtC,IAAI;gBACJ,UAAU,EAAE,WAAW;gBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,QAAQ;gBACrB,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE,MAAM,CAAC,eAAe;gBAC/B,MAAM;aACP,CAAC,CAAA;YAEF,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,IAAI,CAAC,CAAC,CAAC;oBACV,sDAAsD;oBACtD,kDAAkD;oBAClD,sDAAsD;oBACtD,sDAAsD;oBACtD,uDAAuD;oBACvD,sDAAsD;oBACtD,yCAAyC;oBACzC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;wBACvB,MAAM,EAAE,gBAAgB;wBACxB,OAAO,EAAE,SAAS;wBAClB,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;wBAC9B,QAAQ,EAAE;4BACR,QAAQ,EAAE,MAAM,CAAC,QAAQ;4BACzB,MAAM;4BACN,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO;4BAClC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa;gCAC9D,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE;gCACpD,CAAC,CAAC,EAAE,CAAC;yBACR;qBACF,CAAC,CAAA;oBACF,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;gBACvC,CAAC;gBACD,KAAK,aAAa;oBAChB,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;gBACjF,KAAK,QAAQ;oBACX,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;gBAC5E,KAAK,WAAW;oBACd,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;YACrF,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACzC,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAA;YACnB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEF;;;;;;;;;;;;;;OAcG;IACH,GAAG,CAAC,IAAI,CAAC,gCAAgC,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QACrF,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;QAC1C,IAAI,aAAa,YAAY,QAAQ;YAAE,OAAO,aAAa,CAAA;QAC3D,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,yCAAyC,EAAE,EAAE,GAAG,CAAC,CAAA;QACjG,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAA;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACtB,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,iCAAiC,EAAE,EAAE,GAAG,CAAC,CAAA;QACzF,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAClG,MAAM,MAAM,GAAG,YAAY,EAAE,MAAM,CAAA;QAEnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;gBACrC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,WAAW;gBACvB,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,aAAa;gBACvB,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;gBACpB,MAAM;gBACN,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAA;YACF,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,GAAG,CAAC,CAAA;QAChF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACzC,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAA;YACnB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEF;;;;;;;;;;;;;OAaG;IACH,GAAG,CAAC,MAAM,CAAC,gCAAgC,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QACvF,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAChC,MAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;QAC1C,IAAI,aAAa,YAAY,QAAQ;YAAE,OAAO,aAAa,CAAA;QAC3D,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,yCAAyC,EAAE,EAAE,GAAG,CAAC,CAAA;QACjG,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACnD,IAAI,CAAC;YACH,MAAM,cAAc,CAAC;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,WAAW;gBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,aAAa;gBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,MAAM,EAAE,EAAE;aACX,CAAC,CAAA;YACF,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACzC,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAA;YACnB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,aAAa,CAAC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QAClE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QAEnD,0EAA0E;QAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,CAAA;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAA;QAEvB,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,iCAAiC,EAAE,EAAE,GAAG,CAAC,CAAA;QACzF,CAAC;QACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,iCAAiC,EAAE,EAAE,GAAG,CAAC,CAAA;QACzF,CAAC;QACD,yEAAyE;QACzE,MAAM,GAAG,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;QAEtD,qEAAqE;QACrE,iEAAiE;QACjE,kEAAkE;QAClE,YAAY;QACZ,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAClG,MAAM,MAAM,GAAG,YAAY,EAAE,MAAM,CAAA;QAEnC,4DAA4D;QAC5D,+DAA+D;QAC/D,4DAA4D;QAC5D,+DAA+D;QAC/D,oBAAoB;QACpB,EAAE;QACF,0DAA0D;QAC1D,+DAA+D;QAC/D,6DAA6D;QAC7D,8DAA8D;QAC9D,8DAA8D;QAC9D,IAAI,WAAuB,CAAA;QAC3B,IAAI,CAAC;YACH,WAAW,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QACxD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,8BAA+B,GAAa,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAA;QAC9G,CAAC;QACD,IAAI,YAAY,GAAoB;YAClC,IAAI;YACJ,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,0BAA0B;YAC7C,IAAI,EAAE,WAAW,CAAC,UAAU;YAC5B,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjC,CAAA;QACD,MAAM,OAAO,GAAG,KAAK;YACnB,CAAC,CAAC,gBAAgB,CAAC;gBACf,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS;gBAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,UAAU;gBACzB,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE;gBAC9D,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE;gBACrC,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;aAC/C,CAAC;YACJ,CAAC,CAAC,IAAI,CAAA;QACR,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;gBACrF,YAAY,GAAG,OAAO,CAAC,KAAK,CAAA;gBAC5B,WAAW,GAAG,OAAO,CAAC,KAAK,CAAA;YAC7B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,gBAAgB,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;oBAClE,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAyB,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAA;gBAClG,CAAC;gBACD,MAAM,GAAG,CAAA;YACX,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;gBAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,WAAW;gBACvB,4DAA4D;gBAC5D,2DAA2D;gBAC3D,uDAAuD;gBACvD,KAAK,EAAE,IAAI,cAAc,CAAa;oBACpC,KAAK,CAAC,UAAU;wBACd,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;wBAC/B,UAAU,CAAC,KAAK,EAAE,CAAA;oBACpB,CAAC;iBACF,CAAC;gBACF,aAAa,EAAE,YAAY,CAAC,IAAI;gBAChC,GAAG,EAAE,YAAY,CAAC,GAAG,IAAI,IAAI;gBAC7B,UAAU,EAAE,EAAE;gBACd,MAAM;gBACN,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAA;YACF,0DAA0D;YAC1D,6DAA6D;YAC7D,sDAAsD;YACtD,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;gBACrB,MAAM,mBAAmB,CACvB,KAAK,EACL;oBACE,GAAG,YAAY;oBACf,uDAAuD;oBACvD,qDAAqD;iBACtD,EACD,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,EACzD,OAAO,CACR,CAAA;YACH,CAAC;YACD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,GAAG,CAAC,CAAA;QAChF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACzC,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAA;YACnB,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * `GET /api/audit` — query forensic events from configured providers.
3
+ *
4
+ * Per design-audit.md "Audit drawer — query semantics":
5
+ * each provider is one of two query shapes:
6
+ *
7
+ * - **Query-capable** — implements `query()`. Returns events
8
+ * matching the filter. v1's `HistoryAuditProvider` is the only
9
+ * in-tree implementation.
10
+ * - **External-sink** — omits `query()`, optionally implements
11
+ * `queryUrl()` returning a deep-link to the operator's
12
+ * destination console.
13
+ *
14
+ * The route exposes BOTH: it asks every queryable provider for events
15
+ * matching the filter and merges them; for non-queryable providers it
16
+ * surfaces a `{ name, url }` reference that the drawer renders as a
17
+ * "View in CloudWatch" link (or "configured but not queryable" when
18
+ * `url` is null).
19
+ *
20
+ * # Why per-process providers, not per-source resolution
21
+ *
22
+ * Audit providers are admin-wide config (per `admin.audit` block),
23
+ * not per-target. The route receives the providers array directly
24
+ * from the boot block; same shape as `historyRoutes`.
25
+ *
26
+ * # Capability gating
27
+ *
28
+ * `read:audit-log` per design-audit.md and design-auth-rbac.md.
29
+ * Built-in role `admin` grants via root wildcard `*`. Built-in
30
+ * `editor` and `viewer` roles do NOT grant `read:audit-log` —
31
+ * the prefix wildcard `read:*` they hold is wildcard-exempt for
32
+ * audit (Cut 9). Operators wanting non-admin audit access declare
33
+ * a custom role with `['read:*', 'read:audit-log']` explicitly.
34
+ * Per design-auth-rbac.md "Audit-log read access is its own
35
+ * capability — viewers don't see audit by default."
36
+ *
37
+ * # Response merging
38
+ *
39
+ * Events from multiple queryable providers merge by sort order
40
+ * (newest first). Same-event dedup uses `(timestamp, actor.id,
41
+ * action, scope)` tuple — providers writing the same event to
42
+ * multiple sinks produce one logical event in the response.
43
+ *
44
+ * # Filter validation
45
+ *
46
+ * Action / outcome / scope.kind values are closed enums; the
47
+ * provider validates each filter field before delegating. Invalid
48
+ * values return 400 with the bad field. Missing filter fields are
49
+ * treated as "no filter on that dimension."
50
+ *
51
+ * # SOLID lenses
52
+ *
53
+ * - SRP: aggregator + dedup + filter parsing only. Doesn't audit
54
+ * itself (the read isn't a write); doesn't write events.
55
+ * - DIP: depends on `AuditProvider` interface, not on
56
+ * `HistoryAuditProvider`. v2 sinks slot in unchanged.
57
+ * - LSP: every provider's query result fits the same wire shape;
58
+ * consumers branch only on `outcome` for behavior.
59
+ */
60
+ import { Hono } from 'hono';
61
+ import type { AuditProvider } from '../../audit/provider.js';
62
+ export interface AuditRoutesOptions {
63
+ /**
64
+ * Configured audit providers, in operator declaration order. The
65
+ * route queries every provider implementing `query()`; non-
66
+ * queryable providers contribute their `queryUrl()` instead.
67
+ */
68
+ providers: ReadonlyArray<AuditProvider>;
69
+ }
70
+ export declare function auditRoutes(opts: AuditRoutesOptions): Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
71
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/admin-api/routes/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAK5D,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;CACxC;AAKD,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,8EAmHnD"}
@@ -0,0 +1,178 @@
1
+ /**
2
+ * `GET /api/audit` — query forensic events from configured providers.
3
+ *
4
+ * Per design-audit.md "Audit drawer — query semantics":
5
+ * each provider is one of two query shapes:
6
+ *
7
+ * - **Query-capable** — implements `query()`. Returns events
8
+ * matching the filter. v1's `HistoryAuditProvider` is the only
9
+ * in-tree implementation.
10
+ * - **External-sink** — omits `query()`, optionally implements
11
+ * `queryUrl()` returning a deep-link to the operator's
12
+ * destination console.
13
+ *
14
+ * The route exposes BOTH: it asks every queryable provider for events
15
+ * matching the filter and merges them; for non-queryable providers it
16
+ * surfaces a `{ name, url }` reference that the drawer renders as a
17
+ * "View in CloudWatch" link (or "configured but not queryable" when
18
+ * `url` is null).
19
+ *
20
+ * # Why per-process providers, not per-source resolution
21
+ *
22
+ * Audit providers are admin-wide config (per `admin.audit` block),
23
+ * not per-target. The route receives the providers array directly
24
+ * from the boot block; same shape as `historyRoutes`.
25
+ *
26
+ * # Capability gating
27
+ *
28
+ * `read:audit-log` per design-audit.md and design-auth-rbac.md.
29
+ * Built-in role `admin` grants via root wildcard `*`. Built-in
30
+ * `editor` and `viewer` roles do NOT grant `read:audit-log` —
31
+ * the prefix wildcard `read:*` they hold is wildcard-exempt for
32
+ * audit (Cut 9). Operators wanting non-admin audit access declare
33
+ * a custom role with `['read:*', 'read:audit-log']` explicitly.
34
+ * Per design-auth-rbac.md "Audit-log read access is its own
35
+ * capability — viewers don't see audit by default."
36
+ *
37
+ * # Response merging
38
+ *
39
+ * Events from multiple queryable providers merge by sort order
40
+ * (newest first). Same-event dedup uses `(timestamp, actor.id,
41
+ * action, scope)` tuple — providers writing the same event to
42
+ * multiple sinks produce one logical event in the response.
43
+ *
44
+ * # Filter validation
45
+ *
46
+ * Action / outcome / scope.kind values are closed enums; the
47
+ * provider validates each filter field before delegating. Invalid
48
+ * values return 400 with the bad field. Missing filter fields are
49
+ * treated as "no filter on that dimension."
50
+ *
51
+ * # SOLID lenses
52
+ *
53
+ * - SRP: aggregator + dedup + filter parsing only. Doesn't audit
54
+ * itself (the read isn't a write); doesn't write events.
55
+ * - DIP: depends on `AuditProvider` interface, not on
56
+ * `HistoryAuditProvider`. v2 sinks slot in unchanged.
57
+ * - LSP: every provider's query result fits the same wire shape;
58
+ * consumers branch only on `outcome` for behavior.
59
+ */
60
+ import { Hono } from 'hono';
61
+ import { AuditActionSchema, AuditOutcomeSchema, AuditScopeKindSchema } from '../schemas/audit.js';
62
+ import { requireCapability } from '../middleware/capability.js';
63
+ const DEFAULT_LIMIT = 100;
64
+ const MAX_LIMIT = 1000;
65
+ export function auditRoutes(opts) {
66
+ const app = new Hono();
67
+ app.get('/api/audit', requireCapability('read:audit-log'), async (c) => {
68
+ // Filter parsing — closed enums validated against the schemas;
69
+ // invalid values surface as 400 (operator typo, not server bug).
70
+ const rawAction = c.req.query('action');
71
+ const rawOutcome = c.req.query('outcome');
72
+ const rawScopeKind = c.req.query('scopeKind');
73
+ const rawScopeName = c.req.query('scopeName');
74
+ const rawActor = c.req.query('actor');
75
+ const rawSince = c.req.query('since');
76
+ const rawUntil = c.req.query('until');
77
+ const rawLimit = c.req.query('limit');
78
+ const filter = {};
79
+ if (rawAction !== undefined) {
80
+ const parsed = AuditActionSchema.safeParse(rawAction);
81
+ if (!parsed.success) {
82
+ return c.json({ error: `Invalid action: "${rawAction}"` }, 400);
83
+ }
84
+ filter.action = parsed.data;
85
+ }
86
+ if (rawOutcome !== undefined) {
87
+ const parsed = AuditOutcomeSchema.safeParse(rawOutcome);
88
+ if (!parsed.success) {
89
+ return c.json({ error: `Invalid outcome: "${rawOutcome}"` }, 400);
90
+ }
91
+ filter.outcome = parsed.data;
92
+ }
93
+ if (rawScopeKind !== undefined || rawScopeName !== undefined) {
94
+ filter.scope = {};
95
+ if (rawScopeKind !== undefined) {
96
+ const parsed = AuditScopeKindSchema.safeParse(rawScopeKind);
97
+ if (!parsed.success) {
98
+ return c.json({ error: `Invalid scopeKind: "${rawScopeKind}"` }, 400);
99
+ }
100
+ filter.scope.kind = parsed.data;
101
+ }
102
+ if (rawScopeName !== undefined)
103
+ filter.scope.name = rawScopeName;
104
+ }
105
+ if (rawActor !== undefined)
106
+ filter.actor = rawActor;
107
+ if (rawSince !== undefined)
108
+ filter.since = rawSince;
109
+ if (rawUntil !== undefined)
110
+ filter.until = rawUntil;
111
+ if (rawLimit !== undefined) {
112
+ const n = Number(rawLimit);
113
+ if (!Number.isFinite(n) || n <= 0) {
114
+ return c.json({ error: `Invalid limit: "${rawLimit}"` }, 400);
115
+ }
116
+ filter.limit = Math.min(Math.floor(n), MAX_LIMIT);
117
+ }
118
+ else {
119
+ filter.limit = DEFAULT_LIMIT;
120
+ }
121
+ // Fan-out: every queryable provider contributes events; every
122
+ // non-queryable provider contributes a sink reference. Both
123
+ // arrays return to the drawer; the UI composes the four states.
124
+ const queryableProviders = opts.providers.filter(p => typeof p.query === 'function');
125
+ const nonQueryable = opts.providers.filter(p => typeof p.query !== 'function');
126
+ const eventsFromProviders = await Promise.all(queryableProviders.map(async (p) => {
127
+ try {
128
+ // biome-ignore lint/style/noNonNullAssertion: filter above guarantees p.query is defined
129
+ return await p.query(filter);
130
+ }
131
+ catch {
132
+ // Per design-audit.md "query() failures are fail-open per
133
+ // Universal Provider Requirement #5": surface "audit query
134
+ // unavailable" without throwing. Empty result keeps the
135
+ // drawer rendering; operator's structured log catches the
136
+ // provider failure.
137
+ return [];
138
+ }
139
+ }));
140
+ // Merge + dedup + sort-newest-first. Per design-audit.md "Recommended
141
+ // operational pattern": run history + external-sink as peers; the
142
+ // drawer dedups the inline copies via `event.id` (we use a synthetic
143
+ // tuple since AuditEvent has no explicit id field — timestamp +
144
+ // actor + action + scope is unique per attempt by construction).
145
+ const seen = new Set();
146
+ const merged = [];
147
+ for (const events of eventsFromProviders) {
148
+ for (const event of events) {
149
+ const dedupKey = `${event.timestamp}:${event.actor.id}:${event.action}:${event.scope.kind}:${event.scope.name ?? ''}`;
150
+ if (seen.has(dedupKey))
151
+ continue;
152
+ seen.add(dedupKey);
153
+ merged.push(event);
154
+ }
155
+ }
156
+ // Sort newest first so the drawer's default "most recent" view
157
+ // doesn't need client-side sorting. ISO-8601 strings sort
158
+ // correctly via localeCompare.
159
+ merged.sort((a, b) => b.timestamp.localeCompare(a.timestamp));
160
+ // Re-apply the limit at the merge layer — individual providers
161
+ // honor the limit per their own slice; merging two providers
162
+ // could exceed it.
163
+ const limited = merged.slice(0, filter.limit);
164
+ // External-sink references: name + queryUrl() (or null when not
165
+ // implemented or when queryUrl() returned null).
166
+ const externalSinks = nonQueryable.map(p => ({
167
+ name: p.name,
168
+ url: p.queryUrl?.() ?? null,
169
+ }));
170
+ const body = {
171
+ events: limited,
172
+ externalSinks,
173
+ };
174
+ return c.json(body);
175
+ });
176
+ return app;
177
+ }
178
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/admin-api/routes/audit.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/admin-api/routes/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAEjE,wBAAgB,aAAa,CAC3B,OAAO,EAAE,qBAAqB,EAC9B,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EAC7C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAC5C,YAAY,CAAC,EAAE,MAAM,EACrB,qBAAqB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,8EAiE/F"}
1
+ {"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/admin-api/routes/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAGnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAGjE,wBAAgB,aAAa,CAC3B,OAAO,EAAE,qBAAqB,EAC9B,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EAC7C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAC5C,YAAY,CAAC,EAAE,MAAM,EACrB,qBAAqB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,8EAiE/F"}
@@ -2,6 +2,7 @@ import { Hono } from 'hono';
2
2
  import { join } from 'node:path';
3
3
  import { getType } from '../../types.js';
4
4
  import { compareTargets } from '../../compare.js';
5
+ import { requireCapability } from '../middleware/capability.js';
5
6
  export function compareRoutes(resolve, preInitTargets, targetConfigs, templatesDir, scanTemplatesInjected) {
6
7
  const app = new Hono();
7
8
  let targets = preInitTargets ?? null;
@@ -15,7 +16,7 @@ export function compareRoutes(resolve, preInitTargets, targetConfigs, templatesD
15
16
  }
16
17
  if (!targetsInitPromise) {
17
18
  const { createTargetRegistry } = await import('../../targets.js');
18
- targetsInitPromise = createTargetRegistry(targetConfigs, projectSiteDir)
19
+ targetsInitPromise = createTargetRegistry(targetConfigs)
19
20
  .then(t => {
20
21
  targets = t;
21
22
  return t;
@@ -27,7 +28,7 @@ export function compareRoutes(resolve, preInitTargets, targetConfigs, templatesD
27
28
  }
28
29
  return targetsInitPromise;
29
30
  }
30
- app.get('/api/compare', async (c) => {
31
+ app.get('/api/compare', requireCapability('read:pages'), async (c) => {
31
32
  // `target` = compare destination (what we're diffing against)
32
33
  // `source` = source of the compare (which editable target to read from);
33
34
  // defaults to the resolver's default editable target