@noodleseed/one 0.8.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +16 -4
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/archive-ops.d.ts +3 -0
  5. package/dist/commands/archive-ops.d.ts.map +1 -0
  6. package/dist/commands/archive-ops.js +168 -0
  7. package/dist/commands/archive-ops.js.map +1 -0
  8. package/dist/commands/author-loop.d.ts.map +1 -1
  9. package/dist/commands/author-loop.js +78 -3
  10. package/dist/commands/author-loop.js.map +1 -1
  11. package/dist/commands/deploy-ops.d.ts +1 -30
  12. package/dist/commands/deploy-ops.d.ts.map +1 -1
  13. package/dist/commands/deploy-ops.js +55 -87
  14. package/dist/commands/deploy-ops.js.map +1 -1
  15. package/dist/commands/deploy-output.d.ts +31 -0
  16. package/dist/commands/deploy-output.d.ts.map +1 -0
  17. package/dist/commands/deploy-output.js +86 -0
  18. package/dist/commands/deploy-output.js.map +1 -0
  19. package/dist/commands/deploy-version-resolution.d.ts +20 -0
  20. package/dist/commands/deploy-version-resolution.d.ts.map +1 -0
  21. package/dist/commands/deploy-version-resolution.js +77 -0
  22. package/dist/commands/deploy-version-resolution.js.map +1 -0
  23. package/dist/commands/docs-mcp.d.ts +32 -0
  24. package/dist/commands/docs-mcp.d.ts.map +1 -0
  25. package/dist/commands/docs-mcp.js +66 -0
  26. package/dist/commands/docs-mcp.js.map +1 -0
  27. package/dist/commands/mcp-apps.d.ts.map +1 -1
  28. package/dist/commands/mcp-apps.js +38 -37
  29. package/dist/commands/mcp-apps.js.map +1 -1
  30. package/dist/commands/org-admin.d.ts +17 -0
  31. package/dist/commands/org-admin.d.ts.map +1 -0
  32. package/dist/commands/org-admin.js +241 -0
  33. package/dist/commands/org-admin.js.map +1 -0
  34. package/dist/commands/policy-ops.d.ts.map +1 -1
  35. package/dist/commands/policy-ops.js +94 -1
  36. package/dist/commands/policy-ops.js.map +1 -1
  37. package/dist/commands/project-setup.d.ts.map +1 -1
  38. package/dist/commands/project-setup.js +29 -0
  39. package/dist/commands/project-setup.js.map +1 -1
  40. package/dist/commands/session.d.ts +1 -15
  41. package/dist/commands/session.d.ts.map +1 -1
  42. package/dist/commands/session.js +15 -170
  43. package/dist/commands/session.js.map +1 -1
  44. package/dist/commands/shared.d.ts +1 -0
  45. package/dist/commands/shared.d.ts.map +1 -1
  46. package/dist/commands/shared.js +21 -9
  47. package/dist/commands/shared.js.map +1 -1
  48. package/dist/commands/update-ops.d.ts +29 -0
  49. package/dist/commands/update-ops.d.ts.map +1 -0
  50. package/dist/commands/update-ops.js +315 -0
  51. package/dist/commands/update-ops.js.map +1 -0
  52. package/dist/config.d.ts +2 -0
  53. package/dist/config.d.ts.map +1 -1
  54. package/dist/config.js.map +1 -1
  55. package/dist/deploy-version.d.ts +3 -0
  56. package/dist/deploy-version.d.ts.map +1 -0
  57. package/dist/deploy-version.js +28 -0
  58. package/dist/deploy-version.js.map +1 -0
  59. package/dist/deploy.d.ts +5 -1
  60. package/dist/deploy.d.ts.map +1 -1
  61. package/dist/deploy.js +27 -3
  62. package/dist/deploy.js.map +1 -1
  63. package/dist/devtools-chat.d.ts +76 -0
  64. package/dist/devtools-chat.d.ts.map +1 -0
  65. package/dist/devtools-chat.js +114 -0
  66. package/dist/devtools-chat.js.map +1 -0
  67. package/dist/devtools-env.d.ts +16 -0
  68. package/dist/devtools-env.d.ts.map +1 -0
  69. package/dist/devtools-env.js +71 -0
  70. package/dist/devtools-env.js.map +1 -0
  71. package/dist/devtools-harness.d.ts +28 -0
  72. package/dist/devtools-harness.d.ts.map +1 -0
  73. package/dist/devtools-harness.js +387 -0
  74. package/dist/devtools-harness.js.map +1 -0
  75. package/dist/devtools-preview.d.ts +42 -0
  76. package/dist/devtools-preview.d.ts.map +1 -0
  77. package/dist/devtools-preview.js +394 -0
  78. package/dist/devtools-preview.js.map +1 -0
  79. package/dist/preview-session.d.ts +46 -0
  80. package/dist/preview-session.d.ts.map +1 -0
  81. package/dist/preview-session.js +132 -0
  82. package/dist/preview-session.js.map +1 -0
  83. package/dist/project.d.ts +2 -0
  84. package/dist/project.d.ts.map +1 -1
  85. package/dist/project.js +2 -0
  86. package/dist/project.js.map +1 -1
  87. package/dist/react-widget-build.js +3 -1
  88. package/dist/react-widget-build.js.map +1 -1
  89. package/dist/update-binary.d.ts +38 -0
  90. package/dist/update-binary.d.ts.map +1 -0
  91. package/dist/update-binary.js +144 -0
  92. package/dist/update-binary.js.map +1 -0
  93. package/dist/update-check.d.ts +40 -0
  94. package/dist/update-check.d.ts.map +1 -0
  95. package/dist/update-check.js +212 -0
  96. package/dist/update-check.js.map +1 -0
  97. package/dist/update-render.d.ts +17 -0
  98. package/dist/update-render.d.ts.map +1 -0
  99. package/dist/update-render.js +39 -0
  100. package/dist/update-render.js.map +1 -0
  101. package/dist/update.d.ts +10 -9
  102. package/dist/update.d.ts.map +1 -1
  103. package/dist/update.js +21 -89
  104. package/dist/update.js.map +1 -1
  105. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
  106. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +13 -1
  107. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
  108. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  109. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +2 -0
  110. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  111. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  112. package/node_modules/@noodle-borg/connector-defs/dist/compile-expr.d.ts +23 -0
  113. package/node_modules/@noodle-borg/connector-defs/dist/compile-expr.d.ts.map +1 -0
  114. package/node_modules/@noodle-borg/connector-defs/dist/compile-expr.js +41 -0
  115. package/node_modules/@noodle-borg/connector-defs/dist/compile-expr.js.map +1 -0
  116. package/node_modules/@noodle-borg/connector-defs/dist/compile.d.ts +2 -6
  117. package/node_modules/@noodle-borg/connector-defs/dist/compile.d.ts.map +1 -1
  118. package/node_modules/@noodle-borg/connector-defs/dist/compile.js +10 -32
  119. package/node_modules/@noodle-borg/connector-defs/dist/compile.js.map +1 -1
  120. package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts +16 -0
  121. package/node_modules/@noodle-borg/connector-defs/dist/schema.d.ts.map +1 -1
  122. package/node_modules/@noodle-borg/connector-defs/dist/schema.js +6 -0
  123. package/node_modules/@noodle-borg/connector-defs/dist/schema.js.map +1 -1
  124. package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts +7 -0
  125. package/node_modules/@noodle-borg/connector-http/dist/http-connector.d.ts.map +1 -1
  126. package/node_modules/@noodle-borg/connector-http/dist/http-connector.js +14 -5
  127. package/node_modules/@noodle-borg/connector-http/dist/http-connector.js.map +1 -1
  128. package/node_modules/@noodle-borg/module/dist/contract.d.ts +12 -0
  129. package/node_modules/@noodle-borg/module/dist/contract.d.ts.map +1 -1
  130. package/node_modules/@noodle-borg/module/dist/contract.js +41 -0
  131. package/node_modules/@noodle-borg/module/dist/contract.js.map +1 -1
  132. package/node_modules/@noodle-borg/service/dist/archive-sweeper.d.ts +43 -0
  133. package/node_modules/@noodle-borg/service/dist/archive-sweeper.d.ts.map +1 -0
  134. package/node_modules/@noodle-borg/service/dist/archive-sweeper.js +122 -0
  135. package/node_modules/@noodle-borg/service/dist/archive-sweeper.js.map +1 -0
  136. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts +20 -2
  137. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts.map +1 -1
  138. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js +37 -2
  139. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js.map +1 -1
  140. package/node_modules/@noodle-borg/service/dist/commercial-plans.d.ts +11 -0
  141. package/node_modules/@noodle-borg/service/dist/commercial-plans.d.ts.map +1 -0
  142. package/node_modules/@noodle-borg/service/dist/commercial-plans.js +119 -0
  143. package/node_modules/@noodle-borg/service/dist/commercial-plans.js.map +1 -0
  144. package/node_modules/@noodle-borg/service/dist/deployment-versioning.d.ts +20 -0
  145. package/node_modules/@noodle-borg/service/dist/deployment-versioning.d.ts.map +1 -0
  146. package/node_modules/@noodle-borg/service/dist/deployment-versioning.js +29 -0
  147. package/node_modules/@noodle-borg/service/dist/deployment-versioning.js.map +1 -0
  148. package/node_modules/@noodle-borg/service/dist/index.d.ts +3 -1
  149. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  150. package/node_modules/@noodle-borg/service/dist/index.js +2 -0
  151. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  152. package/node_modules/@noodle-borg/service/dist/main.js +7 -0
  153. package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
  154. package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts.map +1 -1
  155. package/node_modules/@noodle-borg/service/dist/oauth/app.js +2 -1
  156. package/node_modules/@noodle-borg/service/dist/oauth/app.js.map +1 -1
  157. package/node_modules/@noodle-borg/service/dist/oauth/branding.d.ts +30 -0
  158. package/node_modules/@noodle-borg/service/dist/oauth/branding.d.ts.map +1 -0
  159. package/node_modules/@noodle-borg/service/dist/oauth/branding.js +224 -0
  160. package/node_modules/@noodle-borg/service/dist/oauth/branding.js.map +1 -0
  161. package/node_modules/@noodle-borg/service/dist/oauth/consent.d.ts +0 -6
  162. package/node_modules/@noodle-borg/service/dist/oauth/consent.d.ts.map +1 -1
  163. package/node_modules/@noodle-borg/service/dist/oauth/consent.js +23 -34
  164. package/node_modules/@noodle-borg/service/dist/oauth/consent.js.map +1 -1
  165. package/node_modules/@noodle-borg/service/dist/oauth/customer-bridge.d.ts.map +1 -1
  166. package/node_modules/@noodle-borg/service/dist/oauth/customer-bridge.js +13 -28
  167. package/node_modules/@noodle-borg/service/dist/oauth/customer-bridge.js.map +1 -1
  168. package/node_modules/@noodle-borg/service/dist/options.d.ts +9 -0
  169. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  170. package/node_modules/@noodle-borg/service/dist/registry-helpers.d.ts +1 -1
  171. package/node_modules/@noodle-borg/service/dist/registry-helpers.d.ts.map +1 -1
  172. package/node_modules/@noodle-borg/service/dist/registry-helpers.js +5 -3
  173. package/node_modules/@noodle-borg/service/dist/registry-helpers.js.map +1 -1
  174. package/node_modules/@noodle-borg/service/dist/registry-state.d.ts +25 -0
  175. package/node_modules/@noodle-borg/service/dist/registry-state.d.ts.map +1 -0
  176. package/node_modules/@noodle-borg/service/dist/registry-state.js +119 -0
  177. package/node_modules/@noodle-borg/service/dist/registry-state.js.map +1 -0
  178. package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts +1 -0
  179. package/node_modules/@noodle-borg/service/dist/registry-targets.d.ts.map +1 -1
  180. package/node_modules/@noodle-borg/service/dist/registry-targets.js +4 -0
  181. package/node_modules/@noodle-borg/service/dist/registry-targets.js.map +1 -1
  182. package/node_modules/@noodle-borg/service/dist/registry-types.d.ts +59 -0
  183. package/node_modules/@noodle-borg/service/dist/registry-types.d.ts.map +1 -0
  184. package/node_modules/@noodle-borg/service/dist/registry-types.js +2 -0
  185. package/node_modules/@noodle-borg/service/dist/registry-types.js.map +1 -0
  186. package/node_modules/@noodle-borg/service/dist/registry.d.ts +14 -70
  187. package/node_modules/@noodle-borg/service/dist/registry.d.ts.map +1 -1
  188. package/node_modules/@noodle-borg/service/dist/registry.js +137 -119
  189. package/node_modules/@noodle-borg/service/dist/registry.js.map +1 -1
  190. package/node_modules/@noodle-borg/service/dist/routes/access-mode.d.ts +4 -0
  191. package/node_modules/@noodle-borg/service/dist/routes/access-mode.d.ts.map +1 -0
  192. package/node_modules/@noodle-borg/service/dist/routes/access-mode.js +15 -0
  193. package/node_modules/@noodle-borg/service/dist/routes/access-mode.js.map +1 -0
  194. package/node_modules/@noodle-borg/service/dist/routes/archive.d.ts +16 -0
  195. package/node_modules/@noodle-borg/service/dist/routes/archive.d.ts.map +1 -0
  196. package/node_modules/@noodle-borg/service/dist/routes/archive.js +83 -0
  197. package/node_modules/@noodle-borg/service/dist/routes/archive.js.map +1 -0
  198. package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts +2 -19
  199. package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts.map +1 -1
  200. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +52 -281
  201. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
  202. package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts +17 -0
  203. package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts.map +1 -0
  204. package/node_modules/@noodle-borg/service/dist/routes/deployments.js +88 -0
  205. package/node_modules/@noodle-borg/service/dist/routes/deployments.js.map +1 -0
  206. package/node_modules/@noodle-borg/service/dist/routes/org-admin.d.ts +40 -0
  207. package/node_modules/@noodle-borg/service/dist/routes/org-admin.d.ts.map +1 -0
  208. package/node_modules/@noodle-borg/service/dist/routes/org-admin.js +353 -0
  209. package/node_modules/@noodle-borg/service/dist/routes/org-admin.js.map +1 -0
  210. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +15 -0
  211. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
  212. package/node_modules/@noodle-borg/service/dist/routes/paths.js +47 -0
  213. package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
  214. package/node_modules/@noodle-borg/service/dist/routes/plans.d.ts +20 -0
  215. package/node_modules/@noodle-borg/service/dist/routes/plans.d.ts.map +1 -0
  216. package/node_modules/@noodle-borg/service/dist/routes/plans.js +159 -0
  217. package/node_modules/@noodle-borg/service/dist/routes/plans.js.map +1 -0
  218. package/node_modules/@noodle-borg/service/dist/routes/policies.d.ts.map +1 -1
  219. package/node_modules/@noodle-borg/service/dist/routes/policies.js +7 -0
  220. package/node_modules/@noodle-borg/service/dist/routes/policies.js.map +1 -1
  221. package/node_modules/@noodle-borg/service/dist/routes/rollback.d.ts.map +1 -1
  222. package/node_modules/@noodle-borg/service/dist/routes/rollback.js +23 -7
  223. package/node_modules/@noodle-borg/service/dist/routes/rollback.js.map +1 -1
  224. package/node_modules/@noodle-borg/service/dist/serve.d.ts +6 -0
  225. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  226. package/node_modules/@noodle-borg/service/dist/serve.js +72 -32
  227. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  228. package/node_modules/@noodle-borg/service/dist/server-auth-bindings.d.ts +7 -0
  229. package/node_modules/@noodle-borg/service/dist/server-auth-bindings.d.ts.map +1 -0
  230. package/node_modules/@noodle-borg/service/dist/server-auth-bindings.js +14 -0
  231. package/node_modules/@noodle-borg/service/dist/server-auth-bindings.js.map +1 -0
  232. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  233. package/node_modules/@noodle-borg/service/dist/service.js +139 -7
  234. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  235. package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts +14 -0
  236. package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts.map +1 -1
  237. package/node_modules/@noodle-borg/service/dist/store/control-plane.js +38 -0
  238. package/node_modules/@noodle-borg/service/dist/store/control-plane.js.map +1 -1
  239. package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts +25 -0
  240. package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts.map +1 -0
  241. package/node_modules/@noodle-borg/service/dist/store/json-file.js +163 -0
  242. package/node_modules/@noodle-borg/service/dist/store/json-file.js.map +1 -0
  243. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts +14 -0
  244. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts.map +1 -1
  245. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js +16 -0
  246. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js.map +1 -1
  247. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.d.ts +60 -0
  248. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.d.ts.map +1 -0
  249. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js +101 -0
  250. package/node_modules/@noodle-borg/service/dist/store/postgres-rows.js.map +1 -0
  251. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
  252. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +21 -2
  253. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
  254. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +23 -8
  255. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
  256. package/node_modules/@noodle-borg/service/dist/store/postgres.js +112 -128
  257. package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
  258. package/node_modules/@noodle-borg/service/dist/store/records.d.ts +35 -0
  259. package/node_modules/@noodle-borg/service/dist/store/records.d.ts.map +1 -0
  260. package/node_modules/@noodle-borg/service/dist/store/records.js +87 -0
  261. package/node_modules/@noodle-borg/service/dist/store/records.js.map +1 -0
  262. package/node_modules/@noodle-borg/service/dist/store/validate.d.ts +19 -0
  263. package/node_modules/@noodle-borg/service/dist/store/validate.d.ts.map +1 -0
  264. package/node_modules/@noodle-borg/service/dist/store/validate.js +61 -0
  265. package/node_modules/@noodle-borg/service/dist/store/validate.js.map +1 -0
  266. package/node_modules/@noodle-borg/service/dist/store.d.ts +75 -45
  267. package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
  268. package/node_modules/@noodle-borg/service/dist/store.js +61 -224
  269. package/node_modules/@noodle-borg/service/dist/store.js.map +1 -1
  270. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +1 -0
  271. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts.map +1 -1
  272. package/node_modules/@noodle-borg/transport-http/dist/handler.js +37 -0
  273. package/node_modules/@noodle-borg/transport-http/dist/handler.js.map +1 -1
  274. package/node_modules/@noodle-borg/transport-http/dist/index.d.ts +1 -1
  275. package/node_modules/@noodle-borg/transport-http/dist/index.d.ts.map +1 -1
  276. package/node_modules/@noodle-borg/transport-http/dist/index.js.map +1 -1
  277. package/package.json +3 -2
@@ -1,7 +1,11 @@
1
+ import { normalizeServerVersion } from '@noodle-borg/module';
2
+ import { defaultActiveRecord } from '../deployment-versioning.js';
1
3
  import { DEPLOYMENT_ID_PATTERN, scopeChain, validateConfigName, validateConfigScope, validateSlug, validateTenantRef, } from '../store.js';
2
- import { addOrgMemberRow, allowSignupRow, consumeOrgInvitationRow, createOrgDomainChallengeRow, createOrgInvitationRow, createOrgRow, getOrgInvitationRow, getOrgMemberRow, hasVerifiedOrgDomainMembership, isOrgMemberRow, isSignupAllowedByRows, listOrgDomainRows, listOrgMemberRows, listOrgRows, listOrgRowsForSubject, listSignupAllowlistRows, markOrgDomainVerificationRow, removeOrgMemberRow, } from './postgres-control-plane.js';
4
+ import { addOrgMemberRow, allowSignupRow, consumeOrgInvitationRow, createOrgDomainChallengeRow, createOrgInvitationRow, createOrgRow, getOrgInvitationRow, getOrgMemberRow, hasVerifiedOrgDomainMembership, isOrgMemberRow, isSignupAllowedByRows, listOrgDomainRows, listOrgInvitationRows, listOrgMemberRows, listOrgRows, listOrgRowsForSubject, listSignupAllowlistRows, markOrgDomainVerificationRow, removeOrgMemberRow, revokeOrgInvitationRows, updateOrgMemberRoleRow, updateOrgRow, } from './postgres-control-plane.js';
3
5
  import { deletePolicyAssignmentRow, getPolicyAssignmentRow, listActivePolicyAssignmentRows, listPolicyAssignmentHistoryRows, listPolicyAssignmentRows, putPolicyAssignmentRow, } from './postgres-policy.js';
6
+ import { configRowToMetadata, isPostgresStoreOptions, openConfigSecret, rowToRecord, scopeParts, sealConfigSecret, validateConfigKind, } from './postgres-rows.js';
4
7
  import { ensureArtifactSchema } from './postgres-schema.js';
8
+ import { deploymentSummary, validateDeploymentListFilter } from './records.js';
5
9
  export class PostgresArtifactStore {
6
10
  #pool;
7
11
  #secretBox;
@@ -62,18 +66,22 @@ export class PostgresArtifactStore {
62
66
  if (record.active) {
63
67
  await client.query(`UPDATE deploy_records
64
68
  SET active = false
65
- WHERE org_slug = $1 AND app_slug = $2 AND environment = $3`, [record.orgSlug, record.appSlug, record.environment]);
69
+ WHERE org_slug = $1
70
+ AND app_slug = $2
71
+ AND environment = $3
72
+ AND server_version IS NOT DISTINCT FROM $4`, [record.orgSlug, record.appSlug, record.environment, record.serverVersion ?? null]);
66
73
  }
67
74
  // Upsert: a record is immutable per minted id, but ON CONFLICT keeps `append` idempotent under retries.
68
75
  await client.query(`INSERT INTO deploy_records
69
- (deployment_id, org_slug, app_slug, environment, deployment_version, active, server_name,
76
+ (deployment_id, org_slug, app_slug, environment, server_version, deployment_version, active, server_name,
70
77
  created_at, created_by_subject, created_by_email, access_mode, server_auth, caller_key_hash,
71
- manifest, connectors, hosted_assets, secrets, schema_version)
72
- VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12::jsonb, $13, $14, $15, $16::jsonb, $17::jsonb, $18)
78
+ manifest, connectors, hosted_assets, secrets, schema_version, archived_at)
79
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13::jsonb, $14, $15, $16, $17::jsonb, $18::jsonb, $19, $20::timestamptz)
73
80
  ON CONFLICT (deployment_id) DO UPDATE SET
74
81
  org_slug = EXCLUDED.org_slug,
75
82
  app_slug = EXCLUDED.app_slug,
76
83
  environment = EXCLUDED.environment,
84
+ server_version = EXCLUDED.server_version,
77
85
  deployment_version = EXCLUDED.deployment_version,
78
86
  active = EXCLUDED.active,
79
87
  server_name = EXCLUDED.server_name,
@@ -87,11 +95,13 @@ export class PostgresArtifactStore {
87
95
  connectors = EXCLUDED.connectors,
88
96
  hosted_assets = EXCLUDED.hosted_assets,
89
97
  secrets = EXCLUDED.secrets,
90
- schema_version = EXCLUDED.schema_version`, [
98
+ schema_version = EXCLUDED.schema_version,
99
+ archived_at = EXCLUDED.archived_at`, [
91
100
  record.deploymentId,
92
101
  record.orgSlug,
93
102
  record.appSlug,
94
103
  record.environment,
104
+ record.serverVersion ?? null,
95
105
  record.deploymentVersion,
96
106
  record.active,
97
107
  record.serverName,
@@ -109,6 +119,7 @@ export class PostgresArtifactStore {
109
119
  : null,
110
120
  JSON.stringify(record.secrets),
111
121
  record.schemaVersion,
122
+ record.archivedAt ?? null,
112
123
  ]);
113
124
  await client.query('COMMIT');
114
125
  }
@@ -130,14 +141,31 @@ export class PostgresArtifactStore {
130
141
  const { rows } = await this.#pool.query(`SELECT *
131
142
  FROM deploy_records
132
143
  WHERE org_slug = $1 AND app_slug = $2 AND environment = $3 AND active = true
144
+ AND archived_at IS NULL
145
+ ORDER BY deployment_version DESC`, [safe.org, safe.app, safe.env]);
146
+ return defaultActiveRecord(rows.map(rowToRecord), safe);
147
+ }
148
+ async getActiveByTenantVersion(ref, serverVersion) {
149
+ const safe = validateTenantRef(ref);
150
+ const safeVersion = normalizeServerVersion(serverVersion);
151
+ const { rows } = await this.#pool.query(`SELECT *
152
+ FROM deploy_records
153
+ WHERE org_slug = $1
154
+ AND app_slug = $2
155
+ AND environment = $3
156
+ AND server_version = $4
157
+ AND active = true
158
+ AND archived_at IS NULL
133
159
  ORDER BY deployment_version DESC
134
- LIMIT 1`, [safe.org, safe.app, safe.env]);
160
+ LIMIT 1`, [safe.org, safe.app, safe.env, safeVersion]);
135
161
  const row = rows[0];
136
162
  return row ? rowToRecord(row) : undefined;
137
163
  }
138
- async updateActiveAccess(ref, accessMode) {
164
+ async updateActiveAccess(ref, accessMode, serverVersion) {
139
165
  const safe = validateTenantRef(ref);
140
- const current = await this.getActiveByTenant(safe);
166
+ const current = serverVersion === undefined
167
+ ? await this.getActiveByTenant(safe)
168
+ : await this.getActiveByTenantVersion(safe, serverVersion);
141
169
  if (current === undefined)
142
170
  return undefined;
143
171
  const updated = { ...current, accessMode };
@@ -165,16 +193,24 @@ export class PostgresArtifactStore {
165
193
  }
166
194
  const { rows: activeRows } = await client.query(`SELECT *
167
195
  FROM deploy_records
168
- WHERE org_slug = $1 AND app_slug = $2 AND environment = $3 AND active = true
196
+ WHERE org_slug = $1
197
+ AND app_slug = $2
198
+ AND environment = $3
199
+ AND active = true
200
+ AND server_version IS NOT DISTINCT FROM $4
169
201
  ORDER BY deployment_version DESC
170
202
  LIMIT 1
171
- FOR UPDATE`, [safe.org, safe.app, safe.env]);
203
+ FOR UPDATE`, [safe.org, safe.app, safe.env, target.server_version]);
172
204
  const previousActive = activeRows[0] ? rowToRecord(activeRows[0]) : undefined;
173
205
  const alreadyActive = previousActive?.deploymentId === deploymentId;
174
206
  if (!alreadyActive) {
175
207
  await client.query(`UPDATE deploy_records
176
208
  SET active = false
177
- WHERE org_slug = $1 AND app_slug = $2 AND environment = $3 AND active = true`, [safe.org, safe.app, safe.env]);
209
+ WHERE org_slug = $1
210
+ AND app_slug = $2
211
+ AND environment = $3
212
+ AND active = true
213
+ AND server_version IS NOT DISTINCT FROM $4`, [safe.org, safe.app, safe.env, target.server_version]);
178
214
  await client.query('UPDATE deploy_records SET active = true WHERE deployment_id = $1', [
179
215
  deploymentId,
180
216
  ]);
@@ -199,25 +235,70 @@ export class PostgresArtifactStore {
199
235
  return rows.map(rowToRecord);
200
236
  }
201
237
  async listDeployments(filter) {
202
- const org = validateSlug('org', filter.org);
203
- const app = filter.app !== undefined ? validateSlug('app', filter.app) : undefined;
204
- const env = filter.env !== undefined ? validateSlug('env', filter.env) : undefined;
238
+ const safe = validateDeploymentListFilter(filter);
205
239
  const clauses = ['org_slug = $1'];
206
- const values = [org];
207
- if (app !== undefined) {
208
- values.push(app);
240
+ const values = [safe.org];
241
+ if (safe.app !== undefined) {
242
+ values.push(safe.app);
209
243
  clauses.push(`app_slug = $${values.length}`);
210
244
  }
211
- if (env !== undefined) {
212
- values.push(env);
245
+ if (safe.env !== undefined) {
246
+ values.push(safe.env);
213
247
  clauses.push(`environment = $${values.length}`);
214
248
  }
249
+ if (safe.includeArchived !== true)
250
+ clauses.push('archived_at IS NULL');
215
251
  const { rows } = await this.#pool.query(`SELECT *
216
252
  FROM deploy_records
217
253
  WHERE ${clauses.join(' AND ')}
218
254
  ORDER BY deployment_version DESC`, values);
219
255
  return rows.map((row) => deploymentSummary(rowToRecord(row)));
220
256
  }
257
+ async getAppArchivedAt(org, app) {
258
+ const { rows } = await this.#pool.query(`SELECT count(*)::int AS total, count(archived_at)::int AS archived, max(archived_at) AS latest
259
+ FROM deploy_records
260
+ WHERE org_slug = $1 AND app_slug = $2`, [validateSlug('org', org), validateSlug('app', app)]);
261
+ const row = rows[0];
262
+ if (row === undefined || row.total === 0 || row.archived !== row.total || row.latest === null) {
263
+ return undefined;
264
+ }
265
+ return new Date(row.latest).toISOString();
266
+ }
267
+ async archiveApp(org, app, at) {
268
+ const safeOrg = validateSlug('org', org);
269
+ const safeApp = validateSlug('app', app);
270
+ const { rowCount } = await this.#pool.query(`UPDATE deploy_records
271
+ SET archived_at = $3::timestamptz
272
+ WHERE org_slug = $1 AND app_slug = $2 AND archived_at IS NULL`, [safeOrg, safeApp, at]);
273
+ const archivedDeployments = rowCount ?? 0;
274
+ if (archivedDeployments > 0) {
275
+ return { archivedAt: at, archivedDeployments, alreadyArchived: false };
276
+ }
277
+ // Nothing stamped: either the app is already fully archived (no-op, original stamp preserved so
278
+ // the retention clock never resets — ADR 0117 §5) or it has no records at all.
279
+ const existing = await this.getAppArchivedAt(safeOrg, safeApp);
280
+ if (existing === undefined)
281
+ return undefined;
282
+ return { archivedAt: existing, archivedDeployments: 0, alreadyArchived: true };
283
+ }
284
+ async restoreApp(org, app) {
285
+ const safeOrg = validateSlug('org', org);
286
+ const safeApp = validateSlug('app', app);
287
+ const { rowCount } = await this.#pool.query(`UPDATE deploy_records
288
+ SET archived_at = NULL
289
+ WHERE org_slug = $1 AND app_slug = $2 AND archived_at IS NOT NULL`, [safeOrg, safeApp]);
290
+ const restoredDeployments = rowCount ?? 0;
291
+ if (restoredDeployments > 0)
292
+ return { restoredDeployments };
293
+ const { rows } = await this.#pool.query(`SELECT count(*)::int AS total FROM deploy_records WHERE org_slug = $1 AND app_slug = $2`, [safeOrg, safeApp]);
294
+ return (rows[0]?.total ?? 0) > 0 ? { restoredDeployments: 0 } : undefined;
295
+ }
296
+ async sweepArchived(before) {
297
+ const { rows } = await this.#pool.query(`DELETE FROM deploy_records
298
+ WHERE archived_at IS NOT NULL AND archived_at < $1::timestamptz
299
+ RETURNING *`, [before]);
300
+ return rows.map(rowToRecord);
301
+ }
221
302
  async setConfigValue(input) {
222
303
  const kind = validateConfigKind(input.kind);
223
304
  const scope = validateConfigScope(input.scope);
@@ -294,6 +375,9 @@ export class PostgresArtifactStore {
294
375
  async createOrg(input) {
295
376
  return createOrgRow(this.#pool, input);
296
377
  }
378
+ async updateOrg(input) {
379
+ return updateOrgRow(this.#pool, input);
380
+ }
297
381
  async listOrgs() {
298
382
  return listOrgRows(this.#pool);
299
383
  }
@@ -306,6 +390,9 @@ export class PostgresArtifactStore {
306
390
  async removeOrgMember(input) {
307
391
  return removeOrgMemberRow(this.#pool, input);
308
392
  }
393
+ async updateOrgMemberRole(input) {
394
+ return updateOrgMemberRoleRow(this.#pool, input);
395
+ }
309
396
  async getOrgMember(input) {
310
397
  return getOrgMemberRow(this.#pool, input);
311
398
  }
@@ -351,114 +438,11 @@ export class PostgresArtifactStore {
351
438
  async consumeOrgInvitation(input) {
352
439
  return consumeOrgInvitationRow(this.#pool, this.#now, input);
353
440
  }
354
- }
355
- function rowToRecord(row) {
356
- return {
357
- schemaVersion: row.schema_version,
358
- deploymentId: row.deployment_id,
359
- orgSlug: row.org_slug,
360
- appSlug: row.app_slug,
361
- environment: row.environment,
362
- // `Date.now()` ms timestamps fit JS's safe-integer range, so the bigint string coerces losslessly.
363
- deploymentVersion: Number(row.deployment_version),
364
- active: row.active,
365
- serverName: row.server_name,
366
- // timestamptz → the canonical ISO-8601 string the rest of the system uses.
367
- createdAt: new Date(row.created_at).toISOString(),
368
- ...(row.created_by_subject !== null ? { createdBySubject: row.created_by_subject } : {}),
369
- ...(row.created_by_email !== null ? { createdByEmail: row.created_by_email } : {}),
370
- ...(row.access_mode === 'owner-only' ||
371
- row.access_mode === 'org-members' ||
372
- row.access_mode === 'public' ||
373
- row.access_mode === 'mixed' ||
374
- row.access_mode === 'authenticated' ||
375
- row.access_mode === 'customers'
376
- ? { accessMode: row.access_mode }
377
- : {}),
378
- ...(isTenantAuthConfig(row.server_auth) ? { serverAuth: row.server_auth } : {}),
379
- manifest: row.manifest,
380
- ...(row.connectors !== null ? { connectors: row.connectors } : {}),
381
- ...(row.hosted_assets !== null ? { hostedAssets: row.hosted_assets } : {}),
382
- secrets: row.secrets,
383
- };
384
- }
385
- function configRowToMetadata(row) {
386
- return {
387
- kind: validateConfigKind(row.kind),
388
- scope: rowToScope(row),
389
- name: row.name,
390
- updatedAt: new Date(row.updated_at).toISOString(),
391
- ...(row.updated_by_subject !== null ? { updatedBySubject: row.updated_by_subject } : {}),
392
- ...(row.updated_by_email !== null ? { updatedByEmail: row.updated_by_email } : {}),
393
- ...(row.kind === 'variable' && row.variable_value !== null
394
- ? { value: row.variable_value }
395
- : {}),
396
- };
397
- }
398
- function isTenantAuthConfig(value) {
399
- if (typeof value !== 'object' || value === null)
400
- return false;
401
- const auth = value;
402
- if (auth.kind === 'bridge')
403
- return typeof auth.provider === 'string';
404
- return typeof auth.issuer === 'string' && typeof auth.audience === 'string';
405
- }
406
- function validateConfigKind(kind) {
407
- if (kind !== 'secret' && kind !== 'variable')
408
- throw new Error(`invalid config kind: ${kind}`);
409
- return kind;
410
- }
411
- function scopeParts(scope) {
412
- if (scope.level === 'org')
413
- return { level: 'org', org: scope.org, app: '', env: '' };
414
- if (scope.level === 'app')
415
- return { level: 'app', org: scope.org, app: scope.app, env: '' };
416
- return { level: 'env', org: scope.org, app: scope.app, env: scope.env };
417
- }
418
- function rowToScope(row) {
419
- if (row.scope_level === 'org')
420
- return { level: 'org', org: row.org_slug };
421
- if (row.scope_level === 'app')
422
- return { level: 'app', org: row.org_slug, app: row.app_slug };
423
- if (row.scope_level === 'env') {
424
- return { level: 'env', org: row.org_slug, app: row.app_slug, env: row.environment };
425
- }
426
- throw new Error(`invalid config scope_level: ${row.scope_level}`);
427
- }
428
- async function sealConfigSecret(value, secretBox) {
429
- if (secretBox === undefined) {
430
- throw new Error('durable secret config requires a secret master-key custodian');
441
+ async listOrgInvitations(org) {
442
+ return listOrgInvitationRows(this.#pool, org);
443
+ }
444
+ async revokeOrgInvitation(input) {
445
+ return revokeOrgInvitationRows(this.#pool, input);
431
446
  }
432
- return { enc: 'aes-256-gcm', sealed: await secretBox.seal(value) };
433
- }
434
- async function openConfigSecret(envelope, secretBox) {
435
- if (envelope === null)
436
- throw new Error('secret config row has no encrypted value');
437
- if (envelope.enc === 'none') {
438
- const value = envelope.values.value;
439
- if (typeof value !== 'string')
440
- throw new Error('legacy secret config row has no value');
441
- return value;
442
- }
443
- if (secretBox === undefined) {
444
- throw new Error('cannot resolve encrypted config without a secret master-key custodian');
445
- }
446
- return secretBox.open(envelope.sealed);
447
- }
448
- function isPostgresStoreOptions(value) {
449
- return typeof value === 'object' && value !== null && ('secretBox' in value || 'now' in value);
450
- }
451
- function deploymentSummary(record) {
452
- return {
453
- deploymentId: record.deploymentId,
454
- orgSlug: record.orgSlug,
455
- appSlug: record.appSlug,
456
- environment: record.environment,
457
- active: record.active,
458
- serverName: record.serverName,
459
- createdAt: record.createdAt,
460
- ...(record.createdByEmail !== undefined ? { createdByEmail: record.createdByEmail } : {}),
461
- accessMode: record.accessMode ?? 'owner-only',
462
- };
463
447
  }
464
448
  //# sourceMappingURL=postgres.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/store/postgres.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/store/postgres.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Pure record-level helpers shared by every {@link ArtifactStore} backend: the canonical
3
+ * deployment-summary mapping, list filtering, and app archive/restore planning (ADR 0117).
4
+ * No I/O here — backends apply the plans to their own persistence.
5
+ */
6
+ import type { AppArchiveResult, AppRestoreResult, DeploymentListFilter, DeploymentSummary, DeployRecord } from '../store.js';
7
+ /** The canonical, secret-free list projection of a {@link DeployRecord}. */
8
+ export declare function deploymentSummary(record: DeployRecord): DeploymentSummary;
9
+ /** Validate a deployments-list filter's slugs; archived records are excluded unless opted in. */
10
+ export declare function validateDeploymentListFilter(filter: DeploymentListFilter): DeploymentListFilter;
11
+ /** Whether a record belongs in a (pre-validated) deployments list. */
12
+ export declare function matchesDeploymentFilter(record: DeployRecord, filter: DeploymentListFilter): boolean;
13
+ /**
14
+ * The app's archived stamp: defined iff the app has at least one record and **every** record is
15
+ * stamped. The latest stamp wins — it is the retention clock (ADR 0117 §6).
16
+ */
17
+ export declare function appArchivedAt(records: readonly DeployRecord[]): string | undefined;
18
+ /**
19
+ * Plan an app archive over the app's records (all environments/versions): which records to stamp
20
+ * plus the caller-facing result. `undefined` when the app has no records at all. Re-archiving an
21
+ * already-archived app is a no-op that preserves the original stamp (the retention clock never
22
+ * resets — ADR 0117 §5).
23
+ */
24
+ export declare function planAppArchive(records: readonly DeployRecord[], at: string): {
25
+ readonly result: AppArchiveResult;
26
+ readonly stamp: readonly DeployRecord[];
27
+ } | undefined;
28
+ /** Plan an app restore: which records to clear. `undefined` when the app has no records at all. */
29
+ export declare function planAppRestore(records: readonly DeployRecord[]): {
30
+ readonly result: AppRestoreResult;
31
+ readonly clear: readonly DeployRecord[];
32
+ } | undefined;
33
+ /** Strip the archive stamp from a record (exact-optional safe). */
34
+ export declare function withoutArchiveStamp(record: DeployRecord): DeployRecord;
35
+ //# sourceMappingURL=records.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../src/store/records.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACb,MAAM,aAAa,CAAC;AAGrB,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,iBAAiB,CAczE;AAED,iGAAiG;AACjG,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAO/F;AAED,sEAAsE;AACtE,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAOT;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,GAAG,SAAS,CAQlF;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,EAAE,EAAE,MAAM,GACT;IAAE,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAA;CAAE,GAAG,SAAS,CAiB5F;AAED,mGAAmG;AACnG,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,YAAY,EAAE,GAC/B;IAAE,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAA;CAAE,GAAG,SAAS,CAI5F;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAGtE"}
@@ -0,0 +1,87 @@
1
+ import { validateSlug } from './validate.js';
2
+ /** The canonical, secret-free list projection of a {@link DeployRecord}. */
3
+ export function deploymentSummary(record) {
4
+ return {
5
+ deploymentId: record.deploymentId,
6
+ orgSlug: record.orgSlug,
7
+ appSlug: record.appSlug,
8
+ environment: record.environment,
9
+ ...(record.serverVersion !== undefined ? { serverVersion: record.serverVersion } : {}),
10
+ active: record.active,
11
+ serverName: record.serverName,
12
+ createdAt: record.createdAt,
13
+ ...(record.createdByEmail !== undefined ? { createdByEmail: record.createdByEmail } : {}),
14
+ accessMode: record.accessMode ?? 'owner-only',
15
+ ...(record.archivedAt !== undefined ? { archivedAt: record.archivedAt } : {}),
16
+ };
17
+ }
18
+ /** Validate a deployments-list filter's slugs; archived records are excluded unless opted in. */
19
+ export function validateDeploymentListFilter(filter) {
20
+ return {
21
+ org: validateSlug('org', filter.org),
22
+ ...(filter.app !== undefined ? { app: validateSlug('app', filter.app) } : {}),
23
+ ...(filter.env !== undefined ? { env: validateSlug('env', filter.env) } : {}),
24
+ ...(filter.includeArchived === true ? { includeArchived: true } : {}),
25
+ };
26
+ }
27
+ /** Whether a record belongs in a (pre-validated) deployments list. */
28
+ export function matchesDeploymentFilter(record, filter) {
29
+ return (record.orgSlug === filter.org &&
30
+ (filter.app === undefined || record.appSlug === filter.app) &&
31
+ (filter.env === undefined || record.environment === filter.env) &&
32
+ (filter.includeArchived === true || record.archivedAt === undefined));
33
+ }
34
+ /**
35
+ * The app's archived stamp: defined iff the app has at least one record and **every** record is
36
+ * stamped. The latest stamp wins — it is the retention clock (ADR 0117 §6).
37
+ */
38
+ export function appArchivedAt(records) {
39
+ if (records.length === 0)
40
+ return undefined;
41
+ let latest;
42
+ for (const record of records) {
43
+ if (record.archivedAt === undefined)
44
+ return undefined;
45
+ if (latest === undefined || record.archivedAt > latest)
46
+ latest = record.archivedAt;
47
+ }
48
+ return latest;
49
+ }
50
+ /**
51
+ * Plan an app archive over the app's records (all environments/versions): which records to stamp
52
+ * plus the caller-facing result. `undefined` when the app has no records at all. Re-archiving an
53
+ * already-archived app is a no-op that preserves the original stamp (the retention clock never
54
+ * resets — ADR 0117 §5).
55
+ */
56
+ export function planAppArchive(records, at) {
57
+ if (records.length === 0)
58
+ return undefined;
59
+ const stamp = records.filter((record) => record.archivedAt === undefined);
60
+ if (stamp.length === 0) {
61
+ return {
62
+ result: {
63
+ archivedAt: appArchivedAt(records),
64
+ archivedDeployments: 0,
65
+ alreadyArchived: true,
66
+ },
67
+ stamp,
68
+ };
69
+ }
70
+ return {
71
+ result: { archivedAt: at, archivedDeployments: stamp.length, alreadyArchived: false },
72
+ stamp,
73
+ };
74
+ }
75
+ /** Plan an app restore: which records to clear. `undefined` when the app has no records at all. */
76
+ export function planAppRestore(records) {
77
+ if (records.length === 0)
78
+ return undefined;
79
+ const clear = records.filter((record) => record.archivedAt !== undefined);
80
+ return { result: { restoredDeployments: clear.length }, clear };
81
+ }
82
+ /** Strip the archive stamp from a record (exact-optional safe). */
83
+ export function withoutArchiveStamp(record) {
84
+ const { archivedAt: _cleared, ...rest } = record;
85
+ return rest;
86
+ }
87
+ //# sourceMappingURL=records.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records.js","sourceRoot":"","sources":["../../src/store/records.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Slug/name/domain validation shared by every store backend. Extracted verbatim from `store.ts`
3
+ * (which re-exports everything here) so backend modules can import validators without a runtime
4
+ * import cycle through the store aggregate.
5
+ */
6
+ import type { ConfigScope, OrgRole, SignupAllowlistKind, TenantRef } from '../store.js';
7
+ /** Minted deployment id shape (`mintDeploymentId`): a slug plus a short hex suffix; safe as a filename. */
8
+ export declare const DEPLOYMENT_ID_PATTERN: RegExp;
9
+ export declare const SLUG_PATTERN: RegExp;
10
+ export declare const CONFIG_NAME_PATTERN: RegExp;
11
+ export declare const DOMAIN_PATTERN: RegExp;
12
+ export declare function validateSlug(kind: 'org' | 'app' | 'env', value: string): string;
13
+ export declare function validateTenantRef(ref: TenantRef): TenantRef;
14
+ export declare function validateConfigName(name: string): string;
15
+ export declare function validateDomain(value: string): string;
16
+ export declare function validateSignupAllowlistKind(value: string): SignupAllowlistKind;
17
+ export declare function validateConfigScope(scope: ConfigScope): ConfigScope;
18
+ export declare function validateOrgRole(role: string): OrgRole;
19
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/store/validate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExF,2GAA2G;AAC3G,eAAO,MAAM,qBAAqB,QAAiB,CAAC;AACpD,eAAO,MAAM,YAAY,QAA2C,CAAC;AACrE,eAAO,MAAM,mBAAmB,QAAoB,CAAC;AACrD,eAAO,MAAM,cAAc,QAAoD,CAAC;AAIhF,wBAAgB,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAO/E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,CAM3D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAI9E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAenE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKrD"}
@@ -0,0 +1,61 @@
1
+ /** Minted deployment id shape (`mintDeploymentId`): a slug plus a short hex suffix; safe as a filename. */
2
+ export const DEPLOYMENT_ID_PATTERN = /^[a-z0-9-]+$/;
3
+ export const SLUG_PATTERN = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/;
4
+ export const CONFIG_NAME_PATTERN = /^[A-Za-z0-9_]+$/;
5
+ export const DOMAIN_PATTERN = /^[a-z0-9](?:[a-z0-9-]{0,62}\.)+[a-z0-9-]{2,63}$/;
6
+ const RESERVED_SLUGS = new Set(['deploy', 'healthz', 'readyz', 'v1', 'o', 'mcp']);
7
+ export function validateSlug(kind, value) {
8
+ if (!SLUG_PATTERN.test(value) || RESERVED_SLUGS.has(value)) {
9
+ throw new Error(`invalid ${kind} slug "${value}"; use lowercase letters, numbers, and hyphens only`);
10
+ }
11
+ return value;
12
+ }
13
+ export function validateTenantRef(ref) {
14
+ return {
15
+ org: validateSlug('org', ref.org),
16
+ app: validateSlug('app', ref.app),
17
+ env: validateSlug('env', ref.env),
18
+ };
19
+ }
20
+ export function validateConfigName(name) {
21
+ if (!CONFIG_NAME_PATTERN.test(name)) {
22
+ throw new Error(`invalid config name "${name}"; use letters, numbers, and underscores only`);
23
+ }
24
+ return name;
25
+ }
26
+ export function validateDomain(value) {
27
+ const domain = value.trim().toLowerCase();
28
+ if (!DOMAIN_PATTERN.test(domain)) {
29
+ throw new Error(`invalid domain "${value}"`);
30
+ }
31
+ return domain;
32
+ }
33
+ export function validateSignupAllowlistKind(value) {
34
+ if (value !== 'subject' && value !== 'domain')
35
+ throw new Error(`invalid signup allowlist kind "${value}"`);
36
+ return value;
37
+ }
38
+ export function validateConfigScope(scope) {
39
+ if (scope.level === 'org')
40
+ return { level: 'org', org: validateSlug('org', scope.org) };
41
+ if (scope.level === 'app') {
42
+ return {
43
+ level: 'app',
44
+ org: validateSlug('org', scope.org),
45
+ app: validateSlug('app', scope.app),
46
+ };
47
+ }
48
+ return {
49
+ level: 'env',
50
+ org: validateSlug('org', scope.org),
51
+ app: validateSlug('app', scope.app),
52
+ env: validateSlug('env', scope.env),
53
+ };
54
+ }
55
+ export function validateOrgRole(role) {
56
+ if (role !== 'owner' && role !== 'developer') {
57
+ throw new Error(`invalid org role "${role}"`);
58
+ }
59
+ return role;
60
+ }
61
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/store/validate.ts"],"names":[],"mappings":"AAOA,2GAA2G;AAC3G,MAAM,CAAC,MAAM,qBAAqB,GAAG,cAAc,CAAC;AACpD,MAAM,CAAC,MAAM,YAAY,GAAG,wCAAwC,CAAC;AACrE,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AACrD,MAAM,CAAC,MAAM,cAAc,GAAG,iDAAiD,CAAC;AAEhF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAElF,MAAM,UAAU,YAAY,CAAC,IAA2B,EAAE,KAAa;IACrE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,UAAU,KAAK,qDAAqD,CACpF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAc;IAC9C,OAAO;QACL,GAAG,EAAE,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC;QACjC,GAAG,EAAE,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC;QACjC,GAAG,EAAE,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,+CAA+C,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,GAAG,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ;QAC3C,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,GAAG,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAkB;IACpD,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IACxF,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,GAAG,EAAE,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;YACnC,GAAG,EAAE,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;SACpC,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,GAAG,EAAE,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;QACnC,GAAG,EAAE,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;QACnC,GAAG,EAAE,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,GAAG,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}