@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
@@ -1,258 +1,132 @@
1
1
  ---
2
2
  name: develop
3
- description: Work on any Mantle project using the Core SDK contract. Use for manifest, runtime, content model, handler, adapter, validation, and MCP work after a project already exists.
3
+ description: Work on an existing Mantle 0.2 project — manifests, SQL Views and Procedures, ref handlers, the service entry, surfaces, identity and MCP — using the installed package's contract.
4
4
  metadata:
5
5
  source: "@aotter/mantle"
6
6
  sourcePath: docs/skills/develop/SKILL.md
7
- applies_to: mantle grammar v0.1
8
- projection: project
7
+ applies_to: mantle 0.2
8
+ projection: package
9
9
  ---
10
10
 
11
11
  # Mantle Develop
12
12
 
13
- This is the Core workflow skill for an existing Mantle project. Repo-local
14
- copies are byte-for-byte projections from the installed package; its embedded
15
- docs govern runtime/API behavior.
16
-
17
- ## First Read
18
-
19
- 1. `package.json` for the installed `@aotter/mantle*` versions.
20
- 2. The manifest directory selected by the project scripts, the actual host
21
- entry and adapter config (for example `wrangler.jsonc` on Cloudflare).
22
- Read custom Auth construction there when present.
23
- 3. Optional local context: `.mantle/plugins.json`, `.mantle/plugins.lock.json`,
24
- and `.mantle/recipes/`. Legacy launch/handoff files are context only.
25
- 4. Installed Core docs in `node_modules/@aotter/mantle/docs/`.
26
-
27
- If `node_modules/` is missing, run `pnpm install --frozen-lockfile` before
28
- falling back to remote docs. Remote docs must use a tag matching the installed
29
- version; never use `develop` branch docs for a versioned consumer project.
30
-
31
- ## Existing Examples
32
-
33
- Read installed `docs/handbook/start/project-and-cli.md` and
34
- `docs/examples/README.md`. Use `docs/examples/host-minimal-worker/` for Spec +
35
- adapter without Admin. Read `docs/examples/host-local-admin-otp/` only when the
36
- project already has Admin or the human asked for Dev UI — that path is opt-in.
37
- Ingest only `docs/examples/builtin-*.md` Manifests as grammar for new domains.
38
- Read `docs/examples/cf-primitives-*.md` before inventing Durable Object, Queue,
39
- cron, or `ref` handler patterns.
40
- References are test/documentation, not a Starter or a fixed application shape.
41
-
42
- Public rendering is opt-in consumer wiring: `mountPublicRoutes`, a
43
- `TemplateRegistry`, and a matching `publicPathResolver` must agree on the
44
- exposed collections. Do not auto-publish every Schema. Applications document their mounted URL surface in their own README.
45
- Import the registry and resolver from `@aotter/mantle/web`; Core runtime does
46
- not install public rendering by itself.
47
-
48
- ## Authoring CLI
49
-
50
- Use the project's scripts first; applications use the shipping
51
- `mantle` authoring CLI from `@aotter/mantle`. Ask the installed CLI for its
52
- command list instead of trusting one copied into prose — the surface is
53
- version-matched and changes between releases:
54
-
55
- ```bash
56
- pnpm exec mantle --help
57
- pnpm validate
58
- ```
59
-
60
- On 0.1.5 and newer, `generate --host cf|chatgpt-sites` assembles a new blank
61
- app; no `--features` selects Spec, Runtime, API, MCP, Admin and Web. Explicit
62
- `--features` selects a smaller composition. It never invents a business
63
- Schema. Existing authored apps keep compile mode, and older installed CLIs
64
- may not support project generation. Check this project's CLI help first.
65
-
66
- ## Core Model
67
-
68
- Mantle exposes exactly four declarative atoms:
69
-
70
- | Atom | Purpose |
71
- |---|---|
72
- | `Schema` | Stored entity/table shape. |
73
- | `View` | Read/query surface. |
74
- | `Procedure` | Typed mutation or operation. |
75
- | `Trigger` | HTTP/lifecycle/MCP invocation binding. |
76
-
77
- Do not invent manifest kinds such as `Form`, `Feature`, `Workflow`, or
78
- `Membership`. Compose those from the four atoms plus TypeScript only where
79
- the atoms cannot express the behavior.
80
-
81
- ## Choose the manifest feature first
82
-
83
- Read installed `docs/handbook/reference/features.md` to map the requested
84
- behavior to fields before adding handlers or a custom UI. For host-only reads,
85
- `surface: internal` keeps a View out of REST/MCP/Admin while preserving its
86
- `requires` checks. Read `docs/handbook/guides/typed-queries.md` for generated
87
- View params/results, indexed entry reads, and their authorization boundary.
88
- Use `from` for portable typed projections; SQL is for queries needing native
89
- SQLite and produces `unknown` row types.
90
-
91
- For Admin labels, inputs, collection columns/tabs, reports or action buttons,
92
- read `docs/handbook/guides/admin-ui.md`. Prefer supported Schema/Procedure/View
93
- metadata and `uiSchema` before custom frontend code. These control the Admin
94
- console, not the visitor frontend. Regenerate and verify the actual console;
95
- never edit generated `public/_mantle/admin/` assets.
96
-
97
- ## Content Edits
98
-
99
- - Follow the actual frontend content source. Use Admin or Staff MCP for
100
- runtime-backed content. Do not invent an overlay/seed homepage.
101
- - For a new submitted field, update the stored `Schema` and the public
102
- `Procedure.spec.input` before any form UI. Keep public mutation inputs
103
- `additionalProperties: false`; otherwise JSON Schema's default may strip an
104
- undeclared field while returning success.
105
- - Use `lifecycle: operational` for submissions, inquiries, orders, and other
106
- Procedure-created operational records that staff inspect or correct. Reserve
107
- `publishing` for content a person stages and publishes.
108
- - Lifecycle `before_update` / `after_update` hooks also fire for unpublish,
109
- archive, and every other status transition whose target is not `published`;
110
- do not use them for edit-only work.
111
- - When a form's fixed option values change, update the stored Schema and public
112
- Procedure input `enum` together. Keep translated labels in the frontend content source;
113
- Admin and Staff MCP derive their typed controls from the manifest values.
114
- - If the application has a `page` Schema with sections, update its declared
115
- section properties when adding display fields; an undeclared property has no
116
- runtime-backed Admin or Staff MCP path.
117
- - Update notification handlers when they need the new field. Test the stored
118
- entry, not only the HTTP `{ "ok": true }` response.
119
-
120
- ## Locales
121
-
122
- - `data.locale` is reserved for `localized: true` Schemas. A non-localized
123
- Schema must use a domain field such as `replyLocale`.
124
- - Use a standalone localized Schema only for independent locale rows. For
125
- versions of one entity, use a non-localized parent plus a localized child
126
- with `translates: { parent, on }`. The child must own at least one field
127
- besides `locale` and the join field.
128
- - Parallel locale blocks must keep field names, option values, step IDs, and
129
- result keys identical; translate display strings only.
130
- - `siteDefaults.origin`, `siteDefaults.locales`, and `siteDefaults.icons` are
131
- code-owned and boot-synced. The icon list is shared by browser favicons,
132
- Admin chrome, and MCP `serverInfo.icons`; keep its static files under
133
- `public/`. Brand, title, and description seed once, then change through site
134
- settings.
135
- - When changing an existing collection from `[slug]` to `[slug, locale]`,
136
- boot with a Mantle version that reconciles obsolete unique indexes and test
137
- the same slug in two locales. Do not patch D1 manually.
138
-
139
- ## Adapter Boundary
140
-
141
- The runtime is adapter-neutral. A `MantleStorageAdapter` prepares the compiled
142
- plan into semantic storage ports; `createMantleRuntime` binds that prepared
143
- storage and selected capabilities. Database drivers and asset serving belong
144
- to the host/optional composition. Follow the installed adapter guide.
145
-
146
- Do not assume Cloudflare unless the project imports `@aotter/mantle/cloudflare`
147
- or its adapter config is visible. A future Netlify adapter should satisfy the
148
- same Core workflow through its own ports and provider setup.
149
-
150
- Site code is a consumer of this abstraction. Use Manifests, runtime use cases,
151
- `runtime.entries`, and optional `runtime.siteConfig`; do not query Mantle-owned `entries` or
152
- `site_config`, reach through deprecated `runtime.db`, copy generated-column
153
- names, or construct SDK KV keys. Cloudflare bindings belong only at the
154
- composition root. If a normal feature cannot be expressed through a
155
- purpose-shaped surface, treat that as a Core abstraction gap instead of
156
- teaching the project Mantle internals.
157
-
158
- ## Auth Composition
159
-
160
- Generated full apps select Admin by default; smaller selections can omit it.
161
- A project without `@aotter/mantle-admin-ui` is complete when Admin was not
162
- selected. If Admin was selected but its package is missing, install the
163
- CLI-declared exact version and rerun generation.
164
- When Admin is installed, `createMantleWorker({ auth })` with `email-otp`
165
- and `ConsoleEmailSender` is the local human path (OTP in wrangler logs).
166
- That override owns Auth construction; Core still owns `/admin` and
167
- `/api/auth/*`. Admin also requires wrangler `assets.directory=./public`
168
- and an `ASSETS` binding. A white screen at `/admin` with HTML 200 and
169
- `/_mantle/admin/assets/*` 404 is a missing assets binding, not a missing
170
- frontend build.
171
-
172
- Generated Cloudflare apps use `MANTLE_AUTH_MODE=local-otp` on loopback after
173
- copying `.dev.vars.example` to `.dev.vars` and setting a real owner email and
174
- random secret. Production uses `hosted` or `self-managed` with provider
175
- credentials and `ADMIN_GITHUB_LOGIN`. Conventional Cloudflare projects that
176
- do not replace Auth use those two production modes; Core owns that standard
177
- composition and rejects partial or mixed bindings. Preserve the explicit
178
- mode recorded in Worker config, keep provider secrets out of source, and
179
- do not infer a mode from whichever credentials happen to be present.
180
-
181
- ## Performance Loop
182
-
183
- After changing a Schema index, View filter/order, public API, or rendered page,
184
- run the project's index check when present. Otherwise run the installed
185
- harness directly:
186
-
187
- ```bash
188
- pnpm exec mantle-harness indexes --require-public --format text
189
- ```
190
-
191
- The check uses crowded real SQLite and the shipped compiler. It complements
192
- `pnpm validate`; it does not replace correctness validation. Declare the
193
- smallest ordered index justified by the measured path and respect SQLite's
194
- leftmost-prefix rule; which columns an index may name and how a public View's
195
- status predicate shapes it is in the handbook (`reference/schema.md#indexes`).
196
- Do not change user-visible filter or ordering semantics
197
- just to make the gate pass. Do not add every permutation or cache every read.
198
-
199
- For relevant Cloudflare serving changes, start the project and sample the
200
- actual routes:
201
-
202
- ```bash
203
- pnpm exec mantle-harness http \
204
- --base-url http://127.0.0.1:8787 \
205
- --route page=/en/example \
206
- --rounds 20 --warmup 2 --format text
207
- ```
208
-
209
- Prefer query plan, query count, `rows_read` scaling, and cache MISS/HIT
210
- evidence. Do not create CI gates from absolute local milliseconds.
13
+ The workflow for changing a Mantle 0.2 project. The installed package's docs
14
+ govern behavior: `node_modules/@aotter/mantle/docs/`.
15
+
16
+ ## First read
17
+
18
+ 1. `package.json` and the lockfile: the installed `@aotter/mantle` version.
19
+ Every `@aotter/mantle*` package is at that same exact version. If
20
+ `node_modules/` is missing, install with the lockfile first.
21
+ 2. `mantle.config.json`: `identity` (`mantle`, `custom`, `none`),
22
+ `features`, `host` (`cloudflare`, `bun`, `none`) and `dialect` (`sqlite`,
23
+ `postgres`); absent host and dialect mean Cloudflare over D1. A
24
+ `version: 1` config or `cms.mantle.aotter.net/v1` manifests mean 0.1.x:
25
+ switch to `docs/skills/update/SKILL.md`.
26
+ 3. `manifests/*.yaml`, `src/service.ts`, `src/handlers.ts`, `src/index.ts`
27
+ (and `src/identity.ts` for `custom`), `wrangler.jsonc` (not on Bun).
28
+ 4. Installed docs: `docs/handbook/reference/features.md` to map the request to
29
+ manifest features, then the field references it links to.
30
+ `docs/examples/` holds whole services in the v2 grammar.
31
+
32
+ ## The model
33
+
34
+ Four atoms, nothing else: **Schema** (rows), **View** (one SQL `SELECT`),
35
+ **Procedure** (SQL write statements, or a `ref` handler), **Trigger** (HTTP,
36
+ MCP, lifecycle, schedule). Do not invent kinds such as `Form` or `Workflow`.
37
+
38
+ Choose in this order, stopping at the first that works:
39
+
40
+ 1. A Schema feature: `checks`, `uniqueIndexes`, `scope`, `ttl`,
41
+ `searchableFields`, `lifecycle`.
42
+ 2. SQL: a View for reads; a Procedure's `sql` for writes. Several statements in
43
+ one `sql` apply together or not at all.
44
+ 3. `requires` for who may call; a guard for a live check before one action.
45
+ 4. A `ref` handler, only for what SQL cannot do: calling another service,
46
+ reading before writing, setting `status`, branching on a read.
47
+
48
+ ## SQL rules that trip agents
49
+
50
+ - PostgreSQL syntax over declared Schemas only. References: `input.<name>`,
51
+ `auth.uid()`, `auth.role()`, `now()`; search is `mantle.search(t, q)`.
52
+ - Native columns are snake_case in SQL (`created_at`, `author_id`) and
53
+ camelCase in `ctx.store` JSON and in `indexes`.
54
+ - A write never names the scope field, `id` (on update), `version`, `status`,
55
+ `created_at`, `updated_at` or `author_id`. Set an owner with `auth.uid()` and
56
+ a time with `now()`, never from input.
57
+ - Optimistic lock: `WHERE id = input.id AND version = input.expectedVersion`.
58
+ Writing no row is `CONFLICT`. Keep omitted optional fields with
59
+ `COALESCE(input.x, x)`.
60
+ - `LIMIT` needs `ORDER BY`. No `OFFSET`, `RIGHT JOIN` or `CURRENT_TIMESTAMP`
61
+ on any dialect. On SQLite (D1) also no `WITH`, `UNION`, `ILIKE` or jsonb
62
+ operators, and `CAST(x AS int)` only on an integer literal: use `round(x)`.
63
+ PostgreSQL accepts these (`docs/handbook/reference/view.md`).
64
+ - Unquoted aliases fold to lower case: `AS "orderCount"` keeps the case.
65
+ - The runtime injects scope and TTL into every Schema reference, and
66
+ published-only into public Views. Never repeat them.
67
+ - `scope` hides rows from staff too. When staff must see every row, store
68
+ `auth.uid()` in a field and filter on it instead.
69
+
70
+ ## Handlers
71
+
72
+ - `src/handlers.ts` exports `handlers: MantleHandlers` (`MantleHandlers<Env>`
73
+ types `ctx.env`); the generated type
74
+ lists exactly the plan's refs. Read and write only through `ctx.store`.
75
+ - After hooks: loop over `ctx.cause.rows`; never read only `rows[0]`.
76
+ - Before hooks and guards are read-only and reject by throwing
77
+ `DiagnosticError` (from `@aotter/mantle`); any other throw is a 500.
78
+ - `ctx.caller.kind === "user"` means signed in; a schedule runs as `system`.
79
+ Never test `!== "anonymous"`.
80
+ - `ctx.invoke(name, input)` calls another Procedure with the same caller.
81
+
82
+ ## The service
83
+
84
+ `src/service.ts`, `src/index.ts` and `wrangler.jsonc` belong to the
85
+ application after the first `mantle generate`; it never rewrites them. Add
86
+ routes, bindings and env there (`docs/handbook/cloudflare/service-entry.md`).
87
+ Reach data from service code through `runtime.store.as(caller)` or
88
+ `runtime.invokeProcedure`; `runtime.store` alone is unscoped. A signed webhook
89
+ is a route in the service's `fetch` that verifies the raw body, then invokes
90
+ a Procedure as `systemCaller(...)`.
91
+
92
+ ## MCP
93
+
94
+ With feature `mcp`, the preset mounts `/mcp` (public tools) and, with an
95
+ identity, `/mcp/staff` (staff tools for a staff role; with identity `mantle`,
96
+ the same OAuth token as `/mcp`). `/mcp/staff` serves
97
+ Mantle's MCP App: a host that renders MCP Apps shows each staff View's rows and
98
+ the operations on one row. A member-facing App on `/mcp` is the application's
99
+ to build when the product asks for one: follow [the recipe](mcp-app.md).
211
100
 
212
101
  ## Loop
213
102
 
214
103
  ```bash
215
- pnpm install --frozen-lockfile
216
- pnpm validate
217
- pnpm check:indexes # when the project provides it
218
- pnpm typecheck
219
- pnpm check
220
- ```
221
-
222
- Use `pnpm dev` for local preview when the project provides it.
223
-
224
- ## Connect a Local MCP Client
225
-
226
- Start the project with `pnpm dev`, then use the exact local origin it prints.
227
- The conventional Cloudflare adapter exposes:
228
-
229
- - `http://localhost:8787/mcp` for public tools;
230
- - `http://localhost:8787/mcp/staff` for authenticated authoring tools.
231
-
232
- Prefer the client's native remote HTTP + OAuth support. Use a standard
233
- HTTP-to-stdio bridge such as `npx -y mcp-remote <url>` only when the client
234
- accepts stdio MCP servers but cannot connect to remote HTTP directly. Mantle
235
- does not own a separate local proxy or an auth-bypass mode.
236
-
237
- Before changing client config, confirm the Worker is reachable:
238
-
239
- ```bash
240
- curl -i http://localhost:8787/mcp
104
+ pnpm exec mantle generate
105
+ pnpm exec mantle generate --check
106
+ pnpm exec tsc --noEmit
107
+ pnpm exec wrangler dev --local # on Bun: bun src/index.ts
241
108
  ```
242
109
 
243
- An OAuth-protected endpoint should respond with `401` and a
244
- `WWW-Authenticate` resource-metadata challenge before sign-in. After
245
- connecting, inspect `tools/list`; make one read-only `query_view_*` call when
246
- available before invoking any mutation. Use project-scoped client config when
247
- the client offers it, and never commit OAuth tokens or the bridge's token
248
- cache.
110
+ Then exercise what changed over HTTP: the REST View or Trigger, `/mcp`
111
+ `tools/list` and a call, and with identity `mantle` a console email-OTP
112
+ sign-in and the Admin route (`docs/handbook/cloudflare/authentication.md`).
113
+ Check the stored rows, not only a 200. Before deploying a Schema change on
114
+ SQLite, run `mantle generate --check --database <file>` to see the storage SQL.
249
115
 
250
116
  ## Rules
251
117
 
252
- - Keep content models in the configured manifest directory; its immediate
253
- `.yaml` and `.yml` files are loaded together.
254
- - Add TypeScript only for handlers, rendering, adapter wiring, or real behavior.
255
- - Do not write directly to D1, KV, Postgres, or object storage for content
256
- authoring. Use runtime use cases, admin APIs, or Staff MCP.
257
- - Do not commit provider secrets.
258
- - If the work is an installable capability, switch to `mantle:plugin`.
118
+ - Never edit `.mantle/generated/`. Commit it.
119
+ - Never write a Schema's table with `env.DB`, KV or SQL from outside Store;
120
+ never touch `_mantle_*` tables. The application's own tables are its own.
121
+ - A blocked storage change (`STORAGE_CHANGE_BLOCKED`) is the author's to make
122
+ by hand, then rerun; Mantle never drops a column or index.
123
+ - Do not commit secrets (`.dev.vars`, provider keys).
124
+ - Every 0.1.x term is gone: builtin handlers, `from`/`filter`, `params`,
125
+ `$ctx`, `x-mantle-bind`, `mantle validate`, `mantle skills`,
126
+ `createMantleWorker`.
127
+
128
+ ## When you are done
129
+
130
+ Report the manifests and code you changed, the `generate --check` and
131
+ typecheck results, the HTTP calls you made and what they returned, and any
132
+ access you made stricter or could not express.
@@ -0,0 +1,79 @@
1
+ # Recipe: an MCP App for members
2
+
3
+ The preset serves Mantle's App on `/mcp/staff` only. A member-facing App, on
4
+ `/mcp`, is the application's: the SDK attaches none, because what a member
5
+ should see in a chat (one order, a booking form, a status card) is a product
6
+ decision. Build it case by case from these pieces.
7
+
8
+ ## Pieces
9
+
10
+ | Piece | From | What it gives |
11
+ |---|---|---|
12
+ | `apps: { resources: [...] }` | `createMcpSurface` (`@aotter/mantle/mcp`) | a `ui://` resource beside the tools; `renders` names the tools whose results it shows, `appOnly` the View tools only the App may call |
13
+ | `appCatalog(plan, "public")`, `withCatalog(html, catalog)` | `@aotter/mantle/mcp` | each public View tool's columns as the fields they read, and the row operations, embedded in your HTML as `#mantle-catalog` |
14
+ | `planApp(plan, { surface: "public", html: mantleAppHtml })` | `@aotter/mantle/mcp`, `@aotter/mantle-ui/mcp-app` | the staff App as is, for every public View: the quickest start when a list is what you want |
15
+ | `App` | `@modelcontextprotocol/ext-apps` | the host bridge: `ontoolresult`, `ontoolinput`, `callServerTool`, the host's locale and theme |
16
+ | `readCatalog`, `toolOf`, `outputOf`, `rowsOf`, `invokeTool`, `actionsFor` | `@aotter/mantle-ui` | the catalog, a result's tool, its output and rows, and a tool call as the controller reads it, so the App never parses the wire itself |
17
+ | `renderDataValue`, `propertyLabel`, `optionLabel`, `OperationPanel` | `@aotter/mantle-ui` | a value as Admin shows it (money, dates, option titles, in the host's locale), and Admin's review-and-submit panel |
18
+ | `createInteractionController` | `@aotter/mantle-ui/controller` | one operation on one row: review, submit once, a refusal or `CONFLICT` kept, never retried |
19
+ | `SchemaFields` and the primitives | `@aotter/mantle-ui/kit`, styled by `@aotter/mantle-ui/kit.css` | Admin's form controls |
20
+
21
+ The App's own build installs what it imports: `@modelcontextprotocol/ext-apps`
22
+ at the exact version `@aotter/mantle` depends on, React and the kit's peers
23
+ (`@aotter/mantle-ui`'s README lists them). `docs/handbook/concepts/mcp-and-agents.md`
24
+ (MCP Apps) describes the catalog and the staff App these share.
25
+
26
+ ## Steps
27
+
28
+ 1. Decide what the App shows and which tool's result opens it. It renders a
29
+ tool the surface already serves: a public View, or a Procedure with an
30
+ `mcp` Trigger on `public`. Add that Trigger or View first; an App never
31
+ reaches data a tool does not.
32
+ 2. Build one self-contained HTML file, for example `app/dist/member.html`:
33
+ Vite with `vite-plugin-singlefile` (and React, if you use the components).
34
+ A host loads the App in a sandbox that fetches nothing else unless the
35
+ resource's `csp` allows it. The build runs before `wrangler dev` and
36
+ deploy: add it to the project's scripts.
37
+ 3. Serve it. Wrangler imports `.html` as text; declare it for TypeScript in
38
+ `src/env.d.ts` (`declare module "*.html" { const html: string; export default html; }`),
39
+ then in `src/service.ts` (identity `mantle`, whose preset defines
40
+ `resourceMetadata`; with `custom`, pass the surface to your own `guard`):
41
+
42
+ ```ts
43
+ import memberHtml from "../app/dist/member.html";
44
+ import { appCatalog, withCatalog } from "@aotter/mantle/mcp";
45
+
46
+ const html = withCatalog(memberHtml, appCatalog(runtime.plan, "public"));
47
+ const mcp = guard(createMcpSurface(runtime, { basePath: "/mcp", surface: "public", resourceMetadata,
48
+ apps: { resources: [{ uri: "ui://shop/my-orders", name: "my-orders", html, renders: ["my_orders"] }] } }), { resourceMetadata });
49
+ ```
50
+
51
+ 4. In the App, `readCatalog()` once; in `ontoolresult`, `toolOf(result)` names
52
+ the tool and `outputOf(result)` (or `rowsOf` for a View) is its data. A
53
+ success is `structuredContent` when the output is an object and the JSON
54
+ text otherwise; a failure of a tool with an output schema is the text
55
+ alone, which `outputOf` reads either way. Call tools through
56
+ `invokeTool(app.callServerTool…)`: a refusal is `{ ok: false, diagnostics }`
57
+ (`AUTH_DENIED`, `CONFLICT`, ...), and a thrown call (a 401 or 403 from a
58
+ missing scope or sign-in, a lost connection) is an unknown outcome to
59
+ re-read, never to retry blindly.
60
+
61
+ ## Rules
62
+
63
+ - The HTML is a static asset: no caller data, no secrets, the same for every
64
+ member. Caller data arrives only in tool results.
65
+ - Every read and write is a tool call under the member's own token; `requires`
66
+ and `scope` apply exactly as they do to the model's calls.
67
+ - `appOnly` hides a read from the model; only a View can be app-only, never a
68
+ write.
69
+ - A public View over a `publishing` Schema shows published rows only; over a
70
+ `scope`d Schema it shows the caller's own rows, without a `WHERE` of yours.
71
+
72
+ ## Verify
73
+
74
+ Add the App's build to the develop loop, then: `tools/list` from a client that
75
+ declares the MCP Apps extension shows the rendered tool with
76
+ `_meta.ui.resourceUri`; `resources/read` of that URI returns your HTML with
77
+ `#mantle-catalog`; a call to the tool returns its result with
78
+ `_meta["net.aotter.mantle/tool"]`. Then open it in a host that renders MCP
79
+ Apps, signed in as a member.
@@ -1,60 +1,96 @@
1
1
  ---
2
2
  name: integrate
3
- description: Integrate Mantle into an existing application. Use when the application has its own code, routes, storage or deployment and the owner wants to add Mantle, replace part of it, or rebuild with Mantle while migrating frontend and data.
3
+ description: Add Mantle 0.2 to an existing application, or rebuild one on Mantle and migrate its data. Use when the application already has its own code, routes, users, storage or deployment.
4
4
  metadata:
5
5
  source: "@aotter/mantle"
6
6
  sourcePath: docs/skills/integrate/SKILL.md
7
- applies_to: mantle grammar v0.1
7
+ applies_to: mantle 0.2
8
8
  projection: package
9
- projectionReason: Existing-project migration is opt-in; a fresh generated app does not need this brief.
10
9
  ---
11
10
 
12
11
  # Integrate Mantle into an existing application
13
12
 
14
- Work in the target application. Read its installed `@aotter/mantle` version,
15
- CLI help and package-local docs before editing. If Mantle is absent, inspect
16
- the application first, then install an exact SDK version only after choosing an
17
- integration strategy. Use the installed version's contract; do not copy
18
- `develop` branch examples into an older consumer.
13
+ Mantle is added to a running service; it does not replace it. The service
14
+ keeps its entry, users, auth, tables, routes and frontend. Mantle adds its own
15
+ `_mantle_*` tables, the Schemas it declares, and the surfaces the service
16
+ chooses to mount. Read the installed package's
17
+ `docs/handbook/start/overview.md` and
18
+ `docs/handbook/concepts/authorization.md` first.
19
19
 
20
20
  ## Inspect and decide
21
21
 
22
- Map the actual entry points, router, frontend, auth, storage, data volume and
23
- relationships, deployment pipeline, URLs, background jobs and existing tests.
24
- Identify which behavior the owner wants Mantle to own and what must remain
25
- stable. Compare three approaches using the application's evidence:
26
-
27
- 1. **Embed selectively:** keep the host and call Mantle's parser, Runtime or
28
- selected surfaces through its documented package APIs. The host owns wiring.
29
- 2. **Replace incrementally:** move one bounded capability at a time. Define
30
- where reads and writes go during coexistence and how each step is checked.
31
- 3. **Rebuild and migrate:** create a separate new Mantle application, port the
32
- frontend and business behavior, and transform/import existing data. Prefer
33
- this when adapting the old structure costs more than rebuilding. Preserve
34
- relevant IDs, relations, URLs and identity semantics; rehearse the data
35
- transfer before a production cutover.
36
-
37
- Explain the chosen path and its concrete tradeoffs to the owner. A small
38
- prototype or read-only inventory may resolve uncertainty. Do not run a generic
39
- project converter or assume the current application's shape matches a
40
- generated Cloudflare or ChatGPT Sites skeleton.
41
-
42
- ## Implement and verify
43
-
44
- - For embedding, retain user-owned entry/config/build files. Use the installed
45
- direct-authoring docs and CLI to validate manifests and emit bindings; wire
46
- the selected Mantle capabilities into the existing host explicitly.
47
- - For incremental replacement, establish a clear owner for each data write
48
- and request route at every stage. Verify old and new behavior together.
49
- - For rebuilding, generate in a **separate directory** with the installed
50
- CLI, move frontend and handlers deliberately, and plan data mapping and
51
- import separately. Review database migrations before application or cutover.
52
- - Run the application's build and representative behavior checks for the
53
- changed routes, auth and data. `mantle generate --check` checks generated
54
- output against its declared selection; it cannot certify host integration.
55
- For live data, record migration counts and a rollback or recovery path
56
- appropriate to the project.
57
-
58
- Leave existing data and deployment untouched until the requested migration
59
- and release steps are ready. Report which capabilities Mantle now owns,
60
- what was verified, and what remains for application deployment or cutover.
22
+ Map the application before installing anything: its entry and router, frontend,
23
+ users and sign-in, database and data volume, deployment, background jobs and
24
+ tests. Ask which behavior the owner wants Mantle to own. Then choose:
25
+
26
+ 1. **Embed.** Keep the application's entry. Compose Mantle into its existing
27
+ `fetch` (`createMantle(service, { plan, storage })`, the surfaces you want,
28
+ behind a `CallerResolver` over the application's own sessions). Best when
29
+ the application already runs on Workers with D1.
30
+ 2. **Move one capability at a time.** Give one bounded set of data (a form, a
31
+ catalog) a Schema, then its Views and Procedures; the rest stays. At every
32
+ step, each table has exactly one writer.
33
+ 3. **Rebuild and migrate.** Generate a new Mantle service in a separate
34
+ directory, port the frontend and business rules, and import the data. Best
35
+ when adapting the old structure costs more than rebuilding.
36
+
37
+ Explain the choice and its tradeoffs to the owner before changing code.
38
+
39
+ ## Identity
40
+
41
+ The application keeps its users. Pick `identity`:
42
+
43
+ - `custom`: write `src/identity.ts` as a `CallerResolver` over the existing
44
+ sessions or tokens. `subject` is the application's stable user id,
45
+ namespaced when there are several issuers, never an email. Map existing
46
+ admin roles to `owner` / `editor` / `contributor`, or leave `role` null.
47
+ - `mantle`: only when the application has no sign-in and wants Better Auth's.
48
+ - `none`: a public service with no signed-in callers.
49
+
50
+ Switching identity later is refused; choose deliberately.
51
+
52
+ ## Embedding into an existing entry
53
+
54
+ `mantle generate` writes the preset only where `src/service.ts` does not
55
+ exist; `--host none` writes no preset at all, only the plan and its types.
56
+ For an application with its own entry, generate in a scratch
57
+ directory with the same manifests and config, then copy the composition you
58
+ need from the generated `src/service.ts` into the application's own entry:
59
+
60
+ - the `createMantle(service, { plan, storage: (env) => d1Storage(env.DB), schedules: true })` call;
61
+ - `withCaller(resolver, createRestSurface(runtime, { basePath: "/api" }))`
62
+ and any other surface, mounted on paths the application does not use;
63
+ - the `scheduled` mapping from `src/index.ts`, if the plan has schedules.
64
+
65
+ Put that composition in the application's `src/service.ts` before the first
66
+ `mantle generate` inside the application: while `src/service.ts` is missing,
67
+ generate writes every missing preset file (`src/service.ts`, `src/index.ts`,
68
+ `src/handlers.ts`, `src/identity.ts` for `custom`, `tsconfig.json`,
69
+ `.gitignore`, `.dev.vars.example` for `mantle`, and `wrangler.jsonc` unless a
70
+ `wrangler.*` exists; on Bun `.env.example` and no `wrangler.jsonc`) beside the
71
+ application's own.
72
+ Commit `.mantle/generated/` and run `mantle generate --check` in CI.
73
+
74
+ ## Moving data into a Schema
75
+
76
+ - Mantle never reads or writes a table it did not create. A table with a
77
+ Schema's name that Mantle does not own stops boot
78
+ (`STORAGE_TABLE_NOT_OWNED`); give the Schema a new name.
79
+ - Import through `runtime.store` in trusted code. A scoped row goes through
80
+ `runtime.store.as(<its owner's caller>)`, so the owner field is right.
81
+ `status`, timestamps and `author_id` cannot be imported: publish with a
82
+ second update that sets `status`.
83
+ - Rehearse on a copy, compare row counts, and keep the old table until the
84
+ owner confirms. Never touch live data before the cutover is agreed.
85
+
86
+ ## Verify
87
+
88
+ Run the application's own build and tests, then `mantle generate --check`,
89
+ the typecheck, and real requests against the routes Mantle now serves, as the
90
+ right callers (owner, member, anonymous). `--check` proves the generated files;
91
+ it does not prove the integration.
92
+
93
+ ## When you are done
94
+
95
+ Report which capabilities Mantle now owns, the identity mapping, what moved and
96
+ how it was verified, and what remains for cutover or deployment.