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

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 (495) hide show
  1. package/README.md +166 -298
  2. package/dist/auth/adapter.d.ts +32 -0
  3. package/dist/auth/adapter.js +288 -0
  4. package/dist/auth/admin.d.ts +3 -0
  5. package/dist/auth/admin.js +21 -0
  6. package/dist/auth/caller.d.ts +86 -0
  7. package/dist/auth/caller.js +155 -0
  8. package/dist/auth/hardening.d.ts +24 -0
  9. package/dist/auth/hardening.js +40 -0
  10. package/dist/auth/identity.d.ts +121 -0
  11. package/dist/auth/identity.js +203 -0
  12. package/dist/auth/oauth.d.ts +63 -0
  13. package/dist/auth/oauth.js +217 -0
  14. package/dist/auth/resource-seeds.js +10 -0
  15. package/dist/auth/routes.d.ts +32 -0
  16. package/dist/auth/routes.js +226 -0
  17. package/dist/build/compiler.d.ts +721 -0
  18. package/dist/build/compiler.js +7029 -0
  19. package/dist/build/spec/domain/model/ManifestGrammar.d.ts +439 -0
  20. package/dist/build/spec/domain/model/RuntimePlan.d.ts +168 -0
  21. package/dist/build/spec/domain/model/SqlIr.d.ts +129 -0
  22. package/dist/build/spec/domain/model/UserFields.d.ts +21 -0
  23. package/dist/build/spec/domain/service/PlanFingerprint.d.ts +7 -0
  24. package/dist/build/spec/kernel/diagnostic.d.ts +108 -0
  25. package/dist/bun/assets.d.ts +2 -0
  26. package/dist/bun/assets.js +24 -0
  27. package/dist/domain/adminOrder.js +24 -0
  28. package/dist/domain/columns.js +57 -0
  29. package/dist/domain/describe/chunk-ZVXBGP7Y.js +424 -0
  30. package/dist/domain/describe/index.d.ts +58 -0
  31. package/dist/domain/describe/index.js +115 -0
  32. package/dist/domain/describe/target-hash.d.ts +8 -0
  33. package/dist/domain/describe/target-hash.js +12 -0
  34. package/dist/domain/describe/targets.d.ts +40 -0
  35. package/dist/domain/entry.js +33 -0
  36. package/dist/domain/generated-tools.js +19 -0
  37. package/dist/domain/generation.d.ts +16 -0
  38. package/dist/domain/generation.js +1 -0
  39. package/dist/domain/input.js +17 -0
  40. package/dist/domain/model.js +1 -0
  41. package/dist/domain/paging.js +230 -0
  42. package/dist/domain/recipes.js +24 -0
  43. package/dist/domain/userReferences.js +5 -0
  44. package/dist/domain/wireScalars.js +47 -0
  45. package/dist/infrastructure/adminEntries.js +153 -0
  46. package/dist/infrastructure/adminPaging.js +72 -0
  47. package/dist/infrastructure/artifacts.js +71 -0
  48. package/dist/infrastructure/authSchema.js +83 -0
  49. package/dist/infrastructure/bundle.js +188 -0
  50. package/dist/infrastructure/cli.js +118 -0
  51. package/dist/infrastructure/generate.d.ts +12 -0
  52. package/dist/infrastructure/generate.js +189 -0
  53. package/dist/infrastructure/generateAuth.d.ts +8 -0
  54. package/dist/infrastructure/generateAuth.js +74 -0
  55. package/dist/infrastructure/help.js +60 -0
  56. package/dist/infrastructure/init.js +54 -0
  57. package/dist/infrastructure/inputs.js +41 -0
  58. package/dist/infrastructure/mounts.js +25 -0
  59. package/dist/infrastructure/wrangler.js +109 -0
  60. package/dist/kernel/authorization.d.ts +4 -0
  61. package/dist/kernel/authorization.js +16 -0
  62. package/dist/kernel/binds.d.ts +60 -0
  63. package/dist/kernel/binds.js +49 -0
  64. package/dist/kernel/caller-identity.d.ts +24 -0
  65. package/dist/kernel/caller-identity.js +22 -0
  66. package/dist/kernel/contract-error.d.ts +12 -0
  67. package/dist/kernel/contract-error.js +14 -0
  68. package/dist/kernel/contracts.d.ts +143 -0
  69. package/dist/kernel/contracts.js +97 -0
  70. package/dist/kernel/cron.d.ts +1 -0
  71. package/dist/kernel/cron.js +58 -0
  72. package/dist/kernel/dialect/common.d.ts +38 -0
  73. package/dist/kernel/dialect/common.js +6 -0
  74. package/dist/kernel/dialect/postgres.d.ts +16 -0
  75. package/dist/kernel/dialect/postgres.js +18 -0
  76. package/dist/kernel/dialect/sqlite.d.ts +20 -0
  77. package/dist/kernel/dialect/sqlite.js +34 -0
  78. package/dist/kernel/drain.d.ts +5 -0
  79. package/dist/kernel/drain.js +35 -0
  80. package/dist/kernel/driver/bun-sqlite.d.ts +19 -0
  81. package/dist/kernel/driver/bun-sqlite.js +77 -0
  82. package/dist/kernel/driver/d1.d.ts +24 -0
  83. package/dist/kernel/driver/d1.js +22 -0
  84. package/dist/kernel/driver/postgres.d.ts +25 -0
  85. package/dist/kernel/driver/postgres.js +99 -0
  86. package/dist/kernel/driver/transaction-context.d.ts +10 -0
  87. package/dist/kernel/driver/transaction-context.js +29 -0
  88. package/dist/kernel/email.d.ts +28 -0
  89. package/dist/kernel/email.js +38 -0
  90. package/dist/kernel/host-access.d.ts +10 -0
  91. package/dist/kernel/host-access.js +65 -0
  92. package/dist/kernel/host-caller.d.ts +39 -0
  93. package/dist/kernel/host-caller.js +56 -0
  94. package/dist/kernel/json-body.d.ts +4 -0
  95. package/dist/kernel/json-body.js +44 -0
  96. package/dist/kernel/mcp-apps.d.ts +69 -0
  97. package/dist/kernel/mcp-apps.js +40 -0
  98. package/dist/kernel/mcp-call.d.ts +5 -0
  99. package/dist/kernel/mcp-call.js +25 -0
  100. package/dist/kernel/mcp-handler.js +371 -0
  101. package/dist/kernel/mcp.d.ts +110 -0
  102. package/dist/kernel/mcp.js +50 -0
  103. package/dist/kernel/media.d.ts +27 -0
  104. package/dist/kernel/media.js +216 -0
  105. package/dist/kernel/paging.d.ts +55 -0
  106. package/dist/kernel/paging.js +95 -0
  107. package/dist/kernel/publishing.d.ts +4 -0
  108. package/dist/kernel/publishing.js +16 -0
  109. package/dist/kernel/r2-media.d.ts +42 -0
  110. package/dist/kernel/r2-media.js +78 -0
  111. package/dist/kernel/rest-dispatch.js +38 -0
  112. package/dist/kernel/rest-router.js +64 -0
  113. package/dist/kernel/rest.d.ts +58 -0
  114. package/dist/kernel/rest.js +41 -0
  115. package/dist/kernel/scalars.d.ts +6 -0
  116. package/dist/kernel/scalars.js +44 -0
  117. package/dist/kernel/search.js +5 -0
  118. package/dist/kernel/site-types.d.ts +146 -0
  119. package/dist/kernel/site-types.js +1 -0
  120. package/dist/kernel/site.d.ts +39 -0
  121. package/dist/kernel/site.js +32 -0
  122. package/dist/kernel/store.d.ts +175 -0
  123. package/dist/kernel/store.js +269 -0
  124. package/dist/kernel/surface.d.ts +10 -0
  125. package/dist/kernel/surface.js +19 -0
  126. package/dist/kernel/sweep.d.ts +17 -0
  127. package/dist/kernel/sweep.js +27 -0
  128. package/dist/kernel/translations.d.ts +1 -0
  129. package/dist/kernel/translations.js +13 -0
  130. package/dist/kernel/user-caller.d.ts +31 -0
  131. package/dist/kernel/user-caller.js +67 -0
  132. package/dist/kernel/user-field-name.js +3 -0
  133. package/dist/kernel/user-fields.d.ts +35 -0
  134. package/dist/kernel/user-fields.js +81 -0
  135. package/dist/kernel/validation.d.ts +15 -0
  136. package/dist/kernel/validation.js +54 -0
  137. package/dist/kernel/web-gateway.js +68 -0
  138. package/dist/kernel/web-head.js +15 -0
  139. package/dist/kernel/web-index.js +40 -0
  140. package/dist/kernel/web-response.js +8 -0
  141. package/dist/kernel/web.d.ts +77 -0
  142. package/dist/kernel/web.js +124 -0
  143. package/dist/kernel/where.js +27 -0
  144. package/dist/testing/index.d.ts +1 -0
  145. package/dist/testing/index.js +1 -0
  146. package/dist/usecase/adminBindings.js +143 -0
  147. package/dist/usecase/adminClient.js +87 -0
  148. package/dist/usecase/adminDescriptors.js +107 -0
  149. package/dist/usecase/generate.js +166 -0
  150. package/dist/usecase/handlers.js +21 -0
  151. package/dist/usecase/mcp-media.js +17 -0
  152. package/dist/usecase/mcp.js +100 -0
  153. package/dist/usecase/paging.js +71 -0
  154. package/dist/usecase/publishing.js +63 -0
  155. package/dist/usecase/refusals.js +27 -0
  156. package/dist/usecase/rest.js +54 -0
  157. package/dist/usecase/search.js +7 -0
  158. package/dist/usecase/site.js +39 -0
  159. package/dist/usecase/stores.js +64 -0
  160. package/dist/usecase/tool-version.js +9 -0
  161. package/dist/usecase/translations.js +78 -0
  162. package/dist/usecase/ttl.js +20 -0
  163. package/dist/usecase/validation.js +241 -0
  164. package/dist/usecase/web.js +23 -0
  165. package/docs/examples/README.md +39 -18
  166. package/docs/examples/app-shell/.dev.vars.example +4 -0
  167. package/docs/examples/app-shell/README.md +121 -0
  168. package/docs/examples/app-shell/accept.mjs +91 -0
  169. package/docs/examples/app-shell/gitignore +7 -0
  170. package/docs/examples/app-shell/package.json +43 -0
  171. package/docs/examples/app-shell/pnpm-workspace.yaml +8 -0
  172. package/docs/examples/app-shell/smoke-kit.mjs +168 -0
  173. package/docs/examples/app-shell/src/auth.ts +58 -0
  174. package/docs/examples/app-shell/src/handlers.ts +5 -0
  175. package/docs/examples/app-shell/src/index.ts +4 -0
  176. package/docs/examples/app-shell/src/routes.ts +14 -0
  177. package/docs/examples/app-shell/src/schedule.ts +8 -0
  178. package/docs/examples/app-shell/src/service.ts +70 -0
  179. package/docs/examples/app-shell/src/sign-in.ts +41 -0
  180. package/docs/examples/app-shell/src/signup.ts +8 -0
  181. package/docs/examples/app-shell/tsconfig.json +26 -0
  182. package/docs/examples/app-shell/worker-configuration.d.ts +22 -0
  183. package/docs/examples/app-shell/wrangler.jsonc +62 -0
  184. package/docs/examples/club-events/README.md +65 -0
  185. package/docs/examples/club-events/manifests/club-events.yaml +247 -0
  186. package/docs/examples/club-events/smoke.mjs +127 -0
  187. package/docs/examples/club-events/src/handlers.ts +25 -0
  188. package/docs/examples/club-events/src/signup.ts +9 -0
  189. package/docs/examples/generated-web/README.md +78 -0
  190. package/docs/examples/generated-web/posts.yaml +38 -0
  191. package/docs/examples/generated-web/seed.sql +6 -0
  192. package/docs/examples/generated-web/src/worker.ts +43 -0
  193. package/docs/examples/generated-web/tsconfig.json +8 -0
  194. package/docs/examples/generated-web/wrangler.jsonc +8 -0
  195. package/docs/examples/purchasing/.dev.vars.example +6 -0
  196. package/docs/examples/purchasing/README.md +99 -0
  197. package/docs/examples/purchasing/manifests/purchasing.yaml +374 -0
  198. package/docs/examples/purchasing/seed.sql +4 -0
  199. package/docs/examples/purchasing/smoke.mjs +191 -0
  200. package/docs/examples/purchasing/src/admin.tsx +13 -0
  201. package/docs/examples/purchasing/src/handlers.ts +33 -0
  202. package/docs/examples/purchasing/src/notify.ts +29 -0
  203. package/docs/examples/purchasing/src/requests-page.ts +57 -0
  204. package/docs/examples/purchasing/src/routes.ts +53 -0
  205. package/docs/examples/purchasing/src/schedule.ts +31 -0
  206. package/docs/examples/purchasing/src/signup.ts +5 -0
  207. package/docs/examples/purchasing/src/supplier.ts +32 -0
  208. package/docs/examples/purchasing/wrangler.jsonc +69 -0
  209. package/docs/examples/recipes/README.md +60 -0
  210. package/docs/examples/recipes/manifests/recipes.yaml +75 -0
  211. package/docs/examples/recipes/smoke.mjs +102 -0
  212. package/docs/examples/recipes/src/media.ts +13 -0
  213. package/docs/examples/recipes/src/pages.ts +99 -0
  214. package/docs/examples/recipes/src/routes.ts +71 -0
  215. package/docs/examples/recipes/src/site-config.ts +12 -0
  216. package/docs/examples/recipes/wrangler.jsonc +74 -0
  217. package/docs/handbook/cloudflare/authentication.md +180 -322
  218. package/docs/handbook/cloudflare/chatgpt-sites.md +5 -23
  219. package/docs/handbook/cloudflare/deploy-and-operate.md +55 -77
  220. package/docs/handbook/cloudflare/media-r2.md +61 -205
  221. package/docs/handbook/cloudflare/service-entry.md +239 -0
  222. package/docs/handbook/concepts/authorization.md +10 -107
  223. package/docs/handbook/concepts/four-atoms.md +9 -168
  224. package/docs/handbook/concepts/lifecycle-and-locales.md +9 -132
  225. package/docs/handbook/concepts/mcp-and-agents.md +24 -121
  226. package/docs/handbook/concepts/procedures-and-triggers.md +5 -217
  227. package/docs/handbook/concepts/runtime-and-adapters.md +15 -169
  228. package/docs/handbook/concepts/views.md +10 -185
  229. package/docs/handbook/examples/hub.md +3 -8
  230. package/docs/handbook/guides/adapter-guide.md +11 -0
  231. package/docs/handbook/guides/admin-ui.md +115 -133
  232. package/docs/handbook/guides/agent-setup.md +64 -74
  233. package/docs/handbook/guides/agent-workflow-acceptance.md +232 -0
  234. package/docs/handbook/guides/email.md +86 -0
  235. package/docs/handbook/guides/local-testing.md +40 -0
  236. package/docs/handbook/guides/mcp-apps.md +560 -0
  237. package/docs/handbook/guides/native-admin.md +566 -0
  238. package/docs/handbook/guides/native-execution.md +133 -0
  239. package/docs/handbook/guides/oauth.md +219 -0
  240. package/docs/handbook/guides/postgres-adapters.md +56 -0
  241. package/docs/handbook/guides/public-pages.md +87 -0
  242. package/docs/handbook/guides/size-and-startup.md +9 -0
  243. package/docs/handbook/guides/sql-patterns.md +266 -0
  244. package/docs/handbook/guides/typed-queries.md +211 -107
  245. package/docs/handbook/navigation.json +176 -55
  246. package/docs/handbook/reference/admin-descriptors.md +53 -0
  247. package/docs/handbook/reference/authorization.md +39 -266
  248. package/docs/handbook/reference/describe.md +56 -0
  249. package/docs/handbook/reference/diagnostics.md +19 -186
  250. package/docs/handbook/reference/features.md +45 -55
  251. package/docs/handbook/reference/manifest.md +6 -129
  252. package/docs/handbook/reference/procedure.md +11 -303
  253. package/docs/handbook/reference/schema.md +64 -240
  254. package/docs/handbook/reference/site-config.md +5 -218
  255. package/docs/handbook/reference/sql.md +64 -0
  256. package/docs/handbook/reference/surface.md +392 -201
  257. package/docs/handbook/reference/trigger.md +56 -192
  258. package/docs/handbook/reference/view.md +24 -243
  259. package/docs/handbook/releases/index.md +244 -77
  260. package/docs/handbook/start/agents.md +45 -0
  261. package/docs/handbook/start/overview.md +9 -48
  262. package/docs/handbook/start/project-and-cli.md +51 -104
  263. package/docs/handbook/start/quickstart-worker.md +43 -178
  264. package/docs/skills/develop/SKILL.md +79 -249
  265. package/docs/skills/integrate/SKILL.md +39 -50
  266. package/docs/skills/media-gc/SKILL.md +34 -10
  267. package/docs/skills/provision/SKILL.md +36 -186
  268. package/docs/skills/update/SKILL.md +23 -38
  269. package/docs/source/scripts/postgres-adapter.ts +101 -0
  270. package/docs/upgrade-0.1-to-0.2.md +227 -0
  271. package/package.json +120 -131
  272. package/skills/README.md +48 -108
  273. package/skills/mantle/SKILL.md +76 -0
  274. package/dist/admin-ui.d.ts +0 -2
  275. package/dist/admin-ui.d.ts.map +0 -1
  276. package/dist/admin-ui.js +0 -2
  277. package/dist/admin-ui.js.map +0 -1
  278. package/dist/admin.d.ts +0 -2
  279. package/dist/admin.d.ts.map +0 -1
  280. package/dist/admin.js +0 -2
  281. package/dist/admin.js.map +0 -1
  282. package/dist/auth.d.ts +0 -2
  283. package/dist/auth.d.ts.map +0 -1
  284. package/dist/auth.js +0 -2
  285. package/dist/auth.js.map +0 -1
  286. package/dist/bun.d.ts +0 -2
  287. package/dist/bun.d.ts.map +0 -1
  288. package/dist/bun.js +0 -2
  289. package/dist/bun.js.map +0 -1
  290. package/dist/cli/generate-cloudflare.d.ts +0 -7
  291. package/dist/cli/generate-cloudflare.d.ts.map +0 -1
  292. package/dist/cli/generate-cloudflare.js +0 -123
  293. package/dist/cli/generate-cloudflare.js.map +0 -1
  294. package/dist/cli/generate-project.d.ts +0 -25
  295. package/dist/cli/generate-project.d.ts.map +0 -1
  296. package/dist/cli/generate-project.js +0 -282
  297. package/dist/cli/generate-project.js.map +0 -1
  298. package/dist/cli/generate-sites.d.ts +0 -8
  299. package/dist/cli/generate-sites.d.ts.map +0 -1
  300. package/dist/cli/generate-sites.js +0 -273
  301. package/dist/cli/generate-sites.js.map +0 -1
  302. package/dist/cli/generate.d.ts +0 -20
  303. package/dist/cli/generate.d.ts.map +0 -1
  304. package/dist/cli/generate.js +0 -299
  305. package/dist/cli/generate.js.map +0 -1
  306. package/dist/cli/harness.d.ts +0 -3
  307. package/dist/cli/harness.d.ts.map +0 -1
  308. package/dist/cli/harness.js +0 -214
  309. package/dist/cli/harness.js.map +0 -1
  310. package/dist/cli/main.d.ts +0 -3
  311. package/dist/cli/main.d.ts.map +0 -1
  312. package/dist/cli/main.js +0 -77
  313. package/dist/cli/main.js.map +0 -1
  314. package/dist/cli/skills.d.ts +0 -3
  315. package/dist/cli/skills.d.ts.map +0 -1
  316. package/dist/cli/skills.js +0 -128
  317. package/dist/cli/skills.js.map +0 -1
  318. package/dist/cloudflare.d.ts +0 -2
  319. package/dist/cloudflare.d.ts.map +0 -1
  320. package/dist/cloudflare.js +0 -2
  321. package/dist/cloudflare.js.map +0 -1
  322. package/dist/codegen/emitMantleModule.d.ts +0 -22
  323. package/dist/codegen/emitMantleModule.d.ts.map +0 -1
  324. package/dist/codegen/emitMantleModule.js +0 -291
  325. package/dist/codegen/emitMantleModule.js.map +0 -1
  326. package/dist/codegen.d.ts +0 -2
  327. package/dist/codegen.d.ts.map +0 -1
  328. package/dist/codegen.js +0 -2
  329. package/dist/codegen.js.map +0 -1
  330. package/dist/runtime-testing.d.ts +0 -2
  331. package/dist/runtime-testing.d.ts.map +0 -1
  332. package/dist/runtime-testing.js +0 -2
  333. package/dist/runtime-testing.js.map +0 -1
  334. package/dist/runtime.d.ts +0 -2
  335. package/dist/runtime.d.ts.map +0 -1
  336. package/dist/runtime.js +0 -2
  337. package/dist/runtime.js.map +0 -1
  338. package/dist/spec.d.ts +0 -2
  339. package/dist/spec.d.ts.map +0 -1
  340. package/dist/spec.js +0 -2
  341. package/dist/spec.js.map +0 -1
  342. package/dist/vercel-libsql.d.ts +0 -2
  343. package/dist/vercel-libsql.d.ts.map +0 -1
  344. package/dist/vercel-libsql.js +0 -2
  345. package/dist/vercel-libsql.js.map +0 -1
  346. package/dist/vercel.d.ts +0 -2
  347. package/dist/vercel.d.ts.map +0 -1
  348. package/dist/vercel.js +0 -2
  349. package/dist/vercel.js.map +0 -1
  350. package/dist/web.d.ts +0 -2
  351. package/dist/web.d.ts.map +0 -1
  352. package/dist/web.js +0 -2
  353. package/dist/web.js.map +0 -1
  354. package/docs/adapter-guide.md +0 -222
  355. package/docs/adr/0001-four-atom-manifest-model.md +0 -440
  356. package/docs/adr/0002-closed-enums-for-bindings.md +0 -253
  357. package/docs/adr/0007-ai-as-primary-author.md +0 -473
  358. package/docs/adr/0008-structured-diagnostic-shape.md +0 -338
  359. package/docs/adr/0009-consumer-supplied-manifests.md +0 -149
  360. package/docs/adr/0010-locale-and-translates.md +0 -453
  361. package/docs/adr/0011-adapter-port-spec.md +0 -281
  362. package/docs/adr/0012-views-as-public-rest.md +0 -161
  363. package/docs/adr/0013-agent-provisioned-consumer-projects.md +0 -154
  364. package/docs/adr/0014-auth-better-auth-and-multi-tenant-mcp.md +0 -900
  365. package/docs/adr/0016-site-semantic-layer.md +0 -70
  366. package/docs/adr/0017-media-multi-variant-agent-side-optimization.md +0 -181
  367. package/docs/adr/0018-core-starters-repository-boundary.md +0 -179
  368. package/docs/adr/0019-sealed-manifest-runtime-pipeline.md +0 -240
  369. package/docs/adr/0020-builtin-handler-contracts-and-matched-upsert.md +0 -199
  370. package/docs/adr/0021-retire-starter-scaffolding.md +0 -30
  371. package/docs/adr/0022-caller-observed-version-occ.md +0 -212
  372. package/docs/adr/0023-port-failure-contract.md +0 -69
  373. package/docs/adr/0024-manifest-native-schema-tables.md +0 -264
  374. package/docs/adr/0025-reserved-native-columns-and-published-only-public-views.md +0 -105
  375. package/docs/adr/0026-progressive-generate.md +0 -36
  376. package/docs/adr/0027-scheduled-procedure-triggers.md +0 -31
  377. package/docs/adr/0028-schema-ttl-expiry.md +0 -33
  378. package/docs/adr/README.md +0 -81
  379. package/docs/adr/adr-lite-803-request-diagnostics.md +0 -38
  380. package/docs/adr/adr-lite-808-route-readiness.md +0 -47
  381. package/docs/adr/adr-lite-809-bounded-public-content.md +0 -71
  382. package/docs/adr/adr-lite-812-native-parity.md +0 -150
  383. package/docs/adr/adr-lite-823-home-statistics.md +0 -64
  384. package/docs/adr/adr-lite-842-mcp-authoring.md +0 -30
  385. package/docs/adr/adr-lite-845-frontend-client.md +0 -38
  386. package/docs/adr/adr-lite-861-admin-webmcp.md +0 -42
  387. package/docs/adr/adr-lite-909-admin-ui-kit.md +0 -37
  388. package/docs/agent-prompts.md +0 -64
  389. package/docs/api-mcp-authorization.md +0 -5
  390. package/docs/assets/mantle-admin-developer.png +0 -0
  391. package/docs/assets/mantle-admin-operations.png +0 -0
  392. package/docs/assets/mantle-hero.jpg +0 -0
  393. package/docs/auth-hosting-model.md +0 -166
  394. package/docs/cloudflare-low-level-composition.md +0 -5
  395. package/docs/consumer-onboarding-audit.md +0 -65
  396. package/docs/deferred-lifecycle-queues.md +0 -5
  397. package/docs/design-atoms.md +0 -16
  398. package/docs/design-references/editorial-blog-2026-05-05.md +0 -218
  399. package/docs/direct-authoring.md +0 -5
  400. package/docs/examples/builtin-commerce.md +0 -269
  401. package/docs/examples/builtin-intake.md +0 -143
  402. package/docs/examples/builtin-legal-documents.md +0 -189
  403. package/docs/examples/builtin-procurement.md +0 -241
  404. package/docs/examples/builtin-publication.md +0 -241
  405. package/docs/examples/builtin-reservation.md +0 -149
  406. package/docs/examples/cf-primitives-commerce-inventory.md +0 -809
  407. package/docs/examples/cf-primitives-guarded-api.md +0 -429
  408. package/docs/examples/cf-primitives-intake-hooks.md +0 -319
  409. package/docs/examples/host-chatgpt-sites/.openai/hosting.json +0 -1
  410. package/docs/examples/host-chatgpt-sites/README.md +0 -70
  411. package/docs/examples/host-chatgpt-sites/drizzle/0000_sites_users.sql +0 -8
  412. package/docs/examples/host-chatgpt-sites/drizzle/0001_mantle.sql +0 -294
  413. package/docs/examples/host-chatgpt-sites/drizzle/0002_article_cover.sql +0 -5
  414. package/docs/examples/host-chatgpt-sites/drizzle/0003_store_instance_id.sql +0 -1
  415. package/docs/examples/host-chatgpt-sites/drizzle/0004_mantle.sql +0 -10
  416. package/docs/examples/host-chatgpt-sites/drizzle/0005_mantle.sql +0 -24
  417. package/docs/examples/host-chatgpt-sites/drizzle/meta/_journal.json +0 -1
  418. package/docs/examples/host-chatgpt-sites/drizzle/meta/mantle-state.json +0 -60
  419. package/docs/examples/host-chatgpt-sites/manifests/site.yaml +0 -27
  420. package/docs/examples/host-chatgpt-sites/package.json +0 -1
  421. package/docs/examples/host-chatgpt-sites/public/site.css +0 -1
  422. package/docs/examples/host-chatgpt-sites/scripts/build.mjs +0 -13
  423. package/docs/examples/host-chatgpt-sites/scripts/check.mjs +0 -101
  424. package/docs/examples/host-chatgpt-sites/scripts/migration.mjs +0 -43
  425. package/docs/examples/host-chatgpt-sites/src/chatgpt-auth.ts +0 -66
  426. package/docs/examples/host-chatgpt-sites/src/index.ts +0 -46
  427. package/docs/examples/host-chatgpt-sites/src/mcp.ts +0 -49
  428. package/docs/examples/host-chatgpt-sites/src/media.ts +0 -109
  429. package/docs/examples/host-chatgpt-sites/src/r2-lab.ts +0 -38
  430. package/docs/examples/host-chatgpt-sites/src/storage-fingerprint.json +0 -1
  431. package/docs/examples/host-chatgpt-sites/src/web.ts +0 -35
  432. package/docs/examples/host-chatgpt-sites/tsconfig.json +0 -1
  433. package/docs/examples/host-chatgpt-sites/wrangler.jsonc +0 -10
  434. package/docs/examples/host-local-admin-otp/.dev.vars.example +0 -3
  435. package/docs/examples/host-local-admin-otp/README.md +0 -80
  436. package/docs/examples/host-local-admin-otp/ensure-dev-vars.mjs +0 -5
  437. package/docs/examples/host-local-admin-otp/manifests/site.yaml +0 -25
  438. package/docs/examples/host-local-admin-otp/package.json +0 -29
  439. package/docs/examples/host-local-admin-otp/public/.gitkeep +0 -1
  440. package/docs/examples/host-local-admin-otp/smoke.mjs +0 -141
  441. package/docs/examples/host-local-admin-otp/src/index.ts +0 -54
  442. package/docs/examples/host-local-admin-otp/tsconfig.json +0 -17
  443. package/docs/examples/host-local-admin-otp/wrangler.jsonc +0 -23
  444. package/docs/examples/host-minimal-worker/README.md +0 -41
  445. package/docs/examples/host-minimal-worker/manifests/site.yaml +0 -25
  446. package/docs/examples/host-minimal-worker/package.json +0 -26
  447. package/docs/examples/host-minimal-worker/smoke.mjs +0 -23
  448. package/docs/examples/host-minimal-worker/src/index.ts +0 -4
  449. package/docs/examples/host-minimal-worker/tsconfig.json +0 -17
  450. package/docs/examples/host-minimal-worker/wrangler.jsonc +0 -22
  451. package/docs/handbook/chatgpt-sites/equipment-checkout.md +0 -231
  452. package/docs/handbook/chatgpt-sites/generated-app.md +0 -84
  453. package/docs/handbook/chatgpt-sites/host-reference.md +0 -113
  454. package/docs/handbook/chatgpt-sites/index.md +0 -133
  455. package/docs/handbook/cloudflare/bindings.md +0 -291
  456. package/docs/handbook/cloudflare/conventional-worker.md +0 -166
  457. package/docs/handbook/cloudflare/deferred-hooks-queues.md +0 -170
  458. package/docs/handbook/cloudflare/low-level-composition.md +0 -169
  459. package/docs/handbook/cloudflare/public-web.md +0 -144
  460. package/docs/handbook/cloudflare/site-chrome.md +0 -75
  461. package/docs/handbook/examples/commerce-transaction.md +0 -11
  462. package/docs/handbook/examples/commerce.md +0 -11
  463. package/docs/handbook/examples/guarded-api.md +0 -10
  464. package/docs/handbook/examples/intake-form.md +0 -12
  465. package/docs/handbook/examples/intake-hooks.md +0 -11
  466. package/docs/handbook/examples/legal-documents.md +0 -10
  467. package/docs/handbook/examples/procurement-approvals.md +0 -10
  468. package/docs/handbook/examples/publication.md +0 -10
  469. package/docs/handbook/examples/reservation.md +0 -10
  470. package/docs/handbook/start/quickstart-admin.md +0 -52
  471. package/docs/labels.md +0 -71
  472. package/docs/media-uploads.md +0 -5
  473. package/docs/migration-0.1.2.md +0 -13
  474. package/docs/performance-harness.md +0 -228
  475. package/docs/release-process.md +0 -244
  476. package/docs/schema-indexes.md +0 -5
  477. package/docs/sealed-pipeline-ownership.md +0 -101
  478. package/docs/skills/plugin/SKILL.md +0 -132
  479. package/docs/skills/theme/SKILL.md +0 -77
  480. package/docs/spec-only-host-adoption.md +0 -157
  481. package/docs/transaction-patterns.md +0 -5
  482. package/skills/develop/SKILL.md +0 -258
  483. package/skills/install/SKILL.md +0 -112
  484. package/skills/integrate/SKILL.md +0 -60
  485. package/skills/media-gc/SKILL.md +0 -85
  486. package/skills/plugin/SKILL.md +0 -132
  487. package/skills/provision/SKILL.md +0 -194
  488. package/skills/theme/SKILL.md +0 -77
  489. package/skills/update/SKILL.md +0 -51
  490. package/templates/chatgpt-sites/auth.ts +0 -66
  491. package/templates/chatgpt-sites/build.mjs +0 -14
  492. package/templates/chatgpt-sites/env.ts +0 -1
  493. package/templates/chatgpt-sites/mcp.ts +0 -48
  494. package/templates/chatgpt-sites/public-mcp.ts +0 -29
  495. package/templates/chatgpt-sites/smoke-local.mjs +0 -20
package/package.json CHANGED
@@ -1,165 +1,154 @@
1
1
  {
2
2
  "name": "@aotter/mantle",
3
- "version": "0.1.5-alpha.1",
4
- "description": "Embeddable Mantle Core umbrella with Spec and Runtime; Web, Admin, Auth, Bun, Vercel, Cloudflare, and Admin UI are optional peer packages.",
5
- "license": "Apache-2.0",
6
- "homepage": "https://mantle.tools/",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/aotter/mantle.git",
10
- "directory": "packages/mantle"
11
- },
3
+ "version": "0.2.0-alpha.10",
12
4
  "type": "module",
13
5
  "sideEffects": false,
14
- "main": "./dist/spec.js",
15
- "types": "./dist/spec.d.ts",
16
- "bin": {
17
- "mantle": "./dist/cli/main.js",
18
- "mantle-harness": "./dist/cli/harness.js"
19
- },
20
- "publishConfig": {
21
- "access": "public",
22
- "tag": "alpha",
23
- "registry": "https://registry.npmjs.org"
24
- },
25
- "exports": {
26
- ".": {
27
- "types": "./dist/spec.d.ts",
28
- "import": "./dist/spec.js"
29
- },
30
- "./spec": {
31
- "types": "./dist/spec.d.ts",
32
- "import": "./dist/spec.js"
33
- },
34
- "./runtime": {
35
- "types": "./dist/runtime.d.ts",
36
- "import": "./dist/runtime.js"
37
- },
38
- "./runtime/testing": {
39
- "types": "./dist/runtime-testing.d.ts",
40
- "import": "./dist/runtime-testing.js"
41
- },
42
- "./codegen": {
43
- "types": "./dist/codegen.d.ts",
44
- "import": "./dist/codegen.js"
45
- },
46
- "./web": {
47
- "types": "./dist/web.d.ts",
48
- "import": "./dist/web.js"
49
- },
50
- "./admin": {
51
- "types": "./dist/admin.d.ts",
52
- "import": "./dist/admin.js"
53
- },
54
- "./auth": {
55
- "types": "./dist/auth.d.ts",
56
- "import": "./dist/auth.js"
57
- },
58
- "./bun": {
59
- "types": "./dist/bun.d.ts",
60
- "import": "./dist/bun.js"
61
- },
62
- "./vercel": {
63
- "types": "./dist/vercel.d.ts",
64
- "import": "./dist/vercel.js"
65
- },
66
- "./vercel/libsql": {
67
- "types": "./dist/vercel-libsql.d.ts",
68
- "import": "./dist/vercel-libsql.js"
69
- },
70
- "./cloudflare": {
71
- "types": "./dist/cloudflare.d.ts",
72
- "import": "./dist/cloudflare.js"
73
- },
74
- "./admin-ui": {
75
- "types": "./dist/admin-ui.d.ts",
76
- "import": "./dist/admin-ui.js"
77
- }
6
+ "engines": {
7
+ "node": ">=22.22.0"
78
8
  },
79
9
  "files": [
80
10
  "dist",
81
11
  "docs",
82
12
  "skills",
83
- "templates",
84
13
  "README.md"
85
14
  ],
15
+ "bin": {
16
+ "mantle": "./dist/infrastructure/cli.js"
17
+ },
86
18
  "dependencies": {
87
- "@aotter/mantle-runtime": "0.1.5-alpha.1",
88
- "@aotter/mantle-spec": "0.1.5-alpha.1"
19
+ "esbuild": "0.28.1",
20
+ "jsonc-parser": "3.3.1",
21
+ "@pgsql/types": "18.0.0",
22
+ "libpg-query": "18.1.5",
23
+ "pgsql-deparser": "18.3.8",
24
+ "yaml": "^2.9.1",
25
+ "zod": "^4.6.5"
26
+ },
27
+ "exports": {
28
+ ".": "./dist/infrastructure/generate.js",
29
+ "./generate": "./dist/infrastructure/generate.js",
30
+ "./contracts": "./dist/kernel/contracts.js",
31
+ "./authorization": "./dist/kernel/authorization.js",
32
+ "./translations": "./dist/kernel/translations.js",
33
+ "./driver/transaction-context": "./dist/kernel/driver/transaction-context.js",
34
+ "./scalars": "./dist/kernel/scalars.js",
35
+ "./binds": "./dist/kernel/binds.js",
36
+ "./testing": "./dist/testing/index.js",
37
+ "./host-access": "./dist/kernel/host-access.js",
38
+ "./host-caller": "./dist/kernel/host-caller.js",
39
+ "./user-fields": "./dist/kernel/user-fields.js",
40
+ "./sweep": "./dist/kernel/sweep.js",
41
+ "./cron": "./dist/kernel/cron.js",
42
+ "./store": "./dist/kernel/store.js",
43
+ "./dialect/sqlite": "./dist/kernel/dialect/sqlite.js",
44
+ "./dialect/postgres": "./dist/kernel/dialect/postgres.js",
45
+ "./driver/bun-sqlite": "./dist/kernel/driver/bun-sqlite.js",
46
+ "./driver/d1": "./dist/kernel/driver/d1.js",
47
+ "./driver/postgres": "./dist/kernel/driver/postgres.js",
48
+ "./email": "./dist/kernel/email.js",
49
+ "./paging": "./dist/kernel/paging.js",
50
+ "./publishing": "./dist/kernel/publishing.js",
51
+ "./rest": "./dist/kernel/rest.js",
52
+ "./mcp": "./dist/kernel/mcp.js",
53
+ "./mcp-apps": "./dist/kernel/mcp-apps.js",
54
+ "./web": "./dist/kernel/web.js",
55
+ "./validation": "./dist/kernel/validation.js",
56
+ "./site": "./dist/kernel/site.js",
57
+ "./media": "./dist/kernel/media.js",
58
+ "./media/r2": "./dist/kernel/r2-media.js",
59
+ "./auth": "./dist/auth/caller.js",
60
+ "./auth/adapter": "./dist/auth/adapter.js",
61
+ "./auth/oauth": "./dist/auth/oauth.js",
62
+ "./auth/routes": "./dist/auth/routes.js",
63
+ "./auth/identity": "./dist/auth/identity.js",
64
+ "./auth/hardening": "./dist/auth/hardening.js",
65
+ "./auth/admin": "./dist/auth/admin.js",
66
+ "./bun/assets": "./dist/bun/assets.js",
67
+ "./surface": "./dist/kernel/surface.js",
68
+ "./json-body": "./dist/kernel/json-body.js",
69
+ "./generate/auth": "./dist/infrastructure/generateAuth.js",
70
+ "./package.json": "./package.json",
71
+ "./describe": "./dist/domain/describe/index.js",
72
+ "./target-hash": "./dist/domain/describe/target-hash.js"
89
73
  },
90
74
  "peerDependencies": {
91
- "aws4fetch": "^1.0.20",
92
- "better-auth": "1.7.2",
93
- "hono": "^4.12.0",
94
- "@libsql/client": "^0.17.4",
95
- "zod": "^4.5.0",
96
- "@aotter/mantle-admin": "0.1.5-alpha.1",
97
- "@aotter/mantle-admin-ui": "0.1.5-alpha.1",
98
- "@aotter/mantle-auth": "0.1.5-alpha.1",
99
- "@aotter/mantle-bun": "0.1.5-alpha.1",
100
- "@aotter/mantle-cloudflare": "0.1.5-alpha.1",
101
- "@aotter/mantle-vercel": "0.1.5-alpha.1",
102
- "@aotter/mantle-web": "0.1.5-alpha.1"
75
+ "@modelcontextprotocol/server": "2.2.0",
76
+ "@better-auth/core": "1.7.7",
77
+ "@better-auth/oauth-provider": "1.7.7",
78
+ "better-auth": "1.7.7"
103
79
  },
104
80
  "peerDependenciesMeta": {
105
- "@aotter/mantle-admin": {
106
- "optional": true
107
- },
108
- "@aotter/mantle-admin-ui": {
109
- "optional": true
110
- },
111
- "@aotter/mantle-auth": {
112
- "optional": true
113
- },
114
- "@aotter/mantle-bun": {
81
+ "@modelcontextprotocol/server": {
115
82
  "optional": true
116
83
  },
117
- "@aotter/mantle-cloudflare": {
84
+ "@better-auth/core": {
118
85
  "optional": true
119
86
  },
120
- "@aotter/mantle-vercel": {
121
- "optional": true
122
- },
123
- "@aotter/mantle-web": {
124
- "optional": true
125
- },
126
- "aws4fetch": {
87
+ "@better-auth/oauth-provider": {
127
88
  "optional": true
128
89
  },
129
90
  "better-auth": {
130
91
  "optional": true
131
- },
132
- "hono": {
133
- "optional": true
134
- },
135
- "@libsql/client": {
136
- "optional": true
137
92
  }
138
93
  },
139
94
  "devDependencies": {
95
+ "@modelcontextprotocol/client": "2.2.0",
96
+ "@modelcontextprotocol/server": "2.2.0",
97
+ "@better-auth/core": "1.7.7",
98
+ "@better-auth/oauth-provider": "1.7.7",
99
+ "@better-auth/test-utils": "1.7.7",
100
+ "@cloudflare/workers-types": "^5.20261008.1",
140
101
  "@types/node": "^26",
141
- "aws4fetch": "^1.0.20",
142
- "better-auth": "1.7.2",
143
- "hono": "^4.13.7",
144
- "@libsql/client": "^0.17.4",
102
+ "better-auth": "1.7.7",
103
+ "bun-types": "1.4.2",
104
+ "postgres": "3.4.9",
145
105
  "typescript": "^6.0.3",
146
- "vitest": "^4.1.11",
147
- "zod": "^4.5.4",
148
- "@aotter/mantle-admin": "0.1.5-alpha.1",
149
- "@aotter/mantle-admin-ui": "0.1.5-alpha.1",
150
- "@aotter/mantle-auth": "0.1.5-alpha.1",
151
- "@aotter/mantle-bun": "0.1.5-alpha.1",
152
- "@aotter/mantle-cloudflare": "0.1.5-alpha.1",
153
- "@aotter/mantle-vercel": "0.1.5-alpha.1",
154
- "@aotter/mantle-web": "0.1.5-alpha.1"
106
+ "wrangler": "4.145.0",
107
+ "vitest": "^5.0.1"
155
108
  },
156
- "engines": {
157
- "node": ">=22"
109
+ "description": "Agent-native app SDK and backend compiler: YAML manifests to native SQL (SQLite, Cloudflare D1, PostgreSQL) and typed TypeScript; optional REST and MCP.",
110
+ "keywords": [
111
+ "mantle",
112
+ "agent-native",
113
+ "sdk",
114
+ "backend",
115
+ "yaml",
116
+ "code-generation",
117
+ "sql",
118
+ "sqlite",
119
+ "postgresql",
120
+ "cloudflare-d1",
121
+ "cloudflare-workers",
122
+ "bun",
123
+ "typescript",
124
+ "mcp",
125
+ "model-context-protocol"
126
+ ],
127
+ "license": "Apache-2.0",
128
+ "homepage": "https://mantle.tools/",
129
+ "repository": {
130
+ "type": "git",
131
+ "url": "git+https://github.com/aotter/mantle.git",
132
+ "directory": "packages/mantle"
133
+ },
134
+ "bugs": {
135
+ "url": "https://github.com/aotter/mantle/issues"
136
+ },
137
+ "publishConfig": {
138
+ "access": "public",
139
+ "tag": "alpha",
140
+ "registry": "https://registry.npmjs.org"
158
141
  },
159
142
  "scripts": {
160
- "prebuild": "rm -rf dist .tsbuildinfo",
161
- "build": "tsc -b tsconfig.lib.json",
162
- "typecheck": "tsc --noEmit -p tsconfig.lib.json",
163
- "test": "vitest run"
143
+ "build": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.lib.json && node scripts/bundle-compiler.mjs && node scripts/prune-declarations.mjs",
144
+ "typecheck": "tsc --noEmit -p tsconfig.json",
145
+ "test": "bun test tests/*.test.ts && bun run test:compiler",
146
+ "generate": "bun src/infrastructure/cli.ts",
147
+ "test:native": "bun scripts/verify-native.ts",
148
+ "bench": "bun scripts/verify-native.ts --bench",
149
+ "check:size": "bun run build && bun scripts/check-size.ts",
150
+ "check:package": "bun run build && bun scripts/check-package.ts",
151
+ "test:compiler": "tsc --noEmit -p tsconfig.compiler.json && vitest run --config vitest.compiler.config.ts",
152
+ "check:startup": "bun scripts/check-size.ts --startup-only"
164
153
  }
165
154
  }
package/skills/README.md CHANGED
@@ -1,127 +1,67 @@
1
1
  # SKILL.md briefs (mantle)
2
2
 
3
- Agent-readable skill briefs for consumers of `@aotter/mantle-*`. Discoverable by URL — no plugin install needed.
3
+ Agent-readable skills for consumers of `@aotter/mantle` 0.2. There are two
4
+ distributions (ADR-0032 decision 13):
5
+
6
+ - **The plugin** ships one OSS authoring skill, [`mantle`](mantle/SKILL.md),
7
+ without a hosted-service MCP connection or transport.
8
+ - **The npm package** ships the workflow skills under `docs/skills/`. An agent
9
+ reads them from `node_modules/@aotter/mantle/docs/skills/`, matched to the
10
+ installed version. Nothing copies them into a project; 0.2 has no
11
+ `mantle skills` command.
4
12
 
5
13
  | Skill | When to invoke |
6
14
  |---|---|
7
- | [`develop`](../docs/skills/develop/SKILL.md) | `mantle:develop`: Core-owned workflow for manifest, runtime, handler, adapter, validation, and MCP work in any Mantle project. |
8
- | [`integrate`](../docs/skills/integrate/SKILL.md) | `mantle:integrate`: choose and carry out an existing application's Mantle integration or rebuild and data migration. |
9
- | [`media-gc`](../docs/skills/media-gc/SKILL.md) | `mantle:media-gc`: audit or remove stale uncommitted public media objects with the connected Cloudflare API. |
10
- | [`plugin`](../docs/skills/plugin/SKILL.md) | `mantle:plugin`: Core-owned marketplace workflow for plan-first capability installs across applications and adapters. |
11
- | [`theme`](../docs/skills/theme/SKILL.md) | `mantle:theme`: Core-owned visual workflow. Reads project-owned theme and UI contracts. |
12
- | [`update`](../docs/skills/update/SKILL.md) | `mantle:update`: Core-owned drift check workflow for SDK dependencies, local skills, and plugin lockfiles. |
13
- | [`mantle`](install/SKILL.md) | User wants to author a local Mantle application or continue an existing project. |
14
- | [`provision`](../docs/skills/provision/SKILL.md) | User wants a local project shipped to Cloudflare with production auth and operator handoff. |
15
-
16
- The skills target Mantle's v0.1 grammar. The installed package version, not
17
- duplicated skill prose, selects the exact runtime and embedded docs.
18
-
19
- ## Disclosure audit
20
-
21
- Every skill ships as one `SKILL.md` with no reference files, scripts, or
22
- assets, so nothing is deferred behind a second load. Progressive disclosure
23
- here is section routing inside one file: the agent reads the entry constraints,
24
- then only the section its selected path names. `scripts/check-skills.mjs`
25
- enforces the columns below.
26
-
27
- | Skill | Routes on | Entry-path constraints (read before acting) | Path-gated sections | Projection | Restricted because |
28
- |---|---|---|---|---|---|
29
- | `develop` | existing project; manifest, runtime, handler, adapter, or MCP work | four-atom model; adapter neutrality; no direct D1/KV/Postgres writes; no committed secrets | performance harness; local MCP client; locale rules | project | — |
30
- | `integrate` | independently authored application; add Mantle or rebuild with migration | inspect application before strategy; version-matched SDK; protect live data | embed; incrementally replace; rebuild and migrate | package | Existing-project migration is opt-in; a fresh generated app does not need this brief. |
31
- | `plugin` | user wants an installable capability | plan before apply; lock entry is the removal manifest; delete only plugin-owned files and atoms | apply; remove | project | — |
32
- | `theme` | brand or visual direction in a project | repo-owned theme and UI contracts | — | project | — |
33
- | `update` | SDK upgrade or plugin lock review | never blindly overwrite user-owned code | — | project | — |
34
- | `mantle` | new application, or opening an existing project | do not use the SDK checkout as the application; no push/deploy/provider config during cold start | author local project; continue existing project | plugin | Creates a new project; nothing to project into an existing one. |
35
- | `provision` | ship to Cloudflare and finish production auth | secrets never enter source or logs; explicit auth mode | hosted auth; self-managed auth | package | Platform-specific deploy that handles production secrets; opt-in only. |
36
- | `media-gc` | audit or remove stale uncommitted media objects | audit by default; confirm exact account, bucket, cutoff, and candidate digest; re-audit before applying; never prefix-delete; never print keys | apply | package | Destructive remote object deletion and Cloudflare-specific; opt-in only. |
37
-
38
- Deliberately monolithic:
39
-
40
- - `develop` is the widest file, but its adapter, auth, and data-ownership rules
41
- constrain every path through it. Splitting them behind routing would let an
42
- agent reach a write path without them, which is the failure this audit
43
- exists to prevent.
44
- - `media-gc` keeps its full audit-confirm-reapply sequence inline for the same
45
- reason: each safeguard is a precondition of the delete that follows it.
46
-
47
- ## Skill authority
48
-
49
- The `mantle:*` namespace is owned by `@aotter/mantle`. Every skill declares its
50
- own distribution scope in front matter: `metadata.projection: project` marks a
51
- skill `mantle skills` should place in a consumer project, and a skill that
52
- withholds `project` must say why. `plugin` is the bootstrap skill and `package`
53
- is an opt-in brief in the installed SDK. `scripts/check-skills.mjs` holds that
54
- declaration and the audit table below to each other.
15
+ | [`mantle`](mantle/SKILL.md) | Create or continue a Mantle application and deploy to a user-owned host. |
16
+ | [`develop`](../docs/skills/develop/SKILL.md) | Change manifests, SQL, handlers, the service entry or surfaces of an existing project. |
17
+ | [`integrate`](../docs/skills/integrate/SKILL.md) | Add Mantle to an application that has its own code, users or data, or rebuild one and migrate. |
18
+ | [`update`](../docs/skills/update/SKILL.md) | Upgrade `@aotter/mantle`, including from 0.1.x. |
19
+ | [`provision`](../docs/skills/provision/SKILL.md) | Ship to Cloudflare Workers or ChatGPT Sites with production sign-in. |
20
+ | [`media-gc`](../docs/skills/media-gc/SKILL.md) | Audit or remove stale, uncommitted R2 uploads. |
55
21
 
56
- Run `mantle skills` to project the installed package's skills into a project;
57
- use `mantle skills --check` to fail closed on drift. The installed package and
58
- `node_modules/@aotter/mantle/docs/` are the single version-matched authority.
59
- Application files and plugin recipes are project context, not competing
60
- contracts.
22
+ ## Install
61
23
 
62
- ## Source-repository marketplace install
63
-
64
- `skills/install/SKILL.md` declares `name: mantle`. It is the only repository
65
- skill discovered by the no-flag command and copied as a small directory.
66
- The other seven skills live in `docs/skills/` and ship with the npm package.
67
- `mantle skills` projects the four ongoing workflows after package installation.
68
-
69
- Other marketplace hosts point to the same entry:
24
+ Use the [agent setup guide](../docs/handbook/guides/agent-setup.md) for Codex,
25
+ Claude Code, Cursor and GitHub Copilot. Pin the plugin checkout to the same
26
+ release tag as the application's SDK; alpha releases on `develop` can be newer
27
+ than the default `main` branch. For a skill-only installation:
70
28
 
71
29
  ```sh
72
- npx skills add aotter/mantle
73
- ```
74
-
75
- ```bash
76
- # Claude Code — two separate prompts
77
- /plugin marketplace add aotter/mantle
78
- /plugin install mantle@mantle
79
-
80
- # Codex
81
- codex plugin marketplace add aotter/mantle
82
- codex plugin add mantle@mantle
30
+ npx skills add https://github.com/aotter/mantle/tree/v0.2.0-alpha.10 --skill mantle
83
31
  ```
84
32
 
85
- Read the path printed by the installer (for project-local Codex,
86
- `.agents/skills/mantle/SKILL.md`). Only the selected brief is installed, not
87
- the SDK or handbook. After choosing and installing an exact SDK version, read
88
- `node_modules/@aotter/mantle/skills/install/SKILL.md` and its embedded docs;
89
- that package supersedes the bootstrap Git-ref instructions. After packages are
90
- installed, `mantle skills` projects the installed package's own skills into the
91
- project, and `mantle skills --check` fails on drift.
33
+ The explicit skill name excludes repository maintainer skills. The manifests
34
+ are generated by `scripts/sync-plugin-manifests.mjs` and checked with `--check`.
35
+ When upgrading, update the marketplace ref or local tagged checkout and refresh
36
+ the plugin. Verify the loaded manifest version; Claude Code's plugin version
37
+ is Core's, so packaged skill changes reach users through the next Core release.
92
38
 
93
- Cursor and GitHub Copilot read their manifests from the repository directly.
94
- These manifests are not duplicated into the npm package:
39
+ ## Disclosure audit
95
40
 
96
- - Claude Code: `.claude-plugin/plugin.json` plus `.claude-plugin/marketplace.json`.
97
- - Codex: `.codex-plugin/plugin.json` plus `.agents/plugins/marketplace.json`.
98
- - Cursor: `.cursor-plugin/plugin.json`.
99
- - VS Code + GitHub Copilot: `.copilot-plugin/plugin.json`.
41
+ Every skill is one `SKILL.md`; the plugin skill carries local acceptance references.
42
+ `scripts/check-skills.mjs` holds this table, the front matter and the links to
43
+ each other: `metadata.projection` is `plugin` for `skills/mantle` and
44
+ `package` for `docs/skills/*`, a reason in the last column must equal
45
+ `metadata.projectionReason`, and a relative link must stay inside what ships
46
+ (the skill's own directory for the plugin, `docs/` for the package).
47
+
48
+ | Skill | Routes on | Entry constraints | Distribution | Restricted because |
49
+ |---|---|---|---|---|
50
+ | `mantle` | new project, existing project, self-host deployment | the installed package's docs win; never use the SDK checkout as the application; no deploy during a cold start | plugin | The plugin's authoring entry skill is installed from the repository; workflow documentation comes from the installed SDK package. |
51
+ | `develop` | manifest, SQL, handler, service or surface work | read the installed version first; never edit generated files; writes through Store/Procedures, richer reads through internal Views | package | — |
52
+ | `integrate` | an application with its own code, users or data | inspect before choosing; the application keeps its users; one writer per table | package | — |
53
+ | `update` | an SDK upgrade | never overwrite application files; 0.1.x moves by the upgrade guide to a new database | package | — |
54
+ | `provision` | ship to production | secrets never in source, chat or logs; a new database for 0.2; self-hosting is always an option | package | Creates remote resources and handles production secrets; opt-in only. |
55
+ | `media-gc` | stale R2 uploads | audit by default; exact keys only, never a prefix delete; re-audit before applying | package | Destructive remote object deletion and Cloudflare-specific; opt-in only. |
100
56
 
101
57
  ## Audience
102
58
 
103
- These are written for **AI agents acting on behalf of consumers of mantle**,
104
- not for contributors maintaining the Mantle SDK itself. SDK contributors use
105
- the repo-root `CONTRIBUTING.md`; it is intentionally not shipped inside the npm
106
- package. Two audiences, two artifacts.
107
-
108
- ## Discoverability
109
-
110
- The skills target ADR-0007's "AI as primary author" thesis: agents reach these files by URL when the user invokes them by intent ("install mantle", "develop my Mantle site", "deploy"). Official cold start is `npx skills add aotter/mantle`. Point the agent at the repository or pass the version-matched markdown content directly.
59
+ These are for **AI agents acting for consumers of Mantle**, not for
60
+ contributors to the SDK, who read the repository's `CONTRIBUTING.md`.
111
61
 
112
62
  ## Conventions
113
63
 
114
- Each SKILL.md ships:
115
-
116
- - **Front-matter** with a stable `name`, trigger-complete
117
- `description`, and optional source/version `metadata`. Plugin hosts add the
118
- external `mantle:` namespace.
119
- - **Preflight** section — environment + user-confirmation gates.
120
- - **Step-by-step** — concrete commands (`pnpm validate`, `mantle emit-openapi`, etc.).
121
- - **Diagnostic recipes** — `Symptom → Cause → Fix` table for the common failure modes.
122
- - **Don't** — reviewer-style list of patterns the agent must reject (often citing ADRs).
123
- - **When you're done** — what to report back to the user.
124
-
125
- If you're writing a new SKILL, follow the same structure. Commands and prose
126
- must match the package version that carries the skill; later prereleases may
127
- revise both together.
64
+ Each SKILL.md has front matter (`name`, a trigger-complete `description`,
65
+ `metadata.source`, `sourcePath`, `applies_to`, `projection`), the reads to do
66
+ first, concrete commands, the rules an agent must not break, and what to report
67
+ when done. Commands and prose match the package version that carries the skill.
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: mantle
3
+ description: Create, continue, test or deploy a Mantle application using installed @aotter/mantle docs, including manifests, SQL Views and Procedures, MCP tools, app-built Admin, mantle generate and Mantle upgrades.
4
+ metadata:
5
+ source: "@aotter/mantle"
6
+ sourcePath: skills/mantle/SKILL.md
7
+ applies_to: mantle 0.2
8
+ projection: plugin
9
+ projectionReason: The plugin's authoring entry skill is installed from the repository; workflow documentation comes from the installed SDK package.
10
+ ---
11
+
12
+ # Mantle
13
+
14
+ The Mantle plugin's one skill. It installs no SDK and creates nothing by
15
+ itself. Once a project has `@aotter/mantle`, the installed package is the
16
+ authority: `node_modules/@aotter/mantle/README.md` and
17
+ `node_modules/@aotter/mantle/docs/`. Prefer them over this file, the SDK
18
+ checkout, or any online copy.
19
+
20
+ ## Start with `mantle help`
21
+
22
+ Run `mantle help` first (in a project: `npx mantle help`; before one exists:
23
+ `npx @aotter/mantle@<exact version> help`). It prints the installed version's
24
+ entry page and every topic; `mantle help <topic>` prints one page with the next
25
+ and linked topics as commands. Follow it rather than browsing the SDK checkout
26
+ or an online copy.
27
+
28
+ ## Find the project and its version
29
+
30
+ Work in the user's application, outside the SDK checkout. Read package.json, the lockfile, installed SDK README and node_modules/@aotter/mantle/docs/. Those files define the exact version's contract. Preserve existing identity, handles, routes and resources.
31
+ For existing older applications, use their installed docs until the user requests an upgrade; if an older version
32
+ lacks a guide named here, record the missing guidance and keep that version's contract.
33
+
34
+ ## Choose the installed package skill
35
+
36
+ - Read `node_modules/@aotter/mantle/docs/skills/develop/SKILL.md` to change an existing project's manifests, SQL, handlers, service entry or surfaces.
37
+ - Read `node_modules/@aotter/mantle/docs/skills/integrate/SKILL.md` to add Mantle to an application with existing code, users or data.
38
+ - Read `node_modules/@aotter/mantle/docs/skills/update/SKILL.md` to upgrade Mantle, including from 0.1.x.
39
+ - Read `node_modules/@aotter/mantle/docs/skills/provision/SKILL.md` only for an authorized production deployment.
40
+ - Read `node_modules/@aotter/mantle/docs/skills/media-gc/SKILL.md` only to audit or remove stale uncommitted media uploads.
41
+
42
+ ## New application
43
+
44
+ Node must be 22.22 or newer. Create it with `npx @aotter/mantle@<exact version> init <directory>`, then follow
45
+ `mantle help` ("Build from a product brief") and the app's `README.md`. Without the user listing them, a complete app
46
+ includes:
47
+
48
+ - Email OTP sign-in, the two roles `admin` and `user`, Admin for `admin`, MCP for both roles (`/mcp`, `/mcp/admin`)
49
+ and REST: the shell already wires them; keep them.
50
+ - Real business rules in SQL Procedures (`mantle help sql-patterns`), not in handler code around separate writes.
51
+ - For visitor pages, everything in `mantle help public-pages` (SEO, AEO, sitemap, robots, `llms.txt`), styled.
52
+ - Local HTTP checks (`mantle help local-testing`), then independent acceptance with `pnpm accept`
53
+ (`mantle help agent-workflow-acceptance`).
54
+
55
+ Take patterns from `mantle help examples` into the app's own manifests and `src/`; do not copy an example directory
56
+ over the app. Resolve each `AGENT:` or name the ones you left. Generation only, inside an app you already have: skip
57
+ `init` and use `mantle generate` (`mantle help project-and-cli`).
58
+
59
+ ## Accept before reporting done
60
+
61
+ Before reporting any new app or feature as done, follow `mantle help agent-workflow-acceptance`: a private rubric,
62
+ then one fresh agent per role given only its role and the URLs `pnpm accept` prints, at most three rounds. If it was
63
+ not run, report the work as UNVERIFIED rather than done; if it could not run, BLOCKED.
64
+
65
+ ## Deployment
66
+
67
+ Deploy only when the user requests it, following the installed `docs/skills/provision/SKILL.md` and the selected
68
+ host's native workflow. Local project creation alone is not deployment authorization.
69
+
70
+ ## Existing project and handoff
71
+
72
+ Preserve the user's manifests, `src/` files, identity, package versions and provider resources. Run the project's
73
+ generate command with `--check` and its own tests before and after a change.
74
+
75
+ Report the project path, the exact Mantle version, what you changed, the checks you ran with their results, the
76
+ independent acceptance verdict (CONVERGED / BLOCKED / UNVERIFIED), and anything left for the user.
@@ -1,2 +0,0 @@
1
- export * from "@aotter/mantle-admin-ui";
2
- //# sourceMappingURL=admin-ui.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin-ui.d.ts","sourceRoot":"","sources":["../src/admin-ui.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
package/dist/admin-ui.js DELETED
@@ -1,2 +0,0 @@
1
- export * from "@aotter/mantle-admin-ui";
2
- //# sourceMappingURL=admin-ui.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin-ui.js","sourceRoot":"","sources":["../src/admin-ui.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
package/dist/admin.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from "@aotter/mantle-admin";
2
- //# sourceMappingURL=admin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
package/dist/admin.js DELETED
@@ -1,2 +0,0 @@
1
- export * from "@aotter/mantle-admin";
2
- //# sourceMappingURL=admin.js.map
package/dist/admin.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin.js","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
package/dist/auth.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from "@aotter/mantle-auth";
2
- //# sourceMappingURL=auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
package/dist/auth.js DELETED
@@ -1,2 +0,0 @@
1
- export * from "@aotter/mantle-auth";
2
- //# sourceMappingURL=auth.js.map
package/dist/auth.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
package/dist/bun.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from "@aotter/mantle-bun";
2
- //# sourceMappingURL=bun.d.ts.map
package/dist/bun.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bun.d.ts","sourceRoot":"","sources":["../src/bun.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
package/dist/bun.js DELETED
@@ -1,2 +0,0 @@
1
- export * from "@aotter/mantle-bun";
2
- //# sourceMappingURL=bun.js.map
package/dist/bun.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bun.js","sourceRoot":"","sources":["../src/bun.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -1,7 +0,0 @@
1
- import { type ProjectSelection } from "./generate-project.js";
2
- /** Prepare all paths before the caller commits any project files. */
3
- export declare function prepareCloudflare(root: string, output: string, selection: ProjectSelection, fresh: boolean): Promise<{
4
- readonly stale: boolean;
5
- readonly commit: () => Promise<void>;
6
- }>;
7
- //# sourceMappingURL=generate-cloudflare.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-cloudflare.d.ts","sourceRoot":"","sources":["../../src/cli/generate-cloudflare.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAInF,qEAAqE;AACrE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IAC1H,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC,CAAC,CAuFD"}