@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,4 @@
1
+ node_modules
2
+ dist
3
+ *.log
4
+ .env*
@@ -0,0 +1,13 @@
1
+ FROM node:20-slim
2
+
3
+ WORKDIR /app
4
+
5
+ COPY package*.json ./
6
+ # Full install (not --omit=dev): the build needs esm-bundle, a devDependency.
7
+ # npm install (not ci) — these scaffolds ship no lockfile.
8
+ RUN npm install
9
+
10
+ COPY . .
11
+ RUN npm run build
12
+
13
+ CMD ["node", "dist/worker.js"]
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "{{name}}-worker",
3
+ "version": "0.0.1",
4
+ "private": true,
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "tsx watch src/worker.ts",
8
+ "start": "node dist/worker.js",
9
+ "build": "esm-bundle src/worker.ts --outfile dist/worker.js --workflows src/workflows.ts --external '@temporalio/*'",
10
+ "check-types": "tsc --noEmit"
11
+ },
12
+ "dependencies": {
13
+ "@mesh-tech/app-kit": "latest",
14
+ "@opentelemetry/auto-instrumentations-node": "^0.78.0",
15
+ "@temporalio/activity": "^1.11.7",
16
+ "@temporalio/worker": "^1.11.7",
17
+ "@temporalio/workflow": "^1.11.7"
18
+ },
19
+ "devDependencies": {
20
+ "@mesh-tech/esm-bundle": "latest",
21
+ "@types/node": "^20.0.0",
22
+ "tsx": "^4.0.0",
23
+ "typescript": "^5.0.0"
24
+ }
25
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * {{titleCase name}} Temporal Worker
3
+ */
4
+
5
+ import { createTemporalWorker, resolveWorkflows } from "@mesh-tech/app-kit/temporal";
6
+ import * as activities from "./activities.js";
7
+
8
+ async function run() {
9
+ const { worker, cleanup } = await createTemporalWorker({
10
+ activities,
11
+ ...await resolveWorkflows(import.meta.url),
12
+ });
13
+
14
+ try {
15
+ await worker.run();
16
+ } finally {
17
+ cleanup();
18
+ }
19
+ }
20
+
21
+ run().catch((err) => {
22
+ console.error("Worker failed to start:", err);
23
+ process.exit(1);
24
+ });
@@ -0,0 +1,14 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "NodeNext",
5
+ "moduleResolution": "NodeNext",
6
+ "outDir": "./dist",
7
+ "rootDir": "./src",
8
+ "strict": true,
9
+ "esModuleInterop": true,
10
+ "skipLibCheck": true,
11
+ "declaration": true
12
+ },
13
+ "include": ["src/**/*"]
14
+ }
@@ -1,22 +0,0 @@
1
- /**
2
- * mesh devbox — Remote development environment management
3
- *
4
- * Commands:
5
- * mesh devbox status Show devbox instance state
6
- * mesh devbox start Start the devbox EC2 instance
7
- * mesh devbox stop Stop the devbox EC2 instance
8
- * mesh devbox connect Connect to the devbox via SSM
9
- * mesh devbox connect --host Connect to the EC2 host (not devcontainer)
10
- *
11
- * The devbox instance is discovered via SSM parameter at
12
- * /mesh-platform/{tenant}/{env}/devbox, keyed by GitHub username.
13
- *
14
- * GitHub username is resolved from:
15
- * 1. --user flag
16
- * 2. GITHUB_USER env var
17
- * 3. `gh api user` (GitHub CLI)
18
- * 4. git config github.user
19
- */
20
- import { Command } from "commander";
21
- export declare function registerDevBoxCommands(program: Command): void;
22
- //# sourceMappingURL=devbox.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"devbox.d.ts","sourceRoot":"","sources":["../../../src/commands/devbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkfpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiD7D"}
@@ -1,463 +0,0 @@
1
- /**
2
- * mesh devbox — Remote development environment management
3
- *
4
- * Commands:
5
- * mesh devbox status Show devbox instance state
6
- * mesh devbox start Start the devbox EC2 instance
7
- * mesh devbox stop Stop the devbox EC2 instance
8
- * mesh devbox connect Connect to the devbox via SSM
9
- * mesh devbox connect --host Connect to the EC2 host (not devcontainer)
10
- *
11
- * The devbox instance is discovered via SSM parameter at
12
- * /mesh-platform/{tenant}/{env}/devbox, keyed by GitHub username.
13
- *
14
- * GitHub username is resolved from:
15
- * 1. --user flag
16
- * 2. GITHUB_USER env var
17
- * 3. `gh api user` (GitHub CLI)
18
- * 4. git config github.user
19
- */
20
- import { execFileSync, execSync } from "child_process";
21
- import { SSMClient, GetParameterCommand, SendCommandCommand, GetCommandInvocationCommand, } from "@aws-sdk/client-ssm";
22
- import { EC2Client, DescribeInstancesCommand, StartInstancesCommand, StopInstancesCommand, } from "@aws-sdk/client-ec2";
23
- import { logError, logInfo, logSuccess, logWarn } from "../utils/log.js";
24
- // =============================================================================
25
- // Discovery
26
- // =============================================================================
27
- /**
28
- * Resolve GitHub username from various sources.
29
- */
30
- function resolveGitHubUsername(explicit) {
31
- // 1. Explicit flag
32
- if (explicit)
33
- return explicit;
34
- // 2. Environment variable
35
- if (process.env.GITHUB_USER)
36
- return process.env.GITHUB_USER;
37
- // 3. GitHub CLI
38
- try {
39
- const result = execSync("gh api user --jq .login", {
40
- encoding: "utf-8",
41
- stdio: ["pipe", "pipe", "pipe"],
42
- }).trim();
43
- if (result)
44
- return result;
45
- }
46
- catch {
47
- // gh not installed or not authenticated
48
- }
49
- // 4. Git config
50
- try {
51
- const result = execSync("git config github.user", {
52
- encoding: "utf-8",
53
- stdio: ["pipe", "pipe", "pipe"],
54
- }).trim();
55
- if (result)
56
- return result;
57
- }
58
- catch {
59
- // Not configured
60
- }
61
- throw new Error("Could not determine GitHub username. Use one of:\n" +
62
- " --user <username>\n" +
63
- " GITHUB_USER env var\n" +
64
- " gh auth login (GitHub CLI)\n" +
65
- " git config --global github.user <username>");
66
- }
67
- /**
68
- * Look up devbox info from SSM parameter store.
69
- */
70
- async function getDevBoxInfo(tenant, env) {
71
- const ssm = new SSMClient({ region: "us-east-2" });
72
- const paramPath = `/mesh-platform/${tenant}/${env}/devbox`;
73
- try {
74
- const response = await ssm.send(new GetParameterCommand({ Name: paramPath }));
75
- if (!response.Parameter?.Value) {
76
- throw new Error("Empty parameter value");
77
- }
78
- return JSON.parse(response.Parameter.Value);
79
- }
80
- catch (error) {
81
- logError(`DevBox configuration not found at ${paramPath}`);
82
- logInfo("Make sure devbox is enabled in your platform config:\n" +
83
- " pulumi config set --path mesh:devbox.users.YOUR_USERNAME.home /Users/...\n" +
84
- " pulumi config set --path mesh:devbox.users.YOUR_USERNAME.workspace /Users/.../mesh-platform\n" +
85
- "Then deploy: mesh deploy up --yes (from tenants/mesh/platform/)");
86
- throw error;
87
- }
88
- }
89
- /**
90
- * Get the EC2 instance state.
91
- */
92
- async function getInstanceState(instanceId) {
93
- const ec2 = new EC2Client({ region: "us-east-2" });
94
- const response = await ec2.send(new DescribeInstancesCommand({
95
- InstanceIds: [instanceId],
96
- }));
97
- const instance = response.Reservations?.[0]?.Instances?.[0];
98
- if (!instance) {
99
- throw new Error(`Instance ${instanceId} not found`);
100
- }
101
- return {
102
- state: instance.State?.Name ?? "unknown",
103
- publicIp: instance.PublicIpAddress,
104
- launchTime: instance.LaunchTime,
105
- };
106
- }
107
- // =============================================================================
108
- // Commands
109
- // =============================================================================
110
- async function statusCommand(opts) {
111
- const username = resolveGitHubUsername(opts.user);
112
- logInfo(`Looking up devbox for ${username}...`);
113
- const info = await getDevBoxInfo(opts.tenant, opts.env);
114
- const userInfo = info.users[username];
115
- if (!userInfo) {
116
- logError(`No devbox configured for user "${username}"`);
117
- logInfo(`Available users: ${Object.keys(info.users).join(", ")}`);
118
- return;
119
- }
120
- const { state, launchTime } = await getInstanceState(userInfo.instanceId);
121
- console.log("");
122
- console.log(" DevBox Status");
123
- console.log(" ─────────────────────────────────");
124
- console.log(` User: ${username}`);
125
- console.log(` Instance: ${userInfo.instanceId}`);
126
- console.log(` State: ${state}`);
127
- if (launchTime) {
128
- const uptime = Math.round((Date.now() - launchTime.getTime()) / 1000 / 60);
129
- console.log(` Uptime: ${uptime} minutes`);
130
- }
131
- console.log(` Home: ${userInfo.home}`);
132
- console.log(` Workspace: ${userInfo.workspace}`);
133
- console.log(` Container: ${userInfo.containerName}`);
134
- console.log("");
135
- if (state === "running") {
136
- logSuccess("DevBox is running. Connect with: mesh devbox connect");
137
- }
138
- else if (state === "stopped") {
139
- logWarn("DevBox is stopped. Start with: mesh devbox start");
140
- }
141
- }
142
- async function startCommand(opts) {
143
- const username = resolveGitHubUsername(opts.user);
144
- logInfo(`Starting devbox for ${username}...`);
145
- const info = await getDevBoxInfo(opts.tenant, opts.env);
146
- const userInfo = info.users[username];
147
- if (!userInfo) {
148
- logError(`No devbox configured for user "${username}"`);
149
- return;
150
- }
151
- const { state } = await getInstanceState(userInfo.instanceId);
152
- if (state === "running") {
153
- logSuccess("DevBox is already running.");
154
- return;
155
- }
156
- if (state !== "stopped") {
157
- logError(`Instance is in state "${state}". Can only start from "stopped".`);
158
- return;
159
- }
160
- const ec2 = new EC2Client({ region: "us-east-2" });
161
- await ec2.send(new StartInstancesCommand({
162
- InstanceIds: [userInfo.instanceId],
163
- }));
164
- logInfo("Starting instance... waiting for SSM agent to register.");
165
- // Wait for the instance to be running and SSM agent ready
166
- let attempts = 0;
167
- const maxAttempts = 60; // 5 minutes
168
- while (attempts < maxAttempts) {
169
- await new Promise((resolve) => setTimeout(resolve, 5000));
170
- attempts++;
171
- const { state: currentState } = await getInstanceState(userInfo.instanceId);
172
- if (currentState !== "running") {
173
- process.stdout.write(".");
174
- continue;
175
- }
176
- // Check if SSM agent is registered
177
- try {
178
- execFileSync("aws", [
179
- "ssm", "describe-instance-information",
180
- "--filters", `Key=InstanceIds,Values=${userInfo.instanceId}`,
181
- "--query", "InstanceInformationList[0].PingStatus",
182
- "--output", "text",
183
- ], { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] });
184
- console.log("");
185
- logSuccess("DevBox is running and SSM agent is ready.");
186
- logInfo("Connect with: mesh devbox connect");
187
- return;
188
- }
189
- catch {
190
- process.stdout.write(".");
191
- }
192
- }
193
- console.log("");
194
- logWarn("Instance is running but SSM agent may not be ready yet. Try connecting in a moment.");
195
- }
196
- async function stopCommand(opts) {
197
- const username = resolveGitHubUsername(opts.user);
198
- logInfo(`Stopping devbox for ${username}...`);
199
- const info = await getDevBoxInfo(opts.tenant, opts.env);
200
- const userInfo = info.users[username];
201
- if (!userInfo) {
202
- logError(`No devbox configured for user "${username}"`);
203
- return;
204
- }
205
- const { state } = await getInstanceState(userInfo.instanceId);
206
- if (state === "stopped") {
207
- logSuccess("DevBox is already stopped.");
208
- return;
209
- }
210
- if (state !== "running") {
211
- logError(`Instance is in state "${state}". Can only stop from "running".`);
212
- return;
213
- }
214
- const ec2 = new EC2Client({ region: "us-east-2" });
215
- await ec2.send(new StopInstancesCommand({
216
- InstanceIds: [userInfo.instanceId],
217
- }));
218
- logSuccess("DevBox is stopping. EBS volume is preserved.");
219
- }
220
- async function connectCommand(opts) {
221
- const username = resolveGitHubUsername(opts.user);
222
- const info = await getDevBoxInfo(opts.tenant, opts.env);
223
- const userInfo = info.users[username];
224
- if (!userInfo) {
225
- logError(`No devbox configured for user "${username}"`);
226
- return;
227
- }
228
- const { state } = await getInstanceState(userInfo.instanceId);
229
- if (state !== "running") {
230
- logError(`DevBox is ${state}. Start it first: mesh devbox start`);
231
- return;
232
- }
233
- if (opts.mosh) {
234
- // Connect via Mosh over Tailscale (resilient to flaky connections)
235
- // Mosh uses SSH to bootstrap mosh-server, then switches to UDP.
236
- // Tailscale SSH server on the devbox handles auth — regular ssh works,
237
- // no keys needed. We just need the Tailscale hostname for DNS resolution.
238
- const hostname = userInfo.tailscaleHostname ?? `devbox-${username}`;
239
- const remoteCmd = opts.host
240
- ? `/bin/bash -l`
241
- : `/usr/local/bin/devbox-shell`;
242
- logInfo(`Connecting via mosh to ${hostname}...`);
243
- try {
244
- execFileSync("mosh", [
245
- "--server=/usr/local/bin/mosh-server",
246
- `ec2-user@${hostname}`,
247
- "--", remoteCmd,
248
- ], { stdio: "inherit" });
249
- }
250
- catch (err) {
251
- if (err.status !== 0)
252
- process.exit(err.status ?? 1);
253
- }
254
- }
255
- else if (opts.host) {
256
- // Connect to the EC2 host directly via SSM
257
- logInfo(`Connecting to EC2 host ${userInfo.instanceId}...`);
258
- try {
259
- execFileSync("aws", [
260
- "ssm", "start-session",
261
- "--target", userInfo.instanceId,
262
- "--region", "us-east-2",
263
- ], { stdio: "inherit" });
264
- }
265
- catch (err) {
266
- if (err.status !== 0)
267
- process.exit(err.status ?? 1);
268
- }
269
- }
270
- else {
271
- // Connect directly into the devcontainer via SSM
272
- logInfo(`Connecting to devcontainer on ${userInfo.instanceId}...`);
273
- try {
274
- execFileSync("aws", [
275
- "ssm", "start-session",
276
- "--target", userInfo.instanceId,
277
- "--region", "us-east-2",
278
- "--document-name", "AWS-StartInteractiveCommand",
279
- "--parameters", JSON.stringify({
280
- command: [
281
- `sudo -u ec2-user /usr/local/bin/devbox-shell`,
282
- ],
283
- }),
284
- ], { stdio: "inherit" });
285
- }
286
- catch (err) {
287
- if (err.status !== 0)
288
- process.exit(err.status ?? 1);
289
- }
290
- }
291
- }
292
- /**
293
- * Setup command — forward local GitHub auth and clone repo on the devbox.
294
- */
295
- async function setupCommand(opts) {
296
- const username = resolveGitHubUsername(opts.user);
297
- const info = await getDevBoxInfo(opts.tenant, opts.env);
298
- const userInfo = info.users[username];
299
- if (!userInfo) {
300
- logError(`No devbox configured for user "${username}"`);
301
- return;
302
- }
303
- const { state } = await getInstanceState(userInfo.instanceId);
304
- if (state !== "running") {
305
- logError(`DevBox is ${state}. Start it first: mesh devbox start`);
306
- return;
307
- }
308
- // Get local GitHub auth token
309
- logInfo("Reading local GitHub auth token...");
310
- let ghToken;
311
- try {
312
- ghToken = execSync("gh auth token", { encoding: "utf-8" }).trim();
313
- }
314
- catch {
315
- logError("Could not get GitHub token. Run: gh auth login");
316
- return;
317
- }
318
- if (!ghToken) {
319
- logError("Empty GitHub token. Run: gh auth login");
320
- return;
321
- }
322
- logInfo("Forwarding GitHub auth to devbox...");
323
- const ssm = new SSMClient({ region: "us-east-2" });
324
- // NOTE: The GH token is passed via SSM RunShellScript, which means it appears
325
- // in the CloudTrail audit log for this API call. This is acceptable because:
326
- // 1. The token is short-lived (GitHub PAT or `gh auth` session token)
327
- // 2. CloudTrail access is restricted to platform admins
328
- // 3. The alternative (SSH key forwarding) requires SSM port-forward + SSH setup
329
- // If this becomes a concern, switch to writing the token to a Secrets Manager
330
- // secret and reading it from the instance.
331
- const script = [
332
- `export HOME="${userInfo.home}"`,
333
- // Auth with GitHub
334
- `echo '${ghToken}' | sudo -u ec2-user -H env HOME="${userInfo.home}" gh auth login --with-token`,
335
- `sudo -u ec2-user -H env HOME="${userInfo.home}" gh auth setup-git`,
336
- `echo "GitHub auth configured."`,
337
- // Clone repo if not already present
338
- `if [ ! -d "${userInfo.workspace}/.git" ] && [ ! -f "${userInfo.workspace}/.git" ]; then`,
339
- ` echo "Cloning repository..."`,
340
- ` sudo -u ec2-user -H env HOME="${userInfo.home}" git clone https://github.com/mesh-tech/mesh-platform.git "${userInfo.workspace}"`,
341
- ` cd "${userInfo.workspace}"`,
342
- ` sudo -u ec2-user git fetch origin devcontainer feature/remote-devbox`,
343
- ` sudo -u ec2-user git checkout devcontainer`,
344
- ` sudo -u ec2-user git worktree add .worktrees/remote-devbox feature/remote-devbox`,
345
- ` echo "Repository cloned and worktrees set up."`,
346
- `else`,
347
- ` echo "Repository already exists at ${userInfo.workspace}"`,
348
- `fi`,
349
- ].join("\n");
350
- try {
351
- const sendResult = await ssm.send(new SendCommandCommand({
352
- InstanceIds: [userInfo.instanceId],
353
- DocumentName: "AWS-RunShellScript",
354
- Parameters: { commands: [script] },
355
- TimeoutSeconds: 300,
356
- }));
357
- const commandId = sendResult.Command?.CommandId;
358
- if (!commandId) {
359
- logError("Failed to send setup command");
360
- return;
361
- }
362
- logInfo("Running setup on devbox (this may take a minute for initial clone)...");
363
- // Poll for completion
364
- let status = "InProgress";
365
- while (status === "InProgress" || status === "Pending") {
366
- await new Promise((r) => setTimeout(r, 3000));
367
- const result = await ssm.send(new GetCommandInvocationCommand({
368
- CommandId: commandId,
369
- InstanceId: userInfo.instanceId,
370
- }));
371
- status = result.Status ?? "Failed";
372
- if (status === "Success") {
373
- const output = result.StandardOutputContent?.trim();
374
- if (output) {
375
- for (const line of output.split("\n")) {
376
- logInfo(line);
377
- }
378
- }
379
- logSuccess("Setup complete. Starting devcontainer...");
380
- // Drop into interactive session: start devcontainer + shell
381
- try {
382
- execFileSync("aws", [
383
- "ssm", "start-session",
384
- "--target", userInfo.instanceId,
385
- "--region", "us-east-2",
386
- "--document-name", "AWS-StartInteractiveCommand",
387
- "--parameters", JSON.stringify({
388
- command: [
389
- `sudo -u ec2-user bash -c 'export HOME="${userInfo.home}" && devbox-start && devbox-shell'`,
390
- ],
391
- }),
392
- ], { stdio: "inherit" });
393
- }
394
- catch (err) {
395
- if (err.status !== 0)
396
- process.exit(err.status ?? 1);
397
- }
398
- return;
399
- }
400
- else if (status !== "InProgress" && status !== "Pending") {
401
- logError(`Setup failed with status: ${status}`);
402
- const errOutput = result.StandardErrorContent?.trim();
403
- if (errOutput) {
404
- for (const line of errOutput.split("\n")) {
405
- logError(line);
406
- }
407
- }
408
- }
409
- }
410
- }
411
- catch (error) {
412
- logError(`Setup failed: ${error.message}`);
413
- }
414
- }
415
- // =============================================================================
416
- // Registration
417
- // =============================================================================
418
- export function registerDevBoxCommands(program) {
419
- const devbox = program
420
- .command("devbox")
421
- .description("Remote development environment (EC2 + devcontainer)")
422
- .option("--tenant <tenant>", "Tenant name", "mesh")
423
- .option("--env <env>", "Environment", "dev")
424
- .option("--user <username>", "GitHub username (auto-detected if not set)");
425
- devbox
426
- .command("status")
427
- .description("Show devbox instance state")
428
- .action(async () => {
429
- const opts = devbox.opts();
430
- await statusCommand(opts);
431
- });
432
- devbox
433
- .command("start")
434
- .description("Start the devbox EC2 instance")
435
- .action(async () => {
436
- const opts = devbox.opts();
437
- await startCommand(opts);
438
- });
439
- devbox
440
- .command("stop")
441
- .description("Stop the devbox EC2 instance (preserves EBS)")
442
- .action(async () => {
443
- const opts = devbox.opts();
444
- await stopCommand(opts);
445
- });
446
- devbox
447
- .command("connect")
448
- .description("Connect to the devbox via SSM")
449
- .option("--host", "Connect to the EC2 host instead of the devcontainer")
450
- .option("--mosh", "Use mosh over Tailscale (resilient to flaky connections)")
451
- .action(async (cmdOpts) => {
452
- const opts = devbox.opts();
453
- await connectCommand({ ...opts, ...cmdOpts });
454
- });
455
- devbox
456
- .command("setup")
457
- .description("Forward GitHub auth and clone repo on the devbox")
458
- .action(async () => {
459
- const opts = devbox.opts();
460
- await setupCommand(opts);
461
- });
462
- }
463
- //# sourceMappingURL=devbox.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"devbox.js","sourceRoot":"","sources":["../../../src/commands/devbox.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- FROM node:22-alpine AS builder
2
- WORKDIR /app
3
- COPY package.json ./
4
- RUN npm install
5
- COPY tsconfig.json ./
6
- COPY src ./src
7
- RUN npm run build
8
-
9
- FROM node:22-alpine
10
- WORKDIR /app
11
- COPY package.json ./
12
- RUN npm install --omit=dev
13
- COPY --from=builder /app/dist ./dist
14
- ENV NODE_ENV=production PORT=3001
15
- EXPOSE 3001
16
- CMD ["node", "dist/index.js"]
@@ -1,21 +0,0 @@
1
- {
2
- "name": "{{name}}-api",
3
- "type": "module",
4
- "scripts": {
5
- "dev": "tsx watch src/index.ts",
6
- "build": "tsc",
7
- "start": "node dist/index.js"
8
- },
9
- "dependencies": {
10
- "@aws-sdk/client-secrets-manager": "^3.964.0",
11
- "@hono/node-server": "^1.13.7",
12
- "hono": "^4.6.14",
13
- "pg": "^8.16.3"
14
- },
15
- "devDependencies": {
16
- "@types/node": "^22.10.5",
17
- "@types/pg": "^8.16.0",
18
- "tsx": "^4.19.2",
19
- "typescript": "^5.7.2"
20
- }
21
- }