@mesh-tech/mesh-cli 0.1.0 → 0.12.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 (504) hide show
  1. package/assets/intent/agents-fence.md +10 -0
  2. package/assets/intent/intent-claude-gate.mjs +255 -0
  3. package/assets/log-shipper.mjs +94 -0
  4. package/bin/mesh.mjs +80 -0
  5. package/dist/bin/mesh.d.ts +7 -9
  6. package/dist/bin/mesh.d.ts.map +1 -1
  7. package/dist/bin/mesh.js +20826 -37
  8. package/dist/bin/mesh.js.map +7 -1
  9. package/dist/build-info.json +4 -0
  10. package/dist/src/commands/agent-api-client.d.ts +79 -0
  11. package/dist/src/commands/agent-api-client.d.ts.map +1 -0
  12. package/dist/src/commands/agent-api-client.js +170 -0
  13. package/dist/src/commands/agent-api-client.js.map +1 -0
  14. package/dist/src/commands/artifacts.d.ts +13 -0
  15. package/dist/src/commands/artifacts.d.ts.map +1 -0
  16. package/dist/src/commands/artifacts.js +140 -0
  17. package/dist/src/commands/artifacts.js.map +1 -0
  18. package/dist/src/commands/cluster.d.ts +45 -0
  19. package/dist/src/commands/cluster.d.ts.map +1 -0
  20. package/dist/src/commands/cluster.js +259 -0
  21. package/dist/src/commands/cluster.js.map +1 -0
  22. package/dist/src/commands/conversations.d.ts +61 -0
  23. package/dist/src/commands/conversations.d.ts.map +1 -0
  24. package/dist/src/commands/conversations.js +239 -0
  25. package/dist/src/commands/conversations.js.map +1 -0
  26. package/dist/src/commands/create-app.d.ts +26 -3
  27. package/dist/src/commands/create-app.d.ts.map +1 -1
  28. package/dist/src/commands/create-app.js +465 -107
  29. package/dist/src/commands/create-app.js.map +1 -1
  30. package/dist/src/commands/deploy.d.ts +19 -0
  31. package/dist/src/commands/deploy.d.ts.map +1 -1
  32. package/dist/src/commands/deploy.js +83 -142
  33. package/dist/src/commands/deploy.js.map +1 -1
  34. package/dist/src/commands/dev-doctor.d.ts +137 -0
  35. package/dist/src/commands/dev-doctor.d.ts.map +1 -0
  36. package/dist/src/commands/dev-doctor.js +671 -0
  37. package/dist/src/commands/dev-doctor.js.map +1 -0
  38. package/dist/src/commands/dev-launch.d.ts +59 -0
  39. package/dist/src/commands/dev-launch.d.ts.map +1 -0
  40. package/dist/src/commands/dev-launch.js +118 -0
  41. package/dist/src/commands/dev-launch.js.map +1 -0
  42. package/dist/src/commands/dev-token-server.d.ts +32 -0
  43. package/dist/src/commands/dev-token-server.d.ts.map +1 -0
  44. package/dist/src/commands/dev-token-server.js +68 -0
  45. package/dist/src/commands/dev-token-server.js.map +1 -0
  46. package/dist/src/commands/dev.d.ts +289 -2
  47. package/dist/src/commands/dev.d.ts.map +1 -1
  48. package/dist/src/commands/dev.js +2501 -574
  49. package/dist/src/commands/dev.js.map +1 -1
  50. package/dist/src/commands/docs.d.ts +3 -0
  51. package/dist/src/commands/docs.d.ts.map +1 -0
  52. package/dist/src/commands/docs.js +262 -0
  53. package/dist/src/commands/docs.js.map +1 -0
  54. package/dist/src/commands/hub/index.d.ts +99 -0
  55. package/dist/src/commands/hub/index.d.ts.map +1 -0
  56. package/dist/src/commands/hub/index.js +452 -0
  57. package/dist/src/commands/hub/index.js.map +1 -0
  58. package/dist/src/commands/init.d.ts +65 -0
  59. package/dist/src/commands/init.d.ts.map +1 -0
  60. package/dist/src/commands/init.js +370 -0
  61. package/dist/src/commands/init.js.map +1 -0
  62. package/dist/src/commands/install-shim.d.ts +21 -0
  63. package/dist/src/commands/install-shim.d.ts.map +1 -0
  64. package/dist/src/commands/install-shim.js +132 -0
  65. package/dist/src/commands/install-shim.js.map +1 -0
  66. package/dist/src/commands/local/auth-provision.d.ts +71 -0
  67. package/dist/src/commands/local/auth-provision.d.ts.map +1 -0
  68. package/dist/src/commands/local/auth-provision.js +286 -0
  69. package/dist/src/commands/local/auth-provision.js.map +1 -0
  70. package/dist/src/commands/local/dev-local.d.ts +97 -0
  71. package/dist/src/commands/local/dev-local.d.ts.map +1 -0
  72. package/dist/src/commands/local/dev-local.js +306 -0
  73. package/dist/src/commands/local/dev-local.js.map +1 -0
  74. package/dist/src/commands/local/docker-runner.d.ts +37 -0
  75. package/dist/src/commands/local/docker-runner.d.ts.map +1 -0
  76. package/dist/src/commands/local/docker-runner.js +104 -0
  77. package/dist/src/commands/local/docker-runner.js.map +1 -0
  78. package/dist/src/commands/local/helpers.d.ts +22 -0
  79. package/dist/src/commands/local/helpers.d.ts.map +1 -0
  80. package/dist/src/commands/local/helpers.js +46 -0
  81. package/dist/src/commands/local/helpers.js.map +1 -0
  82. package/dist/src/commands/local/hub-local.d.ts +51 -0
  83. package/dist/src/commands/local/hub-local.d.ts.map +1 -0
  84. package/dist/src/commands/local/hub-local.js +197 -0
  85. package/dist/src/commands/local/hub-local.js.map +1 -0
  86. package/dist/src/commands/local/index.d.ts +23 -0
  87. package/dist/src/commands/local/index.d.ts.map +1 -0
  88. package/dist/src/commands/local/index.js +386 -0
  89. package/dist/src/commands/local/index.js.map +1 -0
  90. package/dist/src/commands/local/mocks.d.ts +361 -0
  91. package/dist/src/commands/local/mocks.d.ts.map +1 -0
  92. package/dist/src/commands/local/mocks.js +756 -0
  93. package/dist/src/commands/local/mocks.js.map +1 -0
  94. package/dist/src/commands/local/seed-zitadel.d.ts +151 -0
  95. package/dist/src/commands/local/seed-zitadel.d.ts.map +1 -0
  96. package/dist/src/commands/local/seed-zitadel.js +408 -0
  97. package/dist/src/commands/local/seed-zitadel.js.map +1 -0
  98. package/dist/src/commands/local/seed.d.ts +106 -0
  99. package/dist/src/commands/local/seed.d.ts.map +1 -0
  100. package/dist/src/commands/local/seed.js +252 -0
  101. package/dist/src/commands/local/seed.js.map +1 -0
  102. package/dist/src/commands/local/stack.d.ts +173 -0
  103. package/dist/src/commands/local/stack.d.ts.map +1 -0
  104. package/dist/src/commands/local/stack.js +499 -0
  105. package/dist/src/commands/local/stack.js.map +1 -0
  106. package/dist/src/commands/login.d.ts +256 -12
  107. package/dist/src/commands/login.d.ts.map +1 -1
  108. package/dist/src/commands/login.js +978 -50
  109. package/dist/src/commands/login.js.map +1 -1
  110. package/dist/src/commands/peer-addressing.d.ts +51 -0
  111. package/dist/src/commands/peer-addressing.d.ts.map +1 -0
  112. package/dist/src/commands/peer-addressing.js +64 -0
  113. package/dist/src/commands/peer-addressing.js.map +1 -0
  114. package/dist/src/commands/port-ownership.d.ts +69 -0
  115. package/dist/src/commands/port-ownership.d.ts.map +1 -0
  116. package/dist/src/commands/port-ownership.js +161 -0
  117. package/dist/src/commands/port-ownership.js.map +1 -0
  118. package/dist/src/commands/registry-publish.d.ts +3 -0
  119. package/dist/src/commands/registry-publish.d.ts.map +1 -0
  120. package/dist/src/commands/registry-publish.js +161 -0
  121. package/dist/src/commands/registry-publish.js.map +1 -0
  122. package/dist/src/commands/registry.d.ts +146 -2
  123. package/dist/src/commands/registry.d.ts.map +1 -1
  124. package/dist/src/commands/registry.js +541 -85
  125. package/dist/src/commands/registry.js.map +1 -1
  126. package/dist/src/commands/secrets/index.d.ts.map +1 -1
  127. package/dist/src/commands/secrets/index.js +15 -1
  128. package/dist/src/commands/secrets/index.js.map +1 -1
  129. package/dist/src/commands/secrets/migrate-config.d.ts +24 -0
  130. package/dist/src/commands/secrets/migrate-config.d.ts.map +1 -0
  131. package/dist/src/commands/secrets/migrate-config.js +277 -0
  132. package/dist/src/commands/secrets/migrate-config.js.map +1 -0
  133. package/dist/src/commands/secrets/set.d.ts +4 -0
  134. package/dist/src/commands/secrets/set.d.ts.map +1 -1
  135. package/dist/src/commands/secrets/set.js +243 -64
  136. package/dist/src/commands/secrets/set.js.map +1 -1
  137. package/dist/src/commands/skills.d.ts +34 -0
  138. package/dist/src/commands/skills.d.ts.map +1 -0
  139. package/dist/src/commands/skills.js +207 -0
  140. package/dist/src/commands/skills.js.map +1 -0
  141. package/dist/src/commands/stack.d.ts.map +1 -1
  142. package/dist/src/commands/stack.js +361 -23
  143. package/dist/src/commands/stack.js.map +1 -1
  144. package/dist/src/commands/temporal.d.ts +15 -0
  145. package/dist/src/commands/temporal.d.ts.map +1 -0
  146. package/dist/src/commands/temporal.js +781 -0
  147. package/dist/src/commands/temporal.js.map +1 -0
  148. package/dist/src/commands/tenant.d.ts +56 -0
  149. package/dist/src/commands/tenant.d.ts.map +1 -0
  150. package/dist/src/commands/tenant.js +233 -0
  151. package/dist/src/commands/tenant.js.map +1 -0
  152. package/dist/src/commands/tunnel/index.d.ts +49 -3
  153. package/dist/src/commands/tunnel/index.d.ts.map +1 -1
  154. package/dist/src/commands/tunnel/index.js +331 -8
  155. package/dist/src/commands/tunnel/index.js.map +1 -1
  156. package/dist/src/commands/vcs/clone.d.ts +3 -0
  157. package/dist/src/commands/vcs/clone.d.ts.map +1 -0
  158. package/dist/src/commands/vcs/clone.js +20 -0
  159. package/dist/src/commands/vcs/clone.js.map +1 -0
  160. package/dist/src/commands/vcs/common.d.ts +21 -0
  161. package/dist/src/commands/vcs/common.d.ts.map +1 -0
  162. package/dist/src/commands/vcs/common.js +62 -0
  163. package/dist/src/commands/vcs/common.js.map +1 -0
  164. package/dist/src/commands/vcs/drafts.d.ts +13 -0
  165. package/dist/src/commands/vcs/drafts.d.ts.map +1 -0
  166. package/dist/src/commands/vcs/drafts.js +45 -0
  167. package/dist/src/commands/vcs/drafts.js.map +1 -0
  168. package/dist/src/commands/vcs/get.d.ts +8 -0
  169. package/dist/src/commands/vcs/get.d.ts.map +1 -0
  170. package/dist/src/commands/vcs/get.js +61 -0
  171. package/dist/src/commands/vcs/get.js.map +1 -0
  172. package/dist/src/commands/vcs/index.d.ts +3 -0
  173. package/dist/src/commands/vcs/index.d.ts.map +1 -0
  174. package/dist/src/commands/vcs/index.js +58 -0
  175. package/dist/src/commands/vcs/index.js.map +1 -0
  176. package/dist/src/commands/vcs/propose.d.ts +23 -0
  177. package/dist/src/commands/vcs/propose.d.ts.map +1 -0
  178. package/dist/src/commands/vcs/propose.js +94 -0
  179. package/dist/src/commands/vcs/propose.js.map +1 -0
  180. package/dist/src/commands/vcs/review.d.ts +15 -0
  181. package/dist/src/commands/vcs/review.d.ts.map +1 -0
  182. package/dist/src/commands/vcs/review.js +35 -0
  183. package/dist/src/commands/vcs/review.js.map +1 -0
  184. package/dist/src/commands/vcs-enrich.d.ts +15 -0
  185. package/dist/src/commands/vcs-enrich.d.ts.map +1 -0
  186. package/dist/src/commands/vcs-enrich.js +28 -0
  187. package/dist/src/commands/vcs-enrich.js.map +1 -0
  188. package/dist/src/commands/vpn/index.d.ts +24 -0
  189. package/dist/src/commands/vpn/index.d.ts.map +1 -0
  190. package/dist/src/commands/vpn/index.js +543 -0
  191. package/dist/src/commands/vpn/index.js.map +1 -0
  192. package/dist/src/commands/vpn/tunnel.d.ts +11 -0
  193. package/dist/src/commands/vpn/tunnel.d.ts.map +1 -0
  194. package/dist/src/commands/vpn/tunnel.js +188 -0
  195. package/dist/src/commands/vpn/tunnel.js.map +1 -0
  196. package/dist/src/commands/workflow.d.ts +24 -0
  197. package/dist/src/commands/workflow.d.ts.map +1 -0
  198. package/dist/src/commands/workflow.js +577 -0
  199. package/dist/src/commands/workflow.js.map +1 -0
  200. package/dist/src/docs/assemble.d.ts +217 -0
  201. package/dist/src/docs/assemble.d.ts.map +1 -0
  202. package/dist/src/docs/assemble.js +739 -0
  203. package/dist/src/docs/assemble.js.map +1 -0
  204. package/dist/src/docs/cli-reference.d.ts +93 -0
  205. package/dist/src/docs/cli-reference.d.ts.map +1 -0
  206. package/dist/src/docs/cli-reference.js +256 -0
  207. package/dist/src/docs/cli-reference.js.map +1 -0
  208. package/dist/src/docs/discover.d.ts +60 -0
  209. package/dist/src/docs/discover.d.ts.map +1 -0
  210. package/dist/src/docs/discover.js +233 -0
  211. package/dist/src/docs/discover.js.map +1 -0
  212. package/dist/src/docs/portal.d.ts +79 -0
  213. package/dist/src/docs/portal.d.ts.map +1 -0
  214. package/dist/src/docs/portal.js +242 -0
  215. package/dist/src/docs/portal.js.map +1 -0
  216. package/dist/src/docs/registry-docs.d.ts +43 -0
  217. package/dist/src/docs/registry-docs.d.ts.map +1 -0
  218. package/dist/src/docs/registry-docs.js +138 -0
  219. package/dist/src/docs/registry-docs.js.map +1 -0
  220. package/dist/src/docs/schema.d.ts +48 -0
  221. package/dist/src/docs/schema.d.ts.map +1 -0
  222. package/dist/src/docs/schema.js +96 -0
  223. package/dist/src/docs/schema.js.map +1 -0
  224. package/dist/src/docs/serve.d.ts +27 -0
  225. package/dist/src/docs/serve.d.ts.map +1 -0
  226. package/dist/src/docs/serve.js +102 -0
  227. package/dist/src/docs/serve.js.map +1 -0
  228. package/dist/src/docs/start.d.ts +80 -0
  229. package/dist/src/docs/start.d.ts.map +1 -0
  230. package/dist/src/docs/start.js +313 -0
  231. package/dist/src/docs/start.js.map +1 -0
  232. package/dist/src/eval/agent-eval.d.mts +14 -0
  233. package/dist/src/eval/agent-eval.d.mts.map +1 -0
  234. package/dist/src/eval/agent-eval.mjs +273 -0
  235. package/dist/src/eval/agent-eval.mjs.map +1 -0
  236. package/dist/src/index.js +624 -7
  237. package/dist/src/index.js.map +7 -1
  238. package/dist/src/program.d.ts +26 -0
  239. package/dist/src/program.d.ts.map +1 -0
  240. package/dist/src/program.js +76 -0
  241. package/dist/src/program.js.map +1 -0
  242. package/dist/src/utils/auth-preflight.d.ts +159 -0
  243. package/dist/src/utils/auth-preflight.d.ts.map +1 -0
  244. package/dist/src/utils/auth-preflight.js +298 -0
  245. package/dist/src/utils/auth-preflight.js.map +1 -0
  246. package/dist/src/utils/aws-auth.d.ts +181 -0
  247. package/dist/src/utils/aws-auth.d.ts.map +1 -0
  248. package/dist/src/utils/aws-auth.js +527 -0
  249. package/dist/src/utils/aws-auth.js.map +1 -0
  250. package/dist/src/utils/bastion.d.ts +1 -1
  251. package/dist/src/utils/bastion.d.ts.map +1 -1
  252. package/dist/src/utils/bastion.js +29 -8
  253. package/dist/src/utils/bastion.js.map +1 -1
  254. package/dist/src/utils/build-info.d.ts +33 -0
  255. package/dist/src/utils/build-info.d.ts.map +1 -0
  256. package/dist/src/utils/build-info.js +102 -0
  257. package/dist/src/utils/build-info.js.map +1 -0
  258. package/dist/src/utils/capture-history.d.ts +62 -0
  259. package/dist/src/utils/capture-history.d.ts.map +1 -0
  260. package/dist/src/utils/capture-history.js +94 -0
  261. package/dist/src/utils/capture-history.js.map +1 -0
  262. package/dist/src/utils/deploy-preflight.d.ts +52 -0
  263. package/dist/src/utils/deploy-preflight.d.ts.map +1 -0
  264. package/dist/src/utils/deploy-preflight.js +183 -0
  265. package/dist/src/utils/deploy-preflight.js.map +1 -0
  266. package/dist/src/utils/errors.d.ts +75 -0
  267. package/dist/src/utils/errors.d.ts.map +1 -0
  268. package/dist/src/utils/errors.js +106 -0
  269. package/dist/src/utils/errors.js.map +1 -0
  270. package/dist/src/utils/first-party-contexts.d.ts +40 -0
  271. package/dist/src/utils/first-party-contexts.d.ts.map +1 -0
  272. package/dist/src/utils/first-party-contexts.js +53 -0
  273. package/dist/src/utils/first-party-contexts.js.map +1 -0
  274. package/dist/src/utils/index.d.ts +2 -0
  275. package/dist/src/utils/index.d.ts.map +1 -1
  276. package/dist/src/utils/index.js +2 -0
  277. package/dist/src/utils/index.js.map +1 -1
  278. package/dist/src/utils/kubeconfig.d.ts +62 -0
  279. package/dist/src/utils/kubeconfig.d.ts.map +1 -0
  280. package/dist/src/utils/kubeconfig.js +118 -0
  281. package/dist/src/utils/kubeconfig.js.map +1 -0
  282. package/dist/src/utils/log.d.ts +27 -1
  283. package/dist/src/utils/log.d.ts.map +1 -1
  284. package/dist/src/utils/log.js +59 -5
  285. package/dist/src/utils/log.js.map +1 -1
  286. package/dist/src/utils/pid.d.ts +47 -0
  287. package/dist/src/utils/pid.d.ts.map +1 -0
  288. package/dist/src/utils/pid.js +83 -0
  289. package/dist/src/utils/pid.js.map +1 -0
  290. package/dist/src/utils/pulumi-run.d.ts +23 -0
  291. package/dist/src/utils/pulumi-run.d.ts.map +1 -0
  292. package/dist/src/utils/pulumi-run.js +112 -0
  293. package/dist/src/utils/pulumi-run.js.map +1 -0
  294. package/dist/src/utils/pulumi.d.ts +15 -0
  295. package/dist/src/utils/pulumi.d.ts.map +1 -1
  296. package/dist/src/utils/pulumi.js +35 -0
  297. package/dist/src/utils/pulumi.js.map +1 -1
  298. package/dist/src/utils/reachability.d.ts +29 -0
  299. package/dist/src/utils/reachability.d.ts.map +1 -0
  300. package/dist/src/utils/reachability.js +81 -0
  301. package/dist/src/utils/reachability.js.map +1 -0
  302. package/dist/src/utils/recover-conversation.d.ts +154 -0
  303. package/dist/src/utils/recover-conversation.d.ts.map +1 -0
  304. package/dist/src/utils/recover-conversation.js +314 -0
  305. package/dist/src/utils/recover-conversation.js.map +1 -0
  306. package/dist/src/utils/registry-broker.d.ts +148 -0
  307. package/dist/src/utils/registry-broker.d.ts.map +1 -0
  308. package/dist/src/utils/registry-broker.js +180 -0
  309. package/dist/src/utils/registry-broker.js.map +1 -0
  310. package/dist/src/utils/socks-forward.d.ts +40 -0
  311. package/dist/src/utils/socks-forward.d.ts.map +1 -0
  312. package/dist/src/utils/socks-forward.js +97 -0
  313. package/dist/src/utils/socks-forward.js.map +1 -0
  314. package/dist/src/utils/stack-flag.d.ts +23 -0
  315. package/dist/src/utils/stack-flag.d.ts.map +1 -0
  316. package/dist/src/utils/stack-flag.js +41 -0
  317. package/dist/src/utils/stack-flag.js.map +1 -0
  318. package/dist/src/utils/tailscale-targets.d.ts +52 -0
  319. package/dist/src/utils/tailscale-targets.d.ts.map +1 -0
  320. package/dist/src/utils/tailscale-targets.js +93 -0
  321. package/dist/src/utils/tailscale-targets.js.map +1 -0
  322. package/dist/src/utils/tailscale.d.ts +277 -0
  323. package/dist/src/utils/tailscale.d.ts.map +1 -0
  324. package/dist/src/utils/tailscale.js +1007 -0
  325. package/dist/src/utils/tailscale.js.map +1 -0
  326. package/dist/src/utils/temporal-auth.d.ts +43 -0
  327. package/dist/src/utils/temporal-auth.d.ts.map +1 -0
  328. package/dist/src/utils/temporal-auth.js +176 -0
  329. package/dist/src/utils/temporal-auth.js.map +1 -0
  330. package/dist/src/utils/temporal-codec.d.ts +101 -0
  331. package/dist/src/utils/temporal-codec.d.ts.map +1 -0
  332. package/dist/src/utils/temporal-codec.js +319 -0
  333. package/dist/src/utils/temporal-codec.js.map +1 -0
  334. package/dist/src/utils/tunnel-ownership.d.ts +130 -0
  335. package/dist/src/utils/tunnel-ownership.d.ts.map +1 -0
  336. package/dist/src/utils/tunnel-ownership.js +274 -0
  337. package/dist/src/utils/tunnel-ownership.js.map +1 -0
  338. package/dist/src/utils/vpn-join.d.ts +32 -0
  339. package/dist/src/utils/vpn-join.d.ts.map +1 -0
  340. package/dist/src/utils/vpn-join.js +62 -0
  341. package/dist/src/utils/vpn-join.js.map +1 -0
  342. package/dist/src/utils/vpn.d.ts +62 -0
  343. package/dist/src/utils/vpn.d.ts.map +1 -0
  344. package/dist/src/utils/vpn.js +183 -0
  345. package/dist/src/utils/vpn.js.map +1 -0
  346. package/dist/src/utils/workflow-fingerprint.d.ts +49 -0
  347. package/dist/src/utils/workflow-fingerprint.d.ts.map +1 -0
  348. package/dist/src/utils/workflow-fingerprint.js +135 -0
  349. package/dist/src/utils/workflow-fingerprint.js.map +1 -0
  350. package/dist/src/utils/worktree-identity.d.ts +86 -0
  351. package/dist/src/utils/worktree-identity.d.ts.map +1 -0
  352. package/dist/src/utils/worktree-identity.js +164 -0
  353. package/dist/src/utils/worktree-identity.js.map +1 -0
  354. package/fragments/agents/AGENTS.md.hbs +92 -0
  355. package/fragments/agents/CLAUDE.md.hbs +8 -0
  356. package/fragments/base/Pulumi.dev.yaml.hbs +10 -0
  357. package/fragments/base/Pulumi.yaml.hbs +9 -0
  358. package/fragments/base/index.ts.hbs +107 -0
  359. package/fragments/base/package.json.hbs +22 -0
  360. package/{templates/api-web-db/api → fragments/base}/tsconfig.json +3 -4
  361. package/fragments/bucket/api/src/storage.ts.hbs +81 -0
  362. package/fragments/database/api/src/db.ts.hbs +23 -0
  363. package/fragments/database/prisma/schema.prisma.hbs +18 -0
  364. package/{templates/api-web-db → fragments/service}/api/.dockerignore +2 -0
  365. package/fragments/service/api/package.json.hbs +40 -0
  366. package/fragments/service/api/src/index.ts.hbs +58 -0
  367. package/{templates/api-web-db → fragments/service/api}/tsconfig.json +5 -3
  368. package/fragments/temporal/worker/.dockerignore +4 -0
  369. package/fragments/temporal/worker/Dockerfile +15 -0
  370. package/{templates/temporal-api-worker → fragments/temporal}/worker/package.json.hbs +3 -2
  371. package/fragments/temporal/worker/src/activities.ts.hbs +14 -0
  372. package/fragments/temporal/worker/src/worker.ts.hbs +27 -0
  373. package/fragments/temporal/worker/src/workflows.ts.hbs +24 -0
  374. package/fragments/temporal/worker/tsconfig.json +13 -0
  375. package/package.json +35 -21
  376. package/skills/core/SKILL.md +365 -0
  377. package/skills/pull-remote-agent-context/SKILL.md +194 -0
  378. package/stack/docker-compose.hub.yml +134 -0
  379. package/stack/docker-compose.yml +447 -0
  380. package/stack/hub/Dockerfile.api +18 -0
  381. package/stack/hub/Dockerfile.auth +10 -0
  382. package/stack/hub/Dockerfile.ui +10 -0
  383. package/stack/init/01-databases.sql +12 -0
  384. package/stack/observability/blackbox.yml +20 -0
  385. package/stack/observability/otel-collector.yaml +73 -0
  386. package/stack/observability/prometheus.yml +36 -0
  387. package/stack/observability/tempo.yaml +25 -0
  388. package/stack/temporal/local.yaml +44 -0
  389. package/templates/api-auth/AGENTS.md.hbs +16 -0
  390. package/templates/api-auth/Pulumi.dev.yaml.hbs +8 -0
  391. package/templates/api-auth/Pulumi.yaml.hbs +8 -0
  392. package/templates/api-auth/README.md.hbs +67 -0
  393. package/templates/api-auth/api/package.json.hbs +28 -0
  394. package/templates/api-auth/api/src/index.ts.hbs +96 -0
  395. package/templates/api-auth/api/src/schema.ts.hbs +35 -0
  396. package/templates/api-auth/api/src/seed-authz.ts.hbs +48 -0
  397. package/templates/api-auth/api/src/spicedb-http-provider.ts.hbs +89 -0
  398. package/templates/api-auth/index.ts.hbs +65 -0
  399. package/templates/api-auth/package.json.hbs +20 -0
  400. package/templates/api-auth/skills/develop/SKILL.md.hbs +32 -0
  401. package/templates/api-role-gating/AGENTS.md.hbs +20 -0
  402. package/templates/api-role-gating/Pulumi.dev.yaml.hbs +8 -0
  403. package/templates/api-role-gating/Pulumi.yaml.hbs +8 -0
  404. package/templates/api-role-gating/README.md.hbs +64 -0
  405. package/templates/api-role-gating/api/Dockerfile +17 -0
  406. package/templates/api-role-gating/api/package.json.hbs +28 -0
  407. package/templates/api-role-gating/api/src/authn.ts.hbs +29 -0
  408. package/templates/api-role-gating/api/src/authz.ts.hbs +12 -0
  409. package/templates/api-role-gating/api/src/main.ts.hbs +58 -0
  410. package/templates/api-role-gating/api/src/schema.ts.hbs +22 -0
  411. package/templates/api-role-gating/api/tsconfig.json +13 -0
  412. package/templates/api-role-gating/index.ts.hbs +107 -0
  413. package/templates/api-role-gating/package.json.hbs +21 -0
  414. package/templates/api-role-gating/skills/develop/SKILL.md.hbs +60 -0
  415. package/templates/api-role-gating/tsconfig.json +10 -0
  416. package/templates/apps-repo/README.md.hbs +24 -0
  417. package/templates/apps-repo/gitignore +41 -0
  418. package/templates/apps-repo/npmrc.hbs +7 -0
  419. package/templates/apps-repo/package.json.hbs +15 -0
  420. package/templates/apps-repo/pnpm-workspace.yaml +3 -0
  421. package/templates/apps-repo/tsconfig.json +18 -0
  422. package/templates/external-service/AGENTS.md.hbs +20 -0
  423. package/templates/external-service/Pulumi.dev.yaml.hbs +8 -0
  424. package/templates/external-service/Pulumi.yaml.hbs +8 -0
  425. package/templates/external-service/README.md.hbs +56 -0
  426. package/templates/external-service/api/Dockerfile +15 -0
  427. package/templates/external-service/api/package.json.hbs +25 -0
  428. package/templates/external-service/api/src/index.ts.hbs +81 -0
  429. package/templates/external-service/index.ts.hbs +82 -0
  430. package/templates/external-service/mocks/vendorpay/package.json.hbs +9 -0
  431. package/templates/external-service/mocks/vendorpay/server.mjs.hbs +61 -0
  432. package/templates/external-service/package.json.hbs +34 -0
  433. package/templates/external-service/skills/develop/SKILL.md.hbs +55 -0
  434. package/templates/external-service/tsconfig.json +10 -0
  435. package/templates/platform-repo/AGENTS.md.hbs +18 -0
  436. package/templates/platform-repo/README.md.hbs +38 -0
  437. package/templates/platform-repo/core/Pulumi.yaml.hbs +12 -0
  438. package/templates/platform-repo/core/Pulumi.{{tenant}}-{{env}}.yaml.hbs +57 -0
  439. package/templates/platform-repo/core/index.ts +62 -0
  440. package/templates/platform-repo/core/package.json.hbs +22 -0
  441. package/templates/platform-repo/core/tsconfig.json +8 -0
  442. package/templates/platform-repo/package.json.hbs +15 -0
  443. package/templates/platform-repo/platform/Pulumi.yaml.hbs +12 -0
  444. package/templates/platform-repo/platform/Pulumi.{{tenant}}-{{env}}.yaml.hbs +59 -0
  445. package/templates/platform-repo/platform/index.ts +95 -0
  446. package/templates/platform-repo/platform/package.json.hbs +26 -0
  447. package/templates/platform-repo/platform/tsconfig.json +8 -0
  448. package/templates/platform-repo/pnpm-workspace.yaml +3 -0
  449. package/templates/workflow/AGENTS.md.hbs +15 -0
  450. package/templates/workflow/Pulumi.dev.yaml.hbs +8 -0
  451. package/templates/workflow/Pulumi.yaml.hbs +8 -0
  452. package/templates/workflow/README.md.hbs +45 -0
  453. package/templates/workflow/api/.dockerignore +4 -0
  454. package/templates/workflow/api/Dockerfile +15 -0
  455. package/templates/{temporal-api-worker → workflow}/api/package.json.hbs +8 -6
  456. package/templates/workflow/api/src/index.ts.hbs +130 -0
  457. package/templates/workflow/api/tsconfig.json +14 -0
  458. package/templates/workflow/index.ts.hbs +67 -0
  459. package/templates/workflow/package.json.hbs +20 -0
  460. package/templates/workflow/skills/develop/SKILL.md.hbs +32 -0
  461. package/templates/workflow/tsconfig.json +10 -0
  462. package/templates/workflow/worker/.dockerignore +4 -0
  463. package/templates/workflow/worker/Dockerfile +13 -0
  464. package/templates/workflow/worker/package.json.hbs +25 -0
  465. package/templates/workflow/worker/src/worker.ts.hbs +24 -0
  466. package/templates/workflow/worker/tsconfig.json +14 -0
  467. package/dist/src/commands/devbox.d.ts +0 -22
  468. package/dist/src/commands/devbox.d.ts.map +0 -1
  469. package/dist/src/commands/devbox.js +0 -463
  470. package/dist/src/commands/devbox.js.map +0 -1
  471. package/templates/api-web-db/api/Dockerfile +0 -16
  472. package/templates/api-web-db/api/package.json.hbs +0 -21
  473. package/templates/api-web-db/api/src/index.ts.hbs +0 -123
  474. package/templates/api-web-db/package.json.hbs +0 -27
  475. package/templates/api-web-db/sst.config.ts.hbs +0 -151
  476. package/templates/api-web-db/web/.dockerignore +0 -3
  477. package/templates/api-web-db/web/Dockerfile +0 -17
  478. package/templates/api-web-db/web/app/lib/db.server.ts +0 -36
  479. package/templates/api-web-db/web/app/root.tsx +0 -29
  480. package/templates/api-web-db/web/app/routes/home.tsx.hbs +0 -114
  481. package/templates/api-web-db/web/app/routes.ts +0 -3
  482. package/templates/api-web-db/web/package.json.hbs +0 -30
  483. package/templates/api-web-db/web/prisma/schema.prisma +0 -25
  484. package/templates/api-web-db/web/prisma.config.ts +0 -18
  485. package/templates/api-web-db/web/react-router.config.ts +0 -5
  486. package/templates/api-web-db/web/tsconfig.json +0 -19
  487. package/templates/api-web-db/web/vite.config.ts +0 -9
  488. package/templates/temporal-api-worker/README.md.hbs +0 -133
  489. package/templates/temporal-api-worker/api/src/index.ts.hbs +0 -145
  490. package/templates/temporal-api-worker/package.json.hbs +0 -29
  491. package/templates/temporal-api-worker/sst.config.ts.hbs +0 -161
  492. package/templates/temporal-api-worker/worker/Dockerfile +0 -11
  493. package/templates/temporal-api-worker/worker/src/bundle-workflows.ts +0 -38
  494. package/templates/temporal-api-worker/worker/src/worker.ts.hbs +0 -93
  495. /package/templates/{temporal-api-worker → api-auth}/api/.dockerignore +0 -0
  496. /package/templates/{temporal-api-worker → api-auth}/api/Dockerfile +0 -0
  497. /package/templates/{temporal-api-worker → api-auth}/api/tsconfig.json +0 -0
  498. /package/templates/{temporal-api-worker → api-auth}/tsconfig.json +0 -0
  499. /package/templates/{temporal-api-worker/worker → api-role-gating/api}/.dockerignore +0 -0
  500. /package/templates/{temporal-api-worker/worker → external-service/api}/tsconfig.json +0 -0
  501. /package/templates/{temporal-api-worker → workflow}/api/src/encryption-codec.ts +0 -0
  502. /package/templates/{temporal-api-worker → workflow}/worker/src/activities.ts.hbs +0 -0
  503. /package/templates/{temporal-api-worker → workflow}/worker/src/encryption-codec.ts +0 -0
  504. /package/templates/{temporal-api-worker → workflow}/worker/src/workflows.ts.hbs +0 -0
@@ -12,11 +12,143 @@
12
12
  import { execFileSync } from "child_process";
13
13
  import * as path from "path";
14
14
  import * as fs from "fs";
15
+ import { parse as parseYaml } from "yaml";
15
16
  import { logError, logInfo, logSuccess, logWarn } from "../utils/log.js";
16
- import { findAppRoot, findStackConfigs } from "../utils/pulumi.js";
17
+ import { findAppRoot, findStackConfigs, getCurrentStack, readStackConfig } from "../utils/pulumi.js";
18
+ import { resolveWorktreeIdentity, worktreeStackName } from "../utils/worktree-identity.js";
19
+ import { resolvePulumiEnv } from "../utils/pulumi-run.js";
17
20
  // =============================================================================
18
21
  // Helpers
19
22
  // =============================================================================
23
+ /**
24
+ * Read a top-level key from Pulumi.<stack>.yaml (not under `config:`).
25
+ * Used for `secretsprovider` and `encryptedkey` which live at the root level.
26
+ */
27
+ function readTopLevelYamlKey(appRoot, stack, key) {
28
+ const configFile = path.join(appRoot, `Pulumi.${stack}.yaml`);
29
+ if (!fs.existsSync(configFile))
30
+ return null;
31
+ const content = fs.readFileSync(configFile, "utf-8");
32
+ // Match top-level key (no leading whitespace, unlike config values which are indented)
33
+ const pattern = new RegExp(`^${key}:\\s*(.+)$`, "m");
34
+ const match = content.match(pattern);
35
+ if (!match)
36
+ return null;
37
+ return match[1].trim().replace(/^["']|["']$/g, "");
38
+ }
39
+ /**
40
+ * Read a key's scalar value from the `config:` block of Pulumi.<stack>.yaml
41
+ * (e.g. `mesh:tenant`). Indented two spaces under `config:`.
42
+ */
43
+ function readConfigBlockKey(appRoot, stack, key) {
44
+ const configFile = path.join(appRoot, `Pulumi.${stack}.yaml`);
45
+ if (!fs.existsSync(configFile))
46
+ return null;
47
+ const content = fs.readFileSync(configFile, "utf-8");
48
+ const pattern = new RegExp(`^\\s{2}${key.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}:\\s*(.+)$`, "m");
49
+ const match = content.match(pattern);
50
+ if (!match)
51
+ return null;
52
+ return match[1].trim().replace(/^["']|["']$/g, "");
53
+ }
54
+ /**
55
+ * Personal-platform DNS preflight: verify the parent zone's PUBLIC delegation.
56
+ *
57
+ * The env zone ({env}.{parentZone}) is created and NS-delegated inside
58
+ * Route53 by the platform deploy — but the chain only resolves publicly if
59
+ * the parent zone itself is delegated at the DNS host above it (e.g. the 4
60
+ * NS records for `sandbox` in the Cloudflare meshtech.io zone). Without it,
61
+ * hostnames don't resolve and ACM certs sit in PENDING_VALIDATION forever.
62
+ * This check names the exact records to add instead of leaving that failure
63
+ * to be discovered from a "not secure / unreachable" browser error.
64
+ */
65
+ async function checkParentZoneDelegation(parentZone, awsEnv) {
66
+ // What the internet sees
67
+ let publicNs = [];
68
+ try {
69
+ const { Resolver } = await import("node:dns/promises");
70
+ const resolver = new Resolver();
71
+ resolver.setServers(["1.1.1.1", "8.8.8.8"]);
72
+ publicNs = (await resolver.resolveNs(parentZone)).map((n) => n.replace(/\.$/, "").toLowerCase());
73
+ }
74
+ catch {
75
+ // NXDOMAIN / no NS — treated as "no public delegation"
76
+ }
77
+ // What Route53 says the zone's nameservers ARE (so the warning can print
78
+ // the exact records to add). Best-effort: skip silently without creds.
79
+ let zoneNs = [];
80
+ try {
81
+ const { Route53Client, ListHostedZonesByNameCommand, GetHostedZoneCommand } = await import("@aws-sdk/client-route-53");
82
+ const client = new Route53Client({
83
+ credentials: awsEnv.AWS_ACCESS_KEY_ID
84
+ ? {
85
+ accessKeyId: awsEnv.AWS_ACCESS_KEY_ID,
86
+ secretAccessKey: awsEnv.AWS_SECRET_ACCESS_KEY ?? "",
87
+ sessionToken: awsEnv.AWS_SESSION_TOKEN,
88
+ }
89
+ : undefined,
90
+ });
91
+ const byName = await client.send(new ListHostedZonesByNameCommand({ DNSName: parentZone, MaxItems: 1 }));
92
+ const zone = byName.HostedZones?.[0];
93
+ if (zone?.Id && zone.Name === `${parentZone}.`) {
94
+ const detail = await client.send(new GetHostedZoneCommand({ Id: zone.Id }));
95
+ zoneNs = (detail.DelegationSet?.NameServers ?? []).map((n) => n.toLowerCase());
96
+ }
97
+ else {
98
+ logWarn(`Parent zone '${parentZone}' does not exist in Route53 yet — the platform deploy expects it (it hosts the env-zone delegations). Create it first (one-time, operator step).`);
99
+ return;
100
+ }
101
+ }
102
+ catch {
103
+ /* creds unavailable or lookup failed — fall through with what we have */
104
+ }
105
+ if (publicNs.length === 0) {
106
+ const records = zoneNs.length > 0
107
+ ? zoneNs.map((ns) => ` ${parentZone.split(".")[0]} NS ${ns}`).join("\n")
108
+ : ` (run this command again with AWS credentials to print the exact nameservers)`;
109
+ logWarn(`Parent zone '${parentZone}' has NO public NS delegation — hub/identity/temporal hostnames for this stack will NOT resolve and ACM certs stay pending until it lands.\n` +
110
+ ` One-time step: at the DNS host for '${parentZone.split(".").slice(1).join(".")}' (e.g. Cloudflare), add:\n` +
111
+ `${records}\n` +
112
+ ` The deploy itself can proceed now (certs validate automatically once delegation propagates).`);
113
+ }
114
+ else if (zoneNs.length > 0 && !publicNs.some((ns) => zoneNs.includes(ns))) {
115
+ logWarn(`Parent zone '${parentZone}' is publicly delegated to DIFFERENT nameservers than the Route53 zone in this account:\n` +
116
+ ` public: ${publicNs.join(", ")}\n` +
117
+ ` zone: ${zoneNs.join(", ")}\n` +
118
+ ` The env zone would be created in a zone the internet never consults — fix the delegation before deploying.`);
119
+ }
120
+ else {
121
+ logSuccess(`Parent zone delegation OK: ${parentZone} resolves publicly.`);
122
+ }
123
+ }
124
+ /**
125
+ * Read the `config:` block from `Pulumi.<stack>.yaml` on disk, in the same shape
126
+ * `pulumi config --json` returns. This is the fallback when the base stack hasn't
127
+ * been initialized in the backend yet (a freshly-generated app): `pulumi config
128
+ * --json --stack <base>` fails, but the config we need still lives in the file.
129
+ * Without this, `mesh stack init` silently drops region/tenant/platform/deployerRole.
130
+ */
131
+ function readBaseConfigFromYaml(appRoot, stack) {
132
+ const file = path.join(appRoot, `Pulumi.${stack}.yaml`);
133
+ if (!fs.existsSync(file))
134
+ return {};
135
+ let doc;
136
+ try {
137
+ doc = parseYaml(fs.readFileSync(file, "utf-8"));
138
+ }
139
+ catch {
140
+ return {};
141
+ }
142
+ const cfg = doc?.config ?? {};
143
+ const out = {};
144
+ for (const [key, val] of Object.entries(cfg)) {
145
+ out[key] =
146
+ val !== null && typeof val === "object"
147
+ ? { value: "", objectValue: val }
148
+ : { value: String(val) };
149
+ }
150
+ return out;
151
+ }
20
152
  /**
21
153
  * Get GitHub username from gh CLI, falling back to git config.
22
154
  */
@@ -63,7 +195,11 @@ export function registerStackCommand(program) {
63
195
  .description("Create a personal dev stack (dev-{github-username})")
64
196
  .option("--from <stack>", "Base stack to copy config from")
65
197
  .option("--name <name>", "Override stack name (default: dev-{username})")
66
- .action((opts) => {
198
+ .option("--adopt", "resume an EXISTING stack with this name (skips the availability check)", false)
199
+ .option("--worktree", "Isolate this stack per git worktree — append the worktree token to the name so concurrent worktrees deploy to distinct stacks (no SSM/namespace collisions)")
200
+ .option("--platform", "Personal PLATFORM stack: a fully isolated platform env (Zitadel, Hub, Temporal, tenant envs) on the SHARED core — sets mesh:coreEnv to the base env, mesh:clusterOwner false, disables org-wide singletons (package registry, VPN), and keeps deploy ON. Run from a platform Pulumi program.", false)
201
+ .option("--parent-zone <zone>", "With --platform: parent DNS zone for the env zone (mesh:dns.public.parentZone) — platform hostnames become {sub}.{env}.{parentZone} (e.g. hub.dmb-dev.mesh.meshtech.io), so personal stacks never collide on DNS")
202
+ .action(async (opts) => {
67
203
  const appRoot = findAppRoot(process.cwd());
68
204
  if (!appRoot) {
69
205
  logError("No Pulumi.yaml found. Run from within a Pulumi app directory.");
@@ -102,21 +238,98 @@ export function registerStackCommand(program) {
102
238
  logError(`Stack config not found: Pulumi.${baseStack}.yaml`);
103
239
  process.exit(1);
104
240
  }
105
- // Determine new stack name
106
- const newStack = opts.name ?? `dev-${username}`;
241
+ // Determine new stack name. --worktree appends this worktree's token so
242
+ // concurrent worktrees deploy to distinct stacks: the SSM export paths
243
+ // (apps/{app}/stacks/{stack}/...), Temporal namespace ({tenant}-{stack}-
244
+ // {app}), and Nexus endpoint name all derive from the stack name, so ONE
245
+ // discriminator isolates all three. The primary checkout has an empty
246
+ // token, so --worktree is a no-op there (it IS the canonical stack).
247
+ // Platform stacks follow {tenant}-{env} (parseEnvFromStack derives the
248
+ // env by stripping the tenant prefix), so the personal env is
249
+ // {username}-dev → stack {tenant}-{username}-dev. App stacks keep the
250
+ // dev-{username} convention.
251
+ const baseTenant = readConfigBlockKey(appRoot, baseStack, "mesh:tenant");
252
+ if (opts.platform && !baseTenant) {
253
+ logError(`--platform: could not read mesh:tenant from Pulumi.${baseStack}.yaml — is this a platform program?`);
254
+ process.exit(1);
255
+ }
256
+ const baseName = opts.name ??
257
+ (opts.platform ? `${baseTenant}-${username}-dev` : `dev-${username}`);
258
+ let newStack = baseName;
259
+ if (opts.worktree) {
260
+ const wt = resolveWorktreeIdentity(appRoot);
261
+ newStack = worktreeStackName(baseName, wt);
262
+ if (wt.token) {
263
+ logInfo(`--worktree: isolating as "${newStack}" (linked worktree "${wt.slug}")`);
264
+ }
265
+ else {
266
+ logInfo(`--worktree: primary checkout has no worktree token — using "${baseName}" (isolation not needed here).`);
267
+ }
268
+ }
107
269
  const newConfigPath = path.join(appRoot, `Pulumi.${newStack}.yaml`);
108
270
  const configExists = fs.existsSync(newConfigPath);
109
- // Initialize the Pulumi stack (creates encryptionsalt in the config file)
271
+ // Detect KMS secrets provider from base stack config.
272
+ // After migration, stacks have a top-level `secretsprovider:` key in their
273
+ // Pulumi.<stack>.yaml with the KMS URI. Use it for new stacks so they
274
+ // automatically use KMS instead of passphrase encryption.
275
+ const secretsProvider = readTopLevelYamlKey(appRoot, baseStack, "secretsprovider");
276
+ // Login preflight + deployer creds for the Pulumi backend (MESH-2085):
277
+ // stack init/select/config all hit the S3 state backend and need the
278
+ // deployer role. Resolve it ONCE from the base stack (the new stack has no
279
+ // config yet) — and get a clear "run mesh login --device" instead of a raw
280
+ // NoCredentialProviders — then reuse the env across every pulumi call below.
281
+ const credEnv = await resolvePulumiEnv({ appRoot, stack: baseStack });
282
+ const pulumiEnv = { ...process.env, ...credEnv };
283
+ delete pulumiEnv.AWS_PROFILE;
284
+ // Determinism: a personal stack NAME must be available. The backend is
285
+ // shared, so an existing stack with this name belongs to someone (maybe
286
+ // you, maybe not) — creating "into" it silently adopts their state.
287
+ // Check first and fail with a clear remediation; --adopt is the
288
+ // explicit escape hatch for resuming a stack you know is yours.
289
+ if (!opts.adopt) {
290
+ let existing = [];
291
+ try {
292
+ const raw = execFileSync("pulumi", ["stack", "ls", "--json"], {
293
+ cwd: appRoot,
294
+ encoding: "utf-8",
295
+ env: pulumiEnv,
296
+ stdio: ["pipe", "pipe", "pipe"],
297
+ });
298
+ existing = JSON.parse(raw).map((s) => s.name);
299
+ }
300
+ catch {
301
+ // Backend unreachable — pulumi stack init below gives the real error.
302
+ }
303
+ if (existing.includes(newStack) || configExists) {
304
+ logError(`Personal stack name '${newStack}' is not available` +
305
+ (configExists ? ` (Pulumi.${newStack}.yaml already exists here)` : " (a stack with this name exists in the backend)") +
306
+ ".");
307
+ logInfo(` Pick another name: mesh stack init --name ${newStack}-2`);
308
+ logInfo(` Resume YOUR OWN stack: mesh stack init --name ${newStack} --adopt`);
309
+ process.exit(1);
310
+ }
311
+ }
312
+ // Initialize the Pulumi stack
313
+ const initArgs = ["stack", "init", newStack];
314
+ if (secretsProvider) {
315
+ initArgs.push("--secrets-provider", secretsProvider);
316
+ logInfo(`Using KMS secrets provider: ${secretsProvider}`);
317
+ }
110
318
  try {
111
- execFileSync("pulumi", ["stack", "init", newStack], {
319
+ execFileSync("pulumi", initArgs, {
112
320
  cwd: appRoot,
321
+ env: pulumiEnv,
113
322
  stdio: "inherit",
114
323
  });
115
- logSuccess(`Stack initialized: ${newStack}`);
324
+ logSuccess(`Stack initialized: ${newStack}${secretsProvider ? " (KMS secrets)" : ""}`);
116
325
  }
117
326
  catch (err) {
118
- if (err.stderr?.includes("already exists")) {
119
- logWarn(`Stack ${newStack} already exists.`);
327
+ if (err.stderr?.includes("already exists") && opts.adopt) {
328
+ logWarn(`Stack ${newStack} already exists — adopting (--adopt).`);
329
+ }
330
+ else if (err.stderr?.includes("already exists")) {
331
+ logError(`Stack ${newStack} already exists. Re-run with --adopt if it is yours.`);
332
+ process.exit(1);
120
333
  }
121
334
  else {
122
335
  process.exit(err.status ?? 1);
@@ -126,6 +339,7 @@ export function registerStackCommand(program) {
126
339
  try {
127
340
  execFileSync("pulumi", ["stack", "select", newStack], {
128
341
  cwd: appRoot,
342
+ env: pulumiEnv,
129
343
  stdio: ["pipe", "pipe", "pipe"],
130
344
  });
131
345
  }
@@ -135,11 +349,19 @@ export function registerStackCommand(program) {
135
349
  // Read base stack config as JSON
136
350
  let baseConfig = {};
137
351
  try {
138
- const raw = execFileSync("pulumi", ["config", "--json", "--stack", baseStack], { cwd: appRoot, encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] });
352
+ const raw = execFileSync("pulumi", ["config", "--json", "--stack", baseStack], { cwd: appRoot, env: pulumiEnv, encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] });
139
353
  baseConfig = JSON.parse(raw);
140
354
  }
141
355
  catch {
142
- logWarn("Could not read base stack config as JSON; falling back to manual setup.");
356
+ // The base stack isn't initialized in the backend (common for a freshly
357
+ // generated app) — read its config straight from Pulumi.<base>.yaml instead
358
+ // of dropping it. (Previously this fell through with an empty config, leaving
359
+ // the new stack missing region/tenant/platform/deployerRole — MESH-2096.)
360
+ baseConfig = readBaseConfigFromYaml(appRoot, baseStack);
361
+ if (Object.keys(baseConfig).length === 0) {
362
+ logWarn(`Could not read base config from the backend or Pulumi.${baseStack}.yaml — ` +
363
+ `the new stack will need manual config.`);
364
+ }
143
365
  }
144
366
  // Copy all config keys except mesh:deploy (we'll set that explicitly)
145
367
  for (const [key, entry] of Object.entries(baseConfig)) {
@@ -148,28 +370,144 @@ export function registerStackCommand(program) {
148
370
  try {
149
371
  if (entry.objectValue !== undefined) {
150
372
  // Structured value — set as JSON (Pulumi parses it back to object)
151
- execFileSync("pulumi", ["config", "set", key, JSON.stringify(entry.objectValue)], { cwd: appRoot, stdio: ["pipe", "pipe", "pipe"] });
373
+ execFileSync("pulumi", ["config", "set", key, JSON.stringify(entry.objectValue)], { cwd: appRoot, env: pulumiEnv, stdio: ["pipe", "pipe", "pipe"] });
152
374
  }
153
375
  else if (entry.value === "true" || entry.value === "false") {
154
- execFileSync("pulumi", ["config", "set", "--type", "bool", key, entry.value], { cwd: appRoot, stdio: ["pipe", "pipe", "pipe"] });
376
+ execFileSync("pulumi", ["config", "set", "--type", "bool", key, entry.value], { cwd: appRoot, env: pulumiEnv, stdio: ["pipe", "pipe", "pipe"] });
155
377
  }
156
378
  else {
157
- execFileSync("pulumi", ["config", "set", key, entry.value], { cwd: appRoot, stdio: ["pipe", "pipe", "pipe"] });
379
+ execFileSync("pulumi", ["config", "set", key, entry.value], { cwd: appRoot, env: pulumiEnv, stdio: ["pipe", "pipe", "pipe"] });
158
380
  }
159
381
  }
160
382
  catch { }
161
383
  }
162
- // Set mesh:deploy to false — personal stacks skip K8s deployments
163
- execFileSync("pulumi", ["config", "set", "--type", "bool", "mesh:deploy", "false"], {
164
- cwd: appRoot,
165
- stdio: ["pipe", "pipe", "pipe"],
166
- });
167
- logSuccess(`Configured Pulumi.${newStack}.yaml (based on ${baseStack}, deploy: false)`);
384
+ if (opts.platform) {
385
+ // Personal PLATFORM stack: an isolated platform env on the shared
386
+ // core. Everything below the platform layer is reused (cluster,
387
+ // VPC, VPN, RDS); everything above it is this env's own.
388
+ const baseEnv = readConfigBlockKey(appRoot, baseStack, "mesh:coreEnv") ??
389
+ (baseTenant && baseStack.startsWith(`${baseTenant}-`)
390
+ ? baseStack.slice(baseTenant.length + 1)
391
+ : baseStack);
392
+ const setCfg = (args) => {
393
+ try {
394
+ execFileSync("pulumi", ["config", "set", ...args], {
395
+ cwd: appRoot,
396
+ env: pulumiEnv,
397
+ stdio: ["pipe", "pipe", "pipe"],
398
+ });
399
+ }
400
+ catch { }
401
+ };
402
+ setCfg(["mesh:coreEnv", baseEnv]);
403
+ setCfg(["--type", "bool", "mesh:clusterOwner", "false"]);
404
+ // Org-wide singletons stay with the primary platform: one package
405
+ // registry per org, and the personal env reuses the shared VPN.
406
+ setCfg(["--type", "bool", "mesh:packageRegistry", "false"]);
407
+ setCfg(["--type", "bool", "mesh:headscale", "false"]);
408
+ setCfg(["--type", "bool", "mesh:subnetRouter", "false"]);
409
+ setCfg(["--type", "bool", "mesh:devbox", "false"]);
410
+ // A personal platform env owns its whole DNS zone — hostname
411
+ // suffixing (subdomain-{stage}) exists to avoid collisions inside a
412
+ // SHARED zone and just makes URLs ugly here. Stable URLs by default.
413
+ setCfg(["--type", "bool", "mesh:stableUrl", "true"]);
414
+ // Tenant Pulumi-state bucket names are org-global by convention
415
+ // ({hubTenant}-tenant-{name}-pulumi-state, no env segment) and
416
+ // WILL collide with the primary platform's buckets. Scope each
417
+ // copied tenant's bucket to this env via the documented
418
+ // pulumiStateBucket override.
419
+ try {
420
+ const tenantsRaw = readConfigBlockKey(appRoot, newStack, "mesh:tenants");
421
+ if (tenantsRaw) {
422
+ const tenants = JSON.parse(tenantsRaw);
423
+ const envSegment = baseTenant && newStack.startsWith(`${baseTenant}-`)
424
+ ? newStack.slice(baseTenant.length + 1)
425
+ : newStack;
426
+ for (const [tName, tCfg] of Object.entries(tenants)) {
427
+ if (!tCfg.pulumiStateBucket) {
428
+ tCfg.pulumiStateBucket = `${baseTenant}-tenant-${tName}-${envSegment}-pulumi-state`;
429
+ }
430
+ }
431
+ setCfg(["mesh:tenants", JSON.stringify(tenants)]);
432
+ }
433
+ }
434
+ catch {
435
+ logWarn("Could not env-scope tenant pulumiStateBucket overrides — check mesh:tenants by hand (bucket names collide across envs otherwise).");
436
+ }
437
+ // Env-zone DNS: hostnames derive from {env}.{parentZone} so this
438
+ // stack can never collide with another env's hosts.
439
+ // waitForValidation false → the deploy never blocks on ACM while the
440
+ // parent zone's public delegation is still propagating; the cert
441
+ // issues automatically once it lands.
442
+ if (opts.parentZone) {
443
+ setCfg([
444
+ "mesh:dns",
445
+ JSON.stringify({
446
+ public: { parentZone: opts.parentZone, waitForValidation: false },
447
+ }),
448
+ ]);
449
+ }
450
+ else {
451
+ logWarn("No --parent-zone given: platform hostnames will derive FLAT from the core zone and can collide with the primary platform. Set it now or later with: mesh deploy config set mesh:dns '{\"public\":{\"parentZone\":\"<zone>\"}}'");
452
+ }
453
+ if (opts.parentZone) {
454
+ await checkParentZoneDelegation(opts.parentZone, pulumiEnv);
455
+ }
456
+ logSuccess(`Configured Pulumi.${newStack}.yaml (personal platform env on core '${baseEnv}'${opts.parentZone ? `, DNS zone ${newStack.startsWith(`${baseTenant}-`) ? newStack.slice(baseTenant.length + 1) : newStack}.${opts.parentZone}` : ""})`);
457
+ }
458
+ else {
459
+ // Set mesh:deploy to false — personal APP stacks skip K8s deployments
460
+ execFileSync("pulumi", ["config", "set", "--type", "bool", "mesh:deploy", "false"], {
461
+ cwd: appRoot,
462
+ env: pulumiEnv,
463
+ stdio: ["pipe", "pipe", "pipe"],
464
+ });
465
+ logSuccess(`Configured Pulumi.${newStack}.yaml (based on ${baseStack}, deploy: false)`);
466
+ }
168
467
  }
169
468
  console.log("");
170
- logInfo(`Your personal stack is ready.`);
171
- logInfo(`Run: mesh deploy up --yes`);
172
- logInfo(`Then: mesh dev`);
469
+ logInfo(opts.platform ? `Your personal platform stack is ready.` : `Your personal stack is ready.`);
470
+ // Qualify with --stack/--stage: right after init the deployer role isn't
471
+ // assumed yet, so `pulumi stack --show-name` can't resolve the selected
472
+ // stack and a bare `mesh deploy up` errors "Could not determine stack"
473
+ // (MESH-2097). The explicit name is copy-paste correct.
474
+ logInfo(`Run: mesh deploy up --stack ${newStack} --yes`);
475
+ logInfo(opts.platform
476
+ ? `Then point app stacks at it: mesh:platformEnv ${newStack.startsWith(`${baseTenant}-`) ? newStack.slice(baseTenant.length + 1) : newStack}`
477
+ : `Then: mesh dev --stage ${newStack}`);
478
+ });
479
+ stack
480
+ .command("rm <name>")
481
+ .description("Remove a personal Pulumi stack (backend state + local config)")
482
+ .option("--yes", "Skip the confirmation prompt")
483
+ .action(async (name, opts) => {
484
+ const appRoot = findAppRoot(process.cwd());
485
+ if (!appRoot) {
486
+ logError("No Pulumi.yaml found. Run from within a Pulumi app directory.");
487
+ process.exit(1);
488
+ }
489
+ // Credentialed via the shared chokepoint (MESH-2085) — the login preflight
490
+ // + deployer role, so `pulumi stack rm` reaches the S3 backend instead of
491
+ // NoCredentialProviders. Prefer the TARGET stack's role; but a half-created
492
+ // stack, or one created in another worktree, may have no local config here
493
+ // (exactly the stacks you most want to rm), so fall back to any OTHER local
494
+ // stack that carries a deployerRole — personal dev stacks share an account.
495
+ const credStack = readStackConfig(appRoot, name, "mesh:deployerRole")
496
+ ? name
497
+ : [getCurrentStack(appRoot), "dev", ...findStackConfigs(appRoot)].find((s) => !!s && s !== name && !!readStackConfig(appRoot, s, "mesh:deployerRole")) ?? name;
498
+ const credEnv = await resolvePulumiEnv({ appRoot, stack: credStack });
499
+ const pulumiEnv = { ...process.env, ...credEnv };
500
+ delete pulumiEnv.AWS_PROFILE;
501
+ const args = ["stack", "rm", name];
502
+ if (opts.yes)
503
+ args.push("--yes");
504
+ try {
505
+ execFileSync("pulumi", args, { cwd: appRoot, env: pulumiEnv, stdio: "inherit" });
506
+ logSuccess(`Removed stack ${name}`);
507
+ }
508
+ catch (err) {
509
+ process.exit(err.status ?? 1);
510
+ }
173
511
  });
174
512
  }
175
513
  //# sourceMappingURL=stack.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../src/commands/stack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../../src/commands/stack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * mesh temporal — inspect Temporal workflows for the current app/stack.
3
+ *
4
+ * Commands:
5
+ * mesh temporal describe <workflowId> [runId] Show workflow status and metadata
6
+ * mesh temporal history <workflowId> [runId] Show workflow event history
7
+ *
8
+ * Connection info is resolved from the app's Pulumi stack output (same as mesh dev).
9
+ * Uses the raw gRPC API so we can render events without a codec proxy; when
10
+ * `--show-payloads` is set we resolve the app's `TEMPORAL_ENCODING_KEY` from
11
+ * its Kubernetes secret and decrypt inline via the shared codec helper.
12
+ */
13
+ import { Command } from "commander";
14
+ export declare function registerTemporalCommands(program: Command): void;
15
+ //# sourceMappingURL=temporal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temporal.d.ts","sourceRoot":"","sources":["../../../src/commands/temporal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA81BpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsG/D"}