@noodleseed/one 0.15.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 (288) hide show
  1. package/dist/agents.d.ts +6 -2
  2. package/dist/agents.d.ts.map +1 -1
  3. package/dist/agents.js +11 -3
  4. package/dist/agents.js.map +1 -1
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +49 -5
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/analytics-ops.d.ts.map +1 -1
  9. package/dist/commands/analytics-ops.js +19 -2
  10. package/dist/commands/analytics-ops.js.map +1 -1
  11. package/dist/commands/apps-ops.d.ts +17 -0
  12. package/dist/commands/apps-ops.d.ts.map +1 -0
  13. package/dist/commands/apps-ops.js +285 -0
  14. package/dist/commands/apps-ops.js.map +1 -0
  15. package/dist/commands/archive-ops.js +2 -2
  16. package/dist/commands/archive-ops.js.map +1 -1
  17. package/dist/commands/catalog-data-config.d.ts +9 -0
  18. package/dist/commands/catalog-data-config.d.ts.map +1 -0
  19. package/dist/commands/catalog-data-config.js +67 -0
  20. package/dist/commands/catalog-data-config.js.map +1 -0
  21. package/dist/commands/catalog-data-core.d.ts +13 -0
  22. package/dist/commands/catalog-data-core.d.ts.map +1 -0
  23. package/dist/commands/catalog-data-core.js +354 -0
  24. package/dist/commands/catalog-data-core.js.map +1 -0
  25. package/dist/commands/catalog-data-resources.d.ts +8 -0
  26. package/dist/commands/catalog-data-resources.d.ts.map +1 -0
  27. package/dist/commands/catalog-data-resources.js +506 -0
  28. package/dist/commands/catalog-data-resources.js.map +1 -0
  29. package/dist/commands/catalog-dispatch.d.ts +15 -0
  30. package/dist/commands/catalog-dispatch.d.ts.map +1 -0
  31. package/dist/commands/catalog-dispatch.js +95 -0
  32. package/dist/commands/catalog-dispatch.js.map +1 -0
  33. package/dist/commands/catalog-render.d.ts +28 -0
  34. package/dist/commands/catalog-render.d.ts.map +1 -0
  35. package/dist/commands/catalog-render.js +142 -0
  36. package/dist/commands/catalog-render.js.map +1 -0
  37. package/dist/commands/catalog-types.d.ts +46 -0
  38. package/dist/commands/catalog-types.d.ts.map +1 -0
  39. package/dist/commands/catalog-types.js +7 -0
  40. package/dist/commands/catalog-types.js.map +1 -0
  41. package/dist/commands/catalog.d.ts +30 -0
  42. package/dist/commands/catalog.d.ts.map +1 -0
  43. package/dist/commands/catalog.js +108 -0
  44. package/dist/commands/catalog.js.map +1 -0
  45. package/dist/commands/commands-ops.d.ts +2 -0
  46. package/dist/commands/commands-ops.d.ts.map +1 -0
  47. package/dist/commands/commands-ops.js +19 -0
  48. package/dist/commands/commands-ops.js.map +1 -0
  49. package/dist/commands/deploy-ops.d.ts +45 -3
  50. package/dist/commands/deploy-ops.d.ts.map +1 -1
  51. package/dist/commands/deploy-ops.js +200 -227
  52. package/dist/commands/deploy-ops.js.map +1 -1
  53. package/dist/commands/deploy-status-ops.d.ts +13 -0
  54. package/dist/commands/deploy-status-ops.d.ts.map +1 -0
  55. package/dist/commands/deploy-status-ops.js +252 -0
  56. package/dist/commands/deploy-status-ops.js.map +1 -0
  57. package/dist/commands/deployments-ops.d.ts +30 -0
  58. package/dist/commands/deployments-ops.d.ts.map +1 -0
  59. package/dist/commands/deployments-ops.js +248 -0
  60. package/dist/commands/deployments-ops.js.map +1 -0
  61. package/dist/commands/envs-ops.d.ts +8 -0
  62. package/dist/commands/envs-ops.d.ts.map +1 -0
  63. package/dist/commands/envs-ops.js +240 -0
  64. package/dist/commands/envs-ops.js.map +1 -0
  65. package/dist/commands/github-ops.d.ts +15 -0
  66. package/dist/commands/github-ops.d.ts.map +1 -0
  67. package/dist/commands/github-ops.js +296 -0
  68. package/dist/commands/github-ops.js.map +1 -0
  69. package/dist/commands/github-shared.d.ts +60 -0
  70. package/dist/commands/github-shared.d.ts.map +1 -0
  71. package/dist/commands/github-shared.js +175 -0
  72. package/dist/commands/github-shared.js.map +1 -0
  73. package/dist/commands/org-admin.d.ts.map +1 -1
  74. package/dist/commands/org-admin.js +223 -43
  75. package/dist/commands/org-admin.js.map +1 -1
  76. package/dist/commands/output.d.ts +35 -0
  77. package/dist/commands/output.d.ts.map +1 -0
  78. package/dist/commands/output.js +34 -0
  79. package/dist/commands/output.js.map +1 -0
  80. package/dist/commands/resource-shared.d.ts +132 -0
  81. package/dist/commands/resource-shared.d.ts.map +1 -0
  82. package/dist/commands/resource-shared.js +159 -0
  83. package/dist/commands/resource-shared.js.map +1 -0
  84. package/dist/commands/session.d.ts +6 -9
  85. package/dist/commands/session.d.ts.map +1 -1
  86. package/dist/commands/session.js +42 -116
  87. package/dist/commands/session.js.map +1 -1
  88. package/dist/commands/shared.d.ts.map +1 -1
  89. package/dist/commands/shared.js +3 -91
  90. package/dist/commands/shared.js.map +1 -1
  91. package/dist/commands/target-picker.d.ts +44 -0
  92. package/dist/commands/target-picker.d.ts.map +1 -0
  93. package/dist/commands/target-picker.js +88 -0
  94. package/dist/commands/target-picker.js.map +1 -0
  95. package/dist/commands/update-ops.js +1 -1
  96. package/dist/diagnostics.d.ts +5 -0
  97. package/dist/diagnostics.d.ts.map +1 -1
  98. package/dist/diagnostics.js +1 -1
  99. package/dist/diagnostics.js.map +1 -1
  100. package/dist/doctor.d.ts.map +1 -1
  101. package/dist/doctor.js +33 -0
  102. package/dist/doctor.js.map +1 -1
  103. package/dist/fire.d.ts +94 -0
  104. package/dist/fire.d.ts.map +1 -0
  105. package/dist/fire.js +418 -0
  106. package/dist/fire.js.map +1 -0
  107. package/dist/flavor.d.ts +19 -0
  108. package/dist/flavor.d.ts.map +1 -0
  109. package/dist/flavor.js +95 -0
  110. package/dist/flavor.js.map +1 -0
  111. package/dist/project.js +6 -3
  112. package/dist/project.js.map +1 -1
  113. package/dist/prompts.d.ts.map +1 -1
  114. package/dist/prompts.js +30 -17
  115. package/dist/prompts.js.map +1 -1
  116. package/dist/relative-time.d.ts +8 -0
  117. package/dist/relative-time.d.ts.map +1 -0
  118. package/dist/relative-time.js +29 -0
  119. package/dist/relative-time.js.map +1 -0
  120. package/dist/table.d.ts +47 -0
  121. package/dist/table.d.ts.map +1 -0
  122. package/dist/table.js +152 -0
  123. package/dist/table.js.map +1 -0
  124. package/dist/update-binary.js +1 -1
  125. package/dist/update-check.d.ts +1 -1
  126. package/dist/update-check.js +1 -1
  127. package/dist/update.js +1 -1
  128. package/dist/watch.d.ts +52 -0
  129. package/dist/watch.d.ts.map +1 -0
  130. package/dist/watch.js +177 -0
  131. package/dist/watch.js.map +1 -0
  132. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
  133. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +23 -1
  134. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
  135. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  136. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +5 -0
  137. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  138. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  139. package/node_modules/@noodle-borg/authoring/dist/connectors.js +14 -0
  140. package/node_modules/@noodle-borg/authoring/dist/connectors.js.map +1 -1
  141. package/node_modules/@noodle-borg/connector-defs/dist/compile.js +9 -0
  142. package/node_modules/@noodle-borg/connector-defs/dist/compile.js.map +1 -1
  143. package/node_modules/@noodle-borg/module/dist/contract.d.ts +1 -1
  144. package/node_modules/@noodle-borg/module/dist/contract.d.ts.map +1 -1
  145. package/node_modules/@noodle-borg/openapi-import/dist/index.d.ts.map +1 -1
  146. package/node_modules/@noodle-borg/openapi-import/dist/index.js +3 -1
  147. package/node_modules/@noodle-borg/openapi-import/dist/index.js.map +1 -1
  148. package/node_modules/@noodle-borg/service/dist/github/app-client.d.ts +49 -0
  149. package/node_modules/@noodle-borg/service/dist/github/app-client.d.ts.map +1 -0
  150. package/node_modules/@noodle-borg/service/dist/github/app-client.js +23 -0
  151. package/node_modules/@noodle-borg/service/dist/github/app-client.js.map +1 -0
  152. package/node_modules/@noodle-borg/service/dist/github/install-nonce.d.ts +23 -0
  153. package/node_modules/@noodle-borg/service/dist/github/install-nonce.d.ts.map +1 -0
  154. package/node_modules/@noodle-borg/service/dist/github/install-nonce.js +57 -0
  155. package/node_modules/@noodle-borg/service/dist/github/install-nonce.js.map +1 -0
  156. package/node_modules/@noodle-borg/service/dist/github/pending-installations.d.ts +31 -0
  157. package/node_modules/@noodle-borg/service/dist/github/pending-installations.d.ts.map +1 -0
  158. package/node_modules/@noodle-borg/service/dist/github/pending-installations.js +34 -0
  159. package/node_modules/@noodle-borg/service/dist/github/pending-installations.js.map +1 -0
  160. package/node_modules/@noodle-borg/service/dist/index.d.ts +7 -1
  161. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  162. package/node_modules/@noodle-borg/service/dist/index.js +7 -1
  163. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  164. package/node_modules/@noodle-borg/service/dist/options.d.ts +28 -1
  165. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  166. package/node_modules/@noodle-borg/service/dist/registry-state.d.ts +28 -7
  167. package/node_modules/@noodle-borg/service/dist/registry-state.d.ts.map +1 -1
  168. package/node_modules/@noodle-borg/service/dist/registry-state.js +116 -3
  169. package/node_modules/@noodle-borg/service/dist/registry-state.js.map +1 -1
  170. package/node_modules/@noodle-borg/service/dist/registry.d.ts +14 -1
  171. package/node_modules/@noodle-borg/service/dist/registry.d.ts.map +1 -1
  172. package/node_modules/@noodle-borg/service/dist/registry.js +20 -45
  173. package/node_modules/@noodle-borg/service/dist/registry.js.map +1 -1
  174. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.d.ts +23 -0
  175. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.d.ts.map +1 -0
  176. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.js +53 -0
  177. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.js.map +1 -0
  178. package/node_modules/@noodle-borg/service/dist/routes/apps.d.ts +24 -0
  179. package/node_modules/@noodle-borg/service/dist/routes/apps.d.ts.map +1 -0
  180. package/node_modules/@noodle-borg/service/dist/routes/apps.js +72 -0
  181. package/node_modules/@noodle-borg/service/dist/routes/apps.js.map +1 -0
  182. package/node_modules/@noodle-borg/service/dist/routes/contracts.d.ts +316 -0
  183. package/node_modules/@noodle-borg/service/dist/routes/contracts.d.ts.map +1 -0
  184. package/node_modules/@noodle-borg/service/dist/routes/contracts.js +152 -0
  185. package/node_modules/@noodle-borg/service/dist/routes/contracts.js.map +1 -0
  186. package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts +12 -1
  187. package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts.map +1 -1
  188. package/node_modules/@noodle-borg/service/dist/routes/deployments.js +31 -2
  189. package/node_modules/@noodle-borg/service/dist/routes/deployments.js.map +1 -1
  190. package/node_modules/@noodle-borg/service/dist/routes/endpoint-enrichment.d.ts +17 -0
  191. package/node_modules/@noodle-borg/service/dist/routes/endpoint-enrichment.d.ts.map +1 -0
  192. package/node_modules/@noodle-borg/service/dist/routes/endpoint-enrichment.js +15 -0
  193. package/node_modules/@noodle-borg/service/dist/routes/endpoint-enrichment.js.map +1 -0
  194. package/node_modules/@noodle-borg/service/dist/routes/envs.d.ts +22 -0
  195. package/node_modules/@noodle-borg/service/dist/routes/envs.d.ts.map +1 -0
  196. package/node_modules/@noodle-borg/service/dist/routes/envs.js +46 -0
  197. package/node_modules/@noodle-borg/service/dist/routes/envs.js.map +1 -0
  198. package/node_modules/@noodle-borg/service/dist/routes/github-connection.d.ts +29 -0
  199. package/node_modules/@noodle-borg/service/dist/routes/github-connection.d.ts.map +1 -0
  200. package/node_modules/@noodle-borg/service/dist/routes/github-connection.js +202 -0
  201. package/node_modules/@noodle-borg/service/dist/routes/github-connection.js.map +1 -0
  202. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.d.ts +29 -0
  203. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.d.ts.map +1 -0
  204. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.js +60 -0
  205. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.js.map +1 -0
  206. package/node_modules/@noodle-borg/service/dist/routes/github-setup.d.ts +28 -0
  207. package/node_modules/@noodle-borg/service/dist/routes/github-setup.d.ts.map +1 -0
  208. package/node_modules/@noodle-borg/service/dist/routes/github-setup.js +80 -0
  209. package/node_modules/@noodle-borg/service/dist/routes/github-setup.js.map +1 -0
  210. package/node_modules/@noodle-borg/service/dist/routes/org-admin.d.ts +5 -0
  211. package/node_modules/@noodle-borg/service/dist/routes/org-admin.d.ts.map +1 -1
  212. package/node_modules/@noodle-borg/service/dist/routes/org-admin.js +13 -1
  213. package/node_modules/@noodle-borg/service/dist/routes/org-admin.js.map +1 -1
  214. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +44 -0
  215. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
  216. package/node_modules/@noodle-borg/service/dist/routes/paths.js +116 -1
  217. package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
  218. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.d.ts +33 -0
  219. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.d.ts.map +1 -0
  220. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.js +69 -0
  221. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.js.map +1 -0
  222. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  223. package/node_modules/@noodle-borg/service/dist/serve.js +6 -1
  224. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  225. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  226. package/node_modules/@noodle-borg/service/dist/service.js +60 -45
  227. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  228. package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts +1 -0
  229. package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts.map +1 -1
  230. package/node_modules/@noodle-borg/service/dist/store/control-plane.js +3 -0
  231. package/node_modules/@noodle-borg/service/dist/store/control-plane.js.map +1 -1
  232. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.d.ts +23 -0
  233. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.d.ts.map +1 -0
  234. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.js +137 -0
  235. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.js.map +1 -0
  236. package/node_modules/@noodle-borg/service/dist/store/github-connections.d.ts +30 -0
  237. package/node_modules/@noodle-borg/service/dist/store/github-connections.d.ts.map +1 -0
  238. package/node_modules/@noodle-borg/service/dist/store/github-connections.js +116 -0
  239. package/node_modules/@noodle-borg/service/dist/store/github-connections.js.map +1 -0
  240. package/node_modules/@noodle-borg/service/dist/store/in-memory.d.ts +32 -0
  241. package/node_modules/@noodle-borg/service/dist/store/in-memory.d.ts.map +1 -0
  242. package/node_modules/@noodle-borg/service/dist/store/in-memory.js +169 -0
  243. package/node_modules/@noodle-borg/service/dist/store/in-memory.js.map +1 -0
  244. package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts +14 -1
  245. package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts.map +1 -1
  246. package/node_modules/@noodle-borg/service/dist/store/json-file.js +54 -1
  247. package/node_modules/@noodle-borg/service/dist/store/json-file.js.map +1 -1
  248. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.d.ts +11 -0
  249. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.d.ts.map +1 -0
  250. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.js +31 -0
  251. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.js.map +1 -0
  252. package/node_modules/@noodle-borg/service/dist/store/postgres-config.d.ts +21 -0
  253. package/node_modules/@noodle-borg/service/dist/store/postgres-config.d.ts.map +1 -0
  254. package/node_modules/@noodle-borg/service/dist/store/postgres-config.js +80 -0
  255. package/node_modules/@noodle-borg/service/dist/store/postgres-config.js.map +1 -0
  256. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts +1 -0
  257. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts.map +1 -1
  258. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js +6 -0
  259. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js.map +1 -1
  260. package/node_modules/@noodle-borg/service/dist/store/postgres-envs.d.ts +7 -0
  261. package/node_modules/@noodle-borg/service/dist/store/postgres-envs.d.ts.map +1 -0
  262. package/node_modules/@noodle-borg/service/dist/store/postgres-envs.js +34 -0
  263. package/node_modules/@noodle-borg/service/dist/store/postgres-envs.js.map +1 -0
  264. package/node_modules/@noodle-borg/service/dist/store/postgres-github.d.ts +12 -0
  265. package/node_modules/@noodle-borg/service/dist/store/postgres-github.d.ts.map +1 -0
  266. package/node_modules/@noodle-borg/service/dist/store/postgres-github.js +125 -0
  267. package/node_modules/@noodle-borg/service/dist/store/postgres-github.js.map +1 -0
  268. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
  269. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +36 -0
  270. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
  271. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +25 -2
  272. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
  273. package/node_modules/@noodle-borg/service/dist/store/postgres.js +56 -75
  274. package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
  275. package/node_modules/@noodle-borg/service/dist/store/records.d.ts +56 -3
  276. package/node_modules/@noodle-borg/service/dist/store/records.d.ts.map +1 -1
  277. package/node_modules/@noodle-borg/service/dist/store/records.js +158 -0
  278. package/node_modules/@noodle-borg/service/dist/store/records.js.map +1 -1
  279. package/node_modules/@noodle-borg/service/dist/store/validate.d.ts +2 -0
  280. package/node_modules/@noodle-borg/service/dist/store/validate.d.ts.map +1 -1
  281. package/node_modules/@noodle-borg/service/dist/store/validate.js +7 -0
  282. package/node_modules/@noodle-borg/service/dist/store/validate.js.map +1 -1
  283. package/node_modules/@noodle-borg/service/dist/store.d.ts +161 -17
  284. package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
  285. package/node_modules/@noodle-borg/service/dist/store.js +8 -118
  286. package/node_modules/@noodle-borg/service/dist/store.js.map +1 -1
  287. package/node_modules/@noodle-borg/service/package.json +2 -1
  288. package/package.json +2 -2
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Hosted deployment state operations, split out of `deploy-ops.ts` to keep both under the size
3
+ * gate: `status` (read a deployment's status/health), `rollback` (reactivate a historical
4
+ * deployment), and `access` (change a deployment's identity access mode). All three share the
5
+ * same tenant-target resolution + control-plane request path and are independent of the
6
+ * `deploy`/`open` flow that stays in `deploy-ops.ts`.
7
+ */
8
+ import { resolveControlPlaneToken, serviceJson } from '../control-plane.js';
9
+ import { parseWatchFlags, runWatch, watchJsonConflictFailure } from '../watch.js';
10
+ import { normalizeCommandServerVersion } from './deploy-version-resolution.js';
11
+ import { isAccessMode, parseTenantCommandArgs, printCliFailure, resolveTenantTarget, serviceFailure, } from './shared.js';
12
+ /**
13
+ * Fetch + render the `status` view — shared by the one-shot print and `--watch`. Exported so
14
+ * tests can exercise the exact function `--watch` polls without driving the live loop itself.
15
+ */
16
+ export async function statusFrame(statusUrl, resolved) {
17
+ try {
18
+ const body = await serviceJson(statusUrl, resolved.token);
19
+ const lines = [
20
+ `service: ${resolved.serviceUrl}`,
21
+ `target: ${body.target.org}/${body.target.app}/${body.target.env}`,
22
+ `deploy: ${body.deployment.deploymentId}`,
23
+ ...(body.deployment.serverVersion !== undefined
24
+ ? [`version: ${body.deployment.serverVersion}`]
25
+ : []),
26
+ `url: ${body.deployment.endpointUrl}`,
27
+ `access: ${body.deployment.accessMode}`,
28
+ `health: ${body.health.state}`,
29
+ ...(!body.config.ok ? [`missing secrets: ${body.config.missingSecrets.join(', ')}`] : []),
30
+ ];
31
+ return { ok: true, frame: lines.join('\n') };
32
+ }
33
+ catch (error) {
34
+ return { ok: false, error: serviceFailure('status', error, 'noodle doctor') };
35
+ }
36
+ }
37
+ export async function runStatus(rest, env, home) {
38
+ const args = parseTenantCommandArgs(rest);
39
+ const { watch, intervalMs } = parseWatchFlags(rest);
40
+ if (watch && args.json) {
41
+ return printCliFailure('status', watchJsonConflictFailure('noodle status --json'), true);
42
+ }
43
+ const target = resolveTenantTarget(args, home);
44
+ if (!target.ok)
45
+ return printCliFailure('status', target.error, args.json);
46
+ const serverVersion = normalizeCommandServerVersion('status', args.serverVersion, args.json);
47
+ if (!serverVersion.ok)
48
+ return serverVersion.exitCode;
49
+ const resolved = await resolveControlPlaneToken({
50
+ serviceFlag: args.service ?? target.serviceUrl,
51
+ authFlag: args.authToken,
52
+ env,
53
+ home,
54
+ });
55
+ if (resolved.token === undefined) {
56
+ return printCliFailure('status', {
57
+ code: 'auth_required',
58
+ message: 'No control-plane login token is available.',
59
+ cause: 'Hosted status requires an authenticated Noodle Seed Cloud identity.',
60
+ fix: 'Sign in to the target service.',
61
+ next: 'noodle login',
62
+ exitCode: 3,
63
+ }, args.json);
64
+ }
65
+ const statusUrl = `${resolved.serviceUrl}/v1/orgs/${encodeURIComponent(target.org)}` +
66
+ `/apps/${encodeURIComponent(target.app)}/envs/${encodeURIComponent(target.env)}/status` +
67
+ (serverVersion.value !== undefined
68
+ ? `?version=${encodeURIComponent(serverVersion.value)}`
69
+ : '');
70
+ if (args.json) {
71
+ try {
72
+ const body = await serviceJson(statusUrl, resolved.token);
73
+ console.log(JSON.stringify({ ...body, service: resolved.serviceUrl }));
74
+ return 0;
75
+ }
76
+ catch (error) {
77
+ return printCliFailure('status', serviceFailure('status', error, 'noodle doctor'), true);
78
+ }
79
+ }
80
+ if (watch) {
81
+ return runWatch({
82
+ command: 'status',
83
+ intervalMs,
84
+ render: () => statusFrame(statusUrl, resolved),
85
+ });
86
+ }
87
+ const result = await statusFrame(statusUrl, resolved);
88
+ if (!result.ok)
89
+ return printCliFailure('status', result.error, false);
90
+ console.log(result.frame);
91
+ return 0;
92
+ }
93
+ export async function runRollback(rest, env, home) {
94
+ let deploymentId;
95
+ let reason;
96
+ const tenantArgs = [];
97
+ for (let i = 0; i < rest.length; i++) {
98
+ const arg = rest[i];
99
+ if (arg === '--reason')
100
+ reason = rest[++i];
101
+ else if (arg === '--org' ||
102
+ arg === '--app' ||
103
+ arg === '--env' ||
104
+ arg === '--service' ||
105
+ arg === '--auth-token') {
106
+ tenantArgs.push(arg);
107
+ const value = rest[++i];
108
+ if (value !== undefined)
109
+ tenantArgs.push(value);
110
+ }
111
+ else if (arg === '--json') {
112
+ tenantArgs.push(arg);
113
+ }
114
+ else if (arg?.startsWith('--')) {
115
+ const args = parseTenantCommandArgs(rest);
116
+ return printCliFailure('rollback', {
117
+ code: 'usage_error',
118
+ message: `unknown rollback option ${arg}`,
119
+ cause: `${arg} is not a supported rollback option.`,
120
+ fix: 'Remove the unknown option or use a supported rollback flag.',
121
+ next: 'noodle rollback <deploymentId> --org <org> --app <app> --env <env>',
122
+ exitCode: 2,
123
+ }, args.json);
124
+ }
125
+ else if (arg !== undefined && !arg.startsWith('--') && deploymentId === undefined) {
126
+ deploymentId = arg;
127
+ }
128
+ }
129
+ const args = parseTenantCommandArgs(tenantArgs);
130
+ if (deploymentId === undefined || deploymentId.startsWith('--')) {
131
+ return printCliFailure('rollback', {
132
+ code: 'usage_error',
133
+ message: 'rollback requires a deployment id',
134
+ cause: 'No deployment id was provided.',
135
+ fix: 'Pass the historical deployment id to reactivate.',
136
+ next: 'noodle deployments list --org <org> --app <app> --env <env>',
137
+ exitCode: 2,
138
+ }, args.json);
139
+ }
140
+ const target = resolveTenantTarget(args, home);
141
+ if (!target.ok)
142
+ return printCliFailure('rollback', target.error, args.json);
143
+ const resolved = await resolveControlPlaneToken({
144
+ serviceFlag: args.service ?? target.serviceUrl,
145
+ authFlag: args.authToken,
146
+ env,
147
+ home,
148
+ });
149
+ if (resolved.token === undefined) {
150
+ return printCliFailure('rollback', {
151
+ code: 'auth_required',
152
+ message: 'No control-plane login token is available.',
153
+ cause: 'Hosted rollback requires an authenticated Noodle Seed Cloud identity.',
154
+ fix: 'Sign in to the target service.',
155
+ next: 'noodle login',
156
+ exitCode: 3,
157
+ }, args.json);
158
+ }
159
+ try {
160
+ const body = await serviceJson(`${resolved.serviceUrl}/v1/orgs/${encodeURIComponent(target.org)}` +
161
+ `/apps/${encodeURIComponent(target.app)}/envs/${encodeURIComponent(target.env)}/rollback`, resolved.token, {
162
+ method: 'POST',
163
+ headers: { 'content-type': 'application/json' },
164
+ body: JSON.stringify({
165
+ deploymentId,
166
+ ...(reason !== undefined ? { reason } : {}),
167
+ }),
168
+ });
169
+ if (args.json) {
170
+ console.log(JSON.stringify({ ...body, service: resolved.serviceUrl }));
171
+ return 0;
172
+ }
173
+ console.log(`service: ${resolved.serviceUrl}`);
174
+ console.log(`target: ${body.target.org}/${body.target.app}/${body.target.env}`);
175
+ console.log(`active: ${body.rollback.deploymentId}`);
176
+ if (body.rollback.serverVersion !== undefined)
177
+ console.log(`version: ${body.rollback.serverVersion}`);
178
+ if (body.rollback.previousDeploymentId !== undefined) {
179
+ console.log(`from: ${body.rollback.previousDeploymentId}`);
180
+ }
181
+ console.log(`url: ${body.rollback.endpointUrl}`);
182
+ console.log(`access: ${body.rollback.accessMode}`);
183
+ if (body.rollback.alreadyActive)
184
+ console.log('status: already active');
185
+ return 0;
186
+ }
187
+ catch (error) {
188
+ return printCliFailure('rollback', serviceFailure('rollback', error, 'noodle status'), args.json);
189
+ }
190
+ }
191
+ export async function runAccess(rest, env, home) {
192
+ const [action, mode, ...tail] = rest;
193
+ const args = parseTenantCommandArgs(tail);
194
+ if (action !== 'set' || !isAccessMode(mode)) {
195
+ return printCliFailure('access', {
196
+ code: 'usage_error',
197
+ message: 'usage: noodle access set owner-only|org-members|authenticated|customers',
198
+ cause: 'The access command needs a supported identity access mode.',
199
+ fix: 'Choose owner-only, org-members, authenticated, or customers.',
200
+ next: 'noodle access set owner-only',
201
+ exitCode: 2,
202
+ }, args.json);
203
+ }
204
+ const target = resolveTenantTarget(args, home);
205
+ if (!target.ok)
206
+ return printCliFailure('access', target.error, args.json);
207
+ const serverVersion = normalizeCommandServerVersion('access', args.serverVersion, args.json);
208
+ if (!serverVersion.ok)
209
+ return serverVersion.exitCode;
210
+ const resolved = await resolveControlPlaneToken({
211
+ serviceFlag: args.service ?? target.serviceUrl,
212
+ authFlag: args.authToken,
213
+ env,
214
+ home,
215
+ });
216
+ if (resolved.token === undefined) {
217
+ return printCliFailure('access', {
218
+ code: 'auth_required',
219
+ message: 'No control-plane login token is available.',
220
+ cause: 'Hosted access updates require an authenticated Noodle Seed Cloud identity.',
221
+ fix: 'Sign in to the target service.',
222
+ next: 'noodle login',
223
+ exitCode: 3,
224
+ }, args.json);
225
+ }
226
+ try {
227
+ const body = await serviceJson(`${resolved.serviceUrl}/v1/orgs/${encodeURIComponent(target.org)}` +
228
+ `/apps/${encodeURIComponent(target.app)}/envs/${encodeURIComponent(target.env)}/access`, resolved.token, {
229
+ method: 'PATCH',
230
+ headers: { 'content-type': 'application/json' },
231
+ body: JSON.stringify({
232
+ accessMode: mode,
233
+ ...(serverVersion.value !== undefined ? { serverVersion: serverVersion.value } : {}),
234
+ }),
235
+ });
236
+ if (args.json) {
237
+ console.log(JSON.stringify({ ...body, service: resolved.serviceUrl }));
238
+ return 0;
239
+ }
240
+ console.log(`service: ${resolved.serviceUrl}`);
241
+ console.log(`target: ${body.target.org}/${body.target.app}/${body.target.env}`);
242
+ console.log(`deploy: ${body.deployment.deploymentId}`);
243
+ if (body.deployment.serverVersion !== undefined)
244
+ console.log(`version: ${body.deployment.serverVersion}`);
245
+ console.log(`access: ${body.deployment.accessMode}`);
246
+ return 0;
247
+ }
248
+ catch (error) {
249
+ return printCliFailure('access', serviceFailure('access', error, 'noodle status'), args.json);
250
+ }
251
+ }
252
+ //# sourceMappingURL=deploy-status-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-status-ops.js","sourceRoot":"","sources":["../../src/commands/deploy-status-ops.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAmB,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,cAAc,GACf,MAAM,aAAa,CAAC;AAmBrB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAiB,EACjB,QAAgD;IAEhD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAiB,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG;YACZ,YAAY,QAAQ,CAAC,UAAU,EAAE;YACjC,YAAY,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACnE,YAAY,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;YAC1C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,KAAK,SAAS;gBAC7C,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;gBAC/C,CAAC,CAAC,EAAE,CAAC;YACP,YAAY,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YACzC,YAAY,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;YACxC,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YAC/B,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1F,CAAC;QACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC;IAChF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAuB,EACvB,GAAsB,EACtB,IAAY;IAEZ,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACvB,OAAO,eAAe,CAAC,QAAQ,EAAE,wBAAwB,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,6BAA6B,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7F,IAAI,CAAC,aAAa,CAAC,EAAE;QAAE,OAAO,aAAa,CAAC,QAAQ,CAAC;IACrD,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC;QAC9C,WAAW,EAAE,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU;QAC9C,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,GAAG;QACH,IAAI;KACL,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,eAAe,CACpB,QAAQ,EACR;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,4CAA4C;YACrD,KAAK,EAAE,qEAAqE;YAC5E,GAAG,EAAE,gCAAgC;YACrC,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,CAAC;SACZ,EACD,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GACb,GAAG,QAAQ,CAAC,UAAU,YAAY,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QAClE,SAAS,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS;QACvF,CAAC,aAAa,CAAC,KAAK,KAAK,SAAS;YAChC,CAAC,CAAC,YAAY,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YACvD,CAAC,CAAC,EAAE,CAAC,CAAC;IAEV,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAiB,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,CAAC;QACX,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,QAAQ,CAAC;YACd,OAAO,EAAE,QAAQ;YACjB,UAAU;YACV,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAuB,EACvB,GAAsB,EACtB,IAAY;IAEZ,IAAI,YAAgC,CAAC;IACrC,IAAI,MAA0B,CAAC;IAC/B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,UAAU;YAAE,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aACtC,IACH,GAAG,KAAK,OAAO;YACf,GAAG,KAAK,OAAO;YACf,GAAG,KAAK,OAAO;YACf,GAAG,KAAK,WAAW;YACnB,GAAG,KAAK,cAAc,EACtB,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,KAAK,SAAS;gBAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO,eAAe,CACpB,UAAU,EACV;gBACE,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,2BAA2B,GAAG,EAAE;gBACzC,KAAK,EAAE,GAAG,GAAG,sCAAsC;gBACnD,GAAG,EAAE,6DAA6D;gBAClE,IAAI,EAAE,oEAAoE;gBAC1E,QAAQ,EAAE,CAAC;aACZ,EACD,IAAI,CAAC,IAAI,CACV,CAAC;QACJ,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YACpF,YAAY,GAAG,GAAG,CAAC;QACrB,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,OAAO,eAAe,CACpB,UAAU,EACV;YACE,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,mCAAmC;YAC5C,KAAK,EAAE,gCAAgC;YACvC,GAAG,EAAE,kDAAkD;YACvD,IAAI,EAAE,6DAA6D;YACnE,QAAQ,EAAE,CAAC;SACZ,EACD,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC;QAC9C,WAAW,EAAE,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU;QAC9C,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,GAAG;QACH,IAAI;KACL,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,eAAe,CACpB,UAAU,EACV;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,4CAA4C;YACrD,KAAK,EAAE,uEAAuE;YAC9E,GAAG,EAAE,gCAAgC;YACrC,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,CAAC;SACZ,EACD,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAe5B,GAAG,QAAQ,CAAC,UAAU,YAAY,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAChE,SAAS,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EAC3F,QAAQ,CAAC,KAAK,EACd;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,YAAY;gBACZ,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5C,CAAC;SACH,CACF,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,SAAS;YAC3C,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa;YAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACxE,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,eAAe,CACpB,UAAU,EACV,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE,eAAe,CAAC,EAClD,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAuB,EACvB,GAAsB,EACtB,IAAY;IAEZ,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACrC,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,OAAO,eAAe,CACpB,QAAQ,EACR;YACE,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,yEAAyE;YAClF,KAAK,EAAE,4DAA4D;YACnE,GAAG,EAAE,8DAA8D;YACnE,IAAI,EAAE,8BAA8B;YACpC,QAAQ,EAAE,CAAC;SACZ,EACD,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,6BAA6B,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7F,IAAI,CAAC,aAAa,CAAC,EAAE;QAAE,OAAO,aAAa,CAAC,QAAQ,CAAC;IACrD,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC;QAC9C,WAAW,EAAE,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU;QAC9C,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,GAAG;QACH,IAAI;KACL,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,eAAe,CACpB,QAAQ,EACR;YACE,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,4CAA4C;YACrD,KAAK,EAAE,4EAA4E;YACnF,GAAG,EAAE,gCAAgC;YACrC,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,CAAC;SACZ,EACD,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAK5B,GAAG,QAAQ,CAAC,UAAU,YAAY,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAChE,SAAS,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EACzF,QAAQ,CAAC,KAAK,EACd;YACE,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU,EAAE,IAAI;gBAChB,GAAG,CAAC,aAAa,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACrF,CAAC;SACH,CACF,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,KAAK,SAAS;YAC7C,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAChG,CAAC;AACH,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { type TableOptions } from '../table.js';
2
+ import { type WatchFrame } from '../watch.js';
3
+ import { type DeploymentSummary } from './resource-shared.js';
4
+ export declare function runDeployments(rest: readonly string[], env: NodeJS.ProcessEnv, home: string): Promise<number>;
5
+ interface CommonDeploymentsArgs {
6
+ readonly org?: string;
7
+ readonly app?: string;
8
+ readonly targetEnv?: string;
9
+ readonly service?: string;
10
+ readonly authToken?: string;
11
+ readonly json: boolean;
12
+ /** `--archived`: opt archived deployments into the list (only `list` reads it). */
13
+ readonly archived: boolean;
14
+ }
15
+ /**
16
+ * Fetch + render the `deployments list` view (hosted table, or the local saved-servers-cache
17
+ * fallback when no org+token resolves) — shared by the one-shot print and `--watch`. Never
18
+ * fails in the local-fallback branch (a plain file read), only the hosted fetch can. Exported so
19
+ * tests can exercise the exact function `--watch` polls without driving the live loop itself.
20
+ */
21
+ export declare function deploymentsListFrame(org: string | undefined, resolved: {
22
+ serviceUrl: string;
23
+ token?: string;
24
+ }, common: CommonDeploymentsArgs, home: string): Promise<WatchFrame>;
25
+ export declare function runDeploymentsList(rest: readonly string[], env: NodeJS.ProcessEnv, home: string): Promise<number>;
26
+ export declare function runDeploymentsInspect(rest: readonly string[], env: NodeJS.ProcessEnv, home: string): Promise<number>;
27
+ /** Render the `deployments list` table. Exported so tests (and the contract drift gate) can call it directly. */
28
+ export declare function renderDeploymentsTable(deployments: readonly DeploymentSummary[], opts: TableOptions): string;
29
+ export {};
30
+ //# sourceMappingURL=deployments-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployments-ops.d.ts","sourceRoot":"","sources":["../../src/commands/deployments-ops.ts"],"names":[],"mappings":"AAaA,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAA6B,KAAK,UAAU,EAA4B,MAAM,aAAa,CAAC;AAEnG,OAAO,EAML,KAAK,iBAAiB,EAMvB,MAAM,sBAAsB,CAAC;AAI9B,wBAAsB,cAAc,CAClC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAMjB;AAID,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAyCD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,QAAQ,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAChD,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,UAAU,CAAC,CA8BrB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAmEjB;AAID,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CA0CjB;AA8CD,iHAAiH;AACjH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,SAAS,iBAAiB,EAAE,EACzC,IAAI,EAAE,YAAY,GACjB,MAAM,CAER"}
@@ -0,0 +1,248 @@
1
+ /**
2
+ * The `deployments` resource commands: `noodle deployments list` / `noodle deployments inspect`.
3
+ * Absorbs the deploy-scoped view previously served by `noodle list` (ADR 0128 D4): the collection
4
+ * route `GET /v1/orgs/{org}/deployments` is long-shipped and unwrapped (`{ok:true,deployments}`,
5
+ * no `data`); the item route `GET /v1/orgs/{org}/deployments/{deploymentId}` (deployment inspect)
6
+ * mirrors the `apps`/`envs` item routes (`{ok:true,data:DeploymentSummary}`). When no org/token is
7
+ * resolvable — the common no-login case — `list` falls back to the local `~/.noodle/servers.json`
8
+ * cache, preserving `noodle list`'s legacy local-runtime behavior unchanged. The wire types, target
9
+ * resolution, failure builders, and branded table styling live in `resource-shared.ts`.
10
+ */
11
+ import { readServers } from '../config.js';
12
+ import { resolveControlPlaneToken, ServiceRequestError, serviceJson } from '../control-plane.js';
13
+ import { relativeTime } from '../relative-time.js';
14
+ import { renderTable } from '../table.js';
15
+ import { parseWatchFlags, runWatch, watchJsonConflictFailure } from '../watch.js';
16
+ import { EXIT, printJsonOk } from './output.js';
17
+ import { ACCESS_CHIP_COLORS, ACTIVE_GREEN, ARCHIVED_AMBER, authRequired, DIM_GRAY, notFoundDeployment, resolveOrgTarget, stdoutTableOptions, } from './resource-shared.js';
18
+ import { printCliFailure, serviceFailure, usage } from './shared.js';
19
+ import { pickOrgInteractively } from './target-picker.js';
20
+ export async function runDeployments(rest, env, home) {
21
+ const [subcommand, ...tail] = rest;
22
+ if (subcommand === 'list')
23
+ return runDeploymentsList(tail, env, home);
24
+ if (subcommand === 'inspect')
25
+ return runDeploymentsInspect(tail, env, home);
26
+ usage();
27
+ return EXIT.USAGE;
28
+ }
29
+ function parseCommonDeploymentsArgs(rest) {
30
+ let org;
31
+ let app;
32
+ let targetEnv;
33
+ let service;
34
+ let authToken;
35
+ let json = false;
36
+ let archived = false;
37
+ const positional = [];
38
+ for (let i = 0; i < rest.length; i++) {
39
+ const arg = rest[i];
40
+ if (arg === '--org')
41
+ org = rest[++i];
42
+ else if (arg === '--app')
43
+ app = rest[++i];
44
+ else if (arg === '--env')
45
+ targetEnv = rest[++i];
46
+ else if (arg === '--service')
47
+ service = rest[++i];
48
+ else if (arg === '--auth-token')
49
+ authToken = rest[++i];
50
+ else if (arg === '--json')
51
+ json = true;
52
+ else if (arg === '--archived')
53
+ archived = true;
54
+ else if (arg !== undefined)
55
+ positional.push(arg);
56
+ }
57
+ return {
58
+ common: {
59
+ ...(org !== undefined ? { org } : {}),
60
+ ...(app !== undefined ? { app } : {}),
61
+ ...(targetEnv !== undefined ? { targetEnv } : {}),
62
+ ...(service !== undefined ? { service } : {}),
63
+ ...(authToken !== undefined ? { authToken } : {}),
64
+ json,
65
+ archived,
66
+ },
67
+ positional,
68
+ };
69
+ }
70
+ // --- list ------------------------------------------------------------------------
71
+ /**
72
+ * Fetch + render the `deployments list` view (hosted table, or the local saved-servers-cache
73
+ * fallback when no org+token resolves) — shared by the one-shot print and `--watch`. Never
74
+ * fails in the local-fallback branch (a plain file read), only the hosted fetch can. Exported so
75
+ * tests can exercise the exact function `--watch` polls without driving the live loop itself.
76
+ */
77
+ export async function deploymentsListFrame(org, resolved, common, home) {
78
+ if (org !== undefined && resolved.token !== undefined) {
79
+ try {
80
+ const url = new URL(`${resolved.serviceUrl}/v1/orgs/${encodeURIComponent(org)}/deployments`);
81
+ if (common.app !== undefined)
82
+ url.searchParams.set('app', common.app);
83
+ if (common.targetEnv !== undefined)
84
+ url.searchParams.set('env', common.targetEnv);
85
+ if (common.archived)
86
+ url.searchParams.set('archived', 'true');
87
+ const body = await serviceJson(url.toString(), resolved.token);
88
+ const table = renderDeploymentsTable(body.deployments, stdoutTableOptions());
89
+ return {
90
+ ok: true,
91
+ frame: `${table}\n\n${body.deployments.length} deployment(s) from ${resolved.serviceUrl}.`,
92
+ };
93
+ }
94
+ catch (error) {
95
+ return { ok: false, error: serviceFailure('deployments', error, 'noodle doctor') };
96
+ }
97
+ }
98
+ const servers = readServers(home);
99
+ if (servers.length === 0) {
100
+ return {
101
+ ok: true,
102
+ frame: 'No saved servers. Deploy a linked project with `noodle deploy` to remember one locally.',
103
+ };
104
+ }
105
+ const lines = servers.map((s) => `${s.deploymentId}\t${s.url}\t${s.createdAt}`);
106
+ return {
107
+ ok: true,
108
+ frame: `${lines.join('\n')}\n\n${servers.length} server(s) cached in ~/.noodle/servers.json.`,
109
+ };
110
+ }
111
+ export async function runDeploymentsList(rest, env, home) {
112
+ const { common } = parseCommonDeploymentsArgs(rest);
113
+ const { watch, intervalMs } = parseWatchFlags(rest);
114
+ if (watch && common.json) {
115
+ return printCliFailure('deployments', watchJsonConflictFailure('noodle deployments list --json'), true);
116
+ }
117
+ const target = resolveOrgTarget(common.org, home);
118
+ const resolved = await resolveControlPlaneToken({
119
+ serviceFlag: common.service ?? (target.ok ? target.serviceUrl : undefined),
120
+ authFlag: common.authToken,
121
+ env,
122
+ home,
123
+ });
124
+ let org = target.ok ? target.org : undefined;
125
+ if (org === undefined) {
126
+ const picked = await pickOrgInteractively(resolved, common.json, (o) => `noodle deployments list --org ${o}`);
127
+ if (picked !== undefined)
128
+ org = picked;
129
+ }
130
+ if (common.json) {
131
+ if (org !== undefined && resolved.token !== undefined) {
132
+ try {
133
+ const url = new URL(`${resolved.serviceUrl}/v1/orgs/${encodeURIComponent(org)}/deployments`);
134
+ if (common.app !== undefined)
135
+ url.searchParams.set('app', common.app);
136
+ if (common.targetEnv !== undefined)
137
+ url.searchParams.set('env', common.targetEnv);
138
+ if (common.archived)
139
+ url.searchParams.set('archived', 'true');
140
+ const body = await serviceJson(url.toString(), resolved.token);
141
+ printJsonOk({ deployments: body.deployments });
142
+ return EXIT.OK;
143
+ }
144
+ catch (error) {
145
+ return printCliFailure('deployments', serviceFailure('deployments', error, 'noodle doctor'), true);
146
+ }
147
+ }
148
+ // No resolvable org+token (the common no-login case): fall back to the local saved-servers
149
+ // cache, unchanged from the legacy `noodle list` behavior.
150
+ const servers = readServers(home);
151
+ console.log(JSON.stringify({ ok: true, target: { runtime: 'local' }, deployments: servers }));
152
+ return EXIT.OK;
153
+ }
154
+ if (watch) {
155
+ return runWatch({
156
+ command: 'deployments',
157
+ intervalMs,
158
+ render: () => deploymentsListFrame(org, resolved, common, home),
159
+ });
160
+ }
161
+ const result = await deploymentsListFrame(org, resolved, common, home);
162
+ if (!result.ok)
163
+ return printCliFailure('deployments', result.error, false);
164
+ console.log(result.frame);
165
+ return EXIT.OK;
166
+ }
167
+ // --- inspect ---------------------------------------------------------------------
168
+ export async function runDeploymentsInspect(rest, env, home) {
169
+ const { common, positional } = parseCommonDeploymentsArgs(rest);
170
+ const deploymentId = positional[0];
171
+ if (deploymentId === undefined) {
172
+ usage();
173
+ return EXIT.USAGE;
174
+ }
175
+ const target = resolveOrgTarget(common.org, home);
176
+ if (!target.ok)
177
+ return printCliFailure('deployments', target.error, common.json);
178
+ const resolved = await resolveControlPlaneToken({
179
+ serviceFlag: common.service ?? target.serviceUrl,
180
+ authFlag: common.authToken,
181
+ env,
182
+ home,
183
+ });
184
+ if (resolved.token === undefined)
185
+ return printCliFailure('deployments', authRequired(), common.json);
186
+ try {
187
+ const url = `${resolved.serviceUrl}/v1/orgs/${encodeURIComponent(target.org)}` +
188
+ `/deployments/${encodeURIComponent(deploymentId)}`;
189
+ const body = await serviceJson(url, resolved.token);
190
+ if (common.json) {
191
+ printJsonOk(body.data);
192
+ return EXIT.OK;
193
+ }
194
+ printDeploymentDetail(target.org, body.data);
195
+ return EXIT.OK;
196
+ }
197
+ catch (error) {
198
+ if (error instanceof ServiceRequestError && error.status === 404) {
199
+ return printCliFailure('deployments', notFoundDeployment(target.org, deploymentId), common.json);
200
+ }
201
+ return printCliFailure('deployments', serviceFailure('deployments', error, 'noodle deployments list'), common.json);
202
+ }
203
+ }
204
+ function deploymentStatusLine(deployment) {
205
+ if (deployment.archivedAt !== undefined)
206
+ return `archived ${deployment.archivedAt}`;
207
+ return deployment.active ? 'active' : 'inactive';
208
+ }
209
+ function printDeploymentDetail(org, deployment) {
210
+ console.log(`deployment: ${deployment.deploymentId}`);
211
+ console.log(`org: ${org}`);
212
+ console.log(`app: ${deployment.appSlug}`);
213
+ console.log(`env: ${deployment.environment}`);
214
+ console.log(`status: ${deploymentStatusLine(deployment)}`);
215
+ console.log(`access: ${deployment.accessMode}`);
216
+ console.log(`version: ${deployment.serverVersion ?? '—'}`);
217
+ console.log(`server: ${deployment.serverName}`);
218
+ console.log(`createdBy: ${deployment.createdByEmail ?? '—'}`);
219
+ console.log(`created: ${deployment.createdAt}`);
220
+ }
221
+ // --- table rendering -----------------------------------------------------------
222
+ const DEPLOYMENTS_COLUMNS = [
223
+ // Full deploymentId (not a shortened form): it's what users copy verbatim for
224
+ // `noodle rollback <deploymentId>`. A separate APP column is redundant with `--app`/`--env`
225
+ // filters for scoping, so it's dropped here (unlike the `apps`/`envs` tables).
226
+ { header: 'DEPLOYMENT', get: (d) => d.deploymentId },
227
+ { header: 'ENV', get: (d) => d.environment },
228
+ {
229
+ header: 'STATUS',
230
+ get: (d) => (d.archivedAt !== undefined ? 'archived' : d.active ? 'active' : 'inactive'),
231
+ color: (d) => d.archivedAt !== undefined ? ARCHIVED_AMBER : d.active ? ACTIVE_GREEN : DIM_GRAY,
232
+ },
233
+ {
234
+ header: 'ACCESS',
235
+ get: (d) => d.accessMode,
236
+ color: (d) => ACCESS_CHIP_COLORS[d.accessMode],
237
+ },
238
+ {
239
+ header: 'CREATED',
240
+ get: (d) => relativeTime(d.createdAt),
241
+ align: 'right',
242
+ },
243
+ ];
244
+ /** Render the `deployments list` table. Exported so tests (and the contract drift gate) can call it directly. */
245
+ export function renderDeploymentsTable(deployments, opts) {
246
+ return renderTable(DEPLOYMENTS_COLUMNS, deployments, opts);
247
+ }
248
+ //# sourceMappingURL=deployments-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployments-ops.js","sourceRoot":"","sources":["../../src/commands/deployments-ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type TableOptions } from '../table.js';
2
+ import { type EnvSummary } from './resource-shared.js';
3
+ export declare function runEnvs(rest: readonly string[], env: NodeJS.ProcessEnv, home: string): Promise<number>;
4
+ export declare function runEnvsList(rest: readonly string[], env: NodeJS.ProcessEnv, home: string): Promise<number>;
5
+ export declare function runEnvsInspect(rest: readonly string[], env: NodeJS.ProcessEnv, home: string): Promise<number>;
6
+ /** Render the `envs list` table. Exported so tests (and the contract drift gate) can call it directly. */
7
+ export declare function renderEnvsTable(envs: readonly EnvSummary[], opts: TableOptions): string;
8
+ //# sourceMappingURL=envs-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envs-ops.d.ts","sourceRoot":"","sources":["../../src/commands/envs-ops.ts"],"names":[],"mappings":"AAYA,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAML,KAAK,UAAU,EAKhB,MAAM,sBAAsB,CAAC;AAQ9B,wBAAsB,OAAO,CAC3B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAMjB;AAuED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAuEjB;AAID,wBAAsB,cAAc,CAClC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAuDjB;AAgDD,0GAA0G;AAC1G,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,GAAG,MAAM,CAEvF"}