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

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 +592 -0
  9. package/dist/admin/createAdminSurface.js.map +1 -0
  10. package/dist/admin/developerConsole.d.ts +266 -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 +38 -0
  23. package/dist/admin/procedureFlow.d.ts.map +1 -0
  24. package/dist/admin/procedureFlow.js +188 -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 +129 -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 +508 -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 +353 -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 +119 -311
  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,289 @@
1
+ import { RESERVED_ENTRY_COLUMNS, enumOptions, resolveMantleRef } from "../model/ManifestGrammar.js";
2
+ import { checkSchemaIndexes } from "./SchemaIndexChecker.js";
3
+ export { checkViewAdminUi } from "./ViewAdminUiChecker.js";
4
+ const EMPTY_LIST = { primaryField: null, columns: [] };
5
+ const SCHEMA_UI_ROOTS = new Set(["fields", "list", "nav"]);
6
+ const SCHEMA_LIST_KEYS = new Set(["filterField", "primaryField", "columns"]);
7
+ const SCHEMA_NAV_KEYS = new Set(["standalone", "parentField"]);
8
+ const SCALAR_TYPES = new Set(["string", "number", "integer", "boolean"]);
9
+ export function schemaSortableFields(schema) {
10
+ const required = new Set(schema.spec.schema.required ?? []);
11
+ return [...new Set(checkSchemaIndexes(schema).declarations
12
+ .map(({ fields }) => fields[0]?.name)
13
+ .filter((field) => field !== undefined && required.has(field)))];
14
+ }
15
+ export function checkSchemaAdminUi(schema) {
16
+ const formProblem = checkFormUiSchema(schema.spec.schema, schema.spec.uiSchema, "Schema")[0];
17
+ if (formProblem)
18
+ return invalid(formProblem);
19
+ const uiSchema = schema.spec.uiSchema;
20
+ if (uiSchema === undefined)
21
+ return { filter: null, list: EMPTY_LIST, nav: null, problems: [] };
22
+ const roots = uiSchema;
23
+ const unknownRoot = Object.keys(roots).find((key) => !SCHEMA_UI_ROOTS.has(key));
24
+ if (unknownRoot) {
25
+ return invalid(problem(`/spec/uiSchema/${unknownRoot}`, roots[unknownRoot], "fields, list, or nav", `Schema.spec.uiSchema.${unknownRoot} is not supported.`));
26
+ }
27
+ const list = roots["list"];
28
+ if (list !== undefined && (!list || typeof list !== "object" || Array.isArray(list))) {
29
+ return invalid(problem("/spec/uiSchema/list", list, "an object", "Schema.spec.uiSchema.list must be an object."));
30
+ }
31
+ const config = (list ?? {});
32
+ if (list !== undefined) {
33
+ const unknownList = Object.keys(config).find((key) => !SCHEMA_LIST_KEYS.has(key));
34
+ if (unknownList) {
35
+ return invalid(problem(`/spec/uiSchema/list/${unknownList}`, config[unknownList], "filterField, primaryField, or columns", `Schema.spec.uiSchema.list.${unknownList} is not supported.`));
36
+ }
37
+ }
38
+ const filterResult = list === undefined
39
+ ? { filter: null }
40
+ : checkListFilter(schema, config);
41
+ if (filterResult.problem)
42
+ return invalid(filterResult.problem);
43
+ const primaryField = config["primaryField"];
44
+ const columns = config["columns"];
45
+ const declaresPresentation = primaryField !== undefined || columns !== undefined;
46
+ if (declaresPresentation && (schema.spec.lifecycle ?? "publishing") !== "operational") {
47
+ return invalid(problem("/spec/uiSchema/list", list, "list presentation fields on an operational Schema", "Schema list primaryField/columns are supported for lifecycle: operational in v0.1."));
48
+ }
49
+ if (primaryField !== undefined && (typeof primaryField !== "string" || !primaryField)) {
50
+ return invalid(problem("/spec/uiSchema/list/primaryField", primaryField, "a non-empty top-level scalar field name", "Schema.spec.uiSchema.list.primaryField must be a field-name string."));
51
+ }
52
+ if (columns !== undefined && (!Array.isArray(columns) || !columns.every((field) => typeof field === "string" && field.length > 0))) {
53
+ return invalid(problem("/spec/uiSchema/list/columns", columns, "an array of non-empty top-level field names", "Schema.spec.uiSchema.list.columns must be an array of field-name strings."));
54
+ }
55
+ const normalizedPrimary = typeof primaryField === "string" ? primaryField : null;
56
+ const normalizedColumns = Array.isArray(columns) ? columns : [];
57
+ const fields = [...(normalizedPrimary ? [normalizedPrimary] : []), ...normalizedColumns];
58
+ if (new Set(fields).size !== fields.length) {
59
+ return invalid(problem("/spec/uiSchema/list/columns", columns, "field names without duplicates or the primaryField", "Schema list primaryField/columns must not repeat a field."));
60
+ }
61
+ for (const field of fields) {
62
+ // Native entry columns carry no `properties` entry but are listable, so a
63
+ // column may name one. `primaryField` is the entry title and stays a
64
+ // declared data property: a native column would render no useful title.
65
+ if (field !== normalizedPrimary && NATIVE_LIST_FIELDS.has(field))
66
+ continue;
67
+ const property = schema.spec.schema.properties?.[field];
68
+ if (!property) {
69
+ return invalid(problem(`/spec/uiSchema/list/${field === normalizedPrimary ? "primaryField" : "columns"}`, field, "a top-level key in spec.schema.properties or a native entry column", `Schema '${schema.metadata.name}' list presentation references unknown field '${field}'.`));
70
+ }
71
+ if (field === normalizedPrimary && !isScalar(property)) {
72
+ return invalid(problem("/spec/uiSchema/list/primaryField", field, "a top-level scalar Schema property", `Schema '${schema.metadata.name}' list primaryField '${field}' must be scalar.`));
73
+ }
74
+ }
75
+ const navResult = checkNav(schema, roots["nav"]);
76
+ if (navResult.problem)
77
+ return invalid(navResult.problem);
78
+ return {
79
+ filter: filterResult.filter,
80
+ list: { primaryField: normalizedPrimary, columns: normalizedColumns },
81
+ nav: navResult.nav,
82
+ problems: [],
83
+ };
84
+ }
85
+ export function checkFormUiSchema(schema, uiSchema, owner) {
86
+ if (uiSchema === undefined)
87
+ return [];
88
+ if (!uiSchema || typeof uiSchema !== "object" || Array.isArray(uiSchema)) {
89
+ return [problem("/spec/uiSchema", uiSchema, "an object", `${owner}.spec.uiSchema must be an object.`)];
90
+ }
91
+ const config = uiSchema;
92
+ if (owner === "Procedure") {
93
+ const unknownRoot = Object.keys(config).find((key) => key !== "collectionAction" && key !== "fields");
94
+ if (unknownRoot) {
95
+ return [problem(`/spec/uiSchema/${unknownRoot}`, config[unknownRoot], "collectionAction or fields", `Procedure.spec.uiSchema.${unknownRoot} is not supported.`)];
96
+ }
97
+ }
98
+ const collectionAction = config["collectionAction"];
99
+ if (collectionAction !== undefined && owner !== "Procedure") {
100
+ return [problem("/spec/uiSchema/collectionAction", collectionAction, "a Procedure-only Admin collection name", "Schema.spec.uiSchema.collectionAction is not supported.")];
101
+ }
102
+ if (collectionAction !== undefined && (typeof collectionAction !== "string" || !collectionAction)) {
103
+ return [problem("/spec/uiSchema/collectionAction", collectionAction, "a non-empty Schema name", "Procedure.spec.uiSchema.collectionAction must be a Schema-name string.")];
104
+ }
105
+ const fields = config["fields"];
106
+ if (fields === undefined)
107
+ return [];
108
+ if (!fields || typeof fields !== "object" || Array.isArray(fields)) {
109
+ return [problem("/spec/uiSchema/fields", fields, "an object keyed by top-level input field", `${owner}.spec.uiSchema.fields must be an object.`)];
110
+ }
111
+ for (const [field, rawConfig] of Object.entries(fields)) {
112
+ const property = schema.properties?.[field];
113
+ if (!property) {
114
+ return [problem(`/spec/uiSchema/fields/${field}`, field, "an exact top-level key in the JSON Schema properties", `${owner}.spec.uiSchema.fields references unknown field '${field}'.`)];
115
+ }
116
+ if (!rawConfig || typeof rawConfig !== "object" || Array.isArray(rawConfig)) {
117
+ return [problem(`/spec/uiSchema/fields/${field}`, rawConfig, "an object with widget: textarea", `${owner}.spec.uiSchema.fields.${field} must be an object.`)];
118
+ }
119
+ const config = rawConfig;
120
+ if (config["widget"] !== "textarea") {
121
+ return [problem(`/spec/uiSchema/fields/${field}/widget`, config["widget"], '"textarea"', `${owner}.spec.uiSchema.fields.${field}.widget must be 'textarea'.`)];
122
+ }
123
+ if (!isString(property)) {
124
+ return [problem(`/spec/uiSchema/fields/${field}/widget`, field, "a top-level string property", `${owner}.spec.uiSchema.fields.${field}.widget can only target a string field.`)];
125
+ }
126
+ }
127
+ return [];
128
+ }
129
+ function checkListFilter(schema, list) {
130
+ const field = list["filterField"];
131
+ if (field === undefined)
132
+ return { filter: null };
133
+ if (typeof field !== "string" || !field) {
134
+ return { problem: problem("/spec/uiSchema/list/filterField", field, "a non-empty top-level field name", "Schema.spec.uiSchema.list.filterField must be a field-name string."), filter: null };
135
+ }
136
+ if ((schema.spec.lifecycle ?? "publishing") !== "operational") {
137
+ return { problem: problem("/spec/uiSchema/list/filterField", field, "a filter on an operational Schema", "Schema list filter tabs are supported for lifecycle: operational in v0.1."), filter: null };
138
+ }
139
+ const property = schema.spec.schema.properties?.[field];
140
+ const values = enumOptions(property)?.map((o) => o.value);
141
+ if (!property) {
142
+ return { problem: problem("/spec/uiSchema/list/filterField", field, "an exact top-level key in spec.schema.properties", `Schema '${schema.metadata.name}' list filter references unknown field '${field}'.`), filter: null };
143
+ }
144
+ if (!values?.length) {
145
+ return { problem: problem("/spec/uiSchema/list/filterField", field, "a field with a non-empty string enum, or a oneOf of string consts", `Schema '${schema.metadata.name}' list filter field '${field}' must declare string enum values.`), filter: null };
146
+ }
147
+ const indexed = checkSchemaIndexes(schema).declarations.some(({ fields }) => fields[0]?.name === field);
148
+ if (!indexed) {
149
+ return { problem: problem("/spec/uiSchema/list/filterField", field, "the first field of a declared index tuple", `Schema '${schema.metadata.name}' list filter field '${field}' needs a left-prefix index.`), filter: null };
150
+ }
151
+ return { filter: { field, values } };
152
+ }
153
+ function checkNav(schema, nav) {
154
+ if (nav === undefined)
155
+ return { nav: null };
156
+ if (!nav || typeof nav !== "object" || Array.isArray(nav)) {
157
+ return {
158
+ nav: null,
159
+ problem: problem("/spec/uiSchema/nav", nav, "an object", "Schema.spec.uiSchema.nav must be an object."),
160
+ };
161
+ }
162
+ const config = nav;
163
+ const unknown = Object.keys(config).find((key) => !SCHEMA_NAV_KEYS.has(key));
164
+ if (unknown) {
165
+ return {
166
+ nav: null,
167
+ problem: problem(`/spec/uiSchema/nav/${unknown}`, config[unknown], "standalone or parentField", `Schema.spec.uiSchema.nav.${unknown} is not supported.`),
168
+ };
169
+ }
170
+ const standalone = config["standalone"];
171
+ if (standalone !== undefined && typeof standalone !== "boolean") {
172
+ return {
173
+ nav: null,
174
+ problem: problem("/spec/uiSchema/nav/standalone", standalone, "a boolean", "Schema.spec.uiSchema.nav.standalone must be a boolean."),
175
+ };
176
+ }
177
+ const parentField = config["parentField"];
178
+ if (parentField !== undefined && (typeof parentField !== "string" || !parentField)) {
179
+ return {
180
+ nav: null,
181
+ problem: problem("/spec/uiSchema/nav/parentField", parentField, "a non-empty required x-mantle-ref field name", "Schema.spec.uiSchema.nav.parentField must be a field-name string."),
182
+ };
183
+ }
184
+ if (parentField !== undefined && standalone !== true) {
185
+ return {
186
+ nav: null,
187
+ problem: problem("/spec/uiSchema/nav/parentField", parentField, "parentField only with standalone: true", "Schema.spec.uiSchema.nav.parentField requires nav.standalone: true."),
188
+ };
189
+ }
190
+ if (standalone !== true)
191
+ return { nav: null };
192
+ if (schema.spec.translates) {
193
+ return {
194
+ nav: null,
195
+ problem: problem("/spec/uiSchema/nav/standalone", true, "standalone on a Schema that folds under a required-ref parent", `Schema '${schema.metadata.name}' cannot declare nav.standalone because it is a translates child.`),
196
+ };
197
+ }
198
+ const eligible = requiredMantleRefFields(schema);
199
+ if (eligible.length === 0) {
200
+ return {
201
+ nav: null,
202
+ problem: problem("/spec/uiSchema/nav/standalone", true, "standalone on a Schema with a required x-mantle-ref parent", `Schema '${schema.metadata.name}' cannot declare nav.standalone: it has no required x-mantle-ref parent to fold under.`),
203
+ };
204
+ }
205
+ if (eligible.length === 1) {
206
+ const only = eligible[0];
207
+ if (typeof parentField === "string" && parentField !== only.field) {
208
+ return {
209
+ nav: null,
210
+ problem: problem("/spec/uiSchema/nav/parentField", parentField, `the Schema's only required x-mantle-ref field '${only.field}'`, `Schema '${schema.metadata.name}' nav.parentField must be '${only.field}'.`),
211
+ };
212
+ }
213
+ return {
214
+ nav: { standalone: true, parentField: only.field, parentCollection: only.collection },
215
+ };
216
+ }
217
+ if (typeof parentField !== "string") {
218
+ return {
219
+ nav: null,
220
+ problem: problem("/spec/uiSchema/nav/parentField", parentField, `one of ${eligible.map((item) => item.field).join(", ")}`, `Schema '${schema.metadata.name}' declares more than one required x-mantle-ref; nav.parentField is required.`),
221
+ };
222
+ }
223
+ const matched = eligible.find((item) => item.field === parentField);
224
+ if (!matched) {
225
+ return {
226
+ nav: null,
227
+ problem: problem("/spec/uiSchema/nav/parentField", parentField, `one of ${eligible.map((item) => item.field).join(", ")}`, `Schema '${schema.metadata.name}' nav.parentField must name a required x-mantle-ref field.`),
228
+ };
229
+ }
230
+ return {
231
+ nav: { standalone: true, parentField: matched.field, parentCollection: matched.collection },
232
+ };
233
+ }
234
+ /** Required top-level properties that carry `x-mantle-ref`. Order follows
235
+ * `properties` declaration — callers must not treat that order as a
236
+ * standalone-filter default when more than one field is eligible. */
237
+ export function requiredMantleRefFields(schema) {
238
+ const required = new Set(schema.spec.schema.required ?? []);
239
+ const properties = schema.spec.schema.properties ?? {};
240
+ const fields = [];
241
+ for (const [field, property] of Object.entries(properties)) {
242
+ if (!required.has(field))
243
+ continue;
244
+ // A parent scope matches the child's value against the parent entry id,
245
+ // so only id references compose.
246
+ const ref = resolveMantleRef(property);
247
+ if (ref?.field === "id")
248
+ fields.push({ field, collection: ref.schema });
249
+ }
250
+ return fields;
251
+ }
252
+ export function isRequiredMantleRefField(schema, field) {
253
+ return requiredMantleRefFields(schema).some((item) => item.field === field);
254
+ }
255
+ /** Graph-time: standalone parent collection must exist and not be a translates child. */
256
+ export function checkSchemaNavTargets(schema, schemasByName) {
257
+ const { nav, problems } = checkSchemaAdminUi(schema);
258
+ if (problems.length > 0 || !nav)
259
+ return null;
260
+ const parent = schemasByName.get(nav.parentCollection);
261
+ if (!parent || parent.spec.translates) {
262
+ const declaredParentField = schema.spec.uiSchema
263
+ && typeof schema.spec.uiSchema === "object"
264
+ && !Array.isArray(schema.spec.uiSchema)
265
+ && schema.spec.uiSchema["nav"]
266
+ && typeof schema.spec.uiSchema["nav"] === "object"
267
+ && !Array.isArray(schema.spec.uiSchema["nav"])
268
+ && "parentField" in schema.spec.uiSchema["nav"];
269
+ return problem(declaredParentField ? "/spec/uiSchema/nav/parentField" : "/spec/uiSchema/nav/standalone", nav.parentCollection, "the metadata.name of an existing non-translates Schema", `Schema '${schema.metadata.name}' nav parent collection '${nav.parentCollection}' is not an eligible fold parent.`);
270
+ }
271
+ return null;
272
+ }
273
+ const NATIVE_LIST_FIELDS = new Set(RESERVED_ENTRY_COLUMNS);
274
+ function isScalar(schema) {
275
+ const types = Array.isArray(schema.type) ? schema.type : schema.type ? [schema.type] : [];
276
+ return types.some((type) => SCALAR_TYPES.has(type)) &&
277
+ types.every((type) => type === "null" || SCALAR_TYPES.has(type));
278
+ }
279
+ function isString(schema) {
280
+ const types = Array.isArray(schema.type) ? schema.type : schema.type ? [schema.type] : [];
281
+ return types.includes("string") && types.every((type) => type === "string" || type === "null");
282
+ }
283
+ function problem(pointer, value, expected, message) {
284
+ return { pointer, value, expected, message };
285
+ }
286
+ function invalid(problem) {
287
+ return { filter: null, list: EMPTY_LIST, nav: null, problems: [problem] };
288
+ }
289
+ //# sourceMappingURL=SchemaAdminUiChecker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaAdminUiChecker.js","sourceRoot":"","sources":["../../../../src/spec/domain/service/SchemaAdminUiChecker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { type SchemaManifest } from "../model/ManifestGrammar.js";
2
+ import type { DiagnosticCode } from "../../kernel/diagnostic.js";
3
+ export type SchemaIndexAffinity = "TEXT" | "INTEGER" | "REAL";
4
+ export type SchemaIndexSource = "uniqueIndexes" | "indexes";
5
+ export interface ResolvedSchemaIndexField {
6
+ readonly name: string;
7
+ readonly affinity: SchemaIndexAffinity;
8
+ }
9
+ export interface ResolvedSchemaIndexDeclaration {
10
+ readonly unique: boolean;
11
+ readonly fields: readonly ResolvedSchemaIndexField[];
12
+ }
13
+ export interface SchemaIndexProblem {
14
+ readonly category: "shape" | "invalid" | "field-unknown";
15
+ readonly source?: SchemaIndexSource;
16
+ readonly pointer: string;
17
+ readonly value?: unknown;
18
+ readonly expected: string;
19
+ readonly candidates?: readonly string[];
20
+ readonly message: string;
21
+ }
22
+ export interface SchemaIndexCheckResult {
23
+ readonly declarations: readonly ResolvedSchemaIndexDeclaration[];
24
+ readonly problems: readonly SchemaIndexProblem[];
25
+ }
26
+ /**
27
+ * Validate and resolve both Schema index declaration kinds in one pass.
28
+ * This is deliberately internal to mantle-spec: parser, static validation,
29
+ * DDL, and query helpers share the rules without adding a public catalog.
30
+ */
31
+ export declare function checkSchemaIndexes(manifest: SchemaManifest): SchemaIndexCheckResult;
32
+ export declare function schemaIndexDiagnosticCode(problem: SchemaIndexProblem, parserShape?: boolean): DiagnosticCode;
33
+ //# sourceMappingURL=SchemaIndexChecker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaIndexChecker.d.ts","sourceRoot":"","sources":["../../../../src/spec/domain/service/SchemaIndexChecker.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAC9D,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;CACxC;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,eAAe,CAAC;IACzD,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,YAAY,EAAE,SAAS,8BAA8B,EAAE,CAAC;IACjE,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAClD;AAeD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,sBAAsB,CAoMnF;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,kBAAkB,EAC3B,WAAW,GAAE,OAAe,GAC3B,cAAc,CAUhB"}
@@ -0,0 +1,256 @@
1
+ const SAFE_INDEX_NAME = /^[A-Za-z][A-Za-z0-9_.-]*$/;
2
+ /** Native entry columns and their SQLite affinity; `indexes` may reference them, `uniqueIndexes` may not (#1008). */
3
+ const NATIVE_INDEX_AFFINITY = {
4
+ id: "TEXT",
5
+ status: "TEXT",
6
+ version: "INTEGER",
7
+ createdAt: "INTEGER",
8
+ updatedAt: "INTEGER",
9
+ authorId: "TEXT",
10
+ };
11
+ const NATIVE_INDEX_FIELDS = new Map(Object.entries(NATIVE_INDEX_AFFINITY));
12
+ const SOURCES = ["uniqueIndexes", "indexes"];
13
+ /**
14
+ * Validate and resolve both Schema index declaration kinds in one pass.
15
+ * This is deliberately internal to mantle-spec: parser, static validation,
16
+ * DDL, and query helpers share the rules without adding a public catalog.
17
+ */
18
+ export function checkSchemaIndexes(manifest) {
19
+ const spec = manifest.spec;
20
+ const schema = isRecord(spec["schema"]) ? spec["schema"] : {};
21
+ const properties = isRecord(schema["properties"]) ? schema["properties"] : {};
22
+ const candidates = Object.keys(properties);
23
+ const declarations = [];
24
+ const problems = [];
25
+ const seen = new Map();
26
+ const hasDeclarations = SOURCES.some((source) => {
27
+ const raw = spec[source];
28
+ return Array.isArray(raw) && raw.length > 0;
29
+ });
30
+ if (hasDeclarations && !SAFE_INDEX_NAME.test(manifest.metadata.name)) {
31
+ problems.push({
32
+ category: "invalid",
33
+ pointer: "/metadata/name",
34
+ value: manifest.metadata.name,
35
+ expected: `indexed Schema name matching ${SAFE_INDEX_NAME}`,
36
+ message: `Schema '${manifest.metadata.name}' uses indexes but its name is not a safe index identifier.`,
37
+ });
38
+ }
39
+ for (const source of SOURCES) {
40
+ const raw = spec[source];
41
+ if (raw === undefined)
42
+ continue;
43
+ if (!Array.isArray(raw)) {
44
+ problems.push({
45
+ category: "shape",
46
+ source,
47
+ pointer: `/spec/${source}`,
48
+ value: raw,
49
+ expected: "an array of non-empty string arrays",
50
+ message: `Schema.spec.${source} must be an array of non-empty string arrays.`,
51
+ });
52
+ continue;
53
+ }
54
+ for (let compositeIndex = 0; compositeIndex < raw.length; compositeIndex += 1) {
55
+ const rawComposite = raw[compositeIndex];
56
+ const compositePointer = `/spec/${source}/${compositeIndex}`;
57
+ if (!Array.isArray(rawComposite)) {
58
+ problems.push({
59
+ category: "shape",
60
+ source,
61
+ pointer: compositePointer,
62
+ value: rawComposite,
63
+ expected: "a non-empty array of field-name strings",
64
+ message: `Schema.spec.${source}[${compositeIndex}] must be a non-empty array of field-name strings.`,
65
+ });
66
+ continue;
67
+ }
68
+ if (rawComposite.length === 0) {
69
+ problems.push({
70
+ category: "invalid",
71
+ source,
72
+ pointer: compositePointer,
73
+ value: rawComposite,
74
+ expected: "at least one indexed field",
75
+ message: `Schema.spec.${source}[${compositeIndex}] must not be empty.`,
76
+ });
77
+ continue;
78
+ }
79
+ const fields = [];
80
+ const fieldsSeen = new Set();
81
+ let valid = true;
82
+ for (let fieldIndex = 0; fieldIndex < rawComposite.length; fieldIndex += 1) {
83
+ const rawField = rawComposite[fieldIndex];
84
+ const fieldPointer = `${compositePointer}/${fieldIndex}`;
85
+ if (typeof rawField !== "string") {
86
+ valid = false;
87
+ problems.push({
88
+ category: "shape",
89
+ source,
90
+ pointer: fieldPointer,
91
+ value: rawField,
92
+ expected: "a field-name string",
93
+ message: `Schema.spec.${source}[${compositeIndex}][${fieldIndex}] must be a field-name string.`,
94
+ });
95
+ continue;
96
+ }
97
+ if (fieldsSeen.has(rawField)) {
98
+ valid = false;
99
+ problems.push({
100
+ category: "invalid",
101
+ source,
102
+ pointer: fieldPointer,
103
+ value: rawField,
104
+ expected: "each field to appear once per composite index",
105
+ message: `Schema.spec.${source}[${compositeIndex}] repeats field '${rawField}'.`,
106
+ });
107
+ continue;
108
+ }
109
+ fieldsSeen.add(rawField);
110
+ if (!SAFE_INDEX_NAME.test(rawField)) {
111
+ valid = false;
112
+ problems.push({
113
+ category: "invalid",
114
+ source,
115
+ pointer: fieldPointer,
116
+ value: rawField,
117
+ expected: `field name matching ${SAFE_INDEX_NAME}`,
118
+ message: `Schema.spec.${source} field '${rawField}' is not a safe index identifier.`,
119
+ });
120
+ continue;
121
+ }
122
+ const nativeAffinity = NATIVE_INDEX_FIELDS.get(rawField);
123
+ if (nativeAffinity !== undefined) {
124
+ if (source === "uniqueIndexes") {
125
+ valid = false;
126
+ problems.push({
127
+ category: "invalid",
128
+ source,
129
+ pointer: fieldPointer,
130
+ value: rawField,
131
+ expected: "a Schema data field; native columns carry no domain uniqueness",
132
+ message: `Schema.spec.uniqueIndexes cannot include native entry column '${rawField}'; declare it under spec.indexes instead.`,
133
+ });
134
+ continue;
135
+ }
136
+ // `status` exists only on a publishing Schema; storage creates no column for it otherwise
137
+ if (rawField === "status" && (spec["lifecycle"] ?? "publishing") !== "publishing") {
138
+ valid = false;
139
+ problems.push({
140
+ category: "invalid",
141
+ source,
142
+ pointer: fieldPointer,
143
+ value: rawField,
144
+ expected: "a native column this Schema has",
145
+ message: `Schema.spec.indexes field 'status' needs lifecycle: publishing; only a publishing Schema has a status column.`,
146
+ });
147
+ continue;
148
+ }
149
+ // Native columns are always present and never shadowed by a data
150
+ // property (the parser rejects that), so the tuple is unambiguous.
151
+ fields.push({ name: rawField, affinity: nativeAffinity });
152
+ continue;
153
+ }
154
+ if (!Object.hasOwn(properties, rawField)) {
155
+ valid = false;
156
+ problems.push({
157
+ category: "field-unknown",
158
+ source,
159
+ pointer: fieldPointer,
160
+ value: rawField,
161
+ expected: "an exact top-level key in spec.schema.properties",
162
+ candidates,
163
+ message: `Schema '${manifest.metadata.name}' ${source} references unknown top-level field '${rawField}'.`,
164
+ });
165
+ continue;
166
+ }
167
+ const affinity = scalarAffinity(properties[rawField]);
168
+ if (affinity === null) {
169
+ valid = false;
170
+ problems.push({
171
+ category: "invalid",
172
+ source,
173
+ pointer: fieldPointer,
174
+ value: rawField,
175
+ expected: "a property with exactly one string, integer, number, or boolean type, optionally nullable",
176
+ message: `Schema '${manifest.metadata.name}' ${source} field '${rawField}' is not an indexable scalar property.`,
177
+ });
178
+ continue;
179
+ }
180
+ fields.push({ name: rawField, affinity });
181
+ }
182
+ if (!valid)
183
+ continue;
184
+ const key = JSON.stringify(fields.map((field) => field.name));
185
+ const previous = seen.get(key);
186
+ if (previous !== undefined) {
187
+ const crossKind = previous !== source;
188
+ problems.push({
189
+ category: "invalid",
190
+ source,
191
+ pointer: compositePointer,
192
+ value: fields.map((field) => field.name),
193
+ expected: crossKind
194
+ ? "a tuple not already supplied by uniqueIndexes"
195
+ : `a unique ordered tuple within ${source}`,
196
+ message: crossKind
197
+ ? `Schema.spec.indexes duplicates uniqueIndexes tuple ${key}; the unique index already supplies that lookup path.`
198
+ : `Schema.spec.${source} repeats ordered tuple ${key}.`,
199
+ });
200
+ continue;
201
+ }
202
+ seen.set(key, source);
203
+ declarations.push({
204
+ unique: source === "uniqueIndexes",
205
+ fields,
206
+ });
207
+ }
208
+ }
209
+ return { declarations, problems };
210
+ }
211
+ export function schemaIndexDiagnosticCode(problem, parserShape = false) {
212
+ if (problem.category === "shape") {
213
+ return parserShape ? "INVALID_MANIFEST_ENVELOPE" : "SCHEMA_INDEX_INVALID";
214
+ }
215
+ if (problem.category === "field-unknown") {
216
+ return problem.source === "uniqueIndexes"
217
+ ? "UNIQUE_INDEX_FIELD_UNKNOWN"
218
+ : "SCHEMA_INDEX_FIELD_UNKNOWN";
219
+ }
220
+ return "SCHEMA_INDEX_INVALID";
221
+ }
222
+ function scalarAffinity(rawProperty) {
223
+ if (!isRecord(rawProperty))
224
+ return null;
225
+ if (rawProperty["nullable"] !== undefined &&
226
+ typeof rawProperty["nullable"] !== "boolean") {
227
+ return null;
228
+ }
229
+ const rawType = rawProperty["type"];
230
+ const types = typeof rawType === "string"
231
+ ? [rawType]
232
+ : Array.isArray(rawType) && rawType.every((value) => typeof value === "string")
233
+ ? rawType
234
+ : null;
235
+ if (types === null || types.length === 0 || new Set(types).size !== types.length) {
236
+ return null;
237
+ }
238
+ const nonNull = types.filter((type) => type !== "null");
239
+ if (nonNull.length !== 1 || types.length > 2)
240
+ return null;
241
+ switch (nonNull[0]) {
242
+ case "string":
243
+ return "TEXT";
244
+ case "integer":
245
+ case "boolean":
246
+ return "INTEGER";
247
+ case "number":
248
+ return "REAL";
249
+ default:
250
+ return null;
251
+ }
252
+ }
253
+ function isRecord(value) {
254
+ return typeof value === "object" && value !== null && !Array.isArray(value);
255
+ }
256
+ //# sourceMappingURL=SchemaIndexChecker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaIndexChecker.js","sourceRoot":"","sources":["../../../../src/spec/domain/service/SchemaIndexChecker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { SchemaManifest } from "../model/ManifestGrammar.js";
2
+ export interface SchemaSearchProblem {
3
+ readonly category: "shape" | "invalid" | "field-unknown";
4
+ readonly pointer: string;
5
+ readonly value?: unknown;
6
+ readonly expected: string;
7
+ readonly candidates?: readonly string[];
8
+ readonly message: string;
9
+ }
10
+ export declare function checkSchemaSearchableFields(manifest: SchemaManifest): readonly SchemaSearchProblem[];
11
+ //# sourceMappingURL=SchemaSearchChecker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaSearchChecker.d.ts","sourceRoot":"","sources":["../../../../src/spec/domain/service/SchemaSearchChecker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,eAAe,CAAC;IACzD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,cAAc,GACvB,SAAS,mBAAmB,EAAE,CA8DhC"}