@noodleseed/one 0.16.0 → 0.17.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 (275) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +49 -5
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/apps-ops.d.ts +17 -0
  5. package/dist/commands/apps-ops.d.ts.map +1 -0
  6. package/dist/commands/apps-ops.js +285 -0
  7. package/dist/commands/apps-ops.js.map +1 -0
  8. package/dist/commands/archive-ops.js +2 -2
  9. package/dist/commands/archive-ops.js.map +1 -1
  10. package/dist/commands/catalog-data-config.d.ts +9 -0
  11. package/dist/commands/catalog-data-config.d.ts.map +1 -0
  12. package/dist/commands/catalog-data-config.js +67 -0
  13. package/dist/commands/catalog-data-config.js.map +1 -0
  14. package/dist/commands/catalog-data-core.d.ts +13 -0
  15. package/dist/commands/catalog-data-core.d.ts.map +1 -0
  16. package/dist/commands/catalog-data-core.js +354 -0
  17. package/dist/commands/catalog-data-core.js.map +1 -0
  18. package/dist/commands/catalog-data-resources.d.ts +8 -0
  19. package/dist/commands/catalog-data-resources.d.ts.map +1 -0
  20. package/dist/commands/catalog-data-resources.js +506 -0
  21. package/dist/commands/catalog-data-resources.js.map +1 -0
  22. package/dist/commands/catalog-dispatch.d.ts +15 -0
  23. package/dist/commands/catalog-dispatch.d.ts.map +1 -0
  24. package/dist/commands/catalog-dispatch.js +95 -0
  25. package/dist/commands/catalog-dispatch.js.map +1 -0
  26. package/dist/commands/catalog-render.d.ts +28 -0
  27. package/dist/commands/catalog-render.d.ts.map +1 -0
  28. package/dist/commands/catalog-render.js +142 -0
  29. package/dist/commands/catalog-render.js.map +1 -0
  30. package/dist/commands/catalog-types.d.ts +46 -0
  31. package/dist/commands/catalog-types.d.ts.map +1 -0
  32. package/dist/commands/catalog-types.js +7 -0
  33. package/dist/commands/catalog-types.js.map +1 -0
  34. package/dist/commands/catalog.d.ts +30 -0
  35. package/dist/commands/catalog.d.ts.map +1 -0
  36. package/dist/commands/catalog.js +108 -0
  37. package/dist/commands/catalog.js.map +1 -0
  38. package/dist/commands/commands-ops.d.ts +2 -0
  39. package/dist/commands/commands-ops.d.ts.map +1 -0
  40. package/dist/commands/commands-ops.js +19 -0
  41. package/dist/commands/commands-ops.js.map +1 -0
  42. package/dist/commands/deploy-ops.d.ts +45 -3
  43. package/dist/commands/deploy-ops.d.ts.map +1 -1
  44. package/dist/commands/deploy-ops.js +200 -227
  45. package/dist/commands/deploy-ops.js.map +1 -1
  46. package/dist/commands/deploy-status-ops.d.ts +13 -0
  47. package/dist/commands/deploy-status-ops.d.ts.map +1 -0
  48. package/dist/commands/deploy-status-ops.js +252 -0
  49. package/dist/commands/deploy-status-ops.js.map +1 -0
  50. package/dist/commands/deployments-ops.d.ts +30 -0
  51. package/dist/commands/deployments-ops.d.ts.map +1 -0
  52. package/dist/commands/deployments-ops.js +248 -0
  53. package/dist/commands/deployments-ops.js.map +1 -0
  54. package/dist/commands/envs-ops.d.ts +8 -0
  55. package/dist/commands/envs-ops.d.ts.map +1 -0
  56. package/dist/commands/envs-ops.js +240 -0
  57. package/dist/commands/envs-ops.js.map +1 -0
  58. package/dist/commands/github-ops.d.ts +15 -0
  59. package/dist/commands/github-ops.d.ts.map +1 -0
  60. package/dist/commands/github-ops.js +296 -0
  61. package/dist/commands/github-ops.js.map +1 -0
  62. package/dist/commands/github-shared.d.ts +60 -0
  63. package/dist/commands/github-shared.d.ts.map +1 -0
  64. package/dist/commands/github-shared.js +175 -0
  65. package/dist/commands/github-shared.js.map +1 -0
  66. package/dist/commands/org-admin.d.ts.map +1 -1
  67. package/dist/commands/org-admin.js +223 -43
  68. package/dist/commands/org-admin.js.map +1 -1
  69. package/dist/commands/output.d.ts +35 -0
  70. package/dist/commands/output.d.ts.map +1 -0
  71. package/dist/commands/output.js +34 -0
  72. package/dist/commands/output.js.map +1 -0
  73. package/dist/commands/resource-shared.d.ts +132 -0
  74. package/dist/commands/resource-shared.d.ts.map +1 -0
  75. package/dist/commands/resource-shared.js +159 -0
  76. package/dist/commands/resource-shared.js.map +1 -0
  77. package/dist/commands/session.d.ts +6 -9
  78. package/dist/commands/session.d.ts.map +1 -1
  79. package/dist/commands/session.js +42 -116
  80. package/dist/commands/session.js.map +1 -1
  81. package/dist/commands/shared.d.ts.map +1 -1
  82. package/dist/commands/shared.js +3 -91
  83. package/dist/commands/shared.js.map +1 -1
  84. package/dist/commands/target-picker.d.ts +44 -0
  85. package/dist/commands/target-picker.d.ts.map +1 -0
  86. package/dist/commands/target-picker.js +88 -0
  87. package/dist/commands/target-picker.js.map +1 -0
  88. package/dist/commands/update-ops.js +1 -1
  89. package/dist/diagnostics.d.ts +5 -0
  90. package/dist/diagnostics.d.ts.map +1 -1
  91. package/dist/diagnostics.js +1 -1
  92. package/dist/diagnostics.js.map +1 -1
  93. package/dist/doctor.d.ts.map +1 -1
  94. package/dist/doctor.js +33 -0
  95. package/dist/doctor.js.map +1 -1
  96. package/dist/fire.d.ts +94 -0
  97. package/dist/fire.d.ts.map +1 -0
  98. package/dist/fire.js +418 -0
  99. package/dist/fire.js.map +1 -0
  100. package/dist/flavor.d.ts +19 -0
  101. package/dist/flavor.d.ts.map +1 -0
  102. package/dist/flavor.js +95 -0
  103. package/dist/flavor.js.map +1 -0
  104. package/dist/project.js +2 -2
  105. package/dist/prompts.d.ts.map +1 -1
  106. package/dist/prompts.js +30 -17
  107. package/dist/prompts.js.map +1 -1
  108. package/dist/relative-time.d.ts +8 -0
  109. package/dist/relative-time.d.ts.map +1 -0
  110. package/dist/relative-time.js +29 -0
  111. package/dist/relative-time.js.map +1 -0
  112. package/dist/table.d.ts +47 -0
  113. package/dist/table.d.ts.map +1 -0
  114. package/dist/table.js +152 -0
  115. package/dist/table.js.map +1 -0
  116. package/dist/update-binary.js +1 -1
  117. package/dist/update-check.d.ts +1 -1
  118. package/dist/update-check.js +1 -1
  119. package/dist/update.js +1 -1
  120. package/dist/watch.d.ts +52 -0
  121. package/dist/watch.d.ts.map +1 -0
  122. package/dist/watch.js +177 -0
  123. package/dist/watch.js.map +1 -0
  124. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
  125. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +23 -1
  126. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
  127. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  128. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +5 -0
  129. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  130. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  131. package/node_modules/@noodle-borg/authoring/dist/connectors.js +14 -0
  132. package/node_modules/@noodle-borg/authoring/dist/connectors.js.map +1 -1
  133. package/node_modules/@noodle-borg/connector-defs/dist/compile.js +9 -0
  134. package/node_modules/@noodle-borg/connector-defs/dist/compile.js.map +1 -1
  135. package/node_modules/@noodle-borg/openapi-import/dist/index.d.ts.map +1 -1
  136. package/node_modules/@noodle-borg/openapi-import/dist/index.js +3 -1
  137. package/node_modules/@noodle-borg/openapi-import/dist/index.js.map +1 -1
  138. package/node_modules/@noodle-borg/service/dist/github/app-client.d.ts +49 -0
  139. package/node_modules/@noodle-borg/service/dist/github/app-client.d.ts.map +1 -0
  140. package/node_modules/@noodle-borg/service/dist/github/app-client.js +23 -0
  141. package/node_modules/@noodle-borg/service/dist/github/app-client.js.map +1 -0
  142. package/node_modules/@noodle-borg/service/dist/github/install-nonce.d.ts +23 -0
  143. package/node_modules/@noodle-borg/service/dist/github/install-nonce.d.ts.map +1 -0
  144. package/node_modules/@noodle-borg/service/dist/github/install-nonce.js +57 -0
  145. package/node_modules/@noodle-borg/service/dist/github/install-nonce.js.map +1 -0
  146. package/node_modules/@noodle-borg/service/dist/github/pending-installations.d.ts +31 -0
  147. package/node_modules/@noodle-borg/service/dist/github/pending-installations.d.ts.map +1 -0
  148. package/node_modules/@noodle-borg/service/dist/github/pending-installations.js +34 -0
  149. package/node_modules/@noodle-borg/service/dist/github/pending-installations.js.map +1 -0
  150. package/node_modules/@noodle-borg/service/dist/index.d.ts +7 -1
  151. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  152. package/node_modules/@noodle-borg/service/dist/index.js +7 -1
  153. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  154. package/node_modules/@noodle-borg/service/dist/options.d.ts +28 -1
  155. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  156. package/node_modules/@noodle-borg/service/dist/registry-state.d.ts +28 -7
  157. package/node_modules/@noodle-borg/service/dist/registry-state.d.ts.map +1 -1
  158. package/node_modules/@noodle-borg/service/dist/registry-state.js +116 -3
  159. package/node_modules/@noodle-borg/service/dist/registry-state.js.map +1 -1
  160. package/node_modules/@noodle-borg/service/dist/registry.d.ts +14 -1
  161. package/node_modules/@noodle-borg/service/dist/registry.d.ts.map +1 -1
  162. package/node_modules/@noodle-borg/service/dist/registry.js +20 -45
  163. package/node_modules/@noodle-borg/service/dist/registry.js.map +1 -1
  164. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.d.ts +23 -0
  165. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.d.ts.map +1 -0
  166. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.js +53 -0
  167. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.js.map +1 -0
  168. package/node_modules/@noodle-borg/service/dist/routes/apps.d.ts +24 -0
  169. package/node_modules/@noodle-borg/service/dist/routes/apps.d.ts.map +1 -0
  170. package/node_modules/@noodle-borg/service/dist/routes/apps.js +72 -0
  171. package/node_modules/@noodle-borg/service/dist/routes/apps.js.map +1 -0
  172. package/node_modules/@noodle-borg/service/dist/routes/contracts.d.ts +316 -0
  173. package/node_modules/@noodle-borg/service/dist/routes/contracts.d.ts.map +1 -0
  174. package/node_modules/@noodle-borg/service/dist/routes/contracts.js +152 -0
  175. package/node_modules/@noodle-borg/service/dist/routes/contracts.js.map +1 -0
  176. package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts +12 -1
  177. package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts.map +1 -1
  178. package/node_modules/@noodle-borg/service/dist/routes/deployments.js +31 -2
  179. package/node_modules/@noodle-borg/service/dist/routes/deployments.js.map +1 -1
  180. package/node_modules/@noodle-borg/service/dist/routes/endpoint-enrichment.d.ts +17 -0
  181. package/node_modules/@noodle-borg/service/dist/routes/endpoint-enrichment.d.ts.map +1 -0
  182. package/node_modules/@noodle-borg/service/dist/routes/endpoint-enrichment.js +15 -0
  183. package/node_modules/@noodle-borg/service/dist/routes/endpoint-enrichment.js.map +1 -0
  184. package/node_modules/@noodle-borg/service/dist/routes/envs.d.ts +22 -0
  185. package/node_modules/@noodle-borg/service/dist/routes/envs.d.ts.map +1 -0
  186. package/node_modules/@noodle-borg/service/dist/routes/envs.js +46 -0
  187. package/node_modules/@noodle-borg/service/dist/routes/envs.js.map +1 -0
  188. package/node_modules/@noodle-borg/service/dist/routes/github-connection.d.ts +29 -0
  189. package/node_modules/@noodle-borg/service/dist/routes/github-connection.d.ts.map +1 -0
  190. package/node_modules/@noodle-borg/service/dist/routes/github-connection.js +202 -0
  191. package/node_modules/@noodle-borg/service/dist/routes/github-connection.js.map +1 -0
  192. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.d.ts +29 -0
  193. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.d.ts.map +1 -0
  194. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.js +60 -0
  195. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.js.map +1 -0
  196. package/node_modules/@noodle-borg/service/dist/routes/github-setup.d.ts +28 -0
  197. package/node_modules/@noodle-borg/service/dist/routes/github-setup.d.ts.map +1 -0
  198. package/node_modules/@noodle-borg/service/dist/routes/github-setup.js +80 -0
  199. package/node_modules/@noodle-borg/service/dist/routes/github-setup.js.map +1 -0
  200. package/node_modules/@noodle-borg/service/dist/routes/org-admin.d.ts +5 -0
  201. package/node_modules/@noodle-borg/service/dist/routes/org-admin.d.ts.map +1 -1
  202. package/node_modules/@noodle-borg/service/dist/routes/org-admin.js +13 -1
  203. package/node_modules/@noodle-borg/service/dist/routes/org-admin.js.map +1 -1
  204. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +44 -0
  205. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
  206. package/node_modules/@noodle-borg/service/dist/routes/paths.js +116 -1
  207. package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
  208. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.d.ts +33 -0
  209. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.d.ts.map +1 -0
  210. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.js +69 -0
  211. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.js.map +1 -0
  212. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  213. package/node_modules/@noodle-borg/service/dist/service.js +60 -45
  214. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  215. package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts +1 -0
  216. package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts.map +1 -1
  217. package/node_modules/@noodle-borg/service/dist/store/control-plane.js +3 -0
  218. package/node_modules/@noodle-borg/service/dist/store/control-plane.js.map +1 -1
  219. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.d.ts +23 -0
  220. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.d.ts.map +1 -0
  221. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.js +137 -0
  222. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.js.map +1 -0
  223. package/node_modules/@noodle-borg/service/dist/store/github-connections.d.ts +30 -0
  224. package/node_modules/@noodle-borg/service/dist/store/github-connections.d.ts.map +1 -0
  225. package/node_modules/@noodle-borg/service/dist/store/github-connections.js +116 -0
  226. package/node_modules/@noodle-borg/service/dist/store/github-connections.js.map +1 -0
  227. package/node_modules/@noodle-borg/service/dist/store/in-memory.d.ts +32 -0
  228. package/node_modules/@noodle-borg/service/dist/store/in-memory.d.ts.map +1 -0
  229. package/node_modules/@noodle-borg/service/dist/store/in-memory.js +169 -0
  230. package/node_modules/@noodle-borg/service/dist/store/in-memory.js.map +1 -0
  231. package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts +14 -1
  232. package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts.map +1 -1
  233. package/node_modules/@noodle-borg/service/dist/store/json-file.js +54 -1
  234. package/node_modules/@noodle-borg/service/dist/store/json-file.js.map +1 -1
  235. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.d.ts +11 -0
  236. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.d.ts.map +1 -0
  237. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.js +31 -0
  238. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.js.map +1 -0
  239. package/node_modules/@noodle-borg/service/dist/store/postgres-config.d.ts +21 -0
  240. package/node_modules/@noodle-borg/service/dist/store/postgres-config.d.ts.map +1 -0
  241. package/node_modules/@noodle-borg/service/dist/store/postgres-config.js +80 -0
  242. package/node_modules/@noodle-borg/service/dist/store/postgres-config.js.map +1 -0
  243. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts +1 -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 +6 -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-envs.d.ts +7 -0
  248. package/node_modules/@noodle-borg/service/dist/store/postgres-envs.d.ts.map +1 -0
  249. package/node_modules/@noodle-borg/service/dist/store/postgres-envs.js +34 -0
  250. package/node_modules/@noodle-borg/service/dist/store/postgres-envs.js.map +1 -0
  251. package/node_modules/@noodle-borg/service/dist/store/postgres-github.d.ts +12 -0
  252. package/node_modules/@noodle-borg/service/dist/store/postgres-github.d.ts.map +1 -0
  253. package/node_modules/@noodle-borg/service/dist/store/postgres-github.js +125 -0
  254. package/node_modules/@noodle-borg/service/dist/store/postgres-github.js.map +1 -0
  255. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
  256. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +36 -0
  257. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
  258. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +25 -2
  259. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
  260. package/node_modules/@noodle-borg/service/dist/store/postgres.js +56 -75
  261. package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
  262. package/node_modules/@noodle-borg/service/dist/store/records.d.ts +56 -3
  263. package/node_modules/@noodle-borg/service/dist/store/records.d.ts.map +1 -1
  264. package/node_modules/@noodle-borg/service/dist/store/records.js +158 -0
  265. package/node_modules/@noodle-borg/service/dist/store/records.js.map +1 -1
  266. package/node_modules/@noodle-borg/service/dist/store/validate.d.ts +2 -0
  267. package/node_modules/@noodle-borg/service/dist/store/validate.d.ts.map +1 -1
  268. package/node_modules/@noodle-borg/service/dist/store/validate.js +7 -0
  269. package/node_modules/@noodle-borg/service/dist/store/validate.js.map +1 -1
  270. package/node_modules/@noodle-borg/service/dist/store.d.ts +161 -17
  271. package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
  272. package/node_modules/@noodle-borg/service/dist/store.js +8 -118
  273. package/node_modules/@noodle-borg/service/dist/store.js.map +1 -1
  274. package/node_modules/@noodle-borg/service/package.json +2 -1
  275. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/routes/apps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,316 @@
1
+ /**
2
+ * Zod response contracts for the org/app read surface (`GET /v1/orgs/{org}`, `.../apps`,
3
+ * `.../apps/{app}`). Handlers `.parse()` their response payload through these before sending, so the
4
+ * wire shape can never silently drift from what's declared here. The golden fixtures under the
5
+ * repo-root `contract/v1/` directory assert the same schemas parse realistic sample payloads — the
6
+ * cross-package drift gate future CLI/console tests load the same fixtures against, so all three
7
+ * surfaces stay pinned to one contract.
8
+ */
9
+ import { z } from 'zod';
10
+ /** Mirrors {@link DeploymentSummary} (`../store.js`). */
11
+ export declare const DeploymentSummarySchema: z.ZodObject<{
12
+ deploymentId: z.ZodString;
13
+ orgSlug: z.ZodString;
14
+ appSlug: z.ZodString;
15
+ environment: z.ZodString;
16
+ serverVersion: z.ZodOptional<z.ZodString>;
17
+ active: z.ZodBoolean;
18
+ serverName: z.ZodString;
19
+ createdAt: z.ZodString;
20
+ createdByEmail: z.ZodOptional<z.ZodString>;
21
+ accessMode: z.ZodEnum<{
22
+ "owner-only": "owner-only";
23
+ "org-members": "org-members";
24
+ authenticated: "authenticated";
25
+ public: "public";
26
+ mixed: "mixed";
27
+ customers: "customers";
28
+ }>;
29
+ archivedAt: z.ZodOptional<z.ZodString>;
30
+ endpointUrl: z.ZodOptional<z.ZodString>;
31
+ }, z.core.$strict>;
32
+ /** Mirrors {@link OrgRecord} (`../store.js`) — the `GET /v1/orgs/{org}` response `data`. */
33
+ export declare const OrgSummarySchema: z.ZodObject<{
34
+ slug: z.ZodString;
35
+ displayName: z.ZodOptional<z.ZodString>;
36
+ createdAt: z.ZodString;
37
+ }, z.core.$strict>;
38
+ /** Mirrors {@link AppSummary} (`../store.js`). */
39
+ export declare const AppSummarySchema: z.ZodObject<{
40
+ orgSlug: z.ZodString;
41
+ appSlug: z.ZodString;
42
+ environments: z.ZodArray<z.ZodString>;
43
+ latest: z.ZodOptional<z.ZodObject<{
44
+ deploymentId: z.ZodString;
45
+ orgSlug: z.ZodString;
46
+ appSlug: z.ZodString;
47
+ environment: z.ZodString;
48
+ serverVersion: z.ZodOptional<z.ZodString>;
49
+ active: z.ZodBoolean;
50
+ serverName: z.ZodString;
51
+ createdAt: z.ZodString;
52
+ createdByEmail: z.ZodOptional<z.ZodString>;
53
+ accessMode: z.ZodEnum<{
54
+ "owner-only": "owner-only";
55
+ "org-members": "org-members";
56
+ authenticated: "authenticated";
57
+ public: "public";
58
+ mixed: "mixed";
59
+ customers: "customers";
60
+ }>;
61
+ archivedAt: z.ZodOptional<z.ZodString>;
62
+ endpointUrl: z.ZodOptional<z.ZodString>;
63
+ }, z.core.$strict>>;
64
+ accessMode: z.ZodOptional<z.ZodString>;
65
+ active: z.ZodBoolean;
66
+ archivedAt: z.ZodOptional<z.ZodString>;
67
+ createdAt: z.ZodString;
68
+ lastActivityAt: z.ZodOptional<z.ZodString>;
69
+ }, z.core.$strict>;
70
+ /** The full `GET /v1/orgs/{org}/apps` response body. */
71
+ export declare const AppsListResponseSchema: z.ZodObject<{
72
+ ok: z.ZodLiteral<true>;
73
+ data: z.ZodObject<{
74
+ apps: z.ZodArray<z.ZodObject<{
75
+ orgSlug: z.ZodString;
76
+ appSlug: z.ZodString;
77
+ environments: z.ZodArray<z.ZodString>;
78
+ latest: z.ZodOptional<z.ZodObject<{
79
+ deploymentId: z.ZodString;
80
+ orgSlug: z.ZodString;
81
+ appSlug: z.ZodString;
82
+ environment: z.ZodString;
83
+ serverVersion: z.ZodOptional<z.ZodString>;
84
+ active: z.ZodBoolean;
85
+ serverName: z.ZodString;
86
+ createdAt: z.ZodString;
87
+ createdByEmail: z.ZodOptional<z.ZodString>;
88
+ accessMode: z.ZodEnum<{
89
+ "owner-only": "owner-only";
90
+ "org-members": "org-members";
91
+ authenticated: "authenticated";
92
+ public: "public";
93
+ mixed: "mixed";
94
+ customers: "customers";
95
+ }>;
96
+ archivedAt: z.ZodOptional<z.ZodString>;
97
+ endpointUrl: z.ZodOptional<z.ZodString>;
98
+ }, z.core.$strict>>;
99
+ accessMode: z.ZodOptional<z.ZodString>;
100
+ active: z.ZodBoolean;
101
+ archivedAt: z.ZodOptional<z.ZodString>;
102
+ createdAt: z.ZodString;
103
+ lastActivityAt: z.ZodOptional<z.ZodString>;
104
+ }, z.core.$strict>>;
105
+ truncated: z.ZodBoolean;
106
+ }, z.core.$strict>;
107
+ }, z.core.$strict>;
108
+ /** The full `GET /v1/orgs/{org}/apps/{app}` response body (app inspect). */
109
+ export declare const AppResponseSchema: z.ZodObject<{
110
+ ok: z.ZodLiteral<true>;
111
+ data: z.ZodObject<{
112
+ orgSlug: z.ZodString;
113
+ appSlug: z.ZodString;
114
+ environments: z.ZodArray<z.ZodString>;
115
+ latest: z.ZodOptional<z.ZodObject<{
116
+ deploymentId: z.ZodString;
117
+ orgSlug: z.ZodString;
118
+ appSlug: z.ZodString;
119
+ environment: z.ZodString;
120
+ serverVersion: z.ZodOptional<z.ZodString>;
121
+ active: z.ZodBoolean;
122
+ serverName: z.ZodString;
123
+ createdAt: z.ZodString;
124
+ createdByEmail: z.ZodOptional<z.ZodString>;
125
+ accessMode: z.ZodEnum<{
126
+ "owner-only": "owner-only";
127
+ "org-members": "org-members";
128
+ authenticated: "authenticated";
129
+ public: "public";
130
+ mixed: "mixed";
131
+ customers: "customers";
132
+ }>;
133
+ archivedAt: z.ZodOptional<z.ZodString>;
134
+ endpointUrl: z.ZodOptional<z.ZodString>;
135
+ }, z.core.$strict>>;
136
+ accessMode: z.ZodOptional<z.ZodString>;
137
+ active: z.ZodBoolean;
138
+ archivedAt: z.ZodOptional<z.ZodString>;
139
+ createdAt: z.ZodString;
140
+ lastActivityAt: z.ZodOptional<z.ZodString>;
141
+ }, z.core.$strict>;
142
+ }, z.core.$strict>;
143
+ /** Mirrors {@link EnvSummary} (`../store.js`). */
144
+ export declare const EnvSummarySchema: z.ZodObject<{
145
+ orgSlug: z.ZodString;
146
+ appSlug: z.ZodString;
147
+ envName: z.ZodString;
148
+ latest: z.ZodOptional<z.ZodObject<{
149
+ deploymentId: z.ZodString;
150
+ orgSlug: z.ZodString;
151
+ appSlug: z.ZodString;
152
+ environment: z.ZodString;
153
+ serverVersion: z.ZodOptional<z.ZodString>;
154
+ active: z.ZodBoolean;
155
+ serverName: z.ZodString;
156
+ createdAt: z.ZodString;
157
+ createdByEmail: z.ZodOptional<z.ZodString>;
158
+ accessMode: z.ZodEnum<{
159
+ "owner-only": "owner-only";
160
+ "org-members": "org-members";
161
+ authenticated: "authenticated";
162
+ public: "public";
163
+ mixed: "mixed";
164
+ customers: "customers";
165
+ }>;
166
+ archivedAt: z.ZodOptional<z.ZodString>;
167
+ endpointUrl: z.ZodOptional<z.ZodString>;
168
+ }, z.core.$strict>>;
169
+ accessMode: z.ZodOptional<z.ZodString>;
170
+ active: z.ZodBoolean;
171
+ archivedAt: z.ZodOptional<z.ZodString>;
172
+ createdAt: z.ZodString;
173
+ lastActivityAt: z.ZodOptional<z.ZodString>;
174
+ deploymentCount: z.ZodNumber;
175
+ }, z.core.$strict>;
176
+ /** The full `GET /v1/orgs/{org}/apps/{app}/envs` response body. No pagination — env counts per app are small. */
177
+ export declare const EnvsListResponseSchema: z.ZodObject<{
178
+ ok: z.ZodLiteral<true>;
179
+ data: z.ZodObject<{
180
+ envs: z.ZodArray<z.ZodObject<{
181
+ orgSlug: z.ZodString;
182
+ appSlug: z.ZodString;
183
+ envName: z.ZodString;
184
+ latest: z.ZodOptional<z.ZodObject<{
185
+ deploymentId: z.ZodString;
186
+ orgSlug: z.ZodString;
187
+ appSlug: z.ZodString;
188
+ environment: z.ZodString;
189
+ serverVersion: z.ZodOptional<z.ZodString>;
190
+ active: z.ZodBoolean;
191
+ serverName: z.ZodString;
192
+ createdAt: z.ZodString;
193
+ createdByEmail: z.ZodOptional<z.ZodString>;
194
+ accessMode: z.ZodEnum<{
195
+ "owner-only": "owner-only";
196
+ "org-members": "org-members";
197
+ authenticated: "authenticated";
198
+ public: "public";
199
+ mixed: "mixed";
200
+ customers: "customers";
201
+ }>;
202
+ archivedAt: z.ZodOptional<z.ZodString>;
203
+ endpointUrl: z.ZodOptional<z.ZodString>;
204
+ }, z.core.$strict>>;
205
+ accessMode: z.ZodOptional<z.ZodString>;
206
+ active: z.ZodBoolean;
207
+ archivedAt: z.ZodOptional<z.ZodString>;
208
+ createdAt: z.ZodString;
209
+ lastActivityAt: z.ZodOptional<z.ZodString>;
210
+ deploymentCount: z.ZodNumber;
211
+ }, z.core.$strict>>;
212
+ }, z.core.$strict>;
213
+ }, z.core.$strict>;
214
+ /** The full `GET /v1/orgs/{org}/apps/{app}/envs/{env}` response body (env inspect). */
215
+ export declare const EnvResponseSchema: z.ZodObject<{
216
+ ok: z.ZodLiteral<true>;
217
+ data: z.ZodObject<{
218
+ orgSlug: z.ZodString;
219
+ appSlug: z.ZodString;
220
+ envName: z.ZodString;
221
+ latest: z.ZodOptional<z.ZodObject<{
222
+ deploymentId: z.ZodString;
223
+ orgSlug: z.ZodString;
224
+ appSlug: z.ZodString;
225
+ environment: z.ZodString;
226
+ serverVersion: z.ZodOptional<z.ZodString>;
227
+ active: z.ZodBoolean;
228
+ serverName: z.ZodString;
229
+ createdAt: z.ZodString;
230
+ createdByEmail: z.ZodOptional<z.ZodString>;
231
+ accessMode: z.ZodEnum<{
232
+ "owner-only": "owner-only";
233
+ "org-members": "org-members";
234
+ authenticated: "authenticated";
235
+ public: "public";
236
+ mixed: "mixed";
237
+ customers: "customers";
238
+ }>;
239
+ archivedAt: z.ZodOptional<z.ZodString>;
240
+ endpointUrl: z.ZodOptional<z.ZodString>;
241
+ }, z.core.$strict>>;
242
+ accessMode: z.ZodOptional<z.ZodString>;
243
+ active: z.ZodBoolean;
244
+ archivedAt: z.ZodOptional<z.ZodString>;
245
+ createdAt: z.ZodString;
246
+ lastActivityAt: z.ZodOptional<z.ZodString>;
247
+ deploymentCount: z.ZodNumber;
248
+ }, z.core.$strict>;
249
+ }, z.core.$strict>;
250
+ /** The full `GET /v1/orgs/{org}/deployments/{deploymentId}` response body (deployment inspect). */
251
+ export declare const DeploymentResponseSchema: z.ZodObject<{
252
+ ok: z.ZodLiteral<true>;
253
+ data: z.ZodObject<{
254
+ deploymentId: z.ZodString;
255
+ orgSlug: z.ZodString;
256
+ appSlug: z.ZodString;
257
+ environment: z.ZodString;
258
+ serverVersion: z.ZodOptional<z.ZodString>;
259
+ active: z.ZodBoolean;
260
+ serverName: z.ZodString;
261
+ createdAt: z.ZodString;
262
+ createdByEmail: z.ZodOptional<z.ZodString>;
263
+ accessMode: z.ZodEnum<{
264
+ "owner-only": "owner-only";
265
+ "org-members": "org-members";
266
+ authenticated: "authenticated";
267
+ public: "public";
268
+ mixed: "mixed";
269
+ customers: "customers";
270
+ }>;
271
+ archivedAt: z.ZodOptional<z.ZodString>;
272
+ endpointUrl: z.ZodOptional<z.ZodString>;
273
+ }, z.core.$strict>;
274
+ }, z.core.$strict>;
275
+ /** Mirrors {@link RepoConnectionRecord} (`../store.js`) — the GHD-1 GitHub repository connection. */
276
+ export declare const RepoConnectionSchema: z.ZodObject<{
277
+ githubRepositoryId: z.ZodNumber;
278
+ installationId: z.ZodNumber;
279
+ ownerLogin: z.ZodString;
280
+ repoName: z.ZodString;
281
+ defaultBranch: z.ZodString;
282
+ repoRoot: z.ZodOptional<z.ZodString>;
283
+ orgSlug: z.ZodString;
284
+ appSlug: z.ZodString;
285
+ enabled: z.ZodBoolean;
286
+ createdBySubject: z.ZodString;
287
+ createdAt: z.ZodString;
288
+ updatedAt: z.ZodString;
289
+ }, z.core.$strict>;
290
+ /** The full `GET`/`POST /v1/orgs/{org}/apps/{app}/github/connection` response body. */
291
+ export declare const GithubConnectionResponseSchema: z.ZodObject<{
292
+ ok: z.ZodLiteral<true>;
293
+ data: z.ZodObject<{
294
+ githubRepositoryId: z.ZodNumber;
295
+ installationId: z.ZodNumber;
296
+ ownerLogin: z.ZodString;
297
+ repoName: z.ZodString;
298
+ defaultBranch: z.ZodString;
299
+ repoRoot: z.ZodOptional<z.ZodString>;
300
+ orgSlug: z.ZodString;
301
+ appSlug: z.ZodString;
302
+ enabled: z.ZodBoolean;
303
+ createdBySubject: z.ZodString;
304
+ createdAt: z.ZodString;
305
+ updatedAt: z.ZodString;
306
+ }, z.core.$strict>;
307
+ }, z.core.$strict>;
308
+ /** The full `GET /v1/github/install-url` response body. */
309
+ export declare const GithubInstallUrlResponseSchema: z.ZodObject<{
310
+ ok: z.ZodLiteral<true>;
311
+ data: z.ZodObject<{
312
+ installUrl: z.ZodString;
313
+ state: z.ZodString;
314
+ }, z.core.$strict>;
315
+ }, z.core.$strict>;
316
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/routes/contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,yDAAyD;AACzD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;kBAezB,CAAC;AAEZ,4FAA4F;AAC5F,eAAO,MAAM,gBAAgB;;;;kBAMlB,CAAC;AAEZ,kDAAkD;AAClD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAYlB,CAAC;AAEZ,wDAAwD;AACxD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAUxB,CAAC;AAEZ,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAKnB,CAAC;AAEZ,kDAAkD;AAClD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAalB,CAAC;AAEZ,iHAAiH;AACjH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBASxB,CAAC;AAEZ,uFAAuF;AACvF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAKnB,CAAC;AAEZ,mGAAmG;AACnG,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;kBAK1B,CAAC;AAEZ,qGAAqG;AACrG,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;kBAetB,CAAC;AAEZ,uFAAuF;AACvF,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;kBAKhC,CAAC;AAEZ,2DAA2D;AAC3D,eAAO,MAAM,8BAA8B;;;;;;kBAUhC,CAAC"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Zod response contracts for the org/app read surface (`GET /v1/orgs/{org}`, `.../apps`,
3
+ * `.../apps/{app}`). Handlers `.parse()` their response payload through these before sending, so the
4
+ * wire shape can never silently drift from what's declared here. The golden fixtures under the
5
+ * repo-root `contract/v1/` directory assert the same schemas parse realistic sample payloads — the
6
+ * cross-package drift gate future CLI/console tests load the same fixtures against, so all three
7
+ * surfaces stay pinned to one contract.
8
+ */
9
+ import { z } from 'zod';
10
+ const ACCESS_MODES = [
11
+ 'owner-only',
12
+ 'org-members',
13
+ 'public',
14
+ 'mixed',
15
+ 'customers',
16
+ 'authenticated',
17
+ ];
18
+ /** Mirrors {@link DeploymentSummary} (`../store.js`). */
19
+ export const DeploymentSummarySchema = z
20
+ .object({
21
+ deploymentId: z.string(),
22
+ orgSlug: z.string(),
23
+ appSlug: z.string(),
24
+ environment: z.string(),
25
+ serverVersion: z.string().optional(),
26
+ active: z.boolean(),
27
+ serverName: z.string(),
28
+ createdAt: z.string(),
29
+ createdByEmail: z.string().optional(),
30
+ accessMode: z.enum(ACCESS_MODES),
31
+ archivedAt: z.string().optional(),
32
+ endpointUrl: z.string().optional(),
33
+ })
34
+ .strict();
35
+ /** Mirrors {@link OrgRecord} (`../store.js`) — the `GET /v1/orgs/{org}` response `data`. */
36
+ export const OrgSummarySchema = z
37
+ .object({
38
+ slug: z.string(),
39
+ displayName: z.string().optional(),
40
+ createdAt: z.string(),
41
+ })
42
+ .strict();
43
+ /** Mirrors {@link AppSummary} (`../store.js`). */
44
+ export const AppSummarySchema = z
45
+ .object({
46
+ orgSlug: z.string(),
47
+ appSlug: z.string(),
48
+ environments: z.array(z.string()),
49
+ latest: DeploymentSummarySchema.optional(),
50
+ accessMode: z.string().optional(),
51
+ active: z.boolean(),
52
+ archivedAt: z.string().optional(),
53
+ createdAt: z.string(),
54
+ lastActivityAt: z.string().optional(),
55
+ })
56
+ .strict();
57
+ /** The full `GET /v1/orgs/{org}/apps` response body. */
58
+ export const AppsListResponseSchema = z
59
+ .object({
60
+ ok: z.literal(true),
61
+ data: z
62
+ .object({
63
+ apps: z.array(AppSummarySchema),
64
+ truncated: z.boolean(),
65
+ })
66
+ .strict(),
67
+ })
68
+ .strict();
69
+ /** The full `GET /v1/orgs/{org}/apps/{app}` response body (app inspect). */
70
+ export const AppResponseSchema = z
71
+ .object({
72
+ ok: z.literal(true),
73
+ data: AppSummarySchema,
74
+ })
75
+ .strict();
76
+ /** Mirrors {@link EnvSummary} (`../store.js`). */
77
+ export const EnvSummarySchema = z
78
+ .object({
79
+ orgSlug: z.string(),
80
+ appSlug: z.string(),
81
+ envName: z.string(),
82
+ latest: DeploymentSummarySchema.optional(),
83
+ accessMode: z.string().optional(),
84
+ active: z.boolean(),
85
+ archivedAt: z.string().optional(),
86
+ createdAt: z.string(),
87
+ lastActivityAt: z.string().optional(),
88
+ deploymentCount: z.number().int().nonnegative(),
89
+ })
90
+ .strict();
91
+ /** The full `GET /v1/orgs/{org}/apps/{app}/envs` response body. No pagination — env counts per app are small. */
92
+ export const EnvsListResponseSchema = z
93
+ .object({
94
+ ok: z.literal(true),
95
+ data: z
96
+ .object({
97
+ envs: z.array(EnvSummarySchema),
98
+ })
99
+ .strict(),
100
+ })
101
+ .strict();
102
+ /** The full `GET /v1/orgs/{org}/apps/{app}/envs/{env}` response body (env inspect). */
103
+ export const EnvResponseSchema = z
104
+ .object({
105
+ ok: z.literal(true),
106
+ data: EnvSummarySchema,
107
+ })
108
+ .strict();
109
+ /** The full `GET /v1/orgs/{org}/deployments/{deploymentId}` response body (deployment inspect). */
110
+ export const DeploymentResponseSchema = z
111
+ .object({
112
+ ok: z.literal(true),
113
+ data: DeploymentSummarySchema,
114
+ })
115
+ .strict();
116
+ /** Mirrors {@link RepoConnectionRecord} (`../store.js`) — the GHD-1 GitHub repository connection. */
117
+ export const RepoConnectionSchema = z
118
+ .object({
119
+ githubRepositoryId: z.number().int().positive(),
120
+ installationId: z.number().int().positive(),
121
+ ownerLogin: z.string(),
122
+ repoName: z.string(),
123
+ defaultBranch: z.string(),
124
+ repoRoot: z.string().optional(),
125
+ orgSlug: z.string(),
126
+ appSlug: z.string(),
127
+ enabled: z.boolean(),
128
+ createdBySubject: z.string(),
129
+ createdAt: z.string(),
130
+ updatedAt: z.string(),
131
+ })
132
+ .strict();
133
+ /** The full `GET`/`POST /v1/orgs/{org}/apps/{app}/github/connection` response body. */
134
+ export const GithubConnectionResponseSchema = z
135
+ .object({
136
+ ok: z.literal(true),
137
+ data: RepoConnectionSchema,
138
+ })
139
+ .strict();
140
+ /** The full `GET /v1/github/install-url` response body. */
141
+ export const GithubInstallUrlResponseSchema = z
142
+ .object({
143
+ ok: z.literal(true),
144
+ data: z
145
+ .object({
146
+ installUrl: z.string(),
147
+ state: z.string(),
148
+ })
149
+ .strict(),
150
+ })
151
+ .strict();
152
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/routes/contracts.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,18 @@ import type { AuditSink } from '../store/audit.js';
10
10
  import type { ControlPlaneStore } from '../store.js';
11
11
  export declare function handleDeployments(req: IncomingMessage, res: ServerResponse, registry: ServerRegistry, gate: DeployAuthGate, controlPlane: ControlPlaneStore, ref: {
12
12
  org: string;
13
- }, url: URL): Promise<void>;
13
+ }, url: URL, endpointBase: string): Promise<void>;
14
+ /**
15
+ * The single-deployment item route: `GET /v1/orgs/{org}/deployments/{deploymentId}` (deployment
16
+ * inspect). Membership-gated exactly like the `apps`/`envs` item routes (`authorizeTenantControl`); a
17
+ * deployment that exists but belongs to a different org 404s identically to an unknown id — cross-org
18
+ * existence must never leak. Archived deployments ARE returned (with `archivedAt` set): inspecting
19
+ * history, including an archived deployment, is the point of this lookup.
20
+ */
21
+ export declare function handleDeploymentItem(req: IncomingMessage, res: ServerResponse, registry: ServerRegistry, gate: DeployAuthGate, controlPlane: ControlPlaneStore, ref: {
22
+ org: string;
23
+ deploymentId: string;
24
+ }, endpointBase: string): Promise<void>;
14
25
  export declare function handleAuditEvents(req: IncomingMessage, res: ServerResponse, gate: DeployAuthGate, controlPlane: ControlPlaneStore, audit: AuditSink, ref: {
15
26
  org: string;
16
27
  }, url: URL): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/routes/deployments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACpB,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACpB,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
1
+ {"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/routes/deployments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMrD,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACpB,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAC1C,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACpB,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
@@ -1,6 +1,9 @@
1
1
  import { sendForbidden, sendJson } from '../http-util.js';
2
+ import { sendContract } from './apps.js';
3
+ import { DeploymentResponseSchema } from './contracts.js';
2
4
  import { authorizeControlPlane, authorizeTenantControl } from './control-plane.js';
3
- export async function handleDeployments(req, res, registry, gate, controlPlane, ref, url) {
5
+ import { withEndpointUrl } from './endpoint-enrichment.js';
6
+ export async function handleDeployments(req, res, registry, gate, controlPlane, ref, url, endpointBase) {
4
7
  const identity = await authorizeControlPlane(req, res, gate, { requireIdentity: true });
5
8
  if (identity === false)
6
9
  return;
@@ -19,11 +22,37 @@ export async function handleDeployments(req, res, registry, gate, controlPlane,
19
22
  ...(env !== undefined ? { env } : {}),
20
23
  ...(includeArchived ? { includeArchived: true } : {}),
21
24
  });
22
- return sendJson(res, 200, { ok: true, deployments });
25
+ return sendJson(res, 200, {
26
+ ok: true,
27
+ deployments: deployments.map((record) => withEndpointUrl(record, endpointBase)),
28
+ });
29
+ }
30
+ catch (error) {
31
+ return sendJson(res, 400, { error: error.message });
32
+ }
33
+ }
34
+ /**
35
+ * The single-deployment item route: `GET /v1/orgs/{org}/deployments/{deploymentId}` (deployment
36
+ * inspect). Membership-gated exactly like the `apps`/`envs` item routes (`authorizeTenantControl`); a
37
+ * deployment that exists but belongs to a different org 404s identically to an unknown id — cross-org
38
+ * existence must never leak. Archived deployments ARE returned (with `archivedAt` set): inspecting
39
+ * history, including an archived deployment, is the point of this lookup.
40
+ */
41
+ export async function handleDeploymentItem(req, res, registry, gate, controlPlane, ref, endpointBase) {
42
+ const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org);
43
+ if (identity === false)
44
+ return;
45
+ let deployment;
46
+ try {
47
+ deployment = await registry.getDeployment(ref.org, ref.deploymentId);
23
48
  }
24
49
  catch (error) {
25
50
  return sendJson(res, 400, { error: error.message });
26
51
  }
52
+ if (deployment === undefined)
53
+ return sendJson(res, 404, { error: 'unknown deployment' });
54
+ const enriched = withEndpointUrl(deployment, endpointBase);
55
+ return sendContract(res, () => DeploymentResponseSchema.parse({ ok: true, data: enriched }));
27
56
  }
28
57
  export async function handleAuditEvents(req, res, gate, controlPlane, audit, ref, url) {
29
58
  const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org);
@@ -1 +1 @@
1
- {"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/routes/deployments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/routes/deployments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Route-layer endpoint enrichment for the resource read surface (CodeRabbit finding, 2026-07-05):
3
+ * `DeploymentSummary.endpointUrl` is derived from the REQUEST's public base (it is a wire concern,
4
+ * not stored state — the same deployment answers on whatever host the service is reached through),
5
+ * so the store/aggregation layers stay base-agnostic and the routes stamp the URL on the way out.
6
+ * Used by the apps/envs facing deployments and the deployments collection/item responses, keeping
7
+ * the whole resource family consistent with what `deploy`/`status` already report.
8
+ */
9
+ import type { IncomingMessage } from 'node:http';
10
+ import type { AppSummary, DeploymentSummary, EnvSummary } from '../store.js';
11
+ /** Per-request endpoint base: explicit `publicBaseUrl` wins, else the request's own origin. */
12
+ export type ResolveEndpointBase = (req: IncomingMessage) => string;
13
+ /** Stamp `endpointUrl` onto one deployment summary. */
14
+ export declare function withEndpointUrl(summary: DeploymentSummary, base: string): DeploymentSummary;
15
+ export declare function appWithEndpointUrl(app: AppSummary, base: string): AppSummary;
16
+ export declare function envWithEndpointUrl(env: EnvSummary, base: string): EnvSummary;
17
+ //# sourceMappingURL=endpoint-enrichment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-enrichment.d.ts","sourceRoot":"","sources":["../../src/routes/endpoint-enrichment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE7E,+FAA+F;AAC/F,MAAM,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAC;AAEnE,uDAAuD;AACvD,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAS3F;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAE5E;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAE5E"}
@@ -0,0 +1,15 @@
1
+ import { tenantMcpUrl } from '../registry-helpers.js';
2
+ /** Stamp `endpointUrl` onto one deployment summary. */
3
+ export function withEndpointUrl(summary, base) {
4
+ return {
5
+ ...summary,
6
+ endpointUrl: tenantMcpUrl(base, { org: summary.orgSlug, app: summary.appSlug, env: summary.environment }, summary.serverVersion),
7
+ };
8
+ }
9
+ export function appWithEndpointUrl(app, base) {
10
+ return app.latest === undefined ? app : { ...app, latest: withEndpointUrl(app.latest, base) };
11
+ }
12
+ export function envWithEndpointUrl(env, base) {
13
+ return env.latest === undefined ? env : { ...env, latest: withEndpointUrl(env.latest, base) };
14
+ }
15
+ //# sourceMappingURL=endpoint-enrichment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-enrichment.js","sourceRoot":"","sources":["../../src/routes/endpoint-enrichment.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAMtD,uDAAuD;AACvD,MAAM,UAAU,eAAe,CAAC,OAA0B,EAAE,IAAY;IACtE,OAAO;QACL,GAAG,OAAO;QACV,WAAW,EAAE,YAAY,CACvB,IAAI,EACJ,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,EACxE,OAAO,CAAC,aAAa,CACtB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAe,EAAE,IAAY;IAC9D,OAAO,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAe,EAAE,IAAY;IAC9D,OAAO,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;AAChG,CAAC"}