@miosa/cli 1.3.3 → 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 -105
  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 -29
  427. package/dist/errors.d.ts.map +0 -1
  428. package/dist/errors.js +0 -86
  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,73 +0,0 @@
1
- import WebSocket from "ws";
2
- import process from "node:process";
3
- import { enterRawMode, exitRawMode, getTerminalSize } from "./raw-mode.js";
4
- /**
5
- * Opens a WebSocket PTY session. Puts local terminal in raw mode,
6
- * pipes stdin → WS and WS messages → stdout. Returns exit code.
7
- */
8
- export async function runWsPty(options) {
9
- return new Promise((resolve) => {
10
- const headers = {
11
- ...(options.token ? { Authorization: `Bearer ${options.token}` } : {}),
12
- ...(options.headers ?? {}),
13
- };
14
- const ws = new WebSocket(options.url, {
15
- headers,
16
- });
17
- let cleanedUp = false;
18
- function cleanup(code) {
19
- if (cleanedUp)
20
- return;
21
- cleanedUp = true;
22
- exitRawMode();
23
- process.stdin.removeAllListeners("data");
24
- process.removeAllListeners("SIGWINCH");
25
- if (ws.readyState === WebSocket.OPEN) {
26
- ws.close();
27
- }
28
- resolve(code);
29
- }
30
- ws.on("open", () => {
31
- enterRawMode();
32
- // Send initial terminal size
33
- sendResize(ws);
34
- // Pipe stdin → WS
35
- process.stdin.on("data", (chunk) => {
36
- if (ws.readyState === WebSocket.OPEN) {
37
- ws.send(chunk);
38
- }
39
- });
40
- // SIGWINCH → send resize frame
41
- process.on("SIGWINCH", () => {
42
- if (ws.readyState === WebSocket.OPEN) {
43
- sendResize(ws);
44
- }
45
- });
46
- // Send one-shot command if provided
47
- if (options.oneShot) {
48
- ws.send(Buffer.from(options.oneShot + "\n"));
49
- }
50
- });
51
- ws.on("message", (data) => {
52
- process.stdout.write(typeof data === "string" ? data : data);
53
- });
54
- ws.on("close", (code) => {
55
- cleanup(code === 1000 ? 0 : 1);
56
- });
57
- ws.on("error", (err) => {
58
- process.stderr.write(`\r\nWebSocket error: ${err.message}\r\n`);
59
- cleanup(2);
60
- });
61
- // Ctrl+D on stdin closes the session
62
- process.stdin.on("end", () => {
63
- ws.close();
64
- });
65
- });
66
- }
67
- function sendResize(ws) {
68
- const { cols, rows } = getTerminalSize();
69
- // Standard xterm resize sequence encoded as JSON control message
70
- const frame = JSON.stringify({ type: "resize", cols, rows });
71
- ws.send(frame);
72
- }
73
- //# sourceMappingURL=ws-pty-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ws-pty-client.js","sourceRoot":"","sources":["../../src/pty/ws-pty-client.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- /**
2
- * `miosa watch` — live terminal dashboard.
3
- *
4
- * React component (rendered by ink) that polls the MIOSA API every few
5
- * seconds and shows a single-screen snapshot:
6
- *
7
- * - Sign-in identity (tenant + plan)
8
- * - Counts: running computers, sandboxes, deployments
9
- * - Last fetch time + auto-refresh interval
10
- * - Recent activity (most recent N rows from computers/sandboxes/deps)
11
- * - Quit hint
12
- *
13
- * The component is self-contained — bin/miosa.ts is unchanged; the new
14
- * watch.ts command just mounts this with `ink.render()`.
15
- */
16
- import React from "react";
17
- import type { MiosaConfig } from "../types.js";
18
- interface DashboardProps {
19
- config: MiosaConfig;
20
- }
21
- interface ResourceRow {
22
- id: string;
23
- name?: string;
24
- status?: string;
25
- state?: string;
26
- template_type?: string;
27
- updated_at?: string;
28
- created_at?: string;
29
- }
30
- declare function isActive(row: ResourceRow): boolean;
31
- declare function timeAgo(iso?: string): string;
32
- declare function sortRecent(rows: ResourceRow[]): ResourceRow[];
33
- export declare const Dashboard: React.FC<DashboardProps>;
34
- export { sortRecent, timeAgo, isActive };
35
- //# sourceMappingURL=dashboard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/tui/dashboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAuC,MAAM,OAAO,CAAC;AAG5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,UAAU,cAAc;IACtB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA0CD,iBAAS,QAAQ,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAG3C;AAED,iBAAS,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAQrC;AAED,iBAAS,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAMtD;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAuN9C,CAAC;AAmEF,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -1,191 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- /**
3
- * `miosa watch` — live terminal dashboard.
4
- *
5
- * React component (rendered by ink) that polls the MIOSA API every few
6
- * seconds and shows a single-screen snapshot:
7
- *
8
- * - Sign-in identity (tenant + plan)
9
- * - Counts: running computers, sandboxes, deployments
10
- * - Last fetch time + auto-refresh interval
11
- * - Recent activity (most recent N rows from computers/sandboxes/deps)
12
- * - Quit hint
13
- *
14
- * The component is self-contained — bin/miosa.ts is unchanged; the new
15
- * watch.ts command just mounts this with `ink.render()`.
16
- */
17
- import { useEffect, useMemo, useState } from "react";
18
- import { Box, Text, useApp, useInput } from "ink";
19
- import { MiosaClient } from "../client.js";
20
- const POLL_INTERVAL_MS = 5_000;
21
- async function safeList(client, path) {
22
- try {
23
- const result = await client.apiGet(path);
24
- if (Array.isArray(result))
25
- return result;
26
- if (result && typeof result === "object") {
27
- const rec = result;
28
- for (const key of [
29
- "data",
30
- "computers",
31
- "sandboxes",
32
- "deployments",
33
- "items",
34
- ]) {
35
- if (Array.isArray(rec[key]))
36
- return rec[key];
37
- }
38
- }
39
- return [];
40
- }
41
- catch {
42
- // Snapshot stays consistent even if one endpoint is flaky.
43
- return [];
44
- }
45
- }
46
- function isActive(row) {
47
- const s = (row.status ?? row.state ?? "").toLowerCase();
48
- return s === "active" || s === "running" || s === "ready";
49
- }
50
- function timeAgo(iso) {
51
- if (!iso)
52
- return "—";
53
- const ms = Date.now() - new Date(iso).getTime();
54
- if (Number.isNaN(ms) || ms < 0)
55
- return "—";
56
- if (ms < 60_000)
57
- return `${Math.floor(ms / 1000)}s ago`;
58
- if (ms < 3_600_000)
59
- return `${Math.floor(ms / 60_000)}m ago`;
60
- if (ms < 86_400_000)
61
- return `${Math.floor(ms / 3_600_000)}h ago`;
62
- return `${Math.floor(ms / 86_400_000)}d ago`;
63
- }
64
- function sortRecent(rows) {
65
- return [...rows].sort((a, b) => {
66
- const ta = new Date(a.updated_at ?? a.created_at ?? 0).getTime();
67
- const tb = new Date(b.updated_at ?? b.created_at ?? 0).getTime();
68
- return tb - ta;
69
- });
70
- }
71
- export const Dashboard = ({ config }) => {
72
- const { exit } = useApp();
73
- const [snapshot, setSnapshot] = useState({
74
- fetchedAt: 0,
75
- computers: [],
76
- sandboxes: [],
77
- deployments: [],
78
- });
79
- const [tick, setTick] = useState(0);
80
- // Quit handling
81
- useInput((input, key) => {
82
- if (input === "q" || (key.ctrl && input === "c")) {
83
- exit();
84
- }
85
- });
86
- const client = useMemo(() => new MiosaClient(config), [config]);
87
- // Initial load + interval poll
88
- useEffect(() => {
89
- let cancelled = false;
90
- const fetch = async () => {
91
- try {
92
- const [computers, sandboxes, deployments, tenant] = await Promise.all([
93
- safeList(client, "/api/v1/computers"),
94
- safeList(client, "/api/v1/sandboxes"),
95
- safeList(client, "/api/v1/deployments"),
96
- client.getTenant().catch(() => null),
97
- ]);
98
- if (cancelled)
99
- return;
100
- setSnapshot({
101
- fetchedAt: Date.now(),
102
- tenant: tenant
103
- ? {
104
- name: tenant.name,
105
- plan: tenant.plan,
106
- slug: tenant.slug,
107
- credit_balance: tenant.credit_balance,
108
- }
109
- : undefined,
110
- computers,
111
- sandboxes,
112
- deployments,
113
- });
114
- }
115
- catch (err) {
116
- if (cancelled)
117
- return;
118
- setSnapshot((prev) => ({
119
- ...prev,
120
- fetchedAt: Date.now(),
121
- error: err instanceof Error ? err.message : String(err),
122
- }));
123
- }
124
- };
125
- void fetch();
126
- const id = setInterval(() => void fetch(), POLL_INTERVAL_MS);
127
- return () => {
128
- cancelled = true;
129
- clearInterval(id);
130
- };
131
- }, [client]);
132
- // Local clock tick so "1s ago" labels stay fresh between polls
133
- useEffect(() => {
134
- const id = setInterval(() => setTick((t) => t + 1), 1000);
135
- return () => clearInterval(id);
136
- }, []);
137
- const computeActive = snapshot.computers.filter(isActive).length;
138
- const sandboxActive = snapshot.sandboxes.filter(isActive).length;
139
- const deployActive = snapshot.deployments.filter(isActive).length;
140
- const recent = useMemo(() => [
141
- ...snapshot.computers.map((r) => ({
142
- kind: "computer",
143
- row: r,
144
- })),
145
- ...snapshot.sandboxes.map((r) => ({
146
- kind: "sandbox",
147
- row: r,
148
- })),
149
- ...snapshot.deployments.map((r) => ({
150
- kind: "deployment",
151
- row: r,
152
- })),
153
- ]
154
- .sort((a, b) => {
155
- const ta = new Date(a.row.updated_at ?? a.row.created_at ?? 0).getTime();
156
- const tb = new Date(b.row.updated_at ?? b.row.created_at ?? 0).getTime();
157
- return tb - ta;
158
- })
159
- .slice(0, 6), [snapshot, tick]);
160
- const lastFetchAgo = snapshot.fetchedAt === 0
161
- ? "—"
162
- : `${Math.max(0, Math.floor((Date.now() - snapshot.fetchedAt) / 1000))}s ago`;
163
- return (_jsxs(Box, { flexDirection: "column", paddingX: 1, paddingY: 0, children: [_jsxs(Box, { justifyContent: "space-between", marginBottom: 1, children: [_jsxs(Text, { children: [_jsx(Text, { color: "cyan", bold: true, children: "\u25AE\u25AE\u25AE MIOSA \u25AE\u25AE\u25AE" }), snapshot.tenant ? (_jsxs(_Fragment, { children: [" ", _jsx(Text, { bold: true, children: snapshot.tenant.name }), _jsxs(Text, { dimColor: true, children: [" \u00B7 ", snapshot.tenant.plan] })] })) : (_jsx(Text, { dimColor: true, children: " (loading identity\u2026)" }))] }), _jsxs(Text, { dimColor: true, children: ["last fetch ", lastFetchAgo, " \u00B7 refresh ", POLL_INTERVAL_MS / 1000, "s"] })] }), _jsxs(Box, { flexDirection: "row", marginBottom: 1, children: [_jsx(CountTile, { label: "COMPUTERS", total: snapshot.computers.length, active: computeActive, accent: "green" }), _jsx(Box, { marginLeft: 2, children: _jsx(CountTile, { label: "SANDBOXES", total: snapshot.sandboxes.length, active: sandboxActive, accent: "blue" }) }), _jsx(Box, { marginLeft: 2, children: _jsx(CountTile, { label: "DEPLOYMENTS", total: snapshot.deployments.length, active: deployActive, accent: "magenta" }) }), snapshot.tenant && (_jsx(Box, { marginLeft: 2, children: _jsx(CountTile, { label: "CREDITS", total: snapshot.tenant.credit_balance ?? 0, active: null, accent: (snapshot.tenant.credit_balance ?? 0) > 0 ? "yellow" : "red" }) }))] }), _jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { dimColor: true, bold: true, children: "RECENT" }), recent.length === 0 ? (_jsxs(Text, { dimColor: true, children: [" ", "(no resources yet \u2014 run `miosa login` then create a sandbox)"] })) : (recent.map((item, idx) => (_jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: kindGlyph(item.kind) }), _jsx(Text, { children: " " }), _jsx(Text, { children: (item.row.name ?? item.row.id).slice(0, 32).padEnd(32) }), _jsx(Text, { children: " " }), _jsx(Text, { color: statusColor(item.row), children: (item.row.status ?? item.row.state ?? "—").padEnd(12) }), _jsx(Text, { dimColor: true, children: timeAgo(item.row.updated_at ?? item.row.created_at) })] }, `${item.kind}-${item.row.id}-${idx}`))))] }), snapshot.error && (_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { color: "red", children: "\u2717 " }), _jsx(Text, { color: "red", children: snapshot.error })] })), _jsx(Box, { children: _jsxs(Text, { dimColor: true, children: ["press ", _jsx(Text, { bold: true, children: "q" }), " to quit \u00B7 ", _jsx(Text, { bold: true, children: "r" }), " to refresh now (auto every ", POLL_INTERVAL_MS / 1000, "s)"] }) })] }));
164
- };
165
- const CountTile = ({ label, total, active, accent, }) => {
166
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: accent, paddingX: 1, minWidth: 18, children: [_jsx(Text, { dimColor: true, bold: true, children: label }), _jsxs(Text, { children: [_jsx(Text, { color: accent, bold: true, children: total }), active !== null && (_jsxs(_Fragment, { children: [_jsx(Text, { dimColor: true, children: " total \u00B7 " }), _jsx(Text, { color: accent, children: active }), _jsx(Text, { dimColor: true, children: " active" })] }))] })] }));
167
- };
168
- // ── Helpers ────────────────────────────────────────────────────────────────
169
- function kindGlyph(kind) {
170
- switch (kind) {
171
- case "computer":
172
- return "◆";
173
- case "sandbox":
174
- return "□";
175
- case "deployment":
176
- return "▲";
177
- }
178
- }
179
- function statusColor(row) {
180
- const s = (row.status ?? row.state ?? "").toLowerCase();
181
- if (s === "active" || s === "running" || s === "ready")
182
- return "green";
183
- if (s === "provisioning" || s === "building" || s === "pending")
184
- return "yellow";
185
- if (s === "error" || s === "failed")
186
- return "red";
187
- return "gray";
188
- }
189
- // Re-export for any future TUI command that wants to reuse helpers.
190
- export { sortRecent, timeAgo, isActive };
191
- //# sourceMappingURL=dashboard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/tui/dashboard.tsx"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- /**
2
- * `miosa logs <id> --follow` — live log tail TUI.
3
- *
4
- * React component (rendered by ink) that polls the MIOSA API every 2 seconds
5
- * and streams the last 200 log lines into a scrollable pane with a header bar.
6
- *
7
- * How it differs from one-shot `miosa logs`:
8
- * - Runs interactively in the terminal instead of dumping once and exiting.
9
- * - Polls continuously, appending new lines to an in-memory ring buffer.
10
- * - Renders a header bar (resource id, status, region, age, clock).
11
- * - Colors stdout/stderr/error lines differently.
12
- * - Responds to keyboard: q / Ctrl+C to quit, / to toggle filter mode.
13
- *
14
- * Mounted by `src/commands/logs.ts` when --follow / -f is passed and
15
- * process.stdout.isTTY is true.
16
- */
17
- import React from "react";
18
- import type { MiosaConfig } from "../types.js";
19
- export type ResourceKind = "computer" | "sandbox" | "deployment" | "database";
20
- export interface LogsTUIProps {
21
- resourceId: string;
22
- resourceKind: ResourceKind;
23
- config: MiosaConfig;
24
- }
25
- export declare const LogsTUI: React.FC<LogsTUIProps>;
26
- //# sourceMappingURL=logs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/tui/logs.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAMN,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS/C,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,CAAC;AAE9E,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,WAAW,CAAC;CACrB;AAkQD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA2J1C,CAAC"}
package/dist/tui/logs.js DELETED
@@ -1,276 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * `miosa logs <id> --follow` — live log tail TUI.
4
- *
5
- * React component (rendered by ink) that polls the MIOSA API every 2 seconds
6
- * and streams the last 200 log lines into a scrollable pane with a header bar.
7
- *
8
- * How it differs from one-shot `miosa logs`:
9
- * - Runs interactively in the terminal instead of dumping once and exiting.
10
- * - Polls continuously, appending new lines to an in-memory ring buffer.
11
- * - Renders a header bar (resource id, status, region, age, clock).
12
- * - Colors stdout/stderr/error lines differently.
13
- * - Responds to keyboard: q / Ctrl+C to quit, / to toggle filter mode.
14
- *
15
- * Mounted by `src/commands/logs.ts` when --follow / -f is passed and
16
- * process.stdout.isTTY is true.
17
- */
18
- import { useEffect, useMemo, useRef, useState, } from "react";
19
- import { Box, Text, useApp, useInput } from "ink";
20
- import { MiosaClient } from "../client.js";
21
- // ── Constants ─────────────────────────────────────────────────────────────────
22
- const POLL_INTERVAL_MS = 2_000;
23
- const MAX_LINES = 200;
24
- // ── Helpers ───────────────────────────────────────────────────────────────────
25
- let seqCounter = 0;
26
- function nextSeq() {
27
- return ++seqCounter;
28
- }
29
- function nowHHMMSS() {
30
- return new Date().toLocaleTimeString("en-US", {
31
- hour12: false,
32
- hour: "2-digit",
33
- minute: "2-digit",
34
- second: "2-digit",
35
- });
36
- }
37
- function ageLabel(isoOrNull) {
38
- if (!isoOrNull)
39
- return "—";
40
- const ms = Date.now() - new Date(isoOrNull).getTime();
41
- if (Number.isNaN(ms) || ms < 0)
42
- return "—";
43
- if (ms < 60_000)
44
- return `${Math.floor(ms / 1_000)}s`;
45
- if (ms < 3_600_000)
46
- return `${Math.floor(ms / 60_000)}m`;
47
- if (ms < 86_400_000)
48
- return `${Math.floor(ms / 3_600_000)}h`;
49
- return `${Math.floor(ms / 86_400_000)}d`;
50
- }
51
- function logEndpointFor(kind, id) {
52
- switch (kind) {
53
- case "computer":
54
- return `/api/v1/computers/${encodeURIComponent(id)}/logs`;
55
- case "sandbox":
56
- return `/api/v1/sandboxes/${encodeURIComponent(id)}/logs`;
57
- case "deployment":
58
- return `/api/v1/deployments/${encodeURIComponent(id)}/logs`;
59
- case "database":
60
- return `/api/v1/databases/${encodeURIComponent(id)}/logs`;
61
- }
62
- }
63
- function metaEndpointFor(kind, id) {
64
- switch (kind) {
65
- case "computer":
66
- return `/api/v1/computers/${encodeURIComponent(id)}`;
67
- case "sandbox":
68
- return `/api/v1/sandboxes/${encodeURIComponent(id)}`;
69
- case "deployment":
70
- return `/api/v1/deployments/${encodeURIComponent(id)}`;
71
- case "database":
72
- return `/api/v1/databases/${encodeURIComponent(id)}`;
73
- }
74
- }
75
- /**
76
- * Parse an arbitrary API log payload (array of rows OR wrapped object with
77
- * a "data"/"logs"/"lines" key) into typed LogLine entries. Handles both the
78
- * plain-array format used by computer/sandbox endpoints and the JSON-row
79
- * format seen in deployment responses.
80
- */
81
- function parsePayload(raw, existingCount) {
82
- let rows = [];
83
- if (Array.isArray(raw)) {
84
- rows = raw;
85
- }
86
- else if (raw && typeof raw === "object") {
87
- const rec = raw;
88
- for (const key of ["logs", "data", "lines", "items"]) {
89
- if (Array.isArray(rec[key])) {
90
- rows = rec[key];
91
- break;
92
- }
93
- }
94
- }
95
- return rows.slice(-MAX_LINES).map((row, idx) => {
96
- if (typeof row === "string") {
97
- return {
98
- seq: nextSeq(),
99
- timestamp: nowHHMMSS(),
100
- stream: "stdout",
101
- text: row,
102
- };
103
- }
104
- if (row && typeof row === "object") {
105
- const r = row;
106
- const stream = (() => {
107
- const s = String(r["stream"] ?? r["level"] ?? "stdout").toLowerCase();
108
- if (s === "stderr" || s === "error" || s === "stdout")
109
- return s;
110
- return "unknown";
111
- })();
112
- const text = typeof r["line"] === "string"
113
- ? r["line"]
114
- : typeof r["message"] === "string"
115
- ? r["message"]
116
- : typeof r["text"] === "string"
117
- ? r["text"]
118
- : JSON.stringify(row);
119
- const timestamp = typeof r["timestamp"] === "string"
120
- ? r["timestamp"].slice(11, 19) // HH:MM:SS from ISO
121
- : typeof r["inserted_at"] === "string"
122
- ? r["inserted_at"].slice(11, 19)
123
- : nowHHMMSS();
124
- return { seq: nextSeq(), timestamp, stream, text };
125
- }
126
- return {
127
- seq: nextSeq(),
128
- timestamp: nowHHMMSS(),
129
- stream: "unknown",
130
- text: String(row),
131
- };
132
- });
133
- }
134
- function extractMeta(raw) {
135
- if (!raw || typeof raw !== "object")
136
- return {};
137
- const r = raw;
138
- return {
139
- status: typeof r["status"] === "string"
140
- ? r["status"]
141
- : typeof r["state"] === "string"
142
- ? String(r["state"])
143
- : undefined,
144
- region: typeof r["region"] === "string" ? r["region"] : undefined,
145
- created_at: typeof r["inserted_at"] === "string"
146
- ? r["inserted_at"]
147
- : typeof r["created_at"] === "string"
148
- ? r["created_at"]
149
- : null,
150
- };
151
- }
152
- function streamColor(stream) {
153
- switch (stream) {
154
- case "stderr":
155
- return "yellow";
156
- case "error":
157
- return "red";
158
- default:
159
- return undefined;
160
- }
161
- }
162
- const HeaderBar = ({ resourceId, resourceKind, meta, clock, fetchError, filterActive, filterText, }) => {
163
- const statusColor = meta.status === "running" ||
164
- meta.status === "active" ||
165
- meta.status === "ready"
166
- ? "green"
167
- : meta.status === "provisioning" ||
168
- meta.status === "building" ||
169
- meta.status === "pending"
170
- ? "yellow"
171
- : meta.status === "error" || meta.status === "failed"
172
- ? "red"
173
- : "gray";
174
- return (_jsxs(Box, { flexDirection: "column", marginBottom: 0, children: [_jsxs(Box, { justifyContent: "space-between", borderStyle: "single", borderColor: "cyan", paddingX: 1, children: [_jsxs(Text, { children: [_jsx(Text, { color: "cyan", bold: true, children: "MIOSA" }), _jsx(Text, { dimColor: true, children: " \u00B7 logs \u00B7 " }), _jsx(Text, { bold: true, children: resourceKind }), _jsx(Text, { dimColor: true, children: "/" }), _jsx(Text, { color: "cyan", children: resourceId })] }), _jsx(Text, { dimColor: true, children: clock })] }), _jsx(Box, { paddingX: 2, marginBottom: 0, children: _jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "status: " }), _jsx(Text, { color: statusColor, bold: true, children: meta.status || "—" }), " ", _jsx(Text, { dimColor: true, children: "region: " }), _jsx(Text, { children: meta.region || "—" }), " ", _jsx(Text, { dimColor: true, children: "age: " }), _jsx(Text, { children: ageLabel(meta.created_at) })] }) }), fetchError && (_jsxs(Box, { paddingX: 2, children: [_jsx(Text, { color: "red", children: "\u2717 " }), _jsx(Text, { color: "red", children: fetchError }), _jsx(Text, { dimColor: true, children: " (last known lines still shown)" })] })), filterActive && (_jsxs(Box, { paddingX: 2, children: [_jsx(Text, { dimColor: true, children: "filter: " }), _jsx(Text, { color: "cyan", children: filterText || "_" }), _jsx(Text, { dimColor: true, children: " (Esc to clear)" })] }))] }));
175
- };
176
- // ── Main component ────────────────────────────────────────────────────────────
177
- export const LogsTUI = ({ resourceId, resourceKind, config, }) => {
178
- const { exit } = useApp();
179
- const [lines, setLines] = useState([]);
180
- const [meta, setMeta] = useState({
181
- status: "—",
182
- region: "—",
183
- created_at: null,
184
- });
185
- const [clock, setClock] = useState(nowHHMMSS());
186
- const [fetchError, setFetchError] = useState(null);
187
- const [filterActive, setFilterActive] = useState(false);
188
- const [filterText, setFilterText] = useState("");
189
- // Track last-seen seq so we only append genuinely new lines each poll.
190
- const lastSeenCount = useRef(0);
191
- const client = useMemo(() => new MiosaClient(config), [config]);
192
- // ── Keyboard input ──────────────────────────────────────────────────────────
193
- useInput((input, key) => {
194
- if (input === "q" || (key.ctrl && input === "c")) {
195
- exit();
196
- return;
197
- }
198
- if (filterActive) {
199
- if (key.escape) {
200
- setFilterActive(false);
201
- setFilterText("");
202
- return;
203
- }
204
- if (key.backspace || key.delete) {
205
- setFilterText((t) => t.slice(0, -1));
206
- return;
207
- }
208
- if (!key.ctrl && !key.meta && input.length === 1) {
209
- setFilterText((t) => t + input);
210
- return;
211
- }
212
- return;
213
- }
214
- if (input === "/") {
215
- setFilterActive(true);
216
- }
217
- });
218
- // ── Clock tick (1 s) ────────────────────────────────────────────────────────
219
- useEffect(() => {
220
- const id = setInterval(() => setClock(nowHHMMSS()), 1_000);
221
- return () => clearInterval(id);
222
- }, []);
223
- // ── Poll loop ───────────────────────────────────────────────────────────────
224
- useEffect(() => {
225
- let cancelled = false;
226
- const poll = async () => {
227
- // Fetch meta and logs in parallel; tolerate individual failures.
228
- const [metaResult, logsResult] = await Promise.allSettled([
229
- client.apiGet(metaEndpointFor(resourceKind, resourceId)),
230
- client.apiGet(logEndpointFor(resourceKind, resourceId)),
231
- ]);
232
- if (cancelled)
233
- return;
234
- if (metaResult.status === "fulfilled") {
235
- const m = extractMeta(metaResult.value);
236
- setMeta((prev) => ({
237
- status: m.status ?? prev.status,
238
- region: m.region ?? prev.region,
239
- created_at: m.created_at !== undefined ? m.created_at : prev.created_at,
240
- }));
241
- setFetchError(null);
242
- }
243
- if (logsResult.status === "fulfilled") {
244
- const parsed = parsePayload(logsResult.value, lastSeenCount.current);
245
- setLines((prev) => {
246
- // Deduplicate by keeping only lines we haven't seen (by count).
247
- // Because the API returns the full history each time, we keep only
248
- // the tail beyond what we last displayed.
249
- const combined = parsed.length >= prev.length ? parsed : prev;
250
- const trimmed = combined.slice(-MAX_LINES);
251
- lastSeenCount.current = trimmed.length;
252
- return trimmed;
253
- });
254
- }
255
- else if (logsResult.status === "rejected") {
256
- const err = logsResult.reason;
257
- setFetchError(err instanceof Error ? err.message : String(err));
258
- }
259
- };
260
- void poll();
261
- const id = setInterval(() => void poll(), POLL_INTERVAL_MS);
262
- return () => {
263
- cancelled = true;
264
- clearInterval(id);
265
- };
266
- }, [client, resourceId, resourceKind]);
267
- // ── Filtered view ───────────────────────────────────────────────────────────
268
- const visibleLines = useMemo(() => {
269
- if (!filterActive || filterText === "")
270
- return lines;
271
- const needle = filterText.toLowerCase();
272
- return lines.filter((l) => l.text.toLowerCase().includes(needle));
273
- }, [lines, filterActive, filterText]);
274
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(HeaderBar, { resourceId: resourceId, resourceKind: resourceKind, meta: meta, clock: clock, fetchError: fetchError, filterActive: filterActive, filterText: filterText }), _jsx(Box, { flexDirection: "column", paddingX: 1, children: visibleLines.length === 0 ? (_jsx(Text, { dimColor: true, children: " (waiting for logs\u2026)" })) : (visibleLines.map((line) => (_jsxs(Box, { children: [_jsxs(Text, { dimColor: true, children: [line.timestamp, " "] }), _jsx(Text, { color: streamColor(line.stream), bold: true, children: line.stream.padEnd(6) }), _jsx(Text, { children: " " }), _jsx(Text, { color: streamColor(line.stream), children: line.text })] }, line.seq)))) }), _jsx(Box, { paddingX: 1, marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ["press ", _jsx(Text, { bold: true, children: "q" }), " to quit", " · ", _jsx(Text, { bold: true, children: "/" }), " to filter", " · ", "poll every ", POLL_INTERVAL_MS / 1_000, "s"] }) })] }));
275
- };
276
- //# sourceMappingURL=logs.js.map