@miosa/cli 1.3.4 → 2.1.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 +88 -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 +26 -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,196 +0,0 @@
1
- import chalk from "chalk";
2
- import { loadConfig } from "../config.js";
3
- import { MiosaClient } from "../client.js";
4
- import { renderTable } from "../ui/table.js";
5
- import { spin } from "../ui/spinner.js";
6
- import { handleError } from "./util.js";
7
- function unwrapVolumes(raw) {
8
- if (Array.isArray(raw))
9
- return raw;
10
- return raw.data ?? raw.volumes ?? [];
11
- }
12
- function unwrapVolume(raw) {
13
- if ("data" in raw && raw.data)
14
- return raw.data;
15
- if ("volume" in raw && raw.volume)
16
- return raw.volume;
17
- return raw;
18
- }
19
- function fmtState(volume) {
20
- const state = volume.state ?? "available";
21
- if (state === "available" || state === "attached")
22
- return chalk.green(state);
23
- if (state === "creating" || state === "detaching")
24
- return chalk.yellow(state);
25
- if (state === "error" || state === "failed")
26
- return chalk.red(state);
27
- return state;
28
- }
29
- export function register(program) {
30
- const volumes = program
31
- .command("volumes")
32
- .description("Manage persistent storage volumes");
33
- volumes
34
- .command("list")
35
- .description("List volumes")
36
- .option("--json", "Output raw JSON")
37
- .action(async (opts) => {
38
- try {
39
- const config = loadConfig();
40
- const client = new MiosaClient(config);
41
- const spinner = spin("Fetching volumes...");
42
- const rows = unwrapVolumes(await client.apiGet("/api/v1/volumes"));
43
- spinner.stop();
44
- if (opts.json) {
45
- console.log(JSON.stringify(rows, null, 2));
46
- return;
47
- }
48
- renderTable(rows, [
49
- { header: "ID", key: (v) => v.id.slice(0, 12), width: 14 },
50
- { header: "NAME", key: "name", width: 24 },
51
- {
52
- header: "SIZE",
53
- key: (v) => (v.size_gb === undefined ? chalk.dim("unknown") : `${v.size_gb}GB`),
54
- width: 10,
55
- },
56
- { header: "REGION", key: (v) => v.region ?? chalk.dim("default"), width: 14 },
57
- { header: "STATE", key: fmtState, width: 12 },
58
- {
59
- header: "ATTACHED",
60
- key: (v) => v.attached_to ?? chalk.dim("none"),
61
- width: 18,
62
- },
63
- ]);
64
- }
65
- catch (err) {
66
- handleError(err);
67
- }
68
- });
69
- volumes
70
- .command("create <name>")
71
- .description("Create a persistent volume")
72
- .option("--size <gb>", "Volume size in GB", "10")
73
- .option("--region <region>", "Region ID")
74
- .option("--json", "Output raw JSON")
75
- .action(async (name, opts) => {
76
- try {
77
- const config = loadConfig();
78
- const client = new MiosaClient(config);
79
- const spinner = spin(`Creating volume ${name}...`);
80
- const volume = unwrapVolume(await client.apiPost("/api/v1/volumes", {
81
- name,
82
- size_gb: Number.parseInt(opts.size, 10),
83
- region: opts.region,
84
- }));
85
- spinner.succeed(`Created volume ${volume.name}`);
86
- if (opts.json)
87
- console.log(JSON.stringify(volume, null, 2));
88
- }
89
- catch (err) {
90
- handleError(err);
91
- }
92
- });
93
- volumes
94
- .command("show <id>")
95
- .description("Show volume details")
96
- .option("--json", "Output raw JSON")
97
- .action(async (id, opts) => {
98
- try {
99
- const config = loadConfig();
100
- const client = new MiosaClient(config);
101
- const volume = unwrapVolume(await client.apiGet(`/api/v1/volumes/${encodeURIComponent(id)}`));
102
- if (opts.json) {
103
- console.log(JSON.stringify(volume, null, 2));
104
- return;
105
- }
106
- console.log();
107
- console.log(` ${chalk.bold("ID")} ${volume.id}`);
108
- console.log(` ${chalk.bold("Name")} ${volume.name}`);
109
- console.log(` ${chalk.bold("Size")} ${volume.size_gb ?? "unknown"}GB`);
110
- console.log(` ${chalk.bold("Region")} ${volume.region ?? "default"}`);
111
- console.log(` ${chalk.bold("State")} ${volume.state ?? "available"}`);
112
- console.log(` ${chalk.bold("Attached")} ${volume.attached_to ?? "none"}`);
113
- console.log();
114
- }
115
- catch (err) {
116
- handleError(err);
117
- }
118
- });
119
- volumes
120
- .command("attach <id>")
121
- .description("Attach a volume to a machine")
122
- .requiredOption("--machine <machine>", "Machine or host ID")
123
- .option("--mount <path>", "Mount path", "/mnt/data")
124
- .option("--json", "Output raw JSON")
125
- .action(async (id, opts) => {
126
- try {
127
- const config = loadConfig();
128
- const client = new MiosaClient(config);
129
- const spinner = spin("Attaching volume...");
130
- const attachment = await client.apiPost(`/api/v1/computers/${encodeURIComponent(opts.machine)}/volumes`, { volume_id: id, mount_path: opts.mount });
131
- spinner.succeed(`Attached volume ${id}`);
132
- if (opts.json) {
133
- console.log(JSON.stringify(attachment, null, 2));
134
- return;
135
- }
136
- console.log(` ${chalk.bold("Attachment")} ${attachment.id}`);
137
- }
138
- catch (err) {
139
- handleError(err);
140
- }
141
- });
142
- volumes
143
- .command("detach <attachment-id>")
144
- .description("Detach a volume attachment")
145
- .requiredOption("--machine <machine>", "Machine or host ID")
146
- .option("--json", "Output raw JSON")
147
- .action(async (attachmentId, opts) => {
148
- try {
149
- const config = loadConfig();
150
- const client = new MiosaClient(config);
151
- const spinner = spin("Detaching volume...");
152
- const result = await client.apiDelete(`/api/v1/computers/${encodeURIComponent(opts.machine)}/volumes/${encodeURIComponent(attachmentId)}`);
153
- spinner.succeed("Volume detached");
154
- if (opts.json)
155
- console.log(JSON.stringify(result ?? { ok: true }, null, 2));
156
- }
157
- catch (err) {
158
- handleError(err);
159
- }
160
- });
161
- volumes
162
- .command("destroy <id>")
163
- .description("Destroy a persistent volume")
164
- .option("-f, --force", "Skip confirmation prompt")
165
- .option("--json", "Output raw JSON")
166
- .action(async (id, opts) => {
167
- try {
168
- if (!opts.force) {
169
- const { default: inquirer } = await import("inquirer");
170
- const { ok } = await inquirer.prompt([
171
- {
172
- type: "confirm",
173
- name: "ok",
174
- message: chalk.red(`Destroy volume ${id}? This is irreversible.`),
175
- default: false,
176
- },
177
- ]);
178
- if (!ok) {
179
- console.log(chalk.dim(" Cancelled."));
180
- process.exit(0);
181
- }
182
- }
183
- const config = loadConfig();
184
- const client = new MiosaClient(config);
185
- const spinner = spin("Destroying volume...");
186
- const result = await client.apiDelete(`/api/v1/volumes/${encodeURIComponent(id)}`);
187
- spinner.succeed("Volume destroyed");
188
- if (opts.json)
189
- console.log(JSON.stringify(result ?? { ok: true }, null, 2));
190
- }
191
- catch (err) {
192
- handleError(err);
193
- }
194
- });
195
- }
196
- //# sourceMappingURL=volumes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"volumes.js","sourceRoot":"","sources":["../../src/commands/volumes.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { Command } from "commander";
2
- import { MiosaClient } from "../client.js";
3
- import type { ComputerId } from "../types.js";
4
- export declare function resolveComputerId(client: MiosaClient, idOrName: string): Promise<ComputerId>;
5
- export declare function register(program: Command): void;
6
- //# sourceMappingURL=watch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,OAAO,EAAE,WAAW,EAAY,MAAM,cAAc,CAAC;AAIrD,OAAO,KAAK,EAQV,UAAU,EACX,MAAM,aAAa,CAAC;AAwSrB,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,CAwBrB;AAkGD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4G/C"}
@@ -1,414 +0,0 @@
1
- import chalk from "chalk";
2
- import { mkdirSync, writeFileSync } from "node:fs";
3
- import { join } from "node:path";
4
- import { loadConfig } from "../config.js";
5
- import { MiosaClient, parseSse } from "../client.js";
6
- import { NetworkError, UserError } from "../errors.js";
7
- import { handleError } from "./util.js";
8
- import { spin } from "../ui/spinner.js";
9
- import { toComputerId } from "../types.js";
10
- // ── Constants ─────────────────────────────────────────────────────────────────
11
- const RECONNECT_DELAY_MS = 2_000;
12
- const MAX_RECONNECT_ATTEMPTS = 10;
13
- const DIVIDER = chalk.dim("─".repeat(42));
14
- // ── SSE → ComputerEvent parser ────────────────────────────────────────────────
15
- function parseComputerEvent(eventType, raw) {
16
- let parsed;
17
- try {
18
- parsed = JSON.parse(raw);
19
- }
20
- catch {
21
- return { type: "unknown", raw };
22
- }
23
- const d = parsed;
24
- const type = eventType || (typeof d["type"] === "string" ? d["type"] : "unknown");
25
- switch (type) {
26
- case "desktop_action": {
27
- return {
28
- type: "desktop_action",
29
- kind: (d["kind"] ??
30
- d["action"] ??
31
- "click"),
32
- x: typeof d["x"] === "number" ? d["x"] : undefined,
33
- y: typeof d["y"] === "number" ? d["y"] : undefined,
34
- button: d["button"] ?? undefined,
35
- text: typeof d["text"] === "string" ? d["text"] : undefined,
36
- key: typeof d["key"] === "string" ? d["key"] : undefined,
37
- dx: typeof d["dx"] === "number" ? d["dx"] : undefined,
38
- dy: typeof d["dy"] === "number" ? d["dy"] : undefined,
39
- timestamp: typeof d["timestamp"] === "string"
40
- ? d["timestamp"]
41
- : new Date().toISOString(),
42
- };
43
- }
44
- case "exec": {
45
- const hasExitCode = typeof d["exit_code"] === "number";
46
- return {
47
- type: "exec",
48
- command: typeof d["command"] === "string" ? d["command"] : raw,
49
- exit_code: hasExitCode ? d["exit_code"] : undefined,
50
- duration_ms: typeof d["duration_ms"] === "number" ? d["duration_ms"] : undefined,
51
- phase: hasExitCode ? "done" : "start",
52
- timestamp: typeof d["timestamp"] === "string"
53
- ? d["timestamp"]
54
- : new Date().toISOString(),
55
- };
56
- }
57
- case "file": {
58
- return {
59
- type: "file",
60
- operation: (d["operation"] ?? "write"),
61
- path: typeof d["path"] === "string" ? d["path"] : "",
62
- size: typeof d["size"] === "number" ? d["size"] : undefined,
63
- timestamp: typeof d["timestamp"] === "string"
64
- ? d["timestamp"]
65
- : new Date().toISOString(),
66
- };
67
- }
68
- case "screenshot": {
69
- return {
70
- type: "screenshot",
71
- width: typeof d["width"] === "number" ? d["width"] : 0,
72
- height: typeof d["height"] === "number" ? d["height"] : 0,
73
- size: typeof d["size"] === "number" ? d["size"] : 0,
74
- data: typeof d["data"] === "string" ? d["data"] : undefined,
75
- timestamp: typeof d["timestamp"] === "string"
76
- ? d["timestamp"]
77
- : new Date().toISOString(),
78
- };
79
- }
80
- case "error": {
81
- return {
82
- type: "error",
83
- message: typeof d["message"] === "string" ? d["message"] : "Unknown error",
84
- code: typeof d["code"] === "string" ? d["code"] : undefined,
85
- timestamp: typeof d["timestamp"] === "string"
86
- ? d["timestamp"]
87
- : new Date().toISOString(),
88
- };
89
- }
90
- case "heartbeat":
91
- case "ping":
92
- return {
93
- type: "heartbeat",
94
- timestamp: typeof d["timestamp"] === "string"
95
- ? d["timestamp"]
96
- : new Date().toISOString(),
97
- };
98
- default:
99
- return { type: "unknown", raw };
100
- }
101
- }
102
- // ── Filter helpers ────────────────────────────────────────────────────────────
103
- const VALID_FILTER_CATEGORIES = new Set([
104
- "desktop",
105
- "exec",
106
- "file",
107
- "screenshot",
108
- "error",
109
- ]);
110
- function parseFilter(raw) {
111
- const categories = raw.split(",").map((s) => s.trim().toLowerCase());
112
- const invalid = categories.filter((c) => !VALID_FILTER_CATEGORIES.has(c));
113
- if (invalid.length > 0) {
114
- throw new UserError(`Unknown filter categories: ${invalid.join(", ")}`, `Valid categories: ${[...VALID_FILTER_CATEGORIES].join(", ")}`);
115
- }
116
- return new Set(categories);
117
- }
118
- function eventMatchesFilter(event, filter) {
119
- if (filter === null)
120
- return true;
121
- switch (event.type) {
122
- case "desktop_action":
123
- return filter.has("desktop");
124
- case "exec":
125
- return filter.has("exec");
126
- case "file":
127
- return filter.has("file");
128
- case "screenshot":
129
- return filter.has("screenshot");
130
- case "error":
131
- return filter.has("error");
132
- case "heartbeat":
133
- case "unknown":
134
- return false;
135
- }
136
- }
137
- // ── Formatting helpers ────────────────────────────────────────────────────────
138
- function formatTimestamp(isoOrNow) {
139
- try {
140
- return new Date(isoOrNow).toLocaleTimeString();
141
- }
142
- catch {
143
- return new Date().toLocaleTimeString();
144
- }
145
- }
146
- function formatBytes(bytes) {
147
- if (bytes < 1024)
148
- return `${bytes}B`;
149
- if (bytes < 1024 * 1024)
150
- return `${(bytes / 1024).toFixed(1)}KB`;
151
- return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
152
- }
153
- function formatDuration(ms) {
154
- if (ms < 1000)
155
- return `${ms}ms`;
156
- return `${(ms / 1000).toFixed(1)}s`;
157
- }
158
- function formatDesktopAction(e) {
159
- switch (e.kind) {
160
- case "click":
161
- case "double_click":
162
- case "right_click": {
163
- const label = e.kind === "double_click"
164
- ? "double_click"
165
- : e.kind === "right_click"
166
- ? "right_click"
167
- : "click";
168
- const coords = e.x !== undefined && e.y !== undefined ? `(${e.x}, ${e.y})` : "";
169
- const btn = e.button ? ` ${e.button}` : "";
170
- return `${chalk.blue(label.padEnd(12))} ${coords}${btn}`;
171
- }
172
- case "type":
173
- return `${chalk.blue("type".padEnd(12))} ${chalk.italic(JSON.stringify(e.text ?? ""))}`;
174
- case "key":
175
- return `${chalk.blue("key".padEnd(12))} ${e.key ?? ""}`;
176
- case "scroll": {
177
- const coords = e.x !== undefined && e.y !== undefined ? `(${e.x}, ${e.y})` : "";
178
- return `${chalk.blue("scroll".padEnd(12))} ${coords} dx=${e.dx ?? 0} dy=${e.dy ?? 0}`;
179
- }
180
- case "move": {
181
- const coords = e.x !== undefined && e.y !== undefined ? `(${e.x}, ${e.y})` : "";
182
- return `${chalk.blue("move".padEnd(12))} ${coords}`;
183
- }
184
- case "drag": {
185
- const coords = e.x !== undefined && e.y !== undefined ? `(${e.x}, ${e.y})` : "";
186
- return `${chalk.blue("drag".padEnd(12))} ${coords}`;
187
- }
188
- }
189
- }
190
- function formatExecEvent(e) {
191
- if (e.phase === "start") {
192
- return `${chalk.green("exec".padEnd(12))} ${e.command}`;
193
- }
194
- const duration = e.duration_ms !== undefined
195
- ? chalk.dim(` (${formatDuration(e.duration_ms)})`)
196
- : "";
197
- const exitLabel = e.exit_code === 0
198
- ? chalk.green(`exit=${e.exit_code}`)
199
- : chalk.red(`exit=${e.exit_code ?? "?"}`);
200
- return `${chalk.green("exec:done".padEnd(12))} ${exitLabel}${duration}`;
201
- }
202
- function formatFileEvent(e) {
203
- const size = e.size !== undefined ? chalk.dim(` ${formatBytes(e.size)}`) : "";
204
- return `${chalk.yellow(e.operation.padEnd(12))} ${e.path}${size}`;
205
- }
206
- function formatScreenshotEvent(e) {
207
- return chalk.dim(`${"screenshot".padEnd(12)} ${e.width}x${e.height}, ${formatBytes(e.size)}`);
208
- }
209
- function formatErrorEvent(e) {
210
- const code = e.code ? chalk.dim(` [${e.code}]`) : "";
211
- return `${chalk.red("error".padEnd(12))} ${e.message}${code}`;
212
- }
213
- function renderLine(ts, body) {
214
- console.log(`${chalk.dim(ts)} ${body}`);
215
- }
216
- // ── Screenshot saving ─────────────────────────────────────────────────────────
217
- function saveScreenshot(dir, event, index) {
218
- if (!event.data)
219
- return;
220
- try {
221
- const filename = `screenshot-${String(index).padStart(4, "0")}-${Date.now()}.png`;
222
- const filepath = join(dir, filename);
223
- const buf = Buffer.from(event.data, "base64");
224
- writeFileSync(filepath, buf);
225
- console.log(chalk.dim(` Saved ${filepath}`));
226
- }
227
- catch (err) {
228
- console.error(chalk.red(` Failed to save screenshot: ${err instanceof Error ? err.message : String(err)}`));
229
- }
230
- }
231
- // ── Resolve computer by ID or name ────────────────────────────────────────────
232
- function dataOf(payload) {
233
- if (payload !== null &&
234
- typeof payload === "object" &&
235
- payload.data !== undefined) {
236
- return payload.data;
237
- }
238
- return payload;
239
- }
240
- function listOf(payload) {
241
- const value = dataOf(payload);
242
- return Array.isArray(value) ? value : [];
243
- }
244
- export async function resolveComputerId(client, idOrName) {
245
- // Try direct lookup first; if that 404s, fall back to list search.
246
- try {
247
- const payload = await client.apiGet(`/api/v1/computers/${encodeURIComponent(idOrName)}`);
248
- const computer = dataOf(payload);
249
- if (!computer?.id)
250
- throw new Error("Computer response did not include an id");
251
- return toComputerId(computer.id);
252
- }
253
- catch {
254
- // Fallback: list and match by name
255
- const payload = await client.apiGet("/api/v1/computers");
256
- const computers = listOf(payload);
257
- const match = computers.find((c) => c.id === idOrName || c.name === idOrName);
258
- if (!match) {
259
- throw new UserError(`Computer not found: ${idOrName}`, "Run `miosa computers list` to see available computers.");
260
- }
261
- return toComputerId(match.id);
262
- }
263
- }
264
- async function runEventLoop(client, computerId, opts) {
265
- let screenshotIndex = 0;
266
- const res = await client.watchComputerEvents(computerId);
267
- for await (const sseEvent of parseSse(res.body)) {
268
- // Re-parse raw SSE events into typed ComputerEvents
269
- let event;
270
- if (sseEvent.type === "unknown") {
271
- event = parseComputerEvent("", sseEvent.raw);
272
- }
273
- else if (sseEvent.type === "heartbeat" ||
274
- sseEvent.type === "done" ||
275
- sseEvent.type === "exit") {
276
- // heartbeat: silently skip; done/exit: end of stream
277
- if (sseEvent.type === "done" || sseEvent.type === "exit")
278
- return;
279
- continue;
280
- }
281
- else if (sseEvent.type === "error") {
282
- event = {
283
- type: "error",
284
- message: sseEvent.message,
285
- timestamp: new Date().toISOString(),
286
- };
287
- }
288
- else {
289
- // stdout/stderr/thought/tool_call/tool_result fall through as unknown
290
- event = { type: "unknown", raw: JSON.stringify(sseEvent) };
291
- }
292
- // Apply filter
293
- if (!eventMatchesFilter(event, opts.filter))
294
- continue;
295
- if (opts.json) {
296
- console.log(JSON.stringify(event));
297
- continue;
298
- }
299
- // Human-readable rendering
300
- switch (event.type) {
301
- case "desktop_action": {
302
- const ts = formatTimestamp(event.timestamp);
303
- renderLine(ts, formatDesktopAction(event));
304
- break;
305
- }
306
- case "exec": {
307
- const ts = formatTimestamp(event.timestamp);
308
- renderLine(ts, formatExecEvent(event));
309
- break;
310
- }
311
- case "file": {
312
- const ts = formatTimestamp(event.timestamp);
313
- renderLine(ts, formatFileEvent(event));
314
- break;
315
- }
316
- case "screenshot": {
317
- const ts = formatTimestamp(event.timestamp);
318
- renderLine(ts, formatScreenshotEvent(event));
319
- if (opts.screenshotsDir !== null) {
320
- saveScreenshot(opts.screenshotsDir, event, ++screenshotIndex);
321
- }
322
- break;
323
- }
324
- case "error": {
325
- const ts = formatTimestamp(event.timestamp);
326
- renderLine(ts, formatErrorEvent(event));
327
- break;
328
- }
329
- case "heartbeat":
330
- case "unknown":
331
- if (process.env["MIOSA_DEBUG"]) {
332
- console.log(chalk.dim(`[debug] ${event.type === "unknown" ? event.raw : "heartbeat"}`));
333
- }
334
- break;
335
- }
336
- }
337
- }
338
- // ── Command registration ──────────────────────────────────────────────────────
339
- export function register(program) {
340
- program
341
- .command("watch <computer-id>")
342
- .description("Stream real-time events from a Computer — agent actions, execs, file ops, screenshots")
343
- .option("--json", "Output one JSON object per line (machine-readable)")
344
- .option("--filter <categories>", "Comma-separated event categories to show: desktop, exec, file, screenshot, error")
345
- .option("--screenshots <dir>", "Save incoming screenshots to a local directory as PNG files")
346
- .action(async (computerArg, opts) => {
347
- try {
348
- const config = loadConfig();
349
- const client = new MiosaClient(config);
350
- // Parse --filter
351
- let filter = null;
352
- if (opts.filter) {
353
- filter = parseFilter(opts.filter);
354
- }
355
- // Prepare screenshots directory
356
- let screenshotsDir = null;
357
- if (opts.screenshots) {
358
- screenshotsDir = opts.screenshots;
359
- mkdirSync(screenshotsDir, { recursive: true });
360
- }
361
- // Resolve computer
362
- const spinner = spin(`Connecting to ${computerArg}...`);
363
- const computerId = await resolveComputerId(client, computerArg);
364
- spinner.succeed(`Watching ${computerArg} ${chalk.dim("(connected via SSE)")}`);
365
- if (!opts.json) {
366
- console.log(DIVIDER);
367
- }
368
- // Graceful Ctrl+C
369
- let stopping = false;
370
- process.on("SIGINT", () => {
371
- stopping = true;
372
- if (!opts.json) {
373
- console.log(chalk.dim("\n\nStopped."));
374
- }
375
- process.exit(0);
376
- });
377
- // Reconnection loop
378
- let attempts = 0;
379
- while (!stopping) {
380
- try {
381
- await runEventLoop(client, computerId, {
382
- json: opts.json ?? false,
383
- filter,
384
- screenshotsDir,
385
- });
386
- // Clean end-of-stream — exit normally
387
- break;
388
- }
389
- catch (err) {
390
- if (stopping)
391
- break;
392
- // Don't reconnect on auth/user errors
393
- if (err instanceof UserError ||
394
- (err instanceof Error && err.constructor.name === "AuthError")) {
395
- throw err;
396
- }
397
- attempts++;
398
- if (attempts > MAX_RECONNECT_ATTEMPTS) {
399
- throw new NetworkError(`Lost connection to ${computerArg} after ${MAX_RECONNECT_ATTEMPTS} reconnect attempts.`, "Check that the computer is running: miosa computers list");
400
- }
401
- if (!opts.json) {
402
- console.log(chalk.dim(`\nConnection lost — reconnecting in ${RECONNECT_DELAY_MS / 1000}s ` +
403
- `(attempt ${attempts}/${MAX_RECONNECT_ATTEMPTS})...`));
404
- }
405
- await new Promise((resolve) => setTimeout(resolve, RECONNECT_DELAY_MS));
406
- }
407
- }
408
- }
409
- catch (err) {
410
- handleError(err);
411
- }
412
- });
413
- }
414
- //# sourceMappingURL=watch.js.map