@aotter/mantle 0.1.5-alpha.1 → 0.2.0-alpha.1

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 (870) hide show
  1. package/README.md +39 -306
  2. package/dist/admin/consent.d.ts +17 -0
  3. package/dist/admin/consent.d.ts.map +1 -0
  4. package/dist/admin/consent.js +17 -0
  5. package/dist/admin/consent.js.map +1 -0
  6. package/dist/admin/createAdminSurface.d.ts +22 -0
  7. package/dist/admin/createAdminSurface.d.ts.map +1 -0
  8. package/dist/admin/createAdminSurface.js +589 -0
  9. package/dist/admin/createAdminSurface.js.map +1 -0
  10. package/dist/admin/developerConsole.d.ts +264 -0
  11. package/dist/admin/developerConsole.d.ts.map +1 -0
  12. package/dist/admin/developerConsole.js +136 -0
  13. package/dist/admin/developerConsole.js.map +1 -0
  14. package/dist/admin/identity.d.ts +62 -0
  15. package/dist/admin/identity.d.ts.map +1 -0
  16. package/dist/admin/identity.js +7 -0
  17. package/dist/admin/identity.js.map +1 -0
  18. package/dist/admin/index.d.ts +4 -0
  19. package/dist/admin/index.d.ts.map +1 -0
  20. package/dist/admin/index.js +4 -0
  21. package/dist/admin/index.js.map +1 -0
  22. package/dist/admin/procedureFlow.d.ts +25 -0
  23. package/dist/admin/procedureFlow.d.ts.map +1 -0
  24. package/dist/admin/procedureFlow.js +154 -0
  25. package/dist/admin/procedureFlow.js.map +1 -0
  26. package/dist/auth/ConsoleEmailSender.d.ts +15 -0
  27. package/dist/auth/ConsoleEmailSender.d.ts.map +1 -0
  28. package/dist/auth/ConsoleEmailSender.js +19 -0
  29. package/dist/auth/ConsoleEmailSender.js.map +1 -0
  30. package/dist/auth/appleClientSecret.d.ts +75 -0
  31. package/dist/auth/appleClientSecret.d.ts.map +1 -0
  32. package/dist/auth/appleClientSecret.js +116 -0
  33. package/dist/auth/appleClientSecret.js.map +1 -0
  34. package/dist/auth/buildAuth.d.ts +4565 -0
  35. package/dist/auth/buildAuth.d.ts.map +1 -0
  36. package/dist/auth/buildAuth.js +307 -0
  37. package/dist/auth/buildAuth.js.map +1 -0
  38. package/dist/auth/callerResolver.d.ts +48 -0
  39. package/dist/auth/callerResolver.d.ts.map +1 -0
  40. package/dist/auth/callerResolver.js +49 -0
  41. package/dist/auth/callerResolver.js.map +1 -0
  42. package/dist/auth/createAuthRoutes.d.ts +22 -0
  43. package/dist/auth/createAuthRoutes.d.ts.map +1 -0
  44. package/dist/auth/createAuthRoutes.js +128 -0
  45. package/dist/auth/createAuthRoutes.js.map +1 -0
  46. package/dist/auth/createMantleAuth.d.ts +3 -0
  47. package/dist/auth/createMantleAuth.d.ts.map +1 -0
  48. package/dist/auth/createMantleAuth.js +483 -0
  49. package/dist/auth/createMantleAuth.js.map +1 -0
  50. package/dist/auth/db.d.ts +17 -0
  51. package/dist/auth/db.d.ts.map +1 -0
  52. package/dist/auth/db.js +24 -0
  53. package/dist/auth/db.js.map +1 -0
  54. package/dist/auth/emailTemplates.d.ts +7 -0
  55. package/dist/auth/emailTemplates.d.ts.map +1 -0
  56. package/dist/auth/emailTemplates.js +27 -0
  57. package/dist/auth/emailTemplates.js.map +1 -0
  58. package/dist/auth/index.d.ts +9 -0
  59. package/dist/auth/index.d.ts.map +1 -0
  60. package/dist/auth/index.js +7 -0
  61. package/dist/auth/index.js.map +1 -0
  62. package/dist/auth/methods.d.ts +717 -0
  63. package/dist/auth/methods.d.ts.map +1 -0
  64. package/dist/auth/methods.js +321 -0
  65. package/dist/auth/methods.js.map +1 -0
  66. package/dist/auth/oauthTokens.d.ts +24 -0
  67. package/dist/auth/oauthTokens.d.ts.map +1 -0
  68. package/dist/auth/oauthTokens.js +146 -0
  69. package/dist/auth/oauthTokens.js.map +1 -0
  70. package/dist/auth/setupIncomplete.d.ts +16 -0
  71. package/dist/auth/setupIncomplete.d.ts.map +1 -0
  72. package/dist/auth/setupIncomplete.js +50 -0
  73. package/dist/auth/setupIncomplete.js.map +1 -0
  74. package/dist/auth/types.d.ts +440 -0
  75. package/dist/auth/types.d.ts.map +1 -0
  76. package/dist/auth/types.js +10 -0
  77. package/dist/auth/types.js.map +1 -0
  78. package/dist/bun/index.d.ts +65 -0
  79. package/dist/bun/index.d.ts.map +1 -0
  80. package/dist/bun/index.js +130 -0
  81. package/dist/bun/index.js.map +1 -0
  82. package/dist/cli/emitModule.d.ts +7 -0
  83. package/dist/cli/emitModule.d.ts.map +1 -0
  84. package/dist/cli/emitModule.js +127 -0
  85. package/dist/cli/emitModule.js.map +1 -0
  86. package/dist/cli/generate.d.ts +4 -16
  87. package/dist/cli/generate.d.ts.map +1 -1
  88. package/dist/cli/generate.js +318 -262
  89. package/dist/cli/generate.js.map +1 -1
  90. package/dist/cli/main.d.ts +1 -1
  91. package/dist/cli/main.d.ts.map +1 -1
  92. package/dist/cli/main.js +15 -71
  93. package/dist/cli/main.js.map +1 -1
  94. package/dist/cli/preset.d.ts +18 -0
  95. package/dist/cli/preset.d.ts.map +1 -0
  96. package/dist/cli/preset.js +352 -0
  97. package/dist/cli/preset.js.map +1 -0
  98. package/dist/cloudflare/index.d.ts +21 -0
  99. package/dist/cloudflare/index.d.ts.map +1 -0
  100. package/dist/cloudflare/index.js +14 -0
  101. package/dist/cloudflare/index.js.map +1 -0
  102. package/dist/cloudflare/r2Media.d.ts +43 -0
  103. package/dist/cloudflare/r2Media.d.ts.map +1 -0
  104. package/dist/cloudflare/r2Media.js +69 -0
  105. package/dist/cloudflare/r2Media.js.map +1 -0
  106. package/dist/core/caller.d.ts +35 -0
  107. package/dist/core/caller.d.ts.map +1 -0
  108. package/dist/core/caller.js +3 -0
  109. package/dist/core/caller.js.map +1 -0
  110. package/dist/core/createMantle.d.ts +22 -0
  111. package/dist/core/createMantle.d.ts.map +1 -0
  112. package/dist/core/createMantle.js +117 -0
  113. package/dist/core/createMantle.js.map +1 -0
  114. package/dist/core/dialect.d.ts +41 -0
  115. package/dist/core/dialect.d.ts.map +1 -0
  116. package/dist/core/dialect.js +7 -0
  117. package/dist/core/dialect.js.map +1 -0
  118. package/dist/core/driver.d.ts +17 -0
  119. package/dist/core/driver.d.ts.map +1 -0
  120. package/dist/core/driver.js +2 -0
  121. package/dist/core/driver.js.map +1 -0
  122. package/dist/core/email.d.ts +17 -0
  123. package/dist/core/email.d.ts.map +1 -0
  124. package/dist/core/email.js +2 -0
  125. package/dist/core/email.js.map +1 -0
  126. package/dist/core/index.d.ts +16 -0
  127. package/dist/core/index.d.ts.map +1 -0
  128. package/dist/core/index.js +16 -0
  129. package/dist/core/index.js.map +1 -0
  130. package/dist/core/invocation.d.ts +66 -0
  131. package/dist/core/invocation.d.ts.map +1 -0
  132. package/dist/core/invocation.js +3 -0
  133. package/dist/core/invocation.js.map +1 -0
  134. package/dist/core/runtime/auth.d.ts +9 -0
  135. package/dist/core/runtime/auth.d.ts.map +1 -0
  136. package/dist/core/runtime/auth.js +39 -0
  137. package/dist/core/runtime/auth.js.map +1 -0
  138. package/dist/core/runtime/createRuntime.d.ts +23 -0
  139. package/dist/core/runtime/createRuntime.d.ts.map +1 -0
  140. package/dist/core/runtime/createRuntime.js +214 -0
  141. package/dist/core/runtime/createRuntime.js.map +1 -0
  142. package/dist/core/runtime/verifyPlan.d.ts +34 -0
  143. package/dist/core/runtime/verifyPlan.d.ts.map +1 -0
  144. package/dist/core/runtime/verifyPlan.js +301 -0
  145. package/dist/core/runtime/verifyPlan.js.map +1 -0
  146. package/dist/core/service.d.ts +45 -0
  147. package/dist/core/service.d.ts.map +1 -0
  148. package/dist/core/service.js +2 -0
  149. package/dist/core/service.js.map +1 -0
  150. package/dist/core/site.d.ts +117 -0
  151. package/dist/core/site.d.ts.map +1 -0
  152. package/dist/core/site.js +2 -0
  153. package/dist/core/site.js.map +1 -0
  154. package/dist/core/siteConfig.d.ts +5 -0
  155. package/dist/core/siteConfig.d.ts.map +1 -0
  156. package/dist/core/siteConfig.js +24 -0
  157. package/dist/core/siteConfig.js.map +1 -0
  158. package/dist/core/sql/allowlist.d.ts +65 -0
  159. package/dist/core/sql/allowlist.d.ts.map +1 -0
  160. package/dist/core/sql/allowlist.js +705 -0
  161. package/dist/core/sql/allowlist.js.map +1 -0
  162. package/dist/core/sql/ast.d.ts +24 -0
  163. package/dist/core/sql/ast.d.ts.map +1 -0
  164. package/dist/core/sql/ast.js +32 -0
  165. package/dist/core/sql/ast.js.map +1 -0
  166. package/dist/core/sql/compile.d.ts +50 -0
  167. package/dist/core/sql/compile.d.ts.map +1 -0
  168. package/dist/core/sql/compile.js +48 -0
  169. package/dist/core/sql/compile.js.map +1 -0
  170. package/dist/core/sql/policy.d.ts +121 -0
  171. package/dist/core/sql/policy.d.ts.map +1 -0
  172. package/dist/core/sql/policy.js +379 -0
  173. package/dist/core/sql/policy.js.map +1 -0
  174. package/dist/core/sql/positions.d.ts +30 -0
  175. package/dist/core/sql/positions.d.ts.map +1 -0
  176. package/dist/core/sql/positions.js +22 -0
  177. package/dist/core/sql/positions.js.map +1 -0
  178. package/dist/core/sql/run.d.ts +76 -0
  179. package/dist/core/sql/run.d.ts.map +1 -0
  180. package/dist/core/sql/run.js +267 -0
  181. package/dist/core/sql/run.js.map +1 -0
  182. package/dist/core/store/createStore.d.ts +49 -0
  183. package/dist/core/store/createStore.d.ts.map +1 -0
  184. package/dist/core/store/createStore.js +227 -0
  185. package/dist/core/store/createStore.js.map +1 -0
  186. package/dist/core/store/cursor.d.ts +4 -0
  187. package/dist/core/store/cursor.d.ts.map +1 -0
  188. package/dist/core/store/cursor.js +22 -0
  189. package/dist/core/store/cursor.js.map +1 -0
  190. package/dist/core/store/json.d.ts +80 -0
  191. package/dist/core/store/json.d.ts.map +1 -0
  192. package/dist/core/store/json.js +342 -0
  193. package/dist/core/store/json.js.map +1 -0
  194. package/dist/core/store.d.ts +160 -0
  195. package/dist/core/store.d.ts.map +1 -0
  196. package/dist/core/store.js +2 -0
  197. package/dist/core/store.js.map +1 -0
  198. package/dist/core/wire.d.ts +20 -0
  199. package/dist/core/wire.d.ts.map +1 -0
  200. package/dist/core/wire.js +84 -0
  201. package/dist/core/wire.js.map +1 -0
  202. package/dist/core/withCaller.d.ts +16 -0
  203. package/dist/core/withCaller.d.ts.map +1 -0
  204. package/dist/core/withCaller.js +29 -0
  205. package/dist/core/withCaller.js.map +1 -0
  206. package/dist/d1/adapter.d.ts +12 -0
  207. package/dist/d1/adapter.d.ts.map +1 -0
  208. package/dist/d1/adapter.js +23 -0
  209. package/dist/d1/adapter.js.map +1 -0
  210. package/dist/d1/codec.d.ts +14 -0
  211. package/dist/d1/codec.d.ts.map +1 -0
  212. package/dist/d1/codec.js +136 -0
  213. package/dist/d1/codec.js.map +1 -0
  214. package/dist/d1/compile/index.d.ts +9 -0
  215. package/dist/d1/compile/index.d.ts.map +1 -0
  216. package/dist/d1/compile/index.js +9 -0
  217. package/dist/d1/compile/index.js.map +1 -0
  218. package/dist/d1/dialect.d.ts +4 -0
  219. package/dist/d1/dialect.d.ts.map +1 -0
  220. package/dist/d1/dialect.js +13 -0
  221. package/dist/d1/dialect.js.map +1 -0
  222. package/dist/d1/executor.d.ts +13 -0
  223. package/dist/d1/executor.d.ts.map +1 -0
  224. package/dist/d1/executor.js +91 -0
  225. package/dist/d1/executor.js.map +1 -0
  226. package/dist/d1/index.d.ts +6 -0
  227. package/dist/d1/index.d.ts.map +1 -0
  228. package/dist/d1/index.js +6 -0
  229. package/dist/d1/index.js.map +1 -0
  230. package/dist/d1/lower.d.ts +8 -0
  231. package/dist/d1/lower.d.ts.map +1 -0
  232. package/dist/d1/lower.js +167 -0
  233. package/dist/d1/lower.js.map +1 -0
  234. package/dist/d1/media.d.ts +5 -0
  235. package/dist/d1/media.d.ts.map +1 -0
  236. package/dist/d1/media.js +157 -0
  237. package/dist/d1/media.js.map +1 -0
  238. package/dist/d1/migrations.d.ts +12 -0
  239. package/dist/d1/migrations.d.ts.map +1 -0
  240. package/dist/d1/migrations.js +111 -0
  241. package/dist/d1/migrations.js.map +1 -0
  242. package/dist/d1/print.d.ts +28 -0
  243. package/dist/d1/print.d.ts.map +1 -0
  244. package/dist/d1/print.js +54 -0
  245. package/dist/d1/print.js.map +1 -0
  246. package/dist/d1/site.d.ts +17 -0
  247. package/dist/d1/site.d.ts.map +1 -0
  248. package/dist/d1/site.js +63 -0
  249. package/dist/d1/site.js.map +1 -0
  250. package/dist/d1/storage.d.ts +34 -0
  251. package/dist/d1/storage.d.ts.map +1 -0
  252. package/dist/d1/storage.js +288 -0
  253. package/dist/d1/storage.js.map +1 -0
  254. package/dist/d1/tz.d.ts +21 -0
  255. package/dist/d1/tz.d.ts.map +1 -0
  256. package/dist/d1/tz.js +54 -0
  257. package/dist/d1/tz.js.map +1 -0
  258. package/dist/d1/validator.d.ts +10 -0
  259. package/dist/d1/validator.d.ts.map +1 -0
  260. package/dist/d1/validator.js +33 -0
  261. package/dist/d1/validator.js.map +1 -0
  262. package/dist/mcp/apps.d.ts +43 -0
  263. package/dist/mcp/apps.d.ts.map +1 -0
  264. package/dist/mcp/apps.js +57 -0
  265. package/dist/mcp/apps.js.map +1 -0
  266. package/dist/mcp/catalog.d.ts +55 -0
  267. package/dist/mcp/catalog.d.ts.map +1 -0
  268. package/dist/mcp/catalog.js +81 -0
  269. package/dist/mcp/catalog.js.map +1 -0
  270. package/dist/mcp/createMcpSurface.d.ts +34 -0
  271. package/dist/mcp/createMcpSurface.d.ts.map +1 -0
  272. package/dist/mcp/createMcpSurface.js +150 -0
  273. package/dist/mcp/createMcpSurface.js.map +1 -0
  274. package/dist/mcp/index.d.ts +4 -0
  275. package/dist/mcp/index.d.ts.map +1 -0
  276. package/dist/mcp/index.js +4 -0
  277. package/dist/mcp/index.js.map +1 -0
  278. package/dist/postgres/adapter.d.ts +20 -0
  279. package/dist/postgres/adapter.d.ts.map +1 -0
  280. package/dist/postgres/adapter.js +44 -0
  281. package/dist/postgres/adapter.js.map +1 -0
  282. package/dist/postgres/codec.d.ts +13 -0
  283. package/dist/postgres/codec.d.ts.map +1 -0
  284. package/dist/postgres/codec.js +110 -0
  285. package/dist/postgres/codec.js.map +1 -0
  286. package/dist/postgres/compile/index.d.ts +9 -0
  287. package/dist/postgres/compile/index.d.ts.map +1 -0
  288. package/dist/postgres/compile/index.js +9 -0
  289. package/dist/postgres/compile/index.js.map +1 -0
  290. package/dist/postgres/driver.d.ts +92 -0
  291. package/dist/postgres/driver.d.ts.map +1 -0
  292. package/dist/postgres/driver.js +110 -0
  293. package/dist/postgres/driver.js.map +1 -0
  294. package/dist/postgres/executor.d.ts +20 -0
  295. package/dist/postgres/executor.d.ts.map +1 -0
  296. package/dist/postgres/executor.js +69 -0
  297. package/dist/postgres/executor.js.map +1 -0
  298. package/dist/postgres/index.d.ts +7 -0
  299. package/dist/postgres/index.d.ts.map +1 -0
  300. package/dist/postgres/index.js +7 -0
  301. package/dist/postgres/index.js.map +1 -0
  302. package/dist/postgres/lower.d.ts +6 -0
  303. package/dist/postgres/lower.d.ts.map +1 -0
  304. package/dist/postgres/lower.js +157 -0
  305. package/dist/postgres/lower.js.map +1 -0
  306. package/dist/postgres/print.d.ts +11 -0
  307. package/dist/postgres/print.d.ts.map +1 -0
  308. package/dist/postgres/print.js +121 -0
  309. package/dist/postgres/print.js.map +1 -0
  310. package/dist/postgres/storage.d.ts +19 -0
  311. package/dist/postgres/storage.d.ts.map +1 -0
  312. package/dist/postgres/storage.js +201 -0
  313. package/dist/postgres/storage.js.map +1 -0
  314. package/dist/postgres/textRows.d.ts +10 -0
  315. package/dist/postgres/textRows.d.ts.map +1 -0
  316. package/dist/postgres/textRows.js +44 -0
  317. package/dist/postgres/textRows.js.map +1 -0
  318. package/dist/postgres/validator.d.ts +12 -0
  319. package/dist/postgres/validator.d.ts.map +1 -0
  320. package/dist/postgres/validator.js +46 -0
  321. package/dist/postgres/validator.js.map +1 -0
  322. package/dist/spec/domain/index.d.ts +3 -0
  323. package/dist/spec/domain/index.d.ts.map +1 -0
  324. package/dist/spec/domain/index.js +3 -0
  325. package/dist/spec/domain/index.js.map +1 -0
  326. package/dist/spec/domain/model/ContentState.d.ts +8 -0
  327. package/dist/spec/domain/model/ContentState.d.ts.map +1 -0
  328. package/dist/spec/domain/model/ContentState.js +7 -0
  329. package/dist/spec/domain/model/ContentState.js.map +1 -0
  330. package/dist/spec/domain/model/Entry.d.ts +29 -0
  331. package/dist/spec/domain/model/Entry.d.ts.map +1 -0
  332. package/dist/spec/domain/model/Entry.js +16 -0
  333. package/dist/spec/domain/model/Entry.js.map +1 -0
  334. package/dist/spec/domain/model/Locale.d.ts +30 -0
  335. package/dist/spec/domain/model/Locale.d.ts.map +1 -0
  336. package/dist/spec/domain/model/Locale.js +33 -0
  337. package/dist/spec/domain/model/Locale.js.map +1 -0
  338. package/dist/spec/domain/model/ManifestGrammar.d.ts +452 -0
  339. package/dist/spec/domain/model/ManifestGrammar.d.ts.map +1 -0
  340. package/dist/spec/domain/model/ManifestGrammar.js +149 -0
  341. package/dist/spec/domain/model/ManifestGrammar.js.map +1 -0
  342. package/dist/spec/domain/model/MediaMimeAccept.d.ts +55 -0
  343. package/dist/spec/domain/model/MediaMimeAccept.d.ts.map +1 -0
  344. package/dist/spec/domain/model/MediaMimeAccept.js +90 -0
  345. package/dist/spec/domain/model/MediaMimeAccept.js.map +1 -0
  346. package/dist/spec/domain/model/RuntimePlan.d.ts +94 -0
  347. package/dist/spec/domain/model/RuntimePlan.d.ts.map +1 -0
  348. package/dist/spec/domain/model/RuntimePlan.js +4 -0
  349. package/dist/spec/domain/model/RuntimePlan.js.map +1 -0
  350. package/dist/spec/domain/model/SiteConfig.d.ts +173 -0
  351. package/dist/spec/domain/model/SiteConfig.d.ts.map +1 -0
  352. package/dist/spec/domain/model/SiteConfig.js +13 -0
  353. package/dist/spec/domain/model/SiteConfig.js.map +1 -0
  354. package/dist/spec/domain/model/SqlIr.d.ts +96 -0
  355. package/dist/spec/domain/model/SqlIr.d.ts.map +1 -0
  356. package/dist/spec/domain/model/SqlIr.js +95 -0
  357. package/dist/spec/domain/model/SqlIr.js.map +1 -0
  358. package/dist/spec/domain/model/index.d.ts +14 -0
  359. package/dist/spec/domain/model/index.d.ts.map +1 -0
  360. package/dist/spec/domain/model/index.js +14 -0
  361. package/dist/spec/domain/model/index.js.map +1 -0
  362. package/dist/spec/domain/service/CloudflareCron.d.ts +2 -0
  363. package/dist/spec/domain/service/CloudflareCron.d.ts.map +1 -0
  364. package/dist/spec/domain/service/CloudflareCron.js +63 -0
  365. package/dist/spec/domain/service/CloudflareCron.js.map +1 -0
  366. package/dist/spec/domain/service/CrossSchemaChecker.d.ts +34 -0
  367. package/dist/spec/domain/service/CrossSchemaChecker.d.ts.map +1 -0
  368. package/dist/spec/domain/service/CrossSchemaChecker.js +114 -0
  369. package/dist/spec/domain/service/CrossSchemaChecker.js.map +1 -0
  370. package/dist/spec/domain/service/EntryDataValidator.d.ts +56 -0
  371. package/dist/spec/domain/service/EntryDataValidator.d.ts.map +1 -0
  372. package/dist/spec/domain/service/EntryDataValidator.js +88 -0
  373. package/dist/spec/domain/service/EntryDataValidator.js.map +1 -0
  374. package/dist/spec/domain/service/JsonSchemaToZod.d.ts +29 -0
  375. package/dist/spec/domain/service/JsonSchemaToZod.d.ts.map +1 -0
  376. package/dist/spec/domain/service/JsonSchemaToZod.js +156 -0
  377. package/dist/spec/domain/service/JsonSchemaToZod.js.map +1 -0
  378. package/dist/spec/domain/service/LifecycleStateMachine.d.ts +75 -0
  379. package/dist/spec/domain/service/LifecycleStateMachine.d.ts.map +1 -0
  380. package/dist/spec/domain/service/LifecycleStateMachine.js +76 -0
  381. package/dist/spec/domain/service/LifecycleStateMachine.js.map +1 -0
  382. package/dist/spec/domain/service/LocaleCanonicalizer.d.ts +29 -0
  383. package/dist/spec/domain/service/LocaleCanonicalizer.d.ts.map +1 -0
  384. package/dist/spec/domain/service/LocaleCanonicalizer.js +96 -0
  385. package/dist/spec/domain/service/LocaleCanonicalizer.js.map +1 -0
  386. package/dist/spec/domain/service/ManifestFieldChecks.d.ts +60 -0
  387. package/dist/spec/domain/service/ManifestFieldChecks.d.ts.map +1 -0
  388. package/dist/spec/domain/service/ManifestFieldChecks.js +116 -0
  389. package/dist/spec/domain/service/ManifestFieldChecks.js.map +1 -0
  390. package/dist/spec/domain/service/ManifestGraphValidator.d.ts +15 -0
  391. package/dist/spec/domain/service/ManifestGraphValidator.d.ts.map +1 -0
  392. package/dist/spec/domain/service/ManifestGraphValidator.js +225 -0
  393. package/dist/spec/domain/service/ManifestGraphValidator.js.map +1 -0
  394. package/dist/spec/domain/service/ManifestLinker.d.ts +45 -0
  395. package/dist/spec/domain/service/ManifestLinker.d.ts.map +1 -0
  396. package/dist/spec/domain/service/ManifestLinker.js +92 -0
  397. package/dist/spec/domain/service/ManifestLinker.js.map +1 -0
  398. package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts +16 -0
  399. package/dist/spec/domain/service/ManifestLocaleTrimmer.d.ts.map +1 -0
  400. package/dist/spec/domain/service/ManifestLocaleTrimmer.js +76 -0
  401. package/dist/spec/domain/service/ManifestLocaleTrimmer.js.map +1 -0
  402. package/dist/spec/domain/service/ManifestParser.d.ts +49 -0
  403. package/dist/spec/domain/service/ManifestParser.d.ts.map +1 -0
  404. package/dist/spec/domain/service/ManifestParser.js +203 -0
  405. package/dist/spec/domain/service/ManifestParser.js.map +1 -0
  406. package/dist/spec/domain/service/ManifestPartition.d.ts +9 -0
  407. package/dist/spec/domain/service/ManifestPartition.d.ts.map +1 -0
  408. package/dist/spec/domain/service/ManifestPartition.js +19 -0
  409. package/dist/spec/domain/service/ManifestPartition.js.map +1 -0
  410. package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts +33 -0
  411. package/dist/spec/domain/service/ManifestPathDiagnoser.d.ts.map +1 -0
  412. package/dist/spec/domain/service/ManifestPathDiagnoser.js +43 -0
  413. package/dist/spec/domain/service/ManifestPathDiagnoser.js.map +1 -0
  414. package/dist/spec/domain/service/ManifestSourceSpans.d.ts +10 -0
  415. package/dist/spec/domain/service/ManifestSourceSpans.d.ts.map +1 -0
  416. package/dist/spec/domain/service/ManifestSourceSpans.js +76 -0
  417. package/dist/spec/domain/service/ManifestSourceSpans.js.map +1 -0
  418. package/dist/spec/domain/service/McpToolNaming.d.ts +25 -0
  419. package/dist/spec/domain/service/McpToolNaming.d.ts.map +1 -0
  420. package/dist/spec/domain/service/McpToolNaming.js +50 -0
  421. package/dist/spec/domain/service/McpToolNaming.js.map +1 -0
  422. package/dist/spec/domain/service/PlanFingerprint.d.ts +4 -0
  423. package/dist/spec/domain/service/PlanFingerprint.d.ts.map +1 -0
  424. package/dist/spec/domain/service/PlanFingerprint.js +14 -0
  425. package/dist/spec/domain/service/PlanFingerprint.js.map +1 -0
  426. package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts +4 -0
  427. package/dist/spec/domain/service/ProcedureViewSpecChecks.d.ts.map +1 -0
  428. package/dist/spec/domain/service/ProcedureViewSpecChecks.js +211 -0
  429. package/dist/spec/domain/service/ProcedureViewSpecChecks.js.map +1 -0
  430. package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts +42 -0
  431. package/dist/spec/domain/service/SchemaAdminUiChecker.d.ts.map +1 -0
  432. package/dist/spec/domain/service/SchemaAdminUiChecker.js +289 -0
  433. package/dist/spec/domain/service/SchemaAdminUiChecker.js.map +1 -0
  434. package/dist/spec/domain/service/SchemaIndexChecker.d.ts +33 -0
  435. package/dist/spec/domain/service/SchemaIndexChecker.d.ts.map +1 -0
  436. package/dist/spec/domain/service/SchemaIndexChecker.js +256 -0
  437. package/dist/spec/domain/service/SchemaIndexChecker.js.map +1 -0
  438. package/dist/spec/domain/service/SchemaSearchChecker.d.ts +11 -0
  439. package/dist/spec/domain/service/SchemaSearchChecker.d.ts.map +1 -0
  440. package/dist/spec/domain/service/SchemaSearchChecker.js +78 -0
  441. package/dist/spec/domain/service/SchemaSearchChecker.js.map +1 -0
  442. package/dist/spec/domain/service/SchemaSpecChecks.d.ts +31 -0
  443. package/dist/spec/domain/service/SchemaSpecChecks.d.ts.map +1 -0
  444. package/dist/spec/domain/service/SchemaSpecChecks.js +445 -0
  445. package/dist/spec/domain/service/SchemaSpecChecks.js.map +1 -0
  446. package/dist/spec/domain/service/SiteDefaultsValidator.d.ts +39 -0
  447. package/dist/spec/domain/service/SiteDefaultsValidator.d.ts.map +1 -0
  448. package/dist/spec/domain/service/SiteDefaultsValidator.js +194 -0
  449. package/dist/spec/domain/service/SiteDefaultsValidator.js.map +1 -0
  450. package/dist/spec/domain/service/SqlClassify.d.ts +19 -0
  451. package/dist/spec/domain/service/SqlClassify.d.ts.map +1 -0
  452. package/dist/spec/domain/service/SqlClassify.js +42 -0
  453. package/dist/spec/domain/service/SqlClassify.js.map +1 -0
  454. package/dist/spec/domain/service/SqlRefusal.d.ts +16 -0
  455. package/dist/spec/domain/service/SqlRefusal.d.ts.map +1 -0
  456. package/dist/spec/domain/service/SqlRefusal.js +20 -0
  457. package/dist/spec/domain/service/SqlRefusal.js.map +1 -0
  458. package/dist/spec/domain/service/SqlTypes.d.ts +40 -0
  459. package/dist/spec/domain/service/SqlTypes.d.ts.map +1 -0
  460. package/dist/spec/domain/service/SqlTypes.js +110 -0
  461. package/dist/spec/domain/service/SqlTypes.js.map +1 -0
  462. package/dist/spec/domain/service/StaffRoleHierarchy.d.ts +3 -0
  463. package/dist/spec/domain/service/StaffRoleHierarchy.d.ts.map +1 -0
  464. package/dist/spec/domain/service/StaffRoleHierarchy.js +19 -0
  465. package/dist/spec/domain/service/StaffRoleHierarchy.js.map +1 -0
  466. package/dist/spec/domain/service/TriggerGraphChecks.d.ts +16 -0
  467. package/dist/spec/domain/service/TriggerGraphChecks.d.ts.map +1 -0
  468. package/dist/spec/domain/service/TriggerGraphChecks.js +337 -0
  469. package/dist/spec/domain/service/TriggerGraphChecks.js.map +1 -0
  470. package/dist/spec/domain/service/TriggerSpecChecks.d.ts +4 -0
  471. package/dist/spec/domain/service/TriggerSpecChecks.d.ts.map +1 -0
  472. package/dist/spec/domain/service/TriggerSpecChecks.js +89 -0
  473. package/dist/spec/domain/service/TriggerSpecChecks.js.map +1 -0
  474. package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts +11 -0
  475. package/dist/spec/domain/service/ValidatedAdminUiProjection.d.ts.map +1 -0
  476. package/dist/spec/domain/service/ValidatedAdminUiProjection.js +26 -0
  477. package/dist/spec/domain/service/ValidatedAdminUiProjection.js.map +1 -0
  478. package/dist/spec/domain/service/ViewAdminUiChecker.d.ts +14 -0
  479. package/dist/spec/domain/service/ViewAdminUiChecker.d.ts.map +1 -0
  480. package/dist/spec/domain/service/ViewAdminUiChecker.js +53 -0
  481. package/dist/spec/domain/service/ViewAdminUiChecker.js.map +1 -0
  482. package/dist/spec/domain/service/index.d.ts +24 -0
  483. package/dist/spec/domain/service/index.d.ts.map +1 -0
  484. package/dist/spec/domain/service/index.js +24 -0
  485. package/dist/spec/domain/service/index.js.map +1 -0
  486. package/dist/spec/index.d.ts +10 -0
  487. package/dist/spec/index.d.ts.map +1 -0
  488. package/dist/spec/index.js +12 -0
  489. package/dist/spec/index.js.map +1 -0
  490. package/dist/spec/infrastructure/cli/parseArgsError.d.ts +16 -0
  491. package/dist/spec/infrastructure/cli/parseArgsError.d.ts.map +1 -0
  492. package/dist/spec/infrastructure/cli/parseArgsError.js +34 -0
  493. package/dist/spec/infrastructure/cli/parseArgsError.js.map +1 -0
  494. package/dist/spec/infrastructure/index.d.ts +2 -0
  495. package/dist/spec/infrastructure/index.d.ts.map +1 -0
  496. package/dist/spec/infrastructure/index.js +2 -0
  497. package/dist/spec/infrastructure/index.js.map +1 -0
  498. package/dist/spec/infrastructure/sql/PgQueryParser.d.ts +18 -0
  499. package/dist/spec/infrastructure/sql/PgQueryParser.d.ts.map +1 -0
  500. package/dist/spec/infrastructure/sql/PgQueryParser.js +17 -0
  501. package/dist/spec/infrastructure/sql/PgQueryParser.js.map +1 -0
  502. package/dist/spec/infrastructure/sql/compilePlan.d.ts +37 -0
  503. package/dist/spec/infrastructure/sql/compilePlan.d.ts.map +1 -0
  504. package/dist/spec/infrastructure/sql/compilePlan.js +282 -0
  505. package/dist/spec/infrastructure/sql/compilePlan.js.map +1 -0
  506. package/dist/spec/infrastructure/sql/compileSql.d.ts +35 -0
  507. package/dist/spec/infrastructure/sql/compileSql.d.ts.map +1 -0
  508. package/dist/spec/infrastructure/sql/compileSql.js +92 -0
  509. package/dist/spec/infrastructure/sql/compileSql.js.map +1 -0
  510. package/dist/spec/infrastructure/sql/frontEnd.d.ts +8 -0
  511. package/dist/spec/infrastructure/sql/frontEnd.d.ts.map +1 -0
  512. package/dist/spec/infrastructure/sql/frontEnd.js +100 -0
  513. package/dist/spec/infrastructure/sql/frontEnd.js.map +1 -0
  514. package/dist/spec/infrastructure/sql/index.d.ts +4 -0
  515. package/dist/spec/infrastructure/sql/index.d.ts.map +1 -0
  516. package/dist/spec/infrastructure/sql/index.js +4 -0
  517. package/dist/spec/infrastructure/sql/index.js.map +1 -0
  518. package/dist/spec/kernel/diagnostic.d.ts +137 -0
  519. package/dist/spec/kernel/diagnostic.d.ts.map +1 -0
  520. package/dist/spec/kernel/diagnostic.js +296 -0
  521. package/dist/spec/kernel/diagnostic.js.map +1 -0
  522. package/dist/spec/kernel/index.d.ts +8 -0
  523. package/dist/spec/kernel/index.d.ts.map +1 -0
  524. package/dist/spec/kernel/index.js +8 -0
  525. package/dist/spec/kernel/index.js.map +1 -0
  526. package/dist/spec/usecase/EmitTypes.d.ts +22 -0
  527. package/dist/spec/usecase/EmitTypes.d.ts.map +1 -0
  528. package/dist/spec/usecase/EmitTypes.js +182 -0
  529. package/dist/spec/usecase/EmitTypes.js.map +1 -0
  530. package/dist/spec/usecase/ValidateManifestsUseCase.d.ts +8 -0
  531. package/dist/spec/usecase/ValidateManifestsUseCase.d.ts.map +1 -0
  532. package/dist/spec/usecase/ValidateManifestsUseCase.js +101 -0
  533. package/dist/spec/usecase/ValidateManifestsUseCase.js.map +1 -0
  534. package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts +27 -0
  535. package/dist/spec/usecase/dto/ValidateManifestsRequest.d.ts.map +1 -0
  536. package/dist/spec/usecase/dto/ValidateManifestsRequest.js +2 -0
  537. package/dist/spec/usecase/dto/ValidateManifestsRequest.js.map +1 -0
  538. package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts +14 -0
  539. package/dist/spec/usecase/dto/ValidateManifestsResponse.d.ts.map +1 -0
  540. package/dist/spec/usecase/dto/ValidateManifestsResponse.js +2 -0
  541. package/dist/spec/usecase/dto/ValidateManifestsResponse.js.map +1 -0
  542. package/dist/spec/usecase/dto/index.d.ts +3 -0
  543. package/dist/spec/usecase/dto/index.d.ts.map +1 -0
  544. package/dist/spec/usecase/dto/index.js +3 -0
  545. package/dist/spec/usecase/dto/index.js.map +1 -0
  546. package/dist/spec/usecase/index.d.ts +10 -0
  547. package/dist/spec/usecase/index.d.ts.map +1 -0
  548. package/dist/spec/usecase/index.js +10 -0
  549. package/dist/spec/usecase/index.js.map +1 -0
  550. package/dist/testing/cases/before-hook.d.ts +4 -0
  551. package/dist/testing/cases/before-hook.d.ts.map +1 -0
  552. package/dist/testing/cases/before-hook.js +71 -0
  553. package/dist/testing/cases/before-hook.js.map +1 -0
  554. package/dist/testing/cases/corpus.d.ts +12 -0
  555. package/dist/testing/cases/corpus.d.ts.map +1 -0
  556. package/dist/testing/cases/corpus.js +91 -0
  557. package/dist/testing/cases/corpus.js.map +1 -0
  558. package/dist/testing/cases/policy.d.ts +74 -0
  559. package/dist/testing/cases/policy.d.ts.map +1 -0
  560. package/dist/testing/cases/policy.js +142 -0
  561. package/dist/testing/cases/policy.js.map +1 -0
  562. package/dist/testing/cases/printer.d.ts +4 -0
  563. package/dist/testing/cases/printer.d.ts.map +1 -0
  564. package/dist/testing/cases/printer.js +32 -0
  565. package/dist/testing/cases/printer.js.map +1 -0
  566. package/dist/testing/cases/report-view.d.ts +5 -0
  567. package/dist/testing/cases/report-view.d.ts.map +1 -0
  568. package/dist/testing/cases/report-view.js +33 -0
  569. package/dist/testing/cases/report-view.js.map +1 -0
  570. package/dist/testing/cases/requisition.d.ts +4 -0
  571. package/dist/testing/cases/requisition.d.ts.map +1 -0
  572. package/dist/testing/cases/requisition.js +38 -0
  573. package/dist/testing/cases/requisition.js.map +1 -0
  574. package/dist/testing/cases/search-places.d.ts +4 -0
  575. package/dist/testing/cases/search-places.d.ts.map +1 -0
  576. package/dist/testing/cases/search-places.js +60 -0
  577. package/dist/testing/cases/search-places.js.map +1 -0
  578. package/dist/testing/cases/stock.d.ts +4 -0
  579. package/dist/testing/cases/stock.d.ts.map +1 -0
  580. package/dist/testing/cases/stock.js +35 -0
  581. package/dist/testing/cases/stock.js.map +1 -0
  582. package/dist/testing/cases/store.d.ts +4 -0
  583. package/dist/testing/cases/store.d.ts.map +1 -0
  584. package/dist/testing/cases/store.js +100 -0
  585. package/dist/testing/cases/store.js.map +1 -0
  586. package/dist/testing/harness.d.ts +94 -0
  587. package/dist/testing/harness.d.ts.map +1 -0
  588. package/dist/testing/harness.js +168 -0
  589. package/dist/testing/harness.js.map +1 -0
  590. package/dist/testing/index.d.ts +37 -0
  591. package/dist/testing/index.d.ts.map +1 -0
  592. package/dist/testing/index.js +43 -0
  593. package/dist/testing/index.js.map +1 -0
  594. package/dist/testing/report.d.ts +15 -0
  595. package/dist/testing/report.d.ts.map +1 -0
  596. package/dist/testing/report.js +22 -0
  597. package/dist/testing/report.js.map +1 -0
  598. package/dist/web/createRestSurface.d.ts +7 -0
  599. package/dist/web/createRestSurface.d.ts.map +1 -0
  600. package/dist/web/createRestSurface.js +39 -0
  601. package/dist/web/createRestSurface.js.map +1 -0
  602. package/dist/web/index.d.ts +2 -0
  603. package/dist/web/index.d.ts.map +1 -0
  604. package/dist/web/index.js +2 -0
  605. package/dist/web/index.js.map +1 -0
  606. package/docs/adr/0008-structured-diagnostic-shape.md +2 -2
  607. package/docs/adr/0011-adapter-port-spec.md +2 -2
  608. package/docs/adr/0014-auth-better-auth-and-multi-tenant-mcp.md +21 -2
  609. package/docs/adr/0019-sealed-manifest-runtime-pipeline.md +5 -1
  610. package/docs/adr/0022-caller-observed-version-occ.md +1 -1
  611. package/docs/adr/0024-manifest-native-schema-tables.md +2 -2
  612. package/docs/adr/0027-scheduled-procedure-triggers.md +1 -1
  613. package/docs/adr/0028-schema-ttl-expiry.md +3 -3
  614. package/docs/adr/0029-mcp-apps-interaction-contracts.md +324 -0
  615. package/docs/adr/0030-store.md +40 -0
  616. package/docs/adr/0031-host-cloud-core-contract.md +25 -0
  617. package/docs/adr/0032-store-centric-core-and-service-contract.md +361 -0
  618. package/docs/adr/0033-storage-converges-to-the-plan.md +92 -0
  619. package/docs/adr/0034-store-is-authored-as-sql.md +192 -0
  620. package/docs/adr/0035-sql-dialects.md +154 -0
  621. package/docs/adr/0036-host-and-dialect.md +65 -0
  622. package/docs/adr/0037-postgresql-is-the-reference-dialect.md +124 -0
  623. package/docs/adr/0038-bun-native-host.md +63 -0
  624. package/docs/adr/README.md +23 -8
  625. package/docs/adr/adr-lite-861-admin-webmcp.md +6 -0
  626. package/docs/adr/adr-lite-909-admin-ui-kit.md +1 -1
  627. package/docs/examples/README.md +16 -18
  628. package/docs/examples/commerce-inventory.md +481 -0
  629. package/docs/examples/commerce.md +254 -0
  630. package/docs/examples/guarded-api.md +238 -0
  631. package/docs/examples/intake-hooks.md +237 -0
  632. package/docs/examples/intake.md +127 -0
  633. package/docs/examples/legal-documents.md +218 -0
  634. package/docs/examples/procurement.md +215 -0
  635. package/docs/examples/publication.md +211 -0
  636. package/docs/examples/reference-service/.dev.vars.example +4 -0
  637. package/docs/examples/reference-service/.mantle/generated/mantle.ts +174 -0
  638. package/docs/examples/reference-service/.mantle/generated/plan.json +1936 -0
  639. package/docs/examples/reference-service/README.md +33 -0
  640. package/docs/examples/reference-service/manifests/catalog.yaml +103 -0
  641. package/docs/examples/reference-service/manifests/orders.yaml +120 -0
  642. package/docs/examples/reference-service/mantle.config.json +1 -0
  643. package/docs/examples/reference-service/package.json +27 -0
  644. package/docs/examples/reference-service/smoke.mjs +156 -0
  645. package/docs/examples/reference-service/src/handlers.ts +36 -0
  646. package/docs/examples/reference-service/src/index.ts +33 -0
  647. package/docs/examples/reference-service/src/service.ts +78 -0
  648. package/docs/examples/{host-minimal-worker → reference-service}/tsconfig.json +7 -2
  649. package/docs/examples/reference-service/wrangler.jsonc +26 -0
  650. package/docs/examples/reservation.md +142 -0
  651. package/docs/handbook/cloudflare/authentication.md +96 -316
  652. package/docs/handbook/cloudflare/chatgpt-sites.md +104 -15
  653. package/docs/handbook/cloudflare/deploy-and-operate.md +77 -71
  654. package/docs/handbook/cloudflare/media-r2.md +64 -187
  655. package/docs/handbook/cloudflare/service-entry.md +138 -0
  656. package/docs/handbook/concepts/authorization.md +104 -94
  657. package/docs/handbook/concepts/four-atoms.md +68 -144
  658. package/docs/handbook/concepts/lifecycle-and-locales.md +62 -114
  659. package/docs/handbook/concepts/mcp-and-agents.md +112 -117
  660. package/docs/handbook/concepts/procedures-and-triggers.md +126 -181
  661. package/docs/handbook/concepts/runtime-and-adapters.md +177 -163
  662. package/docs/handbook/concepts/views.md +97 -173
  663. package/docs/handbook/examples/hub.md +17 -6
  664. package/docs/handbook/guides/admin-ui.md +101 -96
  665. package/docs/handbook/guides/agent-setup.md +56 -71
  666. package/docs/handbook/guides/typed-queries.md +105 -111
  667. package/docs/handbook/navigation.json +8 -33
  668. package/docs/handbook/reference/authorization.md +52 -271
  669. package/docs/handbook/reference/diagnostics.md +69 -178
  670. package/docs/handbook/reference/features.md +48 -50
  671. package/docs/handbook/reference/manifest.md +56 -116
  672. package/docs/handbook/reference/procedure.md +91 -279
  673. package/docs/handbook/reference/schema.md +154 -239
  674. package/docs/handbook/reference/site-config.md +58 -211
  675. package/docs/handbook/reference/surface.md +69 -181
  676. package/docs/handbook/reference/trigger.md +72 -181
  677. package/docs/handbook/reference/view.md +140 -241
  678. package/docs/handbook/releases/index.md +58 -77
  679. package/docs/handbook/start/overview.md +59 -51
  680. package/docs/handbook/start/project-and-cli.md +132 -105
  681. package/docs/handbook/start/quickstart-worker.md +102 -160
  682. package/docs/skills/develop/SKILL.md +114 -240
  683. package/docs/skills/develop/mcp-app.md +79 -0
  684. package/docs/skills/integrate/SKILL.md +83 -47
  685. package/docs/skills/media-gc/SKILL.md +21 -10
  686. package/docs/skills/provision/SKILL.md +68 -162
  687. package/docs/skills/update/SKILL.md +33 -34
  688. package/docs/upgrade-0.1-to-0.2.md +211 -0
  689. package/package.json +87 -106
  690. package/dist/admin-ui.d.ts +0 -2
  691. package/dist/admin-ui.d.ts.map +0 -1
  692. package/dist/admin-ui.js +0 -2
  693. package/dist/admin-ui.js.map +0 -1
  694. package/dist/admin.d.ts +0 -2
  695. package/dist/admin.d.ts.map +0 -1
  696. package/dist/admin.js +0 -2
  697. package/dist/admin.js.map +0 -1
  698. package/dist/auth.d.ts +0 -2
  699. package/dist/auth.d.ts.map +0 -1
  700. package/dist/auth.js +0 -2
  701. package/dist/auth.js.map +0 -1
  702. package/dist/bun.d.ts +0 -2
  703. package/dist/bun.d.ts.map +0 -1
  704. package/dist/bun.js +0 -2
  705. package/dist/bun.js.map +0 -1
  706. package/dist/cli/generate-cloudflare.d.ts +0 -7
  707. package/dist/cli/generate-cloudflare.d.ts.map +0 -1
  708. package/dist/cli/generate-cloudflare.js +0 -123
  709. package/dist/cli/generate-cloudflare.js.map +0 -1
  710. package/dist/cli/generate-project.d.ts +0 -25
  711. package/dist/cli/generate-project.d.ts.map +0 -1
  712. package/dist/cli/generate-project.js +0 -282
  713. package/dist/cli/generate-project.js.map +0 -1
  714. package/dist/cli/generate-sites.d.ts +0 -8
  715. package/dist/cli/generate-sites.d.ts.map +0 -1
  716. package/dist/cli/generate-sites.js +0 -273
  717. package/dist/cli/generate-sites.js.map +0 -1
  718. package/dist/cli/harness.d.ts +0 -3
  719. package/dist/cli/harness.d.ts.map +0 -1
  720. package/dist/cli/harness.js +0 -214
  721. package/dist/cli/harness.js.map +0 -1
  722. package/dist/cli/skills.d.ts +0 -3
  723. package/dist/cli/skills.d.ts.map +0 -1
  724. package/dist/cli/skills.js +0 -128
  725. package/dist/cli/skills.js.map +0 -1
  726. package/dist/cloudflare.d.ts +0 -2
  727. package/dist/cloudflare.d.ts.map +0 -1
  728. package/dist/cloudflare.js +0 -2
  729. package/dist/cloudflare.js.map +0 -1
  730. package/dist/codegen/emitMantleModule.d.ts +0 -22
  731. package/dist/codegen/emitMantleModule.d.ts.map +0 -1
  732. package/dist/codegen/emitMantleModule.js +0 -291
  733. package/dist/codegen/emitMantleModule.js.map +0 -1
  734. package/dist/codegen.d.ts +0 -2
  735. package/dist/codegen.d.ts.map +0 -1
  736. package/dist/codegen.js +0 -2
  737. package/dist/codegen.js.map +0 -1
  738. package/dist/runtime-testing.d.ts +0 -2
  739. package/dist/runtime-testing.d.ts.map +0 -1
  740. package/dist/runtime-testing.js +0 -2
  741. package/dist/runtime-testing.js.map +0 -1
  742. package/dist/runtime.d.ts +0 -2
  743. package/dist/runtime.d.ts.map +0 -1
  744. package/dist/runtime.js +0 -2
  745. package/dist/runtime.js.map +0 -1
  746. package/dist/spec.d.ts +0 -2
  747. package/dist/spec.d.ts.map +0 -1
  748. package/dist/spec.js +0 -2
  749. package/dist/spec.js.map +0 -1
  750. package/dist/vercel-libsql.d.ts +0 -2
  751. package/dist/vercel-libsql.d.ts.map +0 -1
  752. package/dist/vercel-libsql.js +0 -2
  753. package/dist/vercel-libsql.js.map +0 -1
  754. package/dist/vercel.d.ts +0 -2
  755. package/dist/vercel.d.ts.map +0 -1
  756. package/dist/vercel.js +0 -2
  757. package/dist/vercel.js.map +0 -1
  758. package/dist/web.d.ts +0 -2
  759. package/dist/web.d.ts.map +0 -1
  760. package/dist/web.js +0 -2
  761. package/dist/web.js.map +0 -1
  762. package/docs/adapter-guide.md +0 -222
  763. package/docs/agent-prompts.md +0 -64
  764. package/docs/api-mcp-authorization.md +0 -5
  765. package/docs/assets/mantle-admin-developer.png +0 -0
  766. package/docs/assets/mantle-admin-operations.png +0 -0
  767. package/docs/assets/mantle-hero.jpg +0 -0
  768. package/docs/auth-hosting-model.md +0 -166
  769. package/docs/cloudflare-low-level-composition.md +0 -5
  770. package/docs/consumer-onboarding-audit.md +0 -65
  771. package/docs/deferred-lifecycle-queues.md +0 -5
  772. package/docs/design-atoms.md +0 -16
  773. package/docs/design-references/editorial-blog-2026-05-05.md +0 -218
  774. package/docs/direct-authoring.md +0 -5
  775. package/docs/examples/builtin-commerce.md +0 -269
  776. package/docs/examples/builtin-intake.md +0 -143
  777. package/docs/examples/builtin-legal-documents.md +0 -189
  778. package/docs/examples/builtin-procurement.md +0 -241
  779. package/docs/examples/builtin-publication.md +0 -241
  780. package/docs/examples/builtin-reservation.md +0 -149
  781. package/docs/examples/cf-primitives-commerce-inventory.md +0 -809
  782. package/docs/examples/cf-primitives-guarded-api.md +0 -429
  783. package/docs/examples/cf-primitives-intake-hooks.md +0 -319
  784. package/docs/examples/host-chatgpt-sites/.openai/hosting.json +0 -1
  785. package/docs/examples/host-chatgpt-sites/README.md +0 -70
  786. package/docs/examples/host-chatgpt-sites/drizzle/0000_sites_users.sql +0 -8
  787. package/docs/examples/host-chatgpt-sites/drizzle/0001_mantle.sql +0 -294
  788. package/docs/examples/host-chatgpt-sites/drizzle/0002_article_cover.sql +0 -5
  789. package/docs/examples/host-chatgpt-sites/drizzle/0003_store_instance_id.sql +0 -1
  790. package/docs/examples/host-chatgpt-sites/drizzle/0004_mantle.sql +0 -10
  791. package/docs/examples/host-chatgpt-sites/drizzle/0005_mantle.sql +0 -24
  792. package/docs/examples/host-chatgpt-sites/drizzle/meta/_journal.json +0 -1
  793. package/docs/examples/host-chatgpt-sites/drizzle/meta/mantle-state.json +0 -60
  794. package/docs/examples/host-chatgpt-sites/manifests/site.yaml +0 -27
  795. package/docs/examples/host-chatgpt-sites/package.json +0 -1
  796. package/docs/examples/host-chatgpt-sites/public/site.css +0 -1
  797. package/docs/examples/host-chatgpt-sites/scripts/build.mjs +0 -13
  798. package/docs/examples/host-chatgpt-sites/scripts/check.mjs +0 -101
  799. package/docs/examples/host-chatgpt-sites/scripts/migration.mjs +0 -43
  800. package/docs/examples/host-chatgpt-sites/src/chatgpt-auth.ts +0 -66
  801. package/docs/examples/host-chatgpt-sites/src/index.ts +0 -46
  802. package/docs/examples/host-chatgpt-sites/src/mcp.ts +0 -49
  803. package/docs/examples/host-chatgpt-sites/src/media.ts +0 -109
  804. package/docs/examples/host-chatgpt-sites/src/r2-lab.ts +0 -38
  805. package/docs/examples/host-chatgpt-sites/src/storage-fingerprint.json +0 -1
  806. package/docs/examples/host-chatgpt-sites/src/web.ts +0 -35
  807. package/docs/examples/host-chatgpt-sites/tsconfig.json +0 -1
  808. package/docs/examples/host-chatgpt-sites/wrangler.jsonc +0 -10
  809. package/docs/examples/host-local-admin-otp/.dev.vars.example +0 -3
  810. package/docs/examples/host-local-admin-otp/README.md +0 -80
  811. package/docs/examples/host-local-admin-otp/ensure-dev-vars.mjs +0 -5
  812. package/docs/examples/host-local-admin-otp/manifests/site.yaml +0 -25
  813. package/docs/examples/host-local-admin-otp/package.json +0 -29
  814. package/docs/examples/host-local-admin-otp/public/.gitkeep +0 -1
  815. package/docs/examples/host-local-admin-otp/smoke.mjs +0 -141
  816. package/docs/examples/host-local-admin-otp/src/index.ts +0 -54
  817. package/docs/examples/host-local-admin-otp/tsconfig.json +0 -17
  818. package/docs/examples/host-local-admin-otp/wrangler.jsonc +0 -23
  819. package/docs/examples/host-minimal-worker/README.md +0 -41
  820. package/docs/examples/host-minimal-worker/manifests/site.yaml +0 -25
  821. package/docs/examples/host-minimal-worker/package.json +0 -26
  822. package/docs/examples/host-minimal-worker/smoke.mjs +0 -23
  823. package/docs/examples/host-minimal-worker/src/index.ts +0 -4
  824. package/docs/examples/host-minimal-worker/wrangler.jsonc +0 -22
  825. package/docs/handbook/chatgpt-sites/equipment-checkout.md +0 -231
  826. package/docs/handbook/chatgpt-sites/generated-app.md +0 -84
  827. package/docs/handbook/chatgpt-sites/host-reference.md +0 -113
  828. package/docs/handbook/chatgpt-sites/index.md +0 -133
  829. package/docs/handbook/cloudflare/bindings.md +0 -291
  830. package/docs/handbook/cloudflare/conventional-worker.md +0 -166
  831. package/docs/handbook/cloudflare/deferred-hooks-queues.md +0 -170
  832. package/docs/handbook/cloudflare/low-level-composition.md +0 -169
  833. package/docs/handbook/cloudflare/public-web.md +0 -144
  834. package/docs/handbook/cloudflare/site-chrome.md +0 -75
  835. package/docs/handbook/examples/commerce-transaction.md +0 -11
  836. package/docs/handbook/examples/commerce.md +0 -11
  837. package/docs/handbook/examples/guarded-api.md +0 -10
  838. package/docs/handbook/examples/intake-form.md +0 -12
  839. package/docs/handbook/examples/intake-hooks.md +0 -11
  840. package/docs/handbook/examples/legal-documents.md +0 -10
  841. package/docs/handbook/examples/procurement-approvals.md +0 -10
  842. package/docs/handbook/examples/publication.md +0 -10
  843. package/docs/handbook/examples/reservation.md +0 -10
  844. package/docs/handbook/start/quickstart-admin.md +0 -52
  845. package/docs/labels.md +0 -71
  846. package/docs/media-uploads.md +0 -5
  847. package/docs/migration-0.1.2.md +0 -13
  848. package/docs/performance-harness.md +0 -228
  849. package/docs/release-process.md +0 -244
  850. package/docs/schema-indexes.md +0 -5
  851. package/docs/sealed-pipeline-ownership.md +0 -101
  852. package/docs/skills/plugin/SKILL.md +0 -132
  853. package/docs/skills/theme/SKILL.md +0 -77
  854. package/docs/spec-only-host-adoption.md +0 -157
  855. package/docs/transaction-patterns.md +0 -5
  856. package/skills/README.md +0 -127
  857. package/skills/develop/SKILL.md +0 -258
  858. package/skills/install/SKILL.md +0 -112
  859. package/skills/integrate/SKILL.md +0 -60
  860. package/skills/media-gc/SKILL.md +0 -85
  861. package/skills/plugin/SKILL.md +0 -132
  862. package/skills/provision/SKILL.md +0 -194
  863. package/skills/theme/SKILL.md +0 -77
  864. package/skills/update/SKILL.md +0 -51
  865. package/templates/chatgpt-sites/auth.ts +0 -66
  866. package/templates/chatgpt-sites/build.mjs +0 -14
  867. package/templates/chatgpt-sites/env.ts +0 -1
  868. package/templates/chatgpt-sites/mcp.ts +0 -48
  869. package/templates/chatgpt-sites/public-mcp.ts +0 -29
  870. package/templates/chatgpt-sites/smoke-local.mjs +0 -20
@@ -0,0 +1,149 @@
1
+ /**
2
+ * K8s-style manifest envelope, scoped to the cms group of the mantle universe.
3
+ *
4
+ * apiVersion: cms.mantle.aotter.net/v2
5
+ * kind: <Kind>
6
+ * metadata: { name }
7
+ * spec: { ... kind-specific ... }
8
+ *
9
+ * Sibling group `analytics.mantle.aotter.net/v1` lives in the parallel mantle (OLAP)
10
+ * project and is parsed there — the two systems share lineage and mantle.ai
11
+ * domain but not parsers.
12
+ *
13
+ * The parser rejects keys and enum values outside this shipped grammar.
14
+ * Future syntax is added only with its implementation.
15
+ */
16
+ export const API_VERSION = "cms.mantle.aotter.net/v2";
17
+ export function isMediaMcpHint(value) {
18
+ return (value === "media" ||
19
+ value === "media-image" ||
20
+ value === "media-video" ||
21
+ value === "media-file");
22
+ }
23
+ export const MANTLE_REF_KEYWORD = "x-mantle-ref";
24
+ /**
25
+ * A property's string options: its `enum`, or a `oneOf` whose every branch is a string `const` (the standard way to give each
26
+ * option a `title`). Undefined when the property is neither.
27
+ */
28
+ export function enumOptions(property) {
29
+ if (property?.enum?.length && property.enum.every((v) => typeof v === "string"))
30
+ return property.enum.map((value) => ({ value: value }));
31
+ const branches = property?.oneOf;
32
+ if (!branches?.length || !branches.every((b) => typeof b.const === "string"))
33
+ return undefined;
34
+ return branches.map((b) => ({ value: b.const, ...(b.title !== undefined ? { title: b.title } : {}) }));
35
+ }
36
+ /** Normalize either `x-mantle-ref` form, or `null` when the property carries
37
+ * none (or a malformed value, which graph validation reports). */
38
+ export function resolveMantleRef(property) {
39
+ if (typeof property !== "object" || property === null)
40
+ return null;
41
+ const ref = property[MANTLE_REF_KEYWORD];
42
+ if (typeof ref === "string")
43
+ return ref.length > 0 ? { schema: ref, field: "id" } : null;
44
+ if (typeof ref !== "object" || ref === null || Array.isArray(ref))
45
+ return null;
46
+ const { schema, field } = ref;
47
+ return typeof schema === "string" && schema.length > 0 && typeof field === "string" && field.length > 0
48
+ ? { schema, field }
49
+ : null;
50
+ }
51
+ export const MCP_HINT_KEYWORD = "x-mcp-hint";
52
+ /** A 0.1.x Schema-property keyword; 0.2.0 refuses it (Schema.spec.scope and a Procedure's SQL replace it). */
53
+ export const MANTLE_BIND_KEYWORD = "x-mantle-bind";
54
+ /**
55
+ * Resolve a `LocalizedText` value to a single displayable string for
56
+ * `preferred` (typically the viewer's chosen admin language), falling
57
+ * back to `canonical` (the site's canonical locale) and finally to the
58
+ * record's first own-enumerable entry (insertion order). A plain
59
+ * string is returned as-is — even an empty string, since only
60
+ * `null`/`undefined` map to `null` here; shape validation (rejecting
61
+ * empty strings) is the parser's job, not this resolver's. `null` /
62
+ * `undefined` input (the field was never set) resolves to `null`, and
63
+ * an empty record (structurally invalid, but resolved defensively)
64
+ * also resolves to `null` since there is nothing to fall back to.
65
+ */
66
+ export function resolveLocalizedText(value, preferred, canonical) {
67
+ if (value == null)
68
+ return null;
69
+ if (typeof value === "string")
70
+ return value;
71
+ if (Object.prototype.hasOwnProperty.call(value, preferred)) {
72
+ return value[preferred];
73
+ }
74
+ if (canonical && Object.prototype.hasOwnProperty.call(value, canonical)) {
75
+ return value[canonical];
76
+ }
77
+ const firstKey = Object.keys(value)[0];
78
+ return firstKey !== undefined ? value[firstKey] : null;
79
+ }
80
+ export const VIEW_SURFACES = ["public", "staff", "internal"];
81
+ /** Reserved query-string names on the View REST surface. A View `input` may
82
+ * not declare them (`VIEW_INPUT_RESERVED_NAME`). */
83
+ export const VIEW_INPUT_RESERVED = ["limit", "cursor"];
84
+ export const PROCEDURE_TARGET_KEYS = ["schema", "id", "version"];
85
+ export const PROCEDURE_MCP_ANNOTATION_KEYS = ["readOnlyHint", "destructiveHint", "openWorldHint"];
86
+ /**
87
+ * Staff role hierarchy. `users` is the base identity layer (runtime);
88
+ * `staff` is the privilege overlay (one row per privileged user). A
89
+ * user without a staff row is a regular site member with no admin
90
+ * access.
91
+ *
92
+ * owner — full control, manages staff, manages settings
93
+ * editor — publish, approve/reject, manage all entries
94
+ * contributor — create and edit drafts
95
+ *
96
+ * `StaffRole` lives in spec because the manifest grammar references
97
+ * it directly: `requires.auth.all: [{ "ctx.staff": [<role>, ...] }]`
98
+ * — the parser checks each role string is in `STAFF_ROLES` at boot.
99
+ * The `Staff` runtime row shape (with grantedBy / grantedAt) lives in
100
+ * `mantle-runtime`; only the closed enum is grammar.
101
+ */
102
+ export const STAFF_ROLES = ["owner", "editor", "contributor"];
103
+ // `meetsRole` (role-rank comparison) moved to
104
+ // `domain/service/StaffRoleHierarchy.ts` — this file is pure grammar
105
+ // types referenced by the parser.
106
+ export function isStaffRole(s) {
107
+ return STAFF_ROLES.includes(s);
108
+ }
109
+ /** Shipped v0.1 lifecycle hook vocabulary: before/after ×
110
+ * create/update/delete plus the publish boundary. New entries require an
111
+ * explicit grammar-revise round. */
112
+ export const LIFECYCLE_HOOKS = [
113
+ "before_create",
114
+ "after_create",
115
+ "before_update",
116
+ "after_update",
117
+ "before_delete",
118
+ "after_delete",
119
+ "before_publish",
120
+ "after_publish",
121
+ ];
122
+ /** Surfaces an MCP-source Trigger can be bound to. `staff` ⇒
123
+ * `/mcp/staff` (bearer + role gate); `public` ⇒ `/mcp` (bearer only).
124
+ * The procedure's own `requires.auth` still gates the call —
125
+ * surface determines visibility in `tools/list`. */
126
+ export const MCP_TRIGGER_SURFACES = ["staff", "public"];
127
+ /** Storage-row metadata columns reserved across every Schema. Used by
128
+ * the View SQL compiler (to project them as native columns rather
129
+ * than `json_extract`) and by the type emitter (to surface them on
130
+ * every Entry interface). Adding a new reserved column is a grammar
131
+ * revise — touch this constant + every consumer. */
132
+ export const RESERVED_ENTRY_COLUMNS = [
133
+ "id",
134
+ "status",
135
+ "version",
136
+ "createdAt",
137
+ "updatedAt",
138
+ "authorId",
139
+ ];
140
+ /**
141
+ * Reserved Procedure input wire names. `expectedVersion` is the observed
142
+ * native `entry.version` at read time (not version+1). First-party Admin/SDK
143
+ * bind and hide it; other callers supply it. Schema `spec.schema.properties`
144
+ * must not collide — validate is fail-closed (`INVALID_MANIFEST_ENVELOPE`).
145
+ * New reserved names need an ADR (ADR-0022).
146
+ */
147
+ export const EXPECTED_VERSION_PROPERTY = "expectedVersion";
148
+ export const RESERVED_PROCEDURE_INPUT_NAMES = [EXPECTED_VERSION_PROPERTY];
149
+ //# sourceMappingURL=ManifestGrammar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManifestGrammar.js","sourceRoot":"","sources":["../../../../src/spec/domain/model/ManifestGrammar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,0BAAmC,CAAC;AAO/D,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,CACL,KAAK,KAAK,OAAO;QACjB,KAAK,KAAK,aAAa;QACvB,KAAK,KAAK,aAAa;QACvB,KAAK,KAAK,YAAY,CACvB,CAAC;AACJ,CAAC;AAiED,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAuB,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgC;IAC1D,IAAI,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAe,EAAE,CAAC,CAAC,CAAC;IACnJ,MAAM,QAAQ,GAAG,QAAQ,EAAE,KAAK,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/F,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAe,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACnH,CAAC;AAUD;mEACmE;AACnE,MAAM,UAAU,gBAAgB,CAAC,QAAiB;IAChD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACnE,MAAM,GAAG,GAAI,QAAoC,CAAC,kBAAkB,CAAC,CAAC;IACtE,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACzF,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/E,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAA8B,CAAC;IACzD,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QACrG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;QACnB,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AACD,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAqB,CAAC;AACtD,8GAA8G;AAC9G,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAwB,CAAC;AAa5D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAuC,EACvC,SAAiB,EACjB,SAAyB;IAEzB,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAC,SAAS,CAAE,CAAC;IAC3B,CAAC;IACD,IAAI,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;QACxE,OAAO,KAAK,CAAC,SAAS,CAAE,CAAC;IAC3B,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC;AAwGD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAU,CAAC;AAkDtE;qDACqD;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAU,CAAC;AAoDhE,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAU,CAAC;AAO1E,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,cAAc,EAAE,iBAAiB,EAAE,eAAe,CAAU,CAAC;AA4C3G;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAU,CAAC;AAGvE,8CAA8C;AAC9C,qEAAqE;AACrE,kCAAkC;AAElC,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAQ,WAAiC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAkCD;;qCAEqC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,eAAe;IACf,cAAc;IACd,eAAe;IACf,cAAc;IACd,eAAe;IACf,cAAc;IACd,gBAAgB;IAChB,eAAe;CACP,CAAC;AAWX;;;qDAGqD;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAU,CAAC;AAmBjE;;;;qDAIqD;AACrD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI;IACJ,QAAQ;IACR,SAAS;IACT,WAAW;IACX,WAAW;IACX,UAAU;CACF,CAAC;AAGX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAA0B,CAAC;AACpE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,yBAAyB,CAAU,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Mime-accept grammar for `MediaPurposePolicy.required`.
3
+ *
4
+ * Each entry of `required` is parsed as one of:
5
+ * - a full mime type: `"image/jpeg"`, `"image/avif"`
6
+ * - a comma-list of full mimes: `"image/jpg,image/png"` (either is OK)
7
+ * - a shorthand subtype: `"webp"` → `"image/webp"`, `"jpg"` → `"image/jpeg"`
8
+ *
9
+ * Whitespace around commas and around full entries is tolerated; the
10
+ * grammar mirrors the HTML `<input accept="...">` attribute editors
11
+ * already know. Each entry yields a non-empty *acceptable mime set*
12
+ * for one slot. **Slot order is only used for per-slot mime coverage.
13
+ * Variant role (`primary` / `alternate`) is declared independently
14
+ * per variant by the agent; the use case enforces exactly one
15
+ * primary, but does not bind primary to slot 0.** This matters for
16
+ * back-compat: alpha.14 fixtures such as
17
+ * `["image/avif", "image/webp", "image/jpeg"]` declare avif at slot 0
18
+ * yet ship jpeg as the `<img>` fallback (`role: "primary"`).
19
+ *
20
+ * Per-asset, the agent picks ONE mime per slot from the slot's
21
+ * acceptable set and chooses which of those is the primary. Repeatable
22
+ * benefit: a `product-cover` purpose declared as
23
+ * `["image/jpg,image/png", "webp", "avif"]` accepts a transparent
24
+ * PNG primary (logos / icons) or an opaque JPEG primary (photos)
25
+ * under the same purpose name — no per-purpose split, no forced jpeg
26
+ * flatten that loses alpha.
27
+ *
28
+ * Validation:
29
+ * - Each entry must yield ≥1 mime after parsing.
30
+ * - Mime sets across slots MUST NOT overlap (otherwise variant→slot
31
+ * mapping is ambiguous at upload-policy enforcement time).
32
+ * - `maxBytes` MUST cover every expanded mime (not the literal
33
+ * `required[i]` string).
34
+ *
35
+ * See aotter/mantle#282 for the motivating editor-uploads-PNG-as-
36
+ * transparent-asset case.
37
+ */
38
+ /**
39
+ * Parse one `required[i]` entry into its acceptable mime set.
40
+ * Returns a deduped, order-preserving list (so error messages /
41
+ * tool descriptions show the entry the way the consumer wrote it).
42
+ *
43
+ * Throws nothing — invalid tokens are returned as-is and the
44
+ * validator's allowlist check flags them downstream. This keeps the
45
+ * parser pure data-shape; semantic validation lives one layer up.
46
+ */
47
+ export declare function parseMimeAccept(entry: string): readonly string[];
48
+ /**
49
+ * Expand a policy's `required` into per-slot mime sets. Slot ordering
50
+ * is preserved as the consumer wrote it. Variant role (primary /
51
+ * alternate / fallback) is declared independently per variant — see
52
+ * the file header. Returns a `[slot][mime]` matrix.
53
+ */
54
+ export declare function expandPolicyRequired(required: readonly string[]): readonly (readonly string[])[];
55
+ //# sourceMappingURL=MediaMimeAccept.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaMimeAccept.d.ts","sourceRoot":"","sources":["../../../../src/spec/domain/model/MediaMimeAccept.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAsBH;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAahE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAEhC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Mime-accept grammar for `MediaPurposePolicy.required`.
3
+ *
4
+ * Each entry of `required` is parsed as one of:
5
+ * - a full mime type: `"image/jpeg"`, `"image/avif"`
6
+ * - a comma-list of full mimes: `"image/jpg,image/png"` (either is OK)
7
+ * - a shorthand subtype: `"webp"` → `"image/webp"`, `"jpg"` → `"image/jpeg"`
8
+ *
9
+ * Whitespace around commas and around full entries is tolerated; the
10
+ * grammar mirrors the HTML `<input accept="...">` attribute editors
11
+ * already know. Each entry yields a non-empty *acceptable mime set*
12
+ * for one slot. **Slot order is only used for per-slot mime coverage.
13
+ * Variant role (`primary` / `alternate`) is declared independently
14
+ * per variant by the agent; the use case enforces exactly one
15
+ * primary, but does not bind primary to slot 0.** This matters for
16
+ * back-compat: alpha.14 fixtures such as
17
+ * `["image/avif", "image/webp", "image/jpeg"]` declare avif at slot 0
18
+ * yet ship jpeg as the `<img>` fallback (`role: "primary"`).
19
+ *
20
+ * Per-asset, the agent picks ONE mime per slot from the slot's
21
+ * acceptable set and chooses which of those is the primary. Repeatable
22
+ * benefit: a `product-cover` purpose declared as
23
+ * `["image/jpg,image/png", "webp", "avif"]` accepts a transparent
24
+ * PNG primary (logos / icons) or an opaque JPEG primary (photos)
25
+ * under the same purpose name — no per-purpose split, no forced jpeg
26
+ * flatten that loses alpha.
27
+ *
28
+ * Validation:
29
+ * - Each entry must yield ≥1 mime after parsing.
30
+ * - Mime sets across slots MUST NOT overlap (otherwise variant→slot
31
+ * mapping is ambiguous at upload-policy enforcement time).
32
+ * - `maxBytes` MUST cover every expanded mime (not the literal
33
+ * `required[i]` string).
34
+ *
35
+ * See aotter/mantle#282 for the motivating editor-uploads-PNG-as-
36
+ * transparent-asset case.
37
+ */
38
+ /** Shorthand → full-mime expansion. Lowercase keys; alias forms
39
+ * collapse to the canonical mime (`jpg` / `jpeg` / `image/jpg` →
40
+ * `image/jpeg`). */
41
+ const SHORTHAND_TO_MIME = {
42
+ jpg: "image/jpeg",
43
+ jpeg: "image/jpeg",
44
+ "image/jpg": "image/jpeg",
45
+ png: "image/png",
46
+ "image/png": "image/png",
47
+ webp: "image/webp",
48
+ "image/webp": "image/webp",
49
+ avif: "image/avif",
50
+ "image/avif": "image/avif",
51
+ gif: "image/gif",
52
+ "image/gif": "image/gif",
53
+ svg: "image/svg+xml",
54
+ "image/svg+xml": "image/svg+xml",
55
+ "image/svg": "image/svg+xml",
56
+ };
57
+ /**
58
+ * Parse one `required[i]` entry into its acceptable mime set.
59
+ * Returns a deduped, order-preserving list (so error messages /
60
+ * tool descriptions show the entry the way the consumer wrote it).
61
+ *
62
+ * Throws nothing — invalid tokens are returned as-is and the
63
+ * validator's allowlist check flags them downstream. This keeps the
64
+ * parser pure data-shape; semantic validation lives one layer up.
65
+ */
66
+ export function parseMimeAccept(entry) {
67
+ const seen = new Set();
68
+ const out = [];
69
+ for (const raw of entry.split(",")) {
70
+ const tok = raw.trim().toLowerCase();
71
+ if (!tok)
72
+ continue;
73
+ const expanded = SHORTHAND_TO_MIME[tok] ?? tok;
74
+ if (!seen.has(expanded)) {
75
+ seen.add(expanded);
76
+ out.push(expanded);
77
+ }
78
+ }
79
+ return out;
80
+ }
81
+ /**
82
+ * Expand a policy's `required` into per-slot mime sets. Slot ordering
83
+ * is preserved as the consumer wrote it. Variant role (primary /
84
+ * alternate / fallback) is declared independently per variant — see
85
+ * the file header. Returns a `[slot][mime]` matrix.
86
+ */
87
+ export function expandPolicyRequired(required) {
88
+ return required.map(parseMimeAccept);
89
+ }
90
+ //# sourceMappingURL=MediaMimeAccept.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaMimeAccept.js","sourceRoot":"","sources":["../../../../src/spec/domain/model/MediaMimeAccept.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH;;qBAEqB;AACrB,MAAM,iBAAiB,GAAqC;IAC1D,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,YAAY;IACzB,GAAG,EAAE,WAAW;IAChB,WAAW,EAAE,WAAW;IACxB,IAAI,EAAE,YAAY;IAClB,YAAY,EAAE,YAAY;IAC1B,IAAI,EAAE,YAAY;IAClB,YAAY,EAAE,YAAY;IAC1B,GAAG,EAAE,WAAW;IAChB,WAAW,EAAE,WAAW;IACxB,GAAG,EAAE,eAAe;IACpB,eAAe,EAAE,eAAe;IAChC,WAAW,EAAE,eAAe;CAC7B,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAA2B;IAE3B,OAAO,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * The sealed plan (ADR-0032 decision 5, ADR-0034): what the CLI compiles from the manifests and Core executes.
3
+ * Every SQL source is already IR here, so no Worker parses SQL. Pure types and constants.
4
+ */
5
+ import type { AuthorizationRequirements, JsonSchema, LocalizedText, ProcedureMcpAnnotations, ProcedureTarget, TriggerSource } from "./ManifestGrammar.js";
6
+ import type { SqlNode, SqlPlan } from "./SqlIr.js";
7
+ export declare const RUNTIME_PLAN_VERSION: 6;
8
+ /** A Schema as storage and Store see it. Keys of `fields` and `names` are lower case: SQL folds unquoted identifiers. */
9
+ export interface PlanSchema {
10
+ /** The name as declared: the key of `schemas` is lower case. */
11
+ readonly name: string;
12
+ readonly title?: LocalizedText;
13
+ readonly description?: LocalizedText;
14
+ /** Admin-only presentation, opaque to Core. */
15
+ readonly uiSchema?: Readonly<Record<string, unknown>>;
16
+ readonly localized?: boolean;
17
+ readonly scope?: string;
18
+ readonly ttl?: string;
19
+ readonly ttlSeconds?: number;
20
+ readonly publishing?: boolean;
21
+ /** column -> Mantle type: text integer real bool json timestamptz date numeric(p,s) geo */
22
+ readonly fields: Readonly<Record<string, string>>;
23
+ /** lower-cased column -> the name the JSON Schema declares */
24
+ readonly names: Readonly<Record<string, string>>;
25
+ /** The Schema's JSON Schema: Store validates the values of a write against it. */
26
+ readonly schema: JsonSchema;
27
+ /** Boolean expressions over the row's own columns, as IR. */
28
+ readonly checks?: readonly SqlNode[];
29
+ /** A translation publishes only once the parent entry that shares `on` is published (ADR-0010). Names as declared. */
30
+ readonly translates?: {
31
+ readonly parent: string;
32
+ readonly on: string;
33
+ };
34
+ readonly search?: readonly string[];
35
+ readonly unique?: readonly (readonly string[])[];
36
+ readonly indexes?: readonly (readonly string[])[];
37
+ }
38
+ export interface PlanView extends SqlPlan {
39
+ readonly title?: LocalizedText;
40
+ readonly description?: LocalizedText;
41
+ readonly uiSchema?: Readonly<Record<string, unknown>>;
42
+ /** input property -> Mantle type */
43
+ readonly inputs: Readonly<Record<string, string>>;
44
+ readonly input?: JsonSchema;
45
+ /** The SQL as authored, which Admin shows; the IR (`stmts`) is what runs. */
46
+ readonly source: string;
47
+ readonly surface: "public" | "staff" | "internal";
48
+ readonly requires?: AuthorizationRequirements;
49
+ /** Output name -> the Schema field it reads unchanged (`SELECT t.f`, `t.f AS f`, `*`, `created_at`) or a `sum`/`min`/`max` of it; the Store decodes these as `select` does. */
50
+ readonly columns?: Readonly<Record<string, {
51
+ readonly schema: string;
52
+ readonly field: string;
53
+ }>>;
54
+ }
55
+ export interface PlanProcedure {
56
+ readonly title?: LocalizedText;
57
+ readonly description?: LocalizedText;
58
+ readonly uiSchema?: Readonly<Record<string, unknown>>;
59
+ readonly input: JsonSchema;
60
+ readonly output: JsonSchema;
61
+ /** input property -> Mantle type, for an inline `sql` handler */
62
+ readonly inputs: Readonly<Record<string, string>>;
63
+ readonly requires?: AuthorizationRequirements;
64
+ readonly target?: ProcedureTarget;
65
+ readonly mcp?: ProcedureMcpAnnotations;
66
+ /** An inline handler carries its SQL as authored (`source`), which Admin shows; the IR is what runs. */
67
+ readonly handler: {
68
+ readonly ref: string;
69
+ } | {
70
+ readonly sql: SqlPlan;
71
+ readonly source: string;
72
+ };
73
+ }
74
+ export interface PlanTrigger {
75
+ readonly source: TriggerSource;
76
+ readonly procedure: string;
77
+ }
78
+ export interface RuntimePlan {
79
+ readonly version: typeof RUNTIME_PLAN_VERSION;
80
+ /** The dialect the SQL was compiled for (ADR-0035 decision 5); boot refuses a storage of another. */
81
+ readonly dialect: {
82
+ readonly name: string;
83
+ readonly version: string;
84
+ };
85
+ /** SHA-256 of the plan without this field (`planFingerprint`). */
86
+ readonly fingerprint: string;
87
+ readonly schemas: Readonly<Record<string, PlanSchema>>;
88
+ readonly views: Readonly<Record<string, PlanView>>;
89
+ readonly procedures: Readonly<Record<string, PlanProcedure>>;
90
+ readonly triggers: Readonly<Record<string, PlanTrigger>>;
91
+ }
92
+ /** The native columns a View may output that decode like a field of this type: the entry's timestamps. */
93
+ export declare const NATIVE_OUTPUT_TYPES: Readonly<Record<string, string>>;
94
+ //# sourceMappingURL=RuntimePlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimePlan.d.ts","sourceRoot":"","sources":["../../../../src/spec/domain/model/RuntimePlan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export const RUNTIME_PLAN_VERSION = 6;
2
+ /** The native columns a View may output that decode like a field of this type: the entry's timestamps. */
3
+ export const NATIVE_OUTPUT_TYPES = { created_at: "timestamptz", updated_at: "timestamptz" };
4
+ //# sourceMappingURL=RuntimePlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimePlan.js","sourceRoot":"","sources":["../../../../src/spec/domain/model/RuntimePlan.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAU,CAAC;AA6E/C,0GAA0G;AAC1G,MAAM,CAAC,MAAM,mBAAmB,GAAqC,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Site-level declarative contract — sibling to the manifest grammar,
3
+ * not part of it.
4
+ *
5
+ * The 4-atom manifest grammar (Schema/View/Procedure/Trigger) describes
6
+ * content types. `SiteConfig` describes deployment metadata: locales the
7
+ * site publishes in, brand label, the operator-visible title and
8
+ * description, the canonical absolute origin used for canonical URLs.
9
+ *
10
+ * Lives in `mantle-spec` (not `-runtime`) because the spec validator
11
+ * checks declared `siteDefaults.locales` are canonical BCP 47 at boot
12
+ * (see `domain/service/SiteDefaultsValidator`). The runtime operations
13
+ * that read/write `site_config` rows from the DB live in
14
+ * `mantle-runtime` — they go through the `DatabaseDriver`.
15
+ *
16
+ * Future v0.1.x: optional standalone `site.yaml` parsed via a
17
+ * `kind: SiteConfig` envelope sibling to the 4-atom manifest grammar.
18
+ * Today the consumer declares `siteDefaults` in `src/mantle/config.ts` as a
19
+ * TS object; either path conforms to this type.
20
+ */
21
+ export interface SiteConfig {
22
+ /** Site title — `<title>` suffix and og:site_name. */
23
+ readonly title: string;
24
+ /** Default `<meta name="description">` when an entry has none. */
25
+ readonly description: string;
26
+ /** Canonical absolute origin (no trailing slash), e.g. `https://my-blog.com`. */
27
+ readonly origin: string;
28
+ /** All locales the site publishes in. Empty = locale subsystem off
29
+ * site-wide (ADR-0010). Drives `<link rel="alternate" hreflang>`
30
+ * emission only when non-empty. */
31
+ readonly locales: readonly string[];
32
+ /** Canonical locale (`locales[0]`) or `null` when locales is empty.
33
+ * Templates emit `<html lang="">` only when this is non-null —
34
+ * silent omission is correct for zero-locale sites, not a fake
35
+ * default. */
36
+ readonly canonicalLocale: string | null;
37
+ /** Operator-facing brand label — admin chrome (sidebar header,
38
+ * sign-in card). Distinct from `title` so single-tenant operators
39
+ * can ship one and agencies can override the other. */
40
+ readonly brand: string;
41
+ /** One site identity shared by browser favicons, Admin chrome, and
42
+ * MCP `serverInfo.icons`. Always contains at least the SDK default. */
43
+ readonly icons: readonly SiteIcon[];
44
+ /** Starter-declared media taxonomy. Empty array = no first-party
45
+ * media uploads permitted; the runtime disables the
46
+ * `create_media_upload` / `commit_media_upload` MCP tools and the
47
+ * admin upload lifecycle on deployments that don't declare any
48
+ * purpose, symmetric with "no `MediaStorage` configured". When
49
+ * non-empty, `create_media_upload` rejects any `purpose` not in
50
+ * this set with `MEDIA_PURPOSE_REJECTED`. */
51
+ readonly media: SiteMediaConfig;
52
+ }
53
+ /** Runtime read shape for the `media` section of `SiteConfig`. Always
54
+ * present after seed; `purposes` may be empty when the consumer
55
+ * didn't declare any. Each purpose carries the required mime set the
56
+ * Worker enforces and the per-mime byte cap the uploader is held to. */
57
+ export interface SiteMediaConfig {
58
+ readonly purposes: readonly MediaPurposePolicy[];
59
+ }
60
+ /**
61
+ * Per-purpose policy. `name` is the slug consumers reference from
62
+ * `create_media_upload`; `required` is the closed set of mime types
63
+ * the variants manifest MUST cover; `maxBytes` caps each variant's
64
+ * byteSize keyed by its declared mime.
65
+ *
66
+ * Optimization runs agent-side in the MCP client's runtime; the
67
+ * Worker only verifies the uploaded bytes match the policy. The
68
+ * runtime also enforces a "suspicious shape" heuristic so an uploader
69
+ * that ships a 200KB jpeg + a 400KB "avif" (i.e. forgot to optimize)
70
+ * fails closed rather than producing a `<picture>` that's slower than
71
+ * a plain `<img>`.
72
+ */
73
+ export interface MediaPurposePolicy {
74
+ /** Lowercase-slug identifier; matches `MEDIA_PURPOSE_SLUG_PATTERN`. */
75
+ readonly name: string;
76
+ /**
77
+ * Ordered list of acceptable mime slots. Each entry uses the HTML
78
+ * `<input accept="...">` grammar:
79
+ *
80
+ * - full mime: `"image/jpeg"`, `"image/avif"`
81
+ * - comma-list of mimes: `"image/jpg,image/png"` (either is OK)
82
+ * - shorthand subtype: `"webp"` → `"image/webp"`,
83
+ * `"jpg"` → `"image/jpeg"`
84
+ *
85
+ * Slot position does NOT determine variant role. Per-asset, the
86
+ * agent picks ONE mime per slot from that slot's acceptable set
87
+ * and independently declares exactly one supplied variant as
88
+ * `role: "primary"` (the format `<img>` falls back to); the rest
89
+ * are `role: "alternate"` (preferred via `<picture><source>`).
90
+ * This decoupling preserves back-compat with alpha.14 fixtures
91
+ * such as `["image/avif", "image/webp", "image/jpeg"]` that ship
92
+ * jpeg as primary despite avif occupying slot 0. The multi-mime
93
+ * slot form (e.g. `"image/jpg,image/png"`) lets a single purpose
94
+ * accept either jpeg-primary (photos) or png-primary (logos /
95
+ * transparent assets) without splitting into two purposes.
96
+ *
97
+ * Parse + expand via `parseMimeAccept` / `expandPolicyRequired`.
98
+ * Mime sets across slots MUST NOT overlap; `maxBytes` keys MUST
99
+ * cover every mime that appears in any expanded slot.
100
+ *
101
+ * See aotter/mantle#282 for the editor-uploads-transparent-PNG
102
+ * motivating case.
103
+ */
104
+ readonly required: readonly string[];
105
+ /** Per-mime byte cap, keyed by FULLY-EXPANDED mime type (e.g.
106
+ * `"image/jpeg"`, not the shorthand `"jpg"`). MUST cover every
107
+ * mime that appears in any slot of `required` after parsing.
108
+ * Mimes outside the expanded set are ignored. The use case
109
+ * rejects with `MEDIA_VARIANT_SIZE_EXCEEDED` when a variant's
110
+ * declared `byteSize` exceeds its cap. */
111
+ readonly maxBytes: Readonly<Record<string, number>>;
112
+ }
113
+ /**
114
+ * Defaults declared by the consumer in `src/mantle/config.ts`. Operator-owned
115
+ * fields seed once, while deployment-owned fields (`origin`, `icons`, `locales`,
116
+ * and media purposes) sync on every boot. Empty / blank fields skip, preventing a
117
+ * partial declaration from clobbering stored values.
118
+ *
119
+ * Validated during storage preparation by `assertSiteDefaultsCanonical`; a
120
+ * non-canonical locale tag rejects boot rather than corrupting the seed.
121
+ *
122
+ * `SiteDefaults` is the **author-time** declaration (what the consumer
123
+ * writes); `SiteConfig` (above) is the **runtime read shape**
124
+ * (what the dispatcher and templates see after the seed has been
125
+ * applied and the operator has had a chance to edit). The runtime's
126
+ * `DatabaseSiteConfigRepository` owns that seed/load conversion; spec defines
127
+ * both types and the validator.
128
+ */
129
+ export interface SiteDefaults {
130
+ readonly locales?: ReadonlyArray<string>;
131
+ readonly brand?: string;
132
+ readonly title?: string;
133
+ /** Default `<meta name="description">` and og:description for entries
134
+ * that don't carry their own. */
135
+ readonly description?: string;
136
+ /** Canonical absolute origin (no trailing slash), e.g.
137
+ * `https://my-blog.com`. The render pipeline uses this to build
138
+ * absolute URLs in `/llms.txt` and the `.md` mirrors; an empty
139
+ * origin produces relative URLs that are useless to off-site agent
140
+ * consumers. The runtime syncs it from `src/mantle/config.ts` on every boot
141
+ * so a later custom-domain change becomes canonical without a D1 edit. */
142
+ readonly origin?: string;
143
+ /** Browser / Admin / MCP icon renditions. Root-relative or absolute HTTPS. */
144
+ readonly icons?: ReadonlyArray<SiteIcon>;
145
+ /** Starter-declared media taxonomy. See `SiteConfig.media` for
146
+ * runtime semantics. Omit the whole `media` key (or declare it
147
+ * with an empty `purposes` array) on archetypes that don't
148
+ * exercise first-party media uploads — the runtime will keep the
149
+ * upload tools disabled, symmetric with "no `MediaStorage`
150
+ * configured". Each purpose's `name` is slug-shaped
151
+ * (`^[a-z0-9]+(-[a-z0-9]+)*$`); validated synchronously at boot. */
152
+ readonly media?: SiteMediaDefaults;
153
+ }
154
+ export interface SiteMediaDefaults {
155
+ readonly purposes?: ReadonlyArray<MediaPurposePolicy>;
156
+ }
157
+ /** MCP-compatible icon metadata, reused directly by every site surface. */
158
+ export interface SiteIcon {
159
+ readonly src: string;
160
+ readonly mimeType?: "image/png" | "image/jpeg" | "image/svg+xml" | "image/webp";
161
+ readonly sizes?: ReadonlyArray<string>;
162
+ readonly theme?: "light" | "dark";
163
+ }
164
+ export declare const DEFAULT_SITE_ICONS: readonly SiteIcon[];
165
+ /** Slug regex for `media.purposes[].name`. Matches a lowercase
166
+ * alphanumeric word, optionally followed by dash-separated
167
+ * alphanumeric segments — no leading/trailing dashes, no double
168
+ * dashes. The R2 adapter already uses a looser variant of this for
169
+ * storage-key prefixes (`/^[a-z0-9-]+$/`); spec-level validation is
170
+ * stricter so admin / docs / object-store dashboards see clean
171
+ * slugs. */
172
+ export declare const MEDIA_PURPOSE_SLUG_PATTERN: RegExp;
173
+ //# sourceMappingURL=SiteConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SiteConfig.d.ts","sourceRoot":"","sources":["../../../../src/spec/domain/model/SiteConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,UAAU;IACzB,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;wCAEoC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;mBAGe;IACf,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC;;4DAEwD;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;4EACwE;IACxE,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC;;;;;;kDAM8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;CACjC;AAED;;;yEAGyE;AACzE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAClD;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;;;+CAK2C;IAC3C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;sCACkC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;+EAK2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACzC;;;;;;yEAMqE;IACrE,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACvD;AAED,2EAA2E;AAC3E,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,YAAY,GAAG,eAAe,GAAG,YAAY,CAAC;IAChF,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACnC;AAED,eAAO,MAAM,kBAAkB,EAAE,SAAS,QAAQ,EAGjD,CAAC;AAEF;;;;;;aAMa;AACb,eAAO,MAAM,0BAA0B,QAA6B,CAAC"}
@@ -0,0 +1,13 @@
1
+ export const DEFAULT_SITE_ICONS = [
2
+ { src: "/admin/favicon.png", mimeType: "image/png", sizes: ["64x64"] },
3
+ { src: "/admin/favicon.svg", mimeType: "image/svg+xml", sizes: ["any"] },
4
+ ];
5
+ /** Slug regex for `media.purposes[].name`. Matches a lowercase
6
+ * alphanumeric word, optionally followed by dash-separated
7
+ * alphanumeric segments — no leading/trailing dashes, no double
8
+ * dashes. The R2 adapter already uses a looser variant of this for
9
+ * storage-key prefixes (`/^[a-z0-9-]+$/`); spec-level validation is
10
+ * stricter so admin / docs / object-store dashboards see clean
11
+ * slugs. */
12
+ export const MEDIA_PURPOSE_SLUG_PATTERN = /^[a-z0-9]+(-[a-z0-9]+)*$/;
13
+ //# sourceMappingURL=SiteConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SiteConfig.js","sourceRoot":"","sources":["../../../../src/spec/domain/model/SiteConfig.ts"],"names":[],"mappings":"AAyKA,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,EAAE,GAAG,EAAE,oBAAoB,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE;IACtE,EAAE,GAAG,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE;CACzE,CAAC;AAEF;;;;;;aAMa;AACb,MAAM,CAAC,MAAM,0BAA0B,GAAG,0BAA0B,CAAC"}