@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
@@ -0,0 +1,286 @@
1
+ /**
2
+ * App-tenant auth auto-provisioning for the local platform — the local analog
3
+ * of what the Pulumi components do in the cloud, per the approved Zitadel
4
+ * tenant-auth pattern (Org / Project / Application / Service User):
5
+ *
6
+ * Org = app tenant (ZitadelTenantIdentity parity)
7
+ * Project = one per app, (ZitadelAppIdentity parity —
8
+ * name = authz schema namespace the app IS the authz boundary)
9
+ * Application = one per service inside it (API app, Basic creds)
10
+ * Secret = mesh/{tenant}/{env}/apps/{app}/zitadel/{service}
11
+ * (ministack Secrets Manager — same canonical path as cloud)
12
+ *
13
+ * `mesh dev --local` calls this on startup so scaffolding + running an app
14
+ * auto-creates its auth config — no Pulumi deploy, no manual Zitadel steps.
15
+ * Idempotent: search-before-create everywhere; the credential secret is only
16
+ * written when the application is first created (Zitadel returns the secret
17
+ * once).
18
+ */
19
+ import { logInfo, logSuccess } from "../../utils/log.js";
20
+ import { LOCAL_ENV, LOCAL_AWS_CONFIG, registerTenantEnv } from "./seed.js";
21
+ import { api, readSeederPat, PLATFORM_ORG, ensureZitadelProject, searchZitadelApp } from "./seed-zitadel.js";
22
+ import { upsertLocalSecret } from "./helpers.js";
23
+ export function authSecretPath(tenant, app, service) {
24
+ return `mesh/${tenant}/${LOCAL_ENV}/apps/${app}/zitadel/${service}`;
25
+ }
26
+ async function ensureOrg(pat, name) {
27
+ const search = await api(pat, "POST", "/admin/v1/orgs/_search", {
28
+ queries: [{ nameQuery: { name, method: "TEXT_QUERY_METHOD_EQUALS" } }],
29
+ });
30
+ const existing = search?.result?.[0]?.id;
31
+ if (existing)
32
+ return existing;
33
+ const created = await api(pat, "POST", "/v2/organizations", { name });
34
+ logSuccess(`Created Zitadel org '${name}' (app tenant)`);
35
+ return created.organizationId;
36
+ }
37
+ const ensureProject = (pat, orgId, name) => ensureZitadelProject(pat, name, { orgId, describe: "app" });
38
+ /** Ensure the service's API application exists; returns fresh credentials
39
+ * when it was created this run. */
40
+ async function ensureServiceApp(pat, orgId, projectId, service) {
41
+ const existing = await searchZitadelApp(pat, projectId, service, orgId);
42
+ if (existing) {
43
+ return { created: false, appId: existing.id, clientId: existing?.apiConfig?.clientId };
44
+ }
45
+ const created = await api(pat, "POST", `/management/v1/projects/${projectId}/apps/api`, { name: service, authMethodType: "API_AUTH_METHOD_TYPE_BASIC" }, orgId);
46
+ logSuccess(`Created Zitadel application '${service}' (service)`);
47
+ return { created: true, clientId: created.clientId, clientSecret: created.clientSecret };
48
+ }
49
+ /** Ensure the app-declared project roles exist (idempotent). */
50
+ async function ensureProjectRoles(pat, orgId, projectId, roles) {
51
+ if (roles.length === 0)
52
+ return;
53
+ const existing = await api(pat, "POST", `/management/v1/projects/${projectId}/roles/_search`, {}, orgId);
54
+ const have = new Set((existing?.result ?? []).map((r) => r.key));
55
+ for (const key of roles) {
56
+ if (have.has(key))
57
+ continue;
58
+ await api(pat, "POST", `/management/v1/projects/${projectId}/roles`, { roleKey: key, displayName: key }, orgId);
59
+ logSuccess(`Created project role '${key}'`);
60
+ }
61
+ }
62
+ /**
63
+ * Ensure the app's LOCAL M2M caller: a machine user (`{app}-m2m`) with a
64
+ * client-credentials secret, granted the app project (+ declared roles).
65
+ * API applications are resource servers — they cannot obtain tokens — so
66
+ * without this there is no way to mint a caller token against the local
67
+ * Zitadel at all. Secret stored at mesh/{tenant}/dev/apps/{app}/zitadel/m2m.
68
+ */
69
+ async function ensureM2mCaller(pat, tenant, app, orgId, projectId, roles) {
70
+ const userName = `${app}-m2m`;
71
+ const search = await api(pat, "POST", "/management/v1/users/_search", { queries: [{ userNameQuery: { userName, method: "TEXT_QUERY_METHOD_EQUALS" } }] }, orgId);
72
+ let userId = search?.result?.[0]?.id;
73
+ let createdUser = false;
74
+ if (!userId) {
75
+ const created = await api(pat, "POST", "/management/v1/users/machine", { userName, name: `${app} local M2M caller`, accessTokenType: "ACCESS_TOKEN_TYPE_BEARER" }, orgId);
76
+ userId = created.userId;
77
+ createdUser = true;
78
+ logSuccess(`Created machine user '${userName}' (local M2M caller)`);
79
+ }
80
+ // Grant the project (+ declared roles); on re-runs update the existing
81
+ // grant so newly-declared roles apply.
82
+ try {
83
+ await api(pat, "POST", `/management/v1/users/${userId}/grants`, { projectId, roleKeys: roles }, orgId);
84
+ }
85
+ catch (err) {
86
+ const e = err;
87
+ if (e.status !== 409 && !/already exists/i.test(String(e.message)))
88
+ throw err;
89
+ const grants = await api(pat, "POST", "/management/v1/users/grants/_search", { queries: [{ userIdQuery: { userId } }, { projectIdQuery: { projectId } }] }, orgId);
90
+ const grantId = grants?.result?.[0]?.id;
91
+ if (grantId && roles.length > 0) {
92
+ try {
93
+ await api(pat, "PUT", `/management/v1/users/${userId}/grants/${grantId}`, { roleKeys: roles }, orgId);
94
+ }
95
+ catch (updateErr) {
96
+ // Zitadel 400s a no-op update ("User grant has not been changed",
97
+ // COMMAND-Rs8fy) — the grant already carries the declared roles.
98
+ // Anything else is real. Must not throw here: aborting mid-provision
99
+ // skips the secret (re-)mint below and leaves callers without creds.
100
+ const ue = updateErr;
101
+ if (!/has not been changed/i.test(String(ue.message)))
102
+ throw updateErr;
103
+ }
104
+ }
105
+ }
106
+ if (createdUser || !(await authSecretExists(tenant, app, "m2m"))) {
107
+ const secret = await api(pat, "PUT", `/management/v1/users/${userId}/secret`, {}, orgId);
108
+ await writeAuthSecret(tenant, app, "m2m", {
109
+ clientId: secret.clientId,
110
+ clientSecret: secret.clientSecret,
111
+ issuer: "http://localhost:8080",
112
+ orgId,
113
+ projectId,
114
+ });
115
+ return true;
116
+ }
117
+ return false;
118
+ }
119
+ async function authSecretExists(tenant, app, service) {
120
+ const { SecretsManagerClient, GetSecretValueCommand } = await import("@aws-sdk/client-secrets-manager");
121
+ const sm = new SecretsManagerClient(LOCAL_AWS_CONFIG);
122
+ return sm.send(new GetSecretValueCommand({ SecretId: authSecretPath(tenant, app, service) })).then(() => true, () => false);
123
+ }
124
+ async function writeAuthSecret(tenant, app, service, value) {
125
+ const name = authSecretPath(tenant, app, service);
126
+ await upsertLocalSecret(name, value);
127
+ logSuccess(`Stored service credentials → ${name}`);
128
+ }
129
+ /**
130
+ * Register the running app in the local platform registry — the same
131
+ * self-registration path deployed apps use (/mesh-platform/{tenant}/{env}/
132
+ * apps/{app}/meta), so StackPort (and the local Hub once its images land)
133
+ * can visualize local apps.
134
+ */
135
+ export async function registerLocalApp(args) {
136
+ const { SSMClient, PutParameterCommand } = await import("@aws-sdk/client-ssm");
137
+ const ssm = new SSMClient(LOCAL_AWS_CONFIG);
138
+ const put = (name, value, description) => ssm.send(new PutParameterCommand({ Name: name, Type: "String", Overwrite: true, Value: JSON.stringify(value), Description: description }));
139
+ // The app's tenant + env must be registered for the Hub to list the app.
140
+ await registerTenantEnv(args.tenant);
141
+ // Per-stack registration in the exact shape hub-api's SSM assembler reads
142
+ // (stack "local" = the mesh dev --local runtime).
143
+ const namespace = `${args.tenant}-${LOCAL_ENV}-${args.app}`;
144
+ const base = `/mesh-platform/${args.tenant}/${LOCAL_ENV}/apps/${args.app}/stacks/local`;
145
+ await put(base, {
146
+ name: args.app,
147
+ tenant: args.tenant,
148
+ stack: "local",
149
+ namespace,
150
+ platform: { name: "local", env: LOCAL_ENV },
151
+ }, `Local app registration for ${args.tenant}/${args.app} (mesh dev --local)`);
152
+ for (const service of args.services) {
153
+ const port = args.ports?.[service];
154
+ const isMock = service.startsWith("mock-");
155
+ await put(`${base}/services/${service}`, {
156
+ ...(port ? { url: `http://localhost:${port}`, port } : {}),
157
+ replicas: 1,
158
+ tier: "core",
159
+ ...(!isMock && args.links?.length ? { links: args.links } : {}),
160
+ }, `Local service registration (${service})`);
161
+ }
162
+ // Worker registration — the shape deployed TemporalWorker components
163
+ // write; hub-api discovers a tenant's Temporal namespaces from these, so
164
+ // the tenant-wide workflows view finds local runs without an explicit
165
+ // namespace filter. Template convention: worker services are named so.
166
+ for (const service of args.services) {
167
+ if (!/worker/i.test(service))
168
+ continue;
169
+ await put(`${base}/workers/${service}`, { temporalNamespace: namespace, taskQueue: args.app }, `Local worker registration (${service})`);
170
+ }
171
+ await put(`${base}/meta`, { runtime: "mesh-dev-local", services: args.services, ports: args.ports ?? {} }, "Local run metadata (mesh dev --local)");
172
+ logSuccess(`Registered app in the local registry → ${base}`);
173
+ return base;
174
+ }
175
+ /**
176
+ * Reconcile the platform registry from Zitadel — every app-tenant org (and
177
+ * its projects = apps, applications = services) provisioned in Zitadel gets
178
+ * a Hub-readable registration, even if the app hasn't been run since it was
179
+ * provisioned. Zitadel is the auth source of truth; the registry mirrors it,
180
+ * exactly like the cloud where ZitadelTenantIdentity/ZitadelAppIdentity and
181
+ * the app's self-registration both flow from the same deploy. Idempotent:
182
+ * existing per-stack registrations (which carry live ports/URLs from
183
+ * `mesh dev --local`) are never overwritten.
184
+ */
185
+ export async function reconcileRegistryFromZitadel() {
186
+ const pat = readSeederPat();
187
+ const { SSMClient, GetParameterCommand, PutParameterCommand } = await import("@aws-sdk/client-ssm");
188
+ const ssm = new SSMClient(LOCAL_AWS_CONFIG);
189
+ const orgs = await api(pat, "POST", "/admin/v1/orgs/_search", { query: { limit: 200 } });
190
+ const tenants = [];
191
+ let apps = 0;
192
+ for (const org of orgs?.result ?? []) {
193
+ const tenant = org?.name;
194
+ // The platform org holds platform-service auth config, not an app tenant.
195
+ if (!tenant || tenant === PLATFORM_ORG)
196
+ continue;
197
+ await registerTenantEnv(tenant);
198
+ tenants.push(tenant);
199
+ const projects = await api(pat, "POST", "/management/v1/projects/_search", { query: { limit: 200 } }, org.id);
200
+ for (const project of projects?.result ?? []) {
201
+ const app = project?.name;
202
+ if (!app)
203
+ continue;
204
+ apps++;
205
+ const base = `/mesh-platform/${tenant}/${LOCAL_ENV}/apps/${app}/stacks/local`;
206
+ const exists = await ssm.send(new GetParameterCommand({ Name: base })).then(() => true, () => false);
207
+ if (exists)
208
+ continue;
209
+ await ssm.send(new PutParameterCommand({
210
+ Name: base,
211
+ Type: "String",
212
+ Overwrite: true,
213
+ Value: JSON.stringify({
214
+ name: app,
215
+ tenant,
216
+ stack: "local",
217
+ namespace: `${tenant}-${LOCAL_ENV}-${app}`,
218
+ platform: { name: "local", env: LOCAL_ENV },
219
+ }),
220
+ Description: `App registration reconciled from Zitadel (${tenant}/${app})`,
221
+ }));
222
+ const applications = await api(pat, "POST", `/management/v1/projects/${project.id}/apps/_search`, { query: { limit: 100 } }, org.id);
223
+ for (const application of applications?.result ?? []) {
224
+ const service = application?.name;
225
+ if (!service)
226
+ continue;
227
+ await ssm.send(new PutParameterCommand({
228
+ Name: `${base}/services/${service}`,
229
+ Type: "String",
230
+ Overwrite: true,
231
+ Value: JSON.stringify({ replicas: 1, tier: "core" }),
232
+ Description: `Service registration reconciled from Zitadel (${service})`,
233
+ }));
234
+ }
235
+ }
236
+ }
237
+ return { tenants, apps };
238
+ }
239
+ /**
240
+ * Ensure the app tenant's full auth config exists (org → project →
241
+ * application-per-service → credential secrets).
242
+ */
243
+ export async function ensureAppTenantAuth(args) {
244
+ const pat = readSeederPat();
245
+ const orgId = await ensureOrg(pat, args.tenant);
246
+ const projectId = await ensureProject(pat, orgId, args.app);
247
+ const roles = args.roles ?? [];
248
+ await ensureProjectRoles(pat, orgId, projectId, roles);
249
+ const created = [];
250
+ for (const service of args.services) {
251
+ const result = await ensureServiceApp(pat, orgId, projectId, service);
252
+ if (result.created) {
253
+ await writeAuthSecret(args.tenant, args.app, service, {
254
+ clientId: result.clientId,
255
+ clientSecret: result.clientSecret,
256
+ issuer: "http://localhost:8080",
257
+ orgId,
258
+ projectId,
259
+ });
260
+ created.push(service);
261
+ }
262
+ else if (!(await authSecretExists(args.tenant, args.app, service))) {
263
+ // Zitadel persists across stack restarts but the local secret store is
264
+ // in-memory — heal the gap by regenerating the application's secret
265
+ // (Zitadel returns it only once, so a lost secret can't be re-read).
266
+ const regenerated = await api(pat, "POST", `/management/v1/projects/${projectId}/apps/${result.appId}/api_config/_generate_client_secret`, {}, orgId);
267
+ await writeAuthSecret(args.tenant, args.app, service, {
268
+ clientId: result.clientId ?? "",
269
+ clientSecret: regenerated.clientSecret,
270
+ issuer: "http://localhost:8080",
271
+ orgId,
272
+ projectId,
273
+ });
274
+ logSuccess(`Regenerated credentials for '${service}' (local secret store was reset)`);
275
+ created.push(service);
276
+ }
277
+ }
278
+ if (await ensureM2mCaller(pat, args.tenant, args.app, orgId, projectId, roles)) {
279
+ created.push("m2m");
280
+ }
281
+ if (created.length === 0) {
282
+ logInfo(`Auth config for ${args.tenant}/${args.app} already provisioned`);
283
+ }
284
+ return { orgId, projectId, created };
285
+ }
286
+ //# sourceMappingURL=auth-provision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-provision.js","sourceRoot":"","sources":["../../../../src/commands/local/auth-provision.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Local DevOutput source for `mesh dev` (design §5.2, AC C1/C3).
3
+ *
4
+ * Instead of reading a deployed Pulumi stack, synthesize the same DevOutput
5
+ * shape from repo conventions and point every service at the running
6
+ * `mesh start` platform. Zero AWS credentials, zero VPN, zero Pulumi state —
7
+ * the app's code never knows it's local:
8
+ * - Temporal → localhost:7233, namespace local-dev (seeded)
9
+ * - Postgres → the local `app` database
10
+ * - Zitadel → http://localhost:8080 (seeded org/app/users)
11
+ * - SpiceDB → localhost:50051 (preshared key)
12
+ * - AWS SDK → ministack via AWS_ENDPOINT_URL (SSM/Secrets/S3 registry)
13
+ *
14
+ * Detection convention = what `mesh create-app` templates emit: immediate
15
+ * subdirectories of the app root whose package.json has a `dev` script
16
+ * (api/, worker/, web/, …); a single-package app root with its own `dev`
17
+ * script becomes one service.
18
+ */
19
+ /** Matches dev.ts's DevEnvVar/DevService/DevOutput shapes (kept structural —
20
+ * dev.ts owns the canonical interfaces). */
21
+ interface LocalDevEnvVar {
22
+ value: string;
23
+ }
24
+ interface LocalDevService {
25
+ src: string;
26
+ port: number;
27
+ command: string[];
28
+ env?: Record<string, LocalDevEnvVar>;
29
+ }
30
+ export interface LocalDevOutput {
31
+ platform: {
32
+ tenant: string;
33
+ env: string;
34
+ };
35
+ app?: string;
36
+ stack: string;
37
+ services: Record<string, LocalDevService>;
38
+ tunnels: Record<string, never>;
39
+ }
40
+ export declare const LOCAL_STACK_NAME = "local";
41
+ /**
42
+ * The app's namespace, exactly the name the cloud gives it in K8s AND
43
+ * Temporal ({tenant}-{env}-{app}) — the Hub resolves both from this one
44
+ * convention, so local runs are addressable with zero translation.
45
+ */
46
+ export declare function localAppNamespace(tenant: string, appName: string): string;
47
+ /** The OTLP log shipper (assets/log-shipper.mjs) each local service's
48
+ * launch pipeline pipes through — ships stdout to the stack's collector
49
+ * with the hosted k8s_* attribution. */
50
+ export declare function logShipperPath(): string;
51
+ /**
52
+ * OTel SDK bootstrap — the local analog of the OTel Operator's pod
53
+ * injection: when the service ships `@opentelemetry/auto-instrumentations-
54
+ * node` (the templates declare it), the platform injects the `--import`
55
+ * register hook + exporter env, and HTTP/fetch/gRPC spans flow to the
56
+ * stack's collector → Tempo → the Hub's Traces views. Apps without the
57
+ * package run untouched.
58
+ */
59
+ export declare function autoInstrumentationEnv(appRoot: string, src: string): Record<string, LocalDevEnvVar>;
60
+ /** Hosted-parity resource attribution for a local service — what the
61
+ * in-cluster k8sattributes processor stamps. */
62
+ export declare function otelEnv(tenant: string, appName: string, serviceName: string): Record<string, LocalDevEnvVar>;
63
+ /** Endpoints of the running `mesh start` platform, as service env. */
64
+ export declare function localPlatformEnv(tenant: string, appName: string, serviceName: string): Record<string, LocalDevEnvVar>;
65
+ /**
66
+ * Detect runnable services by template convention: immediate subdirectories
67
+ * with a package.json `dev` script; falls back to the app root itself when
68
+ * it is a single-package app.
69
+ */
70
+ export declare function detectLocalServices(appRoot: string): Record<string, {
71
+ src: string;
72
+ }>;
73
+ /** Synthesize the DevOutput `mesh dev` would otherwise read from Pulumi.
74
+ * `tenant` is the app tenant (detectLocalTenant) — it scopes the app's
75
+ * namespace ({tenant}-{env}-{app}) for Temporal, logs, and traces.
76
+ * `opts.mocks` (mesh dev --externals) appends declared mock services and injects
77
+ * their ExternalService credential prefixes into every app service. */
78
+ export declare function buildLocalDevOutput(appRoot: string, tenant: string, opts?: {
79
+ mocks?: Record<string, import("./mocks.js").LocalMockDecl>;
80
+ }): LocalDevOutput;
81
+ /**
82
+ * Whether the app is backed by a Pulumi program: its own (Pulumi.yaml or a
83
+ * Pulumi.<stack>.yaml stack config in the app dir), or a monorepo ROOT
84
+ * program above it (walk up to the repo boundary — .git/pnpm-workspace).
85
+ * Apps like apps/hub deploy via a root program and have no per-app
86
+ * Pulumi.yaml; they must NOT default into `mesh dev` local mode.
87
+ */
88
+ export declare function hasStackBacking(appRoot: string): boolean;
89
+ /**
90
+ * The app's tenant, for auth provisioning: `mesh:tenant` from the app's
91
+ * Pulumi stack config when present (templates write it), else "local".
92
+ */
93
+ export declare function detectLocalTenant(appRoot: string): string;
94
+ /** The local platform must be up before `mesh dev` can wire services to it. */
95
+ export declare function ensureLocalPlatformRunning(): Promise<void>;
96
+ export {};
97
+ //# sourceMappingURL=dev-local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-local.d.ts","sourceRoot":"","sources":["../../../../src/commands/local/dev-local.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAcH;4CAC4C;AAC5C,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AACD,UAAU,eAAe;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACtC;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAChC;AAED,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAGxC;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED;;wCAEwC;AACxC,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAcnG;AAED;gDACgD;AAChD,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAShC;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAmChC;AAaD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAYpF;AAED;;;;uEAIuE;AACvE,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,YAAY,EAAE,aAAa,CAAC,CAAA;CAAO,GACxE,cAAc,CA6GhB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAexD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASzD;AAED,+EAA+E;AAC/E,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC,CAQhE"}