@miosa/cli 1.3.4 → 2.0.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 (489) hide show
  1. package/README.md +20 -835
  2. package/bin/miosa.js +75 -0
  3. package/lib/archive.js +26 -0
  4. package/lib/checksums.js +29 -0
  5. package/lib/platforms.js +31 -0
  6. package/lib/resolve.js +47 -0
  7. package/package.json +25 -41
  8. package/scripts/postinstall.js +68 -0
  9. package/CHANGELOG.md +0 -110
  10. package/dist/action-authority.d.ts +0 -106
  11. package/dist/action-authority.d.ts.map +0 -1
  12. package/dist/action-authority.js +0 -116
  13. package/dist/action-authority.js.map +0 -1
  14. package/dist/app-advisor.d.ts +0 -80
  15. package/dist/app-advisor.d.ts.map +0 -1
  16. package/dist/app-advisor.js +0 -486
  17. package/dist/app-advisor.js.map +0 -1
  18. package/dist/app-contract.d.ts +0 -92
  19. package/dist/app-contract.d.ts.map +0 -1
  20. package/dist/app-contract.js +0 -218
  21. package/dist/app-contract.js.map +0 -1
  22. package/dist/app-document.d.ts +0 -23
  23. package/dist/app-document.d.ts.map +0 -1
  24. package/dist/app-document.js +0 -180
  25. package/dist/app-document.js.map +0 -1
  26. package/dist/app-manifest.d.ts +0 -140
  27. package/dist/app-manifest.d.ts.map +0 -1
  28. package/dist/app-manifest.js +0 -377
  29. package/dist/app-manifest.js.map +0 -1
  30. package/dist/app-operation.d.ts +0 -23
  31. package/dist/app-operation.d.ts.map +0 -1
  32. package/dist/app-operation.js +0 -49
  33. package/dist/app-operation.js.map +0 -1
  34. package/dist/app-release.d.ts +0 -132
  35. package/dist/app-release.d.ts.map +0 -1
  36. package/dist/app-release.js +0 -294
  37. package/dist/app-release.js.map +0 -1
  38. package/dist/bin/miosa.d.ts +0 -3
  39. package/dist/bin/miosa.d.ts.map +0 -1
  40. package/dist/bin/miosa.js +0 -288
  41. package/dist/bin/miosa.js.map +0 -1
  42. package/dist/cli-env.d.ts +0 -12
  43. package/dist/cli-env.d.ts.map +0 -1
  44. package/dist/cli-env.js +0 -34
  45. package/dist/cli-env.js.map +0 -1
  46. package/dist/client.d.ts +0 -155
  47. package/dist/client.d.ts.map +0 -1
  48. package/dist/client.js +0 -865
  49. package/dist/client.js.map +0 -1
  50. package/dist/commands/actions.d.ts +0 -3
  51. package/dist/commands/actions.d.ts.map +0 -1
  52. package/dist/commands/actions.js +0 -222
  53. package/dist/commands/actions.js.map +0 -1
  54. package/dist/commands/agent-runtime-profiles.d.ts +0 -3
  55. package/dist/commands/agent-runtime-profiles.d.ts.map +0 -1
  56. package/dist/commands/agent-runtime-profiles.js +0 -198
  57. package/dist/commands/agent-runtime-profiles.js.map +0 -1
  58. package/dist/commands/agent.d.ts +0 -18
  59. package/dist/commands/agent.d.ts.map +0 -1
  60. package/dist/commands/agent.js +0 -737
  61. package/dist/commands/agent.js.map +0 -1
  62. package/dist/commands/alerts.d.ts +0 -3
  63. package/dist/commands/alerts.d.ts.map +0 -1
  64. package/dist/commands/alerts.js +0 -41
  65. package/dist/commands/alerts.js.map +0 -1
  66. package/dist/commands/api-keys.d.ts +0 -3
  67. package/dist/commands/api-keys.d.ts.map +0 -1
  68. package/dist/commands/api-keys.js +0 -160
  69. package/dist/commands/api-keys.js.map +0 -1
  70. package/dist/commands/api-resource.d.ts +0 -20
  71. package/dist/commands/api-resource.d.ts.map +0 -1
  72. package/dist/commands/api-resource.js +0 -120
  73. package/dist/commands/api-resource.js.map +0 -1
  74. package/dist/commands/app.d.ts +0 -38
  75. package/dist/commands/app.d.ts.map +0 -1
  76. package/dist/commands/app.js +0 -1182
  77. package/dist/commands/app.js.map +0 -1
  78. package/dist/commands/apps.d.ts +0 -3
  79. package/dist/commands/apps.d.ts.map +0 -1
  80. package/dist/commands/apps.js +0 -218
  81. package/dist/commands/apps.js.map +0 -1
  82. package/dist/commands/audit.d.ts +0 -3
  83. package/dist/commands/audit.d.ts.map +0 -1
  84. package/dist/commands/audit.js +0 -25
  85. package/dist/commands/audit.js.map +0 -1
  86. package/dist/commands/auth.d.ts +0 -3
  87. package/dist/commands/auth.d.ts.map +0 -1
  88. package/dist/commands/auth.js +0 -282
  89. package/dist/commands/auth.js.map +0 -1
  90. package/dist/commands/backups.d.ts +0 -3
  91. package/dist/commands/backups.d.ts.map +0 -1
  92. package/dist/commands/backups.js +0 -23
  93. package/dist/commands/backups.js.map +0 -1
  94. package/dist/commands/billing.d.ts +0 -3
  95. package/dist/commands/billing.d.ts.map +0 -1
  96. package/dist/commands/billing.js +0 -208
  97. package/dist/commands/billing.js.map +0 -1
  98. package/dist/commands/builds.d.ts +0 -3
  99. package/dist/commands/builds.d.ts.map +0 -1
  100. package/dist/commands/builds.js +0 -198
  101. package/dist/commands/builds.js.map +0 -1
  102. package/dist/commands/capabilities.d.ts +0 -3
  103. package/dist/commands/capabilities.d.ts.map +0 -1
  104. package/dist/commands/capabilities.js +0 -1002
  105. package/dist/commands/capabilities.js.map +0 -1
  106. package/dist/commands/checkpoints.d.ts +0 -3
  107. package/dist/commands/checkpoints.d.ts.map +0 -1
  108. package/dist/commands/checkpoints.js +0 -193
  109. package/dist/commands/checkpoints.js.map +0 -1
  110. package/dist/commands/cleanup.d.ts +0 -3
  111. package/dist/commands/cleanup.d.ts.map +0 -1
  112. package/dist/commands/cleanup.js +0 -65
  113. package/dist/commands/cleanup.js.map +0 -1
  114. package/dist/commands/cloud.d.ts +0 -3
  115. package/dist/commands/cloud.d.ts.map +0 -1
  116. package/dist/commands/cloud.js +0 -192
  117. package/dist/commands/cloud.js.map +0 -1
  118. package/dist/commands/command-overview.d.ts +0 -13
  119. package/dist/commands/command-overview.d.ts.map +0 -1
  120. package/dist/commands/command-overview.js +0 -50
  121. package/dist/commands/command-overview.js.map +0 -1
  122. package/dist/commands/completion.d.ts +0 -3
  123. package/dist/commands/completion.d.ts.map +0 -1
  124. package/dist/commands/completion.js +0 -183
  125. package/dist/commands/completion.js.map +0 -1
  126. package/dist/commands/computers.d.ts +0 -3
  127. package/dist/commands/computers.d.ts.map +0 -1
  128. package/dist/commands/computers.js +0 -706
  129. package/dist/commands/computers.js.map +0 -1
  130. package/dist/commands/config.d.ts +0 -3
  131. package/dist/commands/config.d.ts.map +0 -1
  132. package/dist/commands/config.js +0 -114
  133. package/dist/commands/config.js.map +0 -1
  134. package/dist/commands/connect.d.ts +0 -6
  135. package/dist/commands/connect.d.ts.map +0 -1
  136. package/dist/commands/connect.js +0 -127
  137. package/dist/commands/connect.js.map +0 -1
  138. package/dist/commands/connectors.d.ts +0 -3
  139. package/dist/commands/connectors.d.ts.map +0 -1
  140. package/dist/commands/connectors.js +0 -172
  141. package/dist/commands/connectors.js.map +0 -1
  142. package/dist/commands/containers.d.ts +0 -3
  143. package/dist/commands/containers.d.ts.map +0 -1
  144. package/dist/commands/containers.js +0 -20
  145. package/dist/commands/containers.js.map +0 -1
  146. package/dist/commands/context.d.ts +0 -3
  147. package/dist/commands/context.d.ts.map +0 -1
  148. package/dist/commands/context.js +0 -233
  149. package/dist/commands/context.js.map +0 -1
  150. package/dist/commands/cp.d.ts +0 -3
  151. package/dist/commands/cp.d.ts.map +0 -1
  152. package/dist/commands/cp.js +0 -319
  153. package/dist/commands/cp.js.map +0 -1
  154. package/dist/commands/cron.d.ts +0 -3
  155. package/dist/commands/cron.d.ts.map +0 -1
  156. package/dist/commands/cron.js +0 -65
  157. package/dist/commands/cron.js.map +0 -1
  158. package/dist/commands/dashboard.d.ts +0 -13
  159. package/dist/commands/dashboard.d.ts.map +0 -1
  160. package/dist/commands/dashboard.js +0 -54
  161. package/dist/commands/dashboard.js.map +0 -1
  162. package/dist/commands/databases.d.ts +0 -3
  163. package/dist/commands/databases.d.ts.map +0 -1
  164. package/dist/commands/databases.js +0 -714
  165. package/dist/commands/databases.js.map +0 -1
  166. package/dist/commands/db.d.ts +0 -3
  167. package/dist/commands/db.d.ts.map +0 -1
  168. package/dist/commands/db.js +0 -385
  169. package/dist/commands/db.js.map +0 -1
  170. package/dist/commands/deploy.d.ts +0 -3
  171. package/dist/commands/deploy.d.ts.map +0 -1
  172. package/dist/commands/deploy.js +0 -1234
  173. package/dist/commands/deploy.js.map +0 -1
  174. package/dist/commands/desktop.d.ts +0 -3
  175. package/dist/commands/desktop.d.ts.map +0 -1
  176. package/dist/commands/desktop.js +0 -277
  177. package/dist/commands/desktop.js.map +0 -1
  178. package/dist/commands/dev.d.ts +0 -3
  179. package/dist/commands/dev.d.ts.map +0 -1
  180. package/dist/commands/dev.js +0 -245
  181. package/dist/commands/dev.js.map +0 -1
  182. package/dist/commands/devices.d.ts +0 -3
  183. package/dist/commands/devices.d.ts.map +0 -1
  184. package/dist/commands/devices.js +0 -279
  185. package/dist/commands/devices.js.map +0 -1
  186. package/dist/commands/docker-deploy.d.ts +0 -3
  187. package/dist/commands/docker-deploy.d.ts.map +0 -1
  188. package/dist/commands/docker-deploy.js +0 -659
  189. package/dist/commands/docker-deploy.js.map +0 -1
  190. package/dist/commands/doctor.d.ts +0 -69
  191. package/dist/commands/doctor.d.ts.map +0 -1
  192. package/dist/commands/doctor.js +0 -596
  193. package/dist/commands/doctor.js.map +0 -1
  194. package/dist/commands/domains.d.ts +0 -3
  195. package/dist/commands/domains.d.ts.map +0 -1
  196. package/dist/commands/domains.js +0 -307
  197. package/dist/commands/domains.js.map +0 -1
  198. package/dist/commands/enterprise-util.d.ts +0 -39
  199. package/dist/commands/enterprise-util.d.ts.map +0 -1
  200. package/dist/commands/enterprise-util.js +0 -217
  201. package/dist/commands/enterprise-util.js.map +0 -1
  202. package/dist/commands/env-input.d.ts +0 -26
  203. package/dist/commands/env-input.d.ts.map +0 -1
  204. package/dist/commands/env-input.js +0 -68
  205. package/dist/commands/env-input.js.map +0 -1
  206. package/dist/commands/env.d.ts +0 -3
  207. package/dist/commands/env.d.ts.map +0 -1
  208. package/dist/commands/env.js +0 -189
  209. package/dist/commands/env.js.map +0 -1
  210. package/dist/commands/exec.d.ts +0 -3
  211. package/dist/commands/exec.d.ts.map +0 -1
  212. package/dist/commands/exec.js +0 -110
  213. package/dist/commands/exec.js.map +0 -1
  214. package/dist/commands/forge.d.ts +0 -3
  215. package/dist/commands/forge.d.ts.map +0 -1
  216. package/dist/commands/forge.js +0 -254
  217. package/dist/commands/forge.js.map +0 -1
  218. package/dist/commands/functions.d.ts +0 -3
  219. package/dist/commands/functions.d.ts.map +0 -1
  220. package/dist/commands/functions.js +0 -47
  221. package/dist/commands/functions.js.map +0 -1
  222. package/dist/commands/gha-runners.d.ts +0 -3
  223. package/dist/commands/gha-runners.d.ts.map +0 -1
  224. package/dist/commands/gha-runners.js +0 -33
  225. package/dist/commands/gha-runners.js.map +0 -1
  226. package/dist/commands/groups.d.ts +0 -3
  227. package/dist/commands/groups.d.ts.map +0 -1
  228. package/dist/commands/groups.js +0 -38
  229. package/dist/commands/groups.js.map +0 -1
  230. package/dist/commands/host.d.ts +0 -3
  231. package/dist/commands/host.d.ts.map +0 -1
  232. package/dist/commands/host.js +0 -74
  233. package/dist/commands/host.js.map +0 -1
  234. package/dist/commands/hosts.d.ts +0 -7
  235. package/dist/commands/hosts.d.ts.map +0 -1
  236. package/dist/commands/hosts.js +0 -91
  237. package/dist/commands/hosts.js.map +0 -1
  238. package/dist/commands/link.d.ts +0 -8
  239. package/dist/commands/link.d.ts.map +0 -1
  240. package/dist/commands/link.js +0 -124
  241. package/dist/commands/link.js.map +0 -1
  242. package/dist/commands/login.d.ts +0 -10
  243. package/dist/commands/login.d.ts.map +0 -1
  244. package/dist/commands/login.js +0 -263
  245. package/dist/commands/login.js.map +0 -1
  246. package/dist/commands/logout.d.ts +0 -3
  247. package/dist/commands/logout.d.ts.map +0 -1
  248. package/dist/commands/logout.js +0 -43
  249. package/dist/commands/logout.js.map +0 -1
  250. package/dist/commands/logs.d.ts +0 -3
  251. package/dist/commands/logs.d.ts.map +0 -1
  252. package/dist/commands/logs.js +0 -401
  253. package/dist/commands/logs.js.map +0 -1
  254. package/dist/commands/ls.d.ts +0 -3
  255. package/dist/commands/ls.d.ts.map +0 -1
  256. package/dist/commands/ls.js +0 -121
  257. package/dist/commands/ls.js.map +0 -1
  258. package/dist/commands/mcp.d.ts +0 -46
  259. package/dist/commands/mcp.d.ts.map +0 -1
  260. package/dist/commands/mcp.js +0 -3413
  261. package/dist/commands/mcp.js.map +0 -1
  262. package/dist/commands/menu.d.ts +0 -29
  263. package/dist/commands/menu.d.ts.map +0 -1
  264. package/dist/commands/menu.js +0 -147
  265. package/dist/commands/menu.js.map +0 -1
  266. package/dist/commands/meshes.d.ts +0 -3
  267. package/dist/commands/meshes.d.ts.map +0 -1
  268. package/dist/commands/meshes.js +0 -27
  269. package/dist/commands/meshes.js.map +0 -1
  270. package/dist/commands/network-policy.d.ts +0 -3
  271. package/dist/commands/network-policy.d.ts.map +0 -1
  272. package/dist/commands/network-policy.js +0 -155
  273. package/dist/commands/network-policy.js.map +0 -1
  274. package/dist/commands/new.d.ts +0 -3
  275. package/dist/commands/new.d.ts.map +0 -1
  276. package/dist/commands/new.js +0 -296
  277. package/dist/commands/new.js.map +0 -1
  278. package/dist/commands/opencomputers.d.ts +0 -10
  279. package/dist/commands/opencomputers.d.ts.map +0 -1
  280. package/dist/commands/opencomputers.js +0 -25
  281. package/dist/commands/opencomputers.js.map +0 -1
  282. package/dist/commands/operating-contract.d.ts +0 -3
  283. package/dist/commands/operating-contract.d.ts.map +0 -1
  284. package/dist/commands/operating-contract.js +0 -651
  285. package/dist/commands/operating-contract.js.map +0 -1
  286. package/dist/commands/project.d.ts +0 -4
  287. package/dist/commands/project.d.ts.map +0 -1
  288. package/dist/commands/project.js +0 -25
  289. package/dist/commands/project.js.map +0 -1
  290. package/dist/commands/pull.d.ts +0 -14
  291. package/dist/commands/pull.d.ts.map +0 -1
  292. package/dist/commands/pull.js +0 -156
  293. package/dist/commands/pull.js.map +0 -1
  294. package/dist/commands/regions.d.ts +0 -3
  295. package/dist/commands/regions.d.ts.map +0 -1
  296. package/dist/commands/regions.js +0 -103
  297. package/dist/commands/regions.js.map +0 -1
  298. package/dist/commands/releases.d.ts +0 -3
  299. package/dist/commands/releases.d.ts.map +0 -1
  300. package/dist/commands/releases.js +0 -365
  301. package/dist/commands/releases.js.map +0 -1
  302. package/dist/commands/rm.d.ts +0 -3
  303. package/dist/commands/rm.d.ts.map +0 -1
  304. package/dist/commands/rm.js +0 -42
  305. package/dist/commands/rm.js.map +0 -1
  306. package/dist/commands/rollback.d.ts +0 -3
  307. package/dist/commands/rollback.d.ts.map +0 -1
  308. package/dist/commands/rollback.js +0 -62
  309. package/dist/commands/rollback.js.map +0 -1
  310. package/dist/commands/run-groups.d.ts +0 -3
  311. package/dist/commands/run-groups.d.ts.map +0 -1
  312. package/dist/commands/run-groups.js +0 -364
  313. package/dist/commands/run-groups.js.map +0 -1
  314. package/dist/commands/run.d.ts +0 -3
  315. package/dist/commands/run.d.ts.map +0 -1
  316. package/dist/commands/run.js +0 -130
  317. package/dist/commands/run.js.map +0 -1
  318. package/dist/commands/runs.d.ts +0 -3
  319. package/dist/commands/runs.d.ts.map +0 -1
  320. package/dist/commands/runs.js +0 -365
  321. package/dist/commands/runs.js.map +0 -1
  322. package/dist/commands/runtime-env.d.ts +0 -3
  323. package/dist/commands/runtime-env.d.ts.map +0 -1
  324. package/dist/commands/runtime-env.js +0 -114
  325. package/dist/commands/runtime-env.js.map +0 -1
  326. package/dist/commands/sandbox-delete-guard.d.ts +0 -4
  327. package/dist/commands/sandbox-delete-guard.d.ts.map +0 -1
  328. package/dist/commands/sandbox-delete-guard.js +0 -32
  329. package/dist/commands/sandbox-delete-guard.js.map +0 -1
  330. package/dist/commands/sandbox-dev.d.ts +0 -20
  331. package/dist/commands/sandbox-dev.d.ts.map +0 -1
  332. package/dist/commands/sandbox-dev.js +0 -583
  333. package/dist/commands/sandbox-dev.js.map +0 -1
  334. package/dist/commands/sandbox.d.ts +0 -36
  335. package/dist/commands/sandbox.d.ts.map +0 -1
  336. package/dist/commands/sandbox.js +0 -3796
  337. package/dist/commands/sandbox.js.map +0 -1
  338. package/dist/commands/scale.d.ts +0 -3
  339. package/dist/commands/scale.d.ts.map +0 -1
  340. package/dist/commands/scale.js +0 -61
  341. package/dist/commands/scale.js.map +0 -1
  342. package/dist/commands/schedules.d.ts +0 -3
  343. package/dist/commands/schedules.d.ts.map +0 -1
  344. package/dist/commands/schedules.js +0 -37
  345. package/dist/commands/schedules.js.map +0 -1
  346. package/dist/commands/secrets.d.ts +0 -3
  347. package/dist/commands/secrets.d.ts.map +0 -1
  348. package/dist/commands/secrets.js +0 -200
  349. package/dist/commands/secrets.js.map +0 -1
  350. package/dist/commands/services.d.ts +0 -3
  351. package/dist/commands/services.d.ts.map +0 -1
  352. package/dist/commands/services.js +0 -70
  353. package/dist/commands/services.js.map +0 -1
  354. package/dist/commands/shell.d.ts +0 -16
  355. package/dist/commands/shell.d.ts.map +0 -1
  356. package/dist/commands/shell.js +0 -555
  357. package/dist/commands/shell.js.map +0 -1
  358. package/dist/commands/snapshot.d.ts +0 -10
  359. package/dist/commands/snapshot.d.ts.map +0 -1
  360. package/dist/commands/snapshot.js +0 -181
  361. package/dist/commands/snapshot.js.map +0 -1
  362. package/dist/commands/ssh.d.ts +0 -3
  363. package/dist/commands/ssh.d.ts.map +0 -1
  364. package/dist/commands/ssh.js +0 -93
  365. package/dist/commands/ssh.js.map +0 -1
  366. package/dist/commands/status.d.ts +0 -3
  367. package/dist/commands/status.d.ts.map +0 -1
  368. package/dist/commands/status.js +0 -302
  369. package/dist/commands/status.js.map +0 -1
  370. package/dist/commands/storage.d.ts +0 -3
  371. package/dist/commands/storage.d.ts.map +0 -1
  372. package/dist/commands/storage.js +0 -456
  373. package/dist/commands/storage.js.map +0 -1
  374. package/dist/commands/teams.d.ts +0 -3
  375. package/dist/commands/teams.d.ts.map +0 -1
  376. package/dist/commands/teams.js +0 -169
  377. package/dist/commands/teams.js.map +0 -1
  378. package/dist/commands/templates.d.ts +0 -3
  379. package/dist/commands/templates.d.ts.map +0 -1
  380. package/dist/commands/templates.js +0 -690
  381. package/dist/commands/templates.js.map +0 -1
  382. package/dist/commands/tenant.d.ts +0 -3
  383. package/dist/commands/tenant.d.ts.map +0 -1
  384. package/dist/commands/tenant.js +0 -95
  385. package/dist/commands/tenant.js.map +0 -1
  386. package/dist/commands/tunnel.d.ts +0 -3
  387. package/dist/commands/tunnel.d.ts.map +0 -1
  388. package/dist/commands/tunnel.js +0 -418
  389. package/dist/commands/tunnel.js.map +0 -1
  390. package/dist/commands/up.d.ts +0 -14
  391. package/dist/commands/up.d.ts.map +0 -1
  392. package/dist/commands/up.js +0 -720
  393. package/dist/commands/up.js.map +0 -1
  394. package/dist/commands/update.d.ts +0 -3
  395. package/dist/commands/update.d.ts.map +0 -1
  396. package/dist/commands/update.js +0 -166
  397. package/dist/commands/update.js.map +0 -1
  398. package/dist/commands/util.d.ts +0 -25
  399. package/dist/commands/util.d.ts.map +0 -1
  400. package/dist/commands/util.js +0 -199
  401. package/dist/commands/util.js.map +0 -1
  402. package/dist/commands/volumes.d.ts +0 -3
  403. package/dist/commands/volumes.d.ts.map +0 -1
  404. package/dist/commands/volumes.js +0 -196
  405. package/dist/commands/volumes.js.map +0 -1
  406. package/dist/commands/watch.d.ts +0 -6
  407. package/dist/commands/watch.d.ts.map +0 -1
  408. package/dist/commands/watch.js +0 -414
  409. package/dist/commands/watch.js.map +0 -1
  410. package/dist/commands/webhooks.d.ts +0 -3
  411. package/dist/commands/webhooks.d.ts.map +0 -1
  412. package/dist/commands/webhooks.js +0 -23
  413. package/dist/commands/webhooks.js.map +0 -1
  414. package/dist/commands/whoami.d.ts +0 -3
  415. package/dist/commands/whoami.d.ts.map +0 -1
  416. package/dist/commands/whoami.js +0 -156
  417. package/dist/commands/whoami.js.map +0 -1
  418. package/dist/commands/workspaces.d.ts +0 -3
  419. package/dist/commands/workspaces.d.ts.map +0 -1
  420. package/dist/commands/workspaces.js +0 -147
  421. package/dist/commands/workspaces.js.map +0 -1
  422. package/dist/config.d.ts +0 -54
  423. package/dist/config.d.ts.map +0 -1
  424. package/dist/config.js +0 -275
  425. package/dist/config.js.map +0 -1
  426. package/dist/errors.d.ts +0 -30
  427. package/dist/errors.d.ts.map +0 -1
  428. package/dist/errors.js +0 -92
  429. package/dist/errors.js.map +0 -1
  430. package/dist/framework-detector.d.ts +0 -22
  431. package/dist/framework-detector.d.ts.map +0 -1
  432. package/dist/framework-detector.js +0 -373
  433. package/dist/framework-detector.js.map +0 -1
  434. package/dist/generated/action-capabilities.d.ts +0 -826
  435. package/dist/generated/action-capabilities.d.ts.map +0 -1
  436. package/dist/generated/action-capabilities.js +0 -1035
  437. package/dist/generated/action-capabilities.js.map +0 -1
  438. package/dist/net-diagnosis.d.ts +0 -87
  439. package/dist/net-diagnosis.d.ts.map +0 -1
  440. package/dist/net-diagnosis.js +0 -408
  441. package/dist/net-diagnosis.js.map +0 -1
  442. package/dist/pty/raw-mode.d.ts +0 -7
  443. package/dist/pty/raw-mode.d.ts.map +0 -1
  444. package/dist/pty/raw-mode.js +0 -22
  445. package/dist/pty/raw-mode.js.map +0 -1
  446. package/dist/pty/ws-pty-client.d.ts +0 -13
  447. package/dist/pty/ws-pty-client.d.ts.map +0 -1
  448. package/dist/pty/ws-pty-client.js +0 -73
  449. package/dist/pty/ws-pty-client.js.map +0 -1
  450. package/dist/tui/dashboard.d.ts +0 -35
  451. package/dist/tui/dashboard.d.ts.map +0 -1
  452. package/dist/tui/dashboard.js +0 -191
  453. package/dist/tui/dashboard.js.map +0 -1
  454. package/dist/tui/logs.d.ts +0 -26
  455. package/dist/tui/logs.d.ts.map +0 -1
  456. package/dist/tui/logs.js +0 -276
  457. package/dist/tui/logs.js.map +0 -1
  458. package/dist/types.d.ts +0 -362
  459. package/dist/types.d.ts.map +0 -1
  460. package/dist/types.js +0 -16
  461. package/dist/types.js.map +0 -1
  462. package/dist/ui/picker.d.ts +0 -41
  463. package/dist/ui/picker.d.ts.map +0 -1
  464. package/dist/ui/picker.js +0 -77
  465. package/dist/ui/picker.js.map +0 -1
  466. package/dist/ui/progress.d.ts +0 -10
  467. package/dist/ui/progress.d.ts.map +0 -1
  468. package/dist/ui/progress.js +0 -36
  469. package/dist/ui/progress.js.map +0 -1
  470. package/dist/ui/render.d.ts +0 -91
  471. package/dist/ui/render.d.ts.map +0 -1
  472. package/dist/ui/render.js +0 -138
  473. package/dist/ui/render.js.map +0 -1
  474. package/dist/ui/spinner.d.ts +0 -4
  475. package/dist/ui/spinner.d.ts.map +0 -1
  476. package/dist/ui/spinner.js +0 -7
  477. package/dist/ui/spinner.js.map +0 -1
  478. package/dist/ui/table.d.ts +0 -8
  479. package/dist/ui/table.d.ts.map +0 -1
  480. package/dist/ui/table.js +0 -46
  481. package/dist/ui/table.js.map +0 -1
  482. package/dist/update-check.d.ts +0 -13
  483. package/dist/update-check.d.ts.map +0 -1
  484. package/dist/update-check.js +0 -94
  485. package/dist/update-check.js.map +0 -1
  486. package/dist/version.d.ts +0 -3
  487. package/dist/version.d.ts.map +0 -1
  488. package/dist/version.js +0 -5
  489. package/dist/version.js.map +0 -1
@@ -1,583 +0,0 @@
1
- import fs from "node:fs";
2
- import os from "node:os";
3
- import path from "node:path";
4
- import { createHash } from "node:crypto";
5
- import { spawnSync } from "node:child_process";
6
- import chalk from "chalk";
7
- import { loadProjectManifest } from "../app-manifest.js";
8
- import { loadConfig } from "../config.js";
9
- import { MiosaClient } from "../client.js";
10
- import { ApiResponseError, AuthError, MiosaError, NetworkError, ServerError, UserError, } from "../errors.js";
11
- import { handleError, isJsonMode } from "./util.js";
12
- export function registerSandboxDevCommands(sandbox) {
13
- const dev = sandbox
14
- .command("dev")
15
- .description("Run the canonical project manifest in a persistent development sandbox");
16
- dev
17
- .command("up")
18
- .description("Create or reuse, sync, install, start, and prove development services")
19
- .option("--dir <path>", "Project directory containing miosa.app.yml", ".")
20
- .option("--sandbox <id>", "Reuse this sandbox and update local resumability state")
21
- .option("--json", "Output stable machine-readable JSON")
22
- .action(async (opts) => {
23
- try {
24
- const result = await devUp(opts.dir, opts.sandbox, (step) => {
25
- if (!isJsonMode(opts))
26
- console.error(chalk.dim(`-> ${step}`));
27
- });
28
- if (isJsonMode(opts)) {
29
- console.log(JSON.stringify(result, null, 2));
30
- return;
31
- }
32
- console.log();
33
- console.log(`Sandbox ${result.sandbox_id}${result.reused ? " (reused)" : ""}`);
34
- for (const [name, service] of Object.entries(result.services)) {
35
- console.log(`${name} ${chalk.cyan(service.preview_url)}`);
36
- }
37
- console.log();
38
- }
39
- catch (error) {
40
- handleError(withDevRecovery(error, path.resolve(opts.dir)));
41
- }
42
- });
43
- }
44
- export async function runFullSandboxDoctor(projectDirInput, sandboxOverride) {
45
- const projectDir = path.resolve(projectDirInput);
46
- const loaded = loadProjectManifest(projectDir);
47
- const manifest = loaded.manifest;
48
- const saved = readDevState(projectDir);
49
- if (saved && !sandboxOverride && saved.project !== manifest.name) {
50
- throw new UserError(`Saved sandbox state belongs to project ${saved.project}, but the loaded manifest is ${manifest.name}.`, `Pass --sandbox <id> explicitly or run miosa sandbox dev up --dir ${quote(projectDir)} to create state for this project.`);
51
- }
52
- const sandboxId = sandboxOverride ?? saved?.sandbox_id;
53
- if (!sandboxId) {
54
- throw new UserError("No sandbox ID was provided and no resumability state exists.", `Run miosa sandbox dev up --dir ${quote(projectDir)} first, or pass a sandbox ID.`);
55
- }
56
- const api = new MiosaClient(loadConfig());
57
- const checks = [];
58
- let sandbox = {};
59
- try {
60
- sandbox = unwrapRecord(await api.apiGet(`/api/v1/sandboxes/${encodeURIComponent(sandboxId)}`));
61
- const state = String(sandbox["state"] ?? sandbox["status"] ?? "unknown");
62
- checks.push({
63
- id: "api_state",
64
- ok: ["running", "ready"].includes(state.toLowerCase()),
65
- code: ["running", "ready"].includes(state.toLowerCase())
66
- ? "API_STATE_OK"
67
- : "API_STATE_NOT_RUNNING",
68
- message: `Sandbox API state is ${state}.`,
69
- remediation: `Run miosa sandbox resume ${sandboxId} --json, then retry.`,
70
- details: { state },
71
- });
72
- }
73
- catch (error) {
74
- checks.push(failedCheck("api_state", "API_STATE_UNAVAILABLE", error, `Verify with miosa sandbox show ${sandboxId} --json.`));
75
- }
76
- try {
77
- const result = await execRaw(api, sandboxId, "printf 'MIOSA_EXEC_OK\\n'", "/", 10);
78
- const ok = Number(result["exit_code"] ?? 0) === 0 && String(result["stdout"] ?? "").includes("MIOSA_EXEC_OK");
79
- checks.push({
80
- id: "exec_channel",
81
- ok,
82
- code: ok ? "EXEC_CHANNEL_OK" : "EXEC_CHANNEL_FAILED",
83
- message: ok ? "Sandbox exec channel responded." : "Sandbox exec channel returned an unexpected result.",
84
- remediation: `Retry miosa sandbox exec ${sandboxId} --cmd "printf MIOSA_EXEC_OK" --json.`,
85
- });
86
- }
87
- catch (error) {
88
- checks.push(failedCheck("exec_channel", "EXEC_CHANNEL_FAILED", error, `Retry miosa sandbox exec ${sandboxId} --cmd "printf MIOSA_EXEC_OK" --json.`));
89
- }
90
- const workdir = manifest.sandbox?.workdir ?? "/workspace";
91
- try {
92
- const result = await execRaw(api, sandboxId, `test -d ${quote(workdir)} && printf '%s\\n' ${quote(workdir)}`, "/", 10);
93
- const ok = Number(result["exit_code"] ?? 0) === 0;
94
- checks.push({
95
- id: "filesystem",
96
- ok,
97
- code: ok ? "FILESYSTEM_OK" : "FILESYSTEM_WORKDIR_MISSING",
98
- message: ok ? `Project workdir ${workdir} is accessible.` : `Project workdir ${workdir} is missing.`,
99
- remediation: `Resume sync with miosa sandbox dev up --dir ${quote(projectDir)} --sandbox ${sandboxId}.`,
100
- details: { workdir },
101
- });
102
- }
103
- catch (error) {
104
- checks.push(failedCheck("filesystem", "FILESYSTEM_UNAVAILABLE", error, `Resume sync with miosa sandbox dev up --dir ${quote(projectDir)} --sandbox ${sandboxId}.`));
105
- }
106
- for (const [name, service] of Object.entries(manifest.services ?? {})) {
107
- try {
108
- const row = unwrapRecord(await api.apiGet(`/api/v1/sandboxes/${encodeURIComponent(sandboxId)}/services/${encodeURIComponent(name)}`));
109
- const status = String(row["status"] ?? "unknown");
110
- const ok = status === "running";
111
- checks.push({
112
- id: `service:${name}`,
113
- ok,
114
- code: ok ? "SERVICE_RUNNING" : "SERVICE_NOT_RUNNING",
115
- message: `${name} service status is ${status}.`,
116
- remediation: `Run miosa sandbox dev up --dir ${quote(projectDir)} --sandbox ${sandboxId}.`,
117
- details: { service: name, status },
118
- });
119
- }
120
- catch (error) {
121
- checks.push(failedCheck(`service:${name}`, "SERVICE_UNAVAILABLE", error, `Run miosa sandbox dev up --dir ${quote(projectDir)} --sandbox ${sandboxId}.`));
122
- }
123
- try {
124
- const result = await execRaw(api, sandboxId, `python3 -c ${quote(`import urllib.request; r=urllib.request.urlopen('http://127.0.0.1:${service.port}${normalizeHealthPath(service.health?.path ?? "/")}', timeout=3); print(r.status)`)}`, "/", 10);
125
- const status = Number(String(result["stdout"] ?? "").trim().split(/\s+/)[0]);
126
- const ok = Number(result["exit_code"] ?? 0) === 0 && status >= 200 && status < 400;
127
- checks.push({
128
- id: `listener:${name}`,
129
- ok,
130
- code: ok ? "SERVICE_LISTENER_OK" : "SERVICE_LISTENER_FAILED",
131
- message: ok ? `${name} answered internally with HTTP ${status}.` : `${name} did not answer on port ${service.port}.`,
132
- remediation: `Inspect miosa sandbox service logs ${sandboxId} ${name} --json.`,
133
- details: { service: name, port: service.port, status: Number.isFinite(status) ? status : null },
134
- });
135
- }
136
- catch (error) {
137
- checks.push(failedCheck(`listener:${name}`, "SERVICE_LISTENER_FAILED", error, `Inspect miosa sandbox service logs ${sandboxId} ${name} --json.`));
138
- }
139
- try {
140
- const exposed = unwrapRecord(await api.apiPost(`/api/v1/sandboxes/${encodeURIComponent(sandboxId)}/expose`, {
141
- port: service.port,
142
- title: `${manifest.name} ${name} doctor`,
143
- }));
144
- const url = textField(exposed, "url") ?? textField(exposed, "preview_url");
145
- if (!url)
146
- throw new Error("Expose response did not include a URL.");
147
- const status = await probePreview(url, service.health?.path ?? "/");
148
- const ok = status >= 200 && status < 400;
149
- checks.push({
150
- id: `preview:${name}`,
151
- ok,
152
- code: ok ? "PREVIEW_ROUTE_OK" : "PREVIEW_ROUTE_FAILED",
153
- message: `Preview route answered with HTTP ${status}.`,
154
- remediation: `Recreate and inspect with miosa sandbox preview ${sandboxId} --port ${service.port} --wait --json.`,
155
- details: { service: name, port: service.port, url, status },
156
- });
157
- }
158
- catch (error) {
159
- checks.push(failedCheck(`preview:${name}`, "PREVIEW_ROUTE_FAILED", error, `Recreate and inspect with miosa sandbox preview ${sandboxId} --port ${service.port} --wait --json.`));
160
- }
161
- }
162
- const databaseId = databaseAttachmentId(sandbox);
163
- const databaseRequired = manifest.requirements?.database === true;
164
- checks.push({
165
- id: "database",
166
- ok: !databaseRequired || Boolean(databaseId),
167
- code: !databaseRequired || databaseId ? "DATABASE_ATTACHMENT_OK" : "DATABASE_ATTACHMENT_MISSING",
168
- message: databaseId
169
- ? `Managed database attachment ${databaseId} is present.`
170
- : databaseRequired
171
- ? "A managed database attachment is required but missing."
172
- : "No managed database attachment is required.",
173
- remediation: `Attach one with miosa sandbox db attach ${sandboxId} <database-id> --json.`,
174
- details: { required: databaseRequired, attached: Boolean(databaseId), database_id: databaseId },
175
- });
176
- let envNames = new Set();
177
- try {
178
- const raw = unwrapValue(await api.apiGet(`/api/v1/sandboxes/${encodeURIComponent(sandboxId)}/env`));
179
- const rows = Array.isArray(raw) ? raw : [];
180
- envNames = new Set(rows.flatMap((entry) => {
181
- if (!entry || typeof entry !== "object" || Array.isArray(entry))
182
- return [];
183
- const row = entry;
184
- const name = row["name"] ?? row["key"];
185
- return typeof name === "string" ? [name] : [];
186
- }));
187
- }
188
- catch (error) {
189
- checks.push(failedCheck("environment", "ENVIRONMENT_INSPECTION_FAILED", error, `Inspect names with miosa sandbox env list ${sandboxId} --json.`));
190
- }
191
- for (const name of manifest.requirements?.config ?? []) {
192
- const ok = envNames.has(name);
193
- checks.push({
194
- id: `config:${name}`,
195
- ok,
196
- code: ok ? "CONFIG_PRESENT" : "CONFIG_MISSING",
197
- message: ok ? `Config ${name} is present.` : `Config ${name} is missing.`,
198
- remediation: `Set ${name} with miosa sandbox env set ${sandboxId} ${name}=<value>.`,
199
- details: { name, present: ok },
200
- });
201
- }
202
- for (const name of manifest.requirements?.secrets ?? []) {
203
- const ok = envNames.has(name);
204
- checks.push({
205
- id: `secret:${name}`,
206
- ok,
207
- code: ok ? "SECRET_PRESENT" : "SECRET_MISSING",
208
- message: ok ? `Secret ${name} is present.` : `Secret ${name} is missing.`,
209
- remediation: `Set ${name} through miosa sandbox env set ${sandboxId} without logging its value.`,
210
- details: { name, present: ok },
211
- });
212
- }
213
- try {
214
- await api.apiGet(`/api/v1/sandboxes/${encodeURIComponent(sandboxId)}/snapshots`);
215
- checks.push({
216
- id: "snapshot",
217
- ok: true,
218
- code: "SNAPSHOT_CAPABLE",
219
- message: "Sandbox snapshot capability is available.",
220
- });
221
- }
222
- catch (error) {
223
- checks.push(failedCheck("snapshot", "SNAPSHOT_UNAVAILABLE", error, `Verify with miosa sandbox snapshots list ${sandboxId} --json.`));
224
- }
225
- const failureCodes = checks.filter((check) => !check.ok).map((check) => check.code);
226
- return {
227
- ok: failureCodes.length === 0,
228
- sandbox_id: sandboxId,
229
- manifest: loaded.path,
230
- failure_codes: failureCodes,
231
- checks,
232
- };
233
- }
234
- async function devUp(projectDirInput, sandboxOverride, step) {
235
- const projectDir = path.resolve(projectDirInput);
236
- const loaded = loadProjectManifest(projectDir);
237
- const manifest = loaded.manifest;
238
- const api = new MiosaClient(loadConfig());
239
- const saved = readDevState(projectDir);
240
- const explicitlySelected = Boolean(sandboxOverride);
241
- let sandboxId = sandboxOverride ??
242
- (saved && saved.project === manifest.name ? saved.sandbox_id : null);
243
- let reused = Boolean(sandboxId);
244
- if (sandboxId) {
245
- step(`Validating sandbox ${sandboxId}`);
246
- try {
247
- const row = unwrapRecord(await api.apiGet(`/api/v1/sandboxes/${encodeURIComponent(sandboxId)}`));
248
- if (isTerminalSandbox(row)) {
249
- if (explicitlySelected) {
250
- throw new UserError(`Explicitly selected sandbox ${sandboxId} is in a terminal state.`);
251
- }
252
- sandboxId = null;
253
- reused = false;
254
- }
255
- }
256
- catch (error) {
257
- if (!isNotFound(error))
258
- throw error;
259
- if (explicitlySelected) {
260
- throw new UserError(`Explicitly selected sandbox ${sandboxId} was not found.`);
261
- }
262
- sandboxId = null;
263
- reused = false;
264
- }
265
- }
266
- if (!sandboxId) {
267
- step("Creating persistent sandbox");
268
- const created = unwrapRecord(await api.apiPost("/api/v1/sandboxes", {
269
- name: manifest.sandbox?.name ?? `${manifest.name}-dev`,
270
- template_id: manifest.sandbox?.template ?? manifest.template ?? "miosa-sandbox",
271
- persistent: true,
272
- }));
273
- sandboxId = textField(created, "id");
274
- if (!sandboxId)
275
- throw new UserError("Sandbox create response did not include an id.");
276
- writeDevState(projectDir, {
277
- schema_version: 1,
278
- project: manifest.name,
279
- sandbox_id: sandboxId,
280
- updated_at: new Date().toISOString(),
281
- });
282
- }
283
- else if (sandboxOverride || saved?.project !== manifest.name) {
284
- writeDevState(projectDir, {
285
- schema_version: 1,
286
- project: manifest.name,
287
- sandbox_id: sandboxId,
288
- updated_at: new Date().toISOString(),
289
- });
290
- }
291
- step("Waiting for sandbox API state");
292
- await waitForRunning(api, sandboxId, 120);
293
- step("Overlay-syncing project files without deleting runtime paths");
294
- await syncProject(api, sandboxId, projectDir, manifest);
295
- if (manifest.dependencies?.install !== false && manifest.dependencies?.install) {
296
- step(`Installing dependencies with ${manifest.dependencies.install}`);
297
- await installDependencies(api, sandboxId, projectDir, manifest);
298
- }
299
- const services = {};
300
- for (const [name, service] of Object.entries(manifest.services ?? {})) {
301
- const port = service.port;
302
- const healthPath = service.health?.path ?? "/";
303
- const cwd = remoteCwd(manifest, service.cwd);
304
- step(`Starting service ${name}`);
305
- let exists = false;
306
- try {
307
- await api.apiGet(`/api/v1/sandboxes/${encodeURIComponent(sandboxId)}/services/${encodeURIComponent(name)}`);
308
- exists = true;
309
- }
310
- catch (error) {
311
- if (!isNotFound(error))
312
- throw error;
313
- }
314
- if (exists) {
315
- await api.apiDelete(`/api/v1/sandboxes/${encodeURIComponent(sandboxId)}/services/${encodeURIComponent(name)}`);
316
- await api.apiPost(`/api/v1/sandboxes/${encodeURIComponent(sandboxId)}/services`, {
317
- name,
318
- command: service.command,
319
- cwd,
320
- });
321
- }
322
- else {
323
- await api.apiPost(`/api/v1/sandboxes/${encodeURIComponent(sandboxId)}/services`, {
324
- name,
325
- command: service.command,
326
- cwd,
327
- });
328
- }
329
- step(`Waiting for ${name} health`);
330
- const internal = await waitForInternalHealth(api, sandboxId, port, healthPath, service.health?.timeout ?? 120);
331
- const exposed = unwrapRecord(await api.apiPost(`/api/v1/sandboxes/${encodeURIComponent(sandboxId)}/expose`, {
332
- port,
333
- title: `${manifest.name} ${name}`,
334
- }));
335
- const previewUrl = textField(exposed, "url") ?? textField(exposed, "preview_url");
336
- if (!previewUrl)
337
- throw new UserError(`Preview route for ${name} did not return a URL.`);
338
- const edgeStatus = await probePreview(previewUrl, healthPath);
339
- if (edgeStatus < 200 || edgeStatus >= 400) {
340
- throw new UserError(`Preview health failed for ${name} with HTTP ${edgeStatus}.`, `Inspect with miosa sandbox doctor ${sandboxId} --full --json.`);
341
- }
342
- services[name] = {
343
- healthy: true,
344
- port,
345
- health_path: healthPath,
346
- preview_url: previewUrl,
347
- internal_status: internal,
348
- edge_status: edgeStatus,
349
- };
350
- }
351
- return {
352
- ok: true,
353
- sandbox_id: sandboxId,
354
- reused,
355
- manifest: loaded.path,
356
- services,
357
- };
358
- }
359
- async function syncProject(api, sandboxId, projectDir, manifest) {
360
- const archive = path.join(os.tmpdir(), `miosa-dev-${process.pid}-${Date.now()}.tgz`);
361
- const excludes = manifest.sync?.exclude ?? [];
362
- const args = excludes.flatMap((entry) => ["--exclude", entry]);
363
- const tar = spawnSync("tar", [...args, "-czf", archive, "-C", projectDir, "."], { stdio: "pipe", env: { ...process.env, COPYFILE_DISABLE: "1" } });
364
- if (tar.status !== 0) {
365
- throw new UserError(`Could not archive project: ${tar.stderr.toString().trim() || "tar failed"}`);
366
- }
367
- try {
368
- await api.apiPost(`/api/v1/sandboxes/${encodeURIComponent(sandboxId)}/files`, {
369
- path: "/tmp/miosa-dev-sync.tgz",
370
- content: fs.readFileSync(archive).toString("base64"),
371
- });
372
- const workdir = manifest.sandbox?.workdir ?? "/workspace";
373
- await exec(api, sandboxId, `mkdir -p ${quote(workdir)} && tar -xzf /tmp/miosa-dev-sync.tgz -C ${quote(workdir)} && rm -f /tmp/miosa-dev-sync.tgz`, "/");
374
- }
375
- finally {
376
- fs.rmSync(archive, { force: true });
377
- }
378
- }
379
- async function installDependencies(api, sandboxId, projectDir, manifest) {
380
- const fingerprint = createHash("sha256");
381
- const command = manifest.dependencies?.install;
382
- const lockfiles = new Set([
383
- "package-lock.json",
384
- "pnpm-lock.yaml",
385
- "yarn.lock",
386
- "bun.lock",
387
- "requirements.lock",
388
- "package.json",
389
- ...pipLockfiles(command),
390
- ]);
391
- for (const filename of lockfiles) {
392
- const file = path.join(projectDir, filename);
393
- if (fs.existsSync(file))
394
- fingerprint.update(filename).update(fs.readFileSync(file));
395
- }
396
- const hash = fingerprint.digest("hex").slice(0, 20);
397
- const marker = `.miosa-runtime/install-${hash}.done`;
398
- if (!command)
399
- return;
400
- await exec(api, sandboxId, `mkdir -p .miosa-runtime && test -f ${quote(marker)} || (${command} && touch ${quote(marker)})`, manifest.sandbox?.workdir ?? "/workspace", 900);
401
- }
402
- function pipLockfiles(command) {
403
- if (typeof command !== "string")
404
- return [];
405
- const filenames = [];
406
- for (const match of command.matchAll(/(?:^|\s)(?:-r\s+|--requirement(?:=|\s+))([^\s;&|`<>]+\.lock)(?=\s|$)/g)) {
407
- const filename = match[1];
408
- if (!filename)
409
- continue;
410
- if (path.isAbsolute(filename) || filename.split(/[\\/]/).includes(".."))
411
- continue;
412
- filenames.push(filename);
413
- }
414
- return filenames;
415
- }
416
- async function waitForRunning(api, sandboxId, timeout) {
417
- const deadline = Date.now() + timeout * 1000;
418
- while (Date.now() < deadline) {
419
- const row = unwrapRecord(await api.apiGet(`/api/v1/sandboxes/${encodeURIComponent(sandboxId)}`));
420
- const state = String(row["state"] ?? row["status"] ?? "").toLowerCase();
421
- if (state === "running" || state === "ready")
422
- return;
423
- if (["failed", "destroyed", "error"].includes(state)) {
424
- throw new UserError(`Sandbox ${sandboxId} entered ${state} state.`);
425
- }
426
- await sleep(1_000);
427
- }
428
- throw new UserError(`Sandbox ${sandboxId} did not become running within ${timeout}s.`);
429
- }
430
- async function waitForInternalHealth(api, sandboxId, port, healthPath, timeout) {
431
- const deadline = Date.now() + timeout * 1000;
432
- let last = "not listening";
433
- while (Date.now() < deadline) {
434
- const result = await execRaw(api, sandboxId, `python3 -c ${quote(`import urllib.request; r=urllib.request.urlopen('http://127.0.0.1:${port}${normalizeHealthPath(healthPath)}', timeout=3); print(r.status)`)}`, "/", 10);
435
- const status = Number(String(result["stdout"] ?? "").trim().split(/\s+/)[0]);
436
- if (Number(result["exit_code"] ?? 0) === 0 && status >= 200 && status < 400)
437
- return status;
438
- last = String(result["stderr"] ?? result["stdout"] ?? last).trim();
439
- await sleep(1_000);
440
- }
441
- throw new UserError(`Service on port ${port} did not become healthy within ${timeout}s.`, last || "Inspect service logs and listener state with miosa sandbox doctor --full.");
442
- }
443
- async function probePreview(baseUrl, healthPath) {
444
- const url = new URL(baseUrl);
445
- url.pathname = `${url.pathname.replace(/\/$/, "")}${normalizeHealthPath(healthPath)}`;
446
- const response = await fetch(url, {
447
- method: "GET",
448
- redirect: "manual",
449
- signal: AbortSignal.timeout(10_000),
450
- });
451
- return response.status;
452
- }
453
- async function exec(api, sandboxId, command, cwd, timeout) {
454
- const result = await execRaw(api, sandboxId, command, cwd, timeout);
455
- const exitCode = Number(result["exit_code"] ?? 0);
456
- if (exitCode !== 0) {
457
- throw new UserError(`Sandbox command failed with exit code ${exitCode}: ${command}`, String(result["stderr"] ?? result["stdout"] ?? ""));
458
- }
459
- return result;
460
- }
461
- async function execRaw(api, sandboxId, command, cwd, timeout) {
462
- const body = { command: `cd ${quote(cwd)} && ${command}`, cwd, dir: cwd };
463
- if (timeout != null)
464
- body["timeout"] = timeout;
465
- return unwrapRecord(await api.apiPost(`/api/v1/sandboxes/${encodeURIComponent(sandboxId)}/exec`, body));
466
- }
467
- function readDevState(projectDir) {
468
- try {
469
- return JSON.parse(fs.readFileSync(statePath(projectDir), "utf8"));
470
- }
471
- catch {
472
- return null;
473
- }
474
- }
475
- function writeDevState(projectDir, state) {
476
- const target = statePath(projectDir);
477
- fs.mkdirSync(path.dirname(target), { recursive: true });
478
- const temporary = `${target}.${process.pid}.tmp`;
479
- fs.writeFileSync(temporary, `${JSON.stringify(state, null, 2)}\n`, { mode: 0o600 });
480
- fs.renameSync(temporary, target);
481
- }
482
- function statePath(projectDir) {
483
- return path.join(projectDir, ".miosa", "sandbox.json");
484
- }
485
- function remoteCwd(manifest, serviceCwd) {
486
- const root = manifest.sandbox?.workdir ?? "/workspace";
487
- if (!serviceCwd || serviceCwd === ".")
488
- return root;
489
- if (serviceCwd.startsWith("/"))
490
- return serviceCwd;
491
- return path.posix.join(root, serviceCwd);
492
- }
493
- function unwrapRecord(value) {
494
- const root = value && typeof value === "object" && !Array.isArray(value)
495
- ? value
496
- : {};
497
- const data = root["data"];
498
- return data && typeof data === "object" && !Array.isArray(data)
499
- ? data
500
- : root;
501
- }
502
- function unwrapValue(value) {
503
- if (!value || typeof value !== "object" || Array.isArray(value))
504
- return value;
505
- const root = value;
506
- return "data" in root ? root["data"] : root;
507
- }
508
- function failedCheck(id, code, error, remediation) {
509
- return {
510
- id,
511
- ok: false,
512
- code,
513
- message: error instanceof Error ? error.message : String(error),
514
- remediation,
515
- };
516
- }
517
- function databaseAttachmentId(sandbox) {
518
- for (const key of ["database_id", "attached_database_id"]) {
519
- const value = sandbox[key];
520
- if (typeof value === "string" && value.length > 0)
521
- return value;
522
- }
523
- const database = sandbox["database"];
524
- if (database && typeof database === "object" && !Array.isArray(database)) {
525
- return textField(database, "id");
526
- }
527
- const databases = sandbox["databases"];
528
- if (Array.isArray(databases) && databases.length > 0) {
529
- const first = databases[0];
530
- if (typeof first === "string")
531
- return first;
532
- if (first && typeof first === "object" && !Array.isArray(first)) {
533
- return textField(first, "id");
534
- }
535
- }
536
- return null;
537
- }
538
- function textField(row, key) {
539
- const value = row[key];
540
- return typeof value === "string" && value.length > 0 ? value : null;
541
- }
542
- function isTerminalSandbox(row) {
543
- const state = String(row["state"] ?? row["status"] ?? "").toLowerCase();
544
- return ["destroyed", "deleted", "failed", "error"].includes(state);
545
- }
546
- function isNotFound(error) {
547
- return error instanceof MiosaError && /not found/i.test(error.message);
548
- }
549
- export function withDevRecovery(error, projectDir) {
550
- if (!(error instanceof MiosaError))
551
- return error;
552
- const saved = readDevState(projectDir);
553
- if (!saved)
554
- return error;
555
- const recovery = `Resume with miosa sandbox dev up --dir ${quote(projectDir)} --sandbox ${quote(saved.sandbox_id)}, or inspect with miosa sandbox doctor ${quote(saved.sandbox_id)} --full --json.`;
556
- const hint = error.hint ? `${error.hint} ${recovery}` : recovery;
557
- if (error instanceof ApiResponseError) {
558
- return new ApiResponseError(error.code, error.message, error.exitCode, error.retryable, hint, error.details, error.requestId);
559
- }
560
- if (error instanceof AuthError) {
561
- return new AuthError(error.message, hint, error.details, error.requestId);
562
- }
563
- if (error instanceof NetworkError) {
564
- return new NetworkError(error.message, hint);
565
- }
566
- if (error instanceof UserError) {
567
- return new UserError(error.message, hint);
568
- }
569
- if (error instanceof ServerError) {
570
- return new ServerError(error.message, error.statusCode, error.body, error.requestId, hint);
571
- }
572
- return new MiosaError(error.message, error.exitCode, hint, error.details, error.requestId);
573
- }
574
- function quote(value) {
575
- return `'${value.replace(/'/g, `'"'"'`)}'`;
576
- }
577
- function normalizeHealthPath(value) {
578
- return value.startsWith("/") ? value : `/${value}`;
579
- }
580
- function sleep(ms) {
581
- return new Promise((resolve) => setTimeout(resolve, ms));
582
- }
583
- //# sourceMappingURL=sandbox-dev.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sandbox-dev.js","sourceRoot":"","sources":["../../src/commands/sandbox-dev.ts"],"names":[],"mappings":"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"}