@miosa/cli 0.2.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 (294) hide show
  1. package/README.md +327 -0
  2. package/dist/bin/miosa.d.ts +3 -0
  3. package/dist/bin/miosa.d.ts.map +1 -0
  4. package/dist/bin/miosa.js +139 -0
  5. package/dist/bin/miosa.js.map +1 -0
  6. package/dist/client.d.ts +74 -0
  7. package/dist/client.d.ts.map +1 -0
  8. package/dist/client.js +523 -0
  9. package/dist/client.js.map +1 -0
  10. package/dist/commands/agent.d.ts +18 -0
  11. package/dist/commands/agent.d.ts.map +1 -0
  12. package/dist/commands/agent.js +468 -0
  13. package/dist/commands/agent.js.map +1 -0
  14. package/dist/commands/alerts.d.ts +3 -0
  15. package/dist/commands/alerts.d.ts.map +1 -0
  16. package/dist/commands/alerts.js +41 -0
  17. package/dist/commands/alerts.js.map +1 -0
  18. package/dist/commands/api-keys.d.ts +3 -0
  19. package/dist/commands/api-keys.d.ts.map +1 -0
  20. package/dist/commands/api-keys.js +119 -0
  21. package/dist/commands/api-keys.js.map +1 -0
  22. package/dist/commands/api-resource.d.ts +20 -0
  23. package/dist/commands/api-resource.d.ts.map +1 -0
  24. package/dist/commands/api-resource.js +120 -0
  25. package/dist/commands/api-resource.js.map +1 -0
  26. package/dist/commands/apps.d.ts +3 -0
  27. package/dist/commands/apps.d.ts.map +1 -0
  28. package/dist/commands/apps.js +218 -0
  29. package/dist/commands/apps.js.map +1 -0
  30. package/dist/commands/audit.d.ts +3 -0
  31. package/dist/commands/audit.d.ts.map +1 -0
  32. package/dist/commands/audit.js +25 -0
  33. package/dist/commands/audit.js.map +1 -0
  34. package/dist/commands/auth.d.ts +3 -0
  35. package/dist/commands/auth.d.ts.map +1 -0
  36. package/dist/commands/auth.js +363 -0
  37. package/dist/commands/auth.js.map +1 -0
  38. package/dist/commands/backups.d.ts +3 -0
  39. package/dist/commands/backups.d.ts.map +1 -0
  40. package/dist/commands/backups.js +23 -0
  41. package/dist/commands/backups.js.map +1 -0
  42. package/dist/commands/checkpoints.d.ts +3 -0
  43. package/dist/commands/checkpoints.d.ts.map +1 -0
  44. package/dist/commands/checkpoints.js +33 -0
  45. package/dist/commands/checkpoints.js.map +1 -0
  46. package/dist/commands/computers.d.ts +3 -0
  47. package/dist/commands/computers.d.ts.map +1 -0
  48. package/dist/commands/computers.js +118 -0
  49. package/dist/commands/computers.js.map +1 -0
  50. package/dist/commands/config.d.ts +3 -0
  51. package/dist/commands/config.d.ts.map +1 -0
  52. package/dist/commands/config.js +114 -0
  53. package/dist/commands/config.js.map +1 -0
  54. package/dist/commands/connect.d.ts +3 -0
  55. package/dist/commands/connect.d.ts.map +1 -0
  56. package/dist/commands/connect.js +96 -0
  57. package/dist/commands/connect.js.map +1 -0
  58. package/dist/commands/containers.d.ts +3 -0
  59. package/dist/commands/containers.d.ts.map +1 -0
  60. package/dist/commands/containers.js +20 -0
  61. package/dist/commands/containers.js.map +1 -0
  62. package/dist/commands/cp.d.ts +3 -0
  63. package/dist/commands/cp.d.ts.map +1 -0
  64. package/dist/commands/cp.js +102 -0
  65. package/dist/commands/cp.js.map +1 -0
  66. package/dist/commands/cron.d.ts +3 -0
  67. package/dist/commands/cron.d.ts.map +1 -0
  68. package/dist/commands/cron.js +65 -0
  69. package/dist/commands/cron.js.map +1 -0
  70. package/dist/commands/databases.d.ts +3 -0
  71. package/dist/commands/databases.d.ts.map +1 -0
  72. package/dist/commands/databases.js +222 -0
  73. package/dist/commands/databases.js.map +1 -0
  74. package/dist/commands/db.d.ts +3 -0
  75. package/dist/commands/db.d.ts.map +1 -0
  76. package/dist/commands/db.js +174 -0
  77. package/dist/commands/db.js.map +1 -0
  78. package/dist/commands/deploy.d.ts +3 -0
  79. package/dist/commands/deploy.d.ts.map +1 -0
  80. package/dist/commands/deploy.js +579 -0
  81. package/dist/commands/deploy.js.map +1 -0
  82. package/dist/commands/desktop.d.ts +3 -0
  83. package/dist/commands/desktop.d.ts.map +1 -0
  84. package/dist/commands/desktop.js +276 -0
  85. package/dist/commands/desktop.js.map +1 -0
  86. package/dist/commands/dev.d.ts +3 -0
  87. package/dist/commands/dev.d.ts.map +1 -0
  88. package/dist/commands/dev.js +246 -0
  89. package/dist/commands/dev.js.map +1 -0
  90. package/dist/commands/doctor.d.ts +3 -0
  91. package/dist/commands/doctor.d.ts.map +1 -0
  92. package/dist/commands/doctor.js +241 -0
  93. package/dist/commands/doctor.js.map +1 -0
  94. package/dist/commands/domains.d.ts +3 -0
  95. package/dist/commands/domains.d.ts.map +1 -0
  96. package/dist/commands/domains.js +31 -0
  97. package/dist/commands/domains.js.map +1 -0
  98. package/dist/commands/enterprise-util.d.ts +37 -0
  99. package/dist/commands/enterprise-util.d.ts.map +1 -0
  100. package/dist/commands/enterprise-util.js +185 -0
  101. package/dist/commands/enterprise-util.js.map +1 -0
  102. package/dist/commands/exec.d.ts +3 -0
  103. package/dist/commands/exec.d.ts.map +1 -0
  104. package/dist/commands/exec.js +68 -0
  105. package/dist/commands/exec.js.map +1 -0
  106. package/dist/commands/functions.d.ts +3 -0
  107. package/dist/commands/functions.d.ts.map +1 -0
  108. package/dist/commands/functions.js +47 -0
  109. package/dist/commands/functions.js.map +1 -0
  110. package/dist/commands/gha-runners.d.ts +3 -0
  111. package/dist/commands/gha-runners.d.ts.map +1 -0
  112. package/dist/commands/gha-runners.js +33 -0
  113. package/dist/commands/gha-runners.js.map +1 -0
  114. package/dist/commands/groups.d.ts +3 -0
  115. package/dist/commands/groups.d.ts.map +1 -0
  116. package/dist/commands/groups.js +38 -0
  117. package/dist/commands/groups.js.map +1 -0
  118. package/dist/commands/host.d.ts +3 -0
  119. package/dist/commands/host.d.ts.map +1 -0
  120. package/dist/commands/host.js +74 -0
  121. package/dist/commands/host.js.map +1 -0
  122. package/dist/commands/hosts.d.ts +3 -0
  123. package/dist/commands/hosts.d.ts.map +1 -0
  124. package/dist/commands/hosts.js +90 -0
  125. package/dist/commands/hosts.js.map +1 -0
  126. package/dist/commands/link.d.ts +8 -0
  127. package/dist/commands/link.d.ts.map +1 -0
  128. package/dist/commands/link.js +124 -0
  129. package/dist/commands/link.js.map +1 -0
  130. package/dist/commands/login.d.ts +3 -0
  131. package/dist/commands/login.d.ts.map +1 -0
  132. package/dist/commands/login.js +172 -0
  133. package/dist/commands/login.js.map +1 -0
  134. package/dist/commands/logout.d.ts +3 -0
  135. package/dist/commands/logout.d.ts.map +1 -0
  136. package/dist/commands/logout.js +17 -0
  137. package/dist/commands/logout.js.map +1 -0
  138. package/dist/commands/logs.d.ts +3 -0
  139. package/dist/commands/logs.d.ts.map +1 -0
  140. package/dist/commands/logs.js +94 -0
  141. package/dist/commands/logs.js.map +1 -0
  142. package/dist/commands/ls.d.ts +3 -0
  143. package/dist/commands/ls.d.ts.map +1 -0
  144. package/dist/commands/ls.js +67 -0
  145. package/dist/commands/ls.js.map +1 -0
  146. package/dist/commands/machines.d.ts +3 -0
  147. package/dist/commands/machines.d.ts.map +1 -0
  148. package/dist/commands/machines.js +29 -0
  149. package/dist/commands/machines.js.map +1 -0
  150. package/dist/commands/mcp.d.ts +21 -0
  151. package/dist/commands/mcp.d.ts.map +1 -0
  152. package/dist/commands/mcp.js +1021 -0
  153. package/dist/commands/mcp.js.map +1 -0
  154. package/dist/commands/meshes.d.ts +3 -0
  155. package/dist/commands/meshes.d.ts.map +1 -0
  156. package/dist/commands/meshes.js +27 -0
  157. package/dist/commands/meshes.js.map +1 -0
  158. package/dist/commands/network-policy.d.ts +3 -0
  159. package/dist/commands/network-policy.d.ts.map +1 -0
  160. package/dist/commands/network-policy.js +40 -0
  161. package/dist/commands/network-policy.js.map +1 -0
  162. package/dist/commands/project.d.ts +4 -0
  163. package/dist/commands/project.d.ts.map +1 -0
  164. package/dist/commands/project.js +25 -0
  165. package/dist/commands/project.js.map +1 -0
  166. package/dist/commands/pull.d.ts +3 -0
  167. package/dist/commands/pull.d.ts.map +1 -0
  168. package/dist/commands/pull.js +155 -0
  169. package/dist/commands/pull.js.map +1 -0
  170. package/dist/commands/regions.d.ts +3 -0
  171. package/dist/commands/regions.d.ts.map +1 -0
  172. package/dist/commands/regions.js +67 -0
  173. package/dist/commands/regions.js.map +1 -0
  174. package/dist/commands/releases.d.ts +3 -0
  175. package/dist/commands/releases.d.ts.map +1 -0
  176. package/dist/commands/releases.js +176 -0
  177. package/dist/commands/releases.js.map +1 -0
  178. package/dist/commands/rm.d.ts +3 -0
  179. package/dist/commands/rm.d.ts.map +1 -0
  180. package/dist/commands/rm.js +42 -0
  181. package/dist/commands/rm.js.map +1 -0
  182. package/dist/commands/run.d.ts +3 -0
  183. package/dist/commands/run.d.ts.map +1 -0
  184. package/dist/commands/run.js +131 -0
  185. package/dist/commands/run.js.map +1 -0
  186. package/dist/commands/sandbox.d.ts +3 -0
  187. package/dist/commands/sandbox.d.ts.map +1 -0
  188. package/dist/commands/sandbox.js +352 -0
  189. package/dist/commands/sandbox.js.map +1 -0
  190. package/dist/commands/schedules.d.ts +3 -0
  191. package/dist/commands/schedules.d.ts.map +1 -0
  192. package/dist/commands/schedules.js +37 -0
  193. package/dist/commands/schedules.js.map +1 -0
  194. package/dist/commands/secrets.d.ts +3 -0
  195. package/dist/commands/secrets.d.ts.map +1 -0
  196. package/dist/commands/secrets.js +194 -0
  197. package/dist/commands/secrets.js.map +1 -0
  198. package/dist/commands/services.d.ts +3 -0
  199. package/dist/commands/services.d.ts.map +1 -0
  200. package/dist/commands/services.js +70 -0
  201. package/dist/commands/services.js.map +1 -0
  202. package/dist/commands/shell.d.ts +16 -0
  203. package/dist/commands/shell.d.ts.map +1 -0
  204. package/dist/commands/shell.js +527 -0
  205. package/dist/commands/shell.js.map +1 -0
  206. package/dist/commands/snapshot.d.ts +10 -0
  207. package/dist/commands/snapshot.d.ts.map +1 -0
  208. package/dist/commands/snapshot.js +181 -0
  209. package/dist/commands/snapshot.js.map +1 -0
  210. package/dist/commands/ssh.d.ts +3 -0
  211. package/dist/commands/ssh.d.ts.map +1 -0
  212. package/dist/commands/ssh.js +37 -0
  213. package/dist/commands/ssh.js.map +1 -0
  214. package/dist/commands/status.d.ts +3 -0
  215. package/dist/commands/status.d.ts.map +1 -0
  216. package/dist/commands/status.js +300 -0
  217. package/dist/commands/status.js.map +1 -0
  218. package/dist/commands/storage.d.ts +3 -0
  219. package/dist/commands/storage.d.ts.map +1 -0
  220. package/dist/commands/storage.js +180 -0
  221. package/dist/commands/storage.js.map +1 -0
  222. package/dist/commands/tenant.d.ts +3 -0
  223. package/dist/commands/tenant.d.ts.map +1 -0
  224. package/dist/commands/tenant.js +87 -0
  225. package/dist/commands/tenant.js.map +1 -0
  226. package/dist/commands/tunnel.d.ts +3 -0
  227. package/dist/commands/tunnel.d.ts.map +1 -0
  228. package/dist/commands/tunnel.js +418 -0
  229. package/dist/commands/tunnel.js.map +1 -0
  230. package/dist/commands/up.d.ts +14 -0
  231. package/dist/commands/up.d.ts.map +1 -0
  232. package/dist/commands/up.js +703 -0
  233. package/dist/commands/up.js.map +1 -0
  234. package/dist/commands/util.d.ts +19 -0
  235. package/dist/commands/util.d.ts.map +1 -0
  236. package/dist/commands/util.js +116 -0
  237. package/dist/commands/util.js.map +1 -0
  238. package/dist/commands/volumes.d.ts +3 -0
  239. package/dist/commands/volumes.d.ts.map +1 -0
  240. package/dist/commands/volumes.js +196 -0
  241. package/dist/commands/volumes.js.map +1 -0
  242. package/dist/commands/watch.d.ts +3 -0
  243. package/dist/commands/watch.d.ts.map +1 -0
  244. package/dist/commands/watch.js +398 -0
  245. package/dist/commands/watch.js.map +1 -0
  246. package/dist/commands/webhooks.d.ts +3 -0
  247. package/dist/commands/webhooks.d.ts.map +1 -0
  248. package/dist/commands/webhooks.js +23 -0
  249. package/dist/commands/webhooks.js.map +1 -0
  250. package/dist/commands/whoami.d.ts +3 -0
  251. package/dist/commands/whoami.d.ts.map +1 -0
  252. package/dist/commands/whoami.js +84 -0
  253. package/dist/commands/whoami.js.map +1 -0
  254. package/dist/commands/workspaces.d.ts +3 -0
  255. package/dist/commands/workspaces.d.ts.map +1 -0
  256. package/dist/commands/workspaces.js +87 -0
  257. package/dist/commands/workspaces.js.map +1 -0
  258. package/dist/config.d.ts +28 -0
  259. package/dist/config.d.ts.map +1 -0
  260. package/dist/config.js +129 -0
  261. package/dist/config.js.map +1 -0
  262. package/dist/errors.d.ts +22 -0
  263. package/dist/errors.d.ts.map +1 -0
  264. package/dist/errors.js +62 -0
  265. package/dist/errors.js.map +1 -0
  266. package/dist/framework-detector.d.ts +22 -0
  267. package/dist/framework-detector.d.ts.map +1 -0
  268. package/dist/framework-detector.js +373 -0
  269. package/dist/framework-detector.js.map +1 -0
  270. package/dist/pty/raw-mode.d.ts +7 -0
  271. package/dist/pty/raw-mode.d.ts.map +1 -0
  272. package/dist/pty/raw-mode.js +22 -0
  273. package/dist/pty/raw-mode.js.map +1 -0
  274. package/dist/pty/ws-pty-client.d.ts +12 -0
  275. package/dist/pty/ws-pty-client.d.ts.map +1 -0
  276. package/dist/pty/ws-pty-client.js +69 -0
  277. package/dist/pty/ws-pty-client.js.map +1 -0
  278. package/dist/types.d.ts +326 -0
  279. package/dist/types.d.ts.map +1 -0
  280. package/dist/types.js +16 -0
  281. package/dist/types.js.map +1 -0
  282. package/dist/ui/progress.d.ts +10 -0
  283. package/dist/ui/progress.d.ts.map +1 -0
  284. package/dist/ui/progress.js +36 -0
  285. package/dist/ui/progress.js.map +1 -0
  286. package/dist/ui/spinner.d.ts +4 -0
  287. package/dist/ui/spinner.d.ts.map +1 -0
  288. package/dist/ui/spinner.js +7 -0
  289. package/dist/ui/spinner.js.map +1 -0
  290. package/dist/ui/table.d.ts +8 -0
  291. package/dist/ui/table.d.ts.map +1 -0
  292. package/dist/ui/table.js +46 -0
  293. package/dist/ui/table.js.map +1 -0
  294. package/package.json +53 -0
package/dist/client.js ADDED
@@ -0,0 +1,523 @@
1
+ import { request } from "undici";
2
+ import { AuthError, mapHttpError, NetworkError } from "./errors.js";
3
+ export class MiosaClient {
4
+ endpoint;
5
+ apiKey;
6
+ constructor(config) {
7
+ if (!config.api_key) {
8
+ throw new AuthError("You are not logged in. Run: miosa auth login", "Install with `brew install Miosa-osa/tap/miosa`, then run `miosa auth login`.");
9
+ }
10
+ this.endpoint = config.endpoint.replace(/\/$/, "");
11
+ this.apiKey = config.api_key;
12
+ }
13
+ headers() {
14
+ return {
15
+ Authorization: `Bearer ${this.apiKey}`,
16
+ "Content-Type": "application/json",
17
+ Accept: "application/json",
18
+ "User-Agent": `@miosa/cli/0.1.0`,
19
+ };
20
+ }
21
+ url(path) {
22
+ return `${this.endpoint}${path}`;
23
+ }
24
+ async parseError(res) {
25
+ const rawBody = await res.body.text();
26
+ let body = {};
27
+ try {
28
+ body = JSON.parse(rawBody);
29
+ }
30
+ catch {
31
+ body = { message: rawBody || `HTTP ${res.statusCode}` };
32
+ }
33
+ throw mapHttpError(res.statusCode, body, rawBody);
34
+ }
35
+ async get(path) {
36
+ let res;
37
+ try {
38
+ res = await request(this.url(path), {
39
+ method: "GET",
40
+ headers: this.headers(),
41
+ });
42
+ }
43
+ catch (err) {
44
+ throw new NetworkError(`Network error: ${err instanceof Error ? err.message : String(err)}`, "Check your connection and endpoint: miosa status");
45
+ }
46
+ if (res.statusCode >= 400)
47
+ return this.parseError(res);
48
+ return res.body.json();
49
+ }
50
+ async post(path, body) {
51
+ let res;
52
+ try {
53
+ res = await request(this.url(path), {
54
+ method: "POST",
55
+ headers: this.headers(),
56
+ body: body !== undefined ? JSON.stringify(body) : undefined,
57
+ });
58
+ }
59
+ catch (err) {
60
+ throw new NetworkError(`Network error: ${err instanceof Error ? err.message : String(err)}`, "Check your connection and endpoint: miosa status");
61
+ }
62
+ if (res.statusCode >= 400)
63
+ return this.parseError(res);
64
+ return res.body.json();
65
+ }
66
+ async delete(path) {
67
+ let res;
68
+ try {
69
+ res = await request(this.url(path), {
70
+ method: "DELETE",
71
+ headers: this.headers(),
72
+ });
73
+ }
74
+ catch (err) {
75
+ throw new NetworkError(`Network error: ${err instanceof Error ? err.message : String(err)}`);
76
+ }
77
+ if (res.statusCode >= 400)
78
+ return this.parseError(res);
79
+ if (res.statusCode === 204)
80
+ return undefined;
81
+ return res.body.json();
82
+ }
83
+ /** Generic GET for command groups that map directly to stable API routes. */
84
+ async apiGet(path) {
85
+ return this.get(path);
86
+ }
87
+ /** Generic POST for command groups that map directly to stable API routes. */
88
+ async apiPost(path, body) {
89
+ return this.post(path, body);
90
+ }
91
+ /** Generic PUT for command groups that map directly to stable API routes. */
92
+ async apiPut(path, body) {
93
+ let res;
94
+ try {
95
+ res = await request(this.url(path), {
96
+ method: "PUT",
97
+ headers: this.headers(),
98
+ body: body !== undefined ? JSON.stringify(body) : undefined,
99
+ });
100
+ }
101
+ catch (err) {
102
+ throw new NetworkError(`Network error: ${err instanceof Error ? err.message : String(err)}`, "Check your connection and endpoint: miosa status");
103
+ }
104
+ if (res.statusCode >= 400)
105
+ return this.parseError(res);
106
+ return res.body.json();
107
+ }
108
+ /** Generic PATCH for command groups that map directly to stable API routes. */
109
+ async apiPatch(path, body) {
110
+ let res;
111
+ try {
112
+ res = await request(this.url(path), {
113
+ method: "PATCH",
114
+ headers: this.headers(),
115
+ body: body !== undefined ? JSON.stringify(body) : undefined,
116
+ });
117
+ }
118
+ catch (err) {
119
+ throw new NetworkError(`Network error: ${err instanceof Error ? err.message : String(err)}`, "Check your connection and endpoint: miosa status");
120
+ }
121
+ if (res.statusCode >= 400)
122
+ return this.parseError(res);
123
+ return res.body.json();
124
+ }
125
+ /** Generic DELETE for command groups that map directly to stable API routes. */
126
+ async apiDelete(path) {
127
+ return this.delete(path);
128
+ }
129
+ // --- Tenant ---
130
+ async getTenant() {
131
+ return this.get("/api/v1/platform/tenants/current").then((r) => r.data);
132
+ }
133
+ // --- Hosts ---
134
+ async listHosts() {
135
+ return this.get("/api/v1/opencomputers/hosts").then((r) => r.data);
136
+ }
137
+ async getHost(idOrName) {
138
+ // Try by ID first; if 404 fallback to name search
139
+ try {
140
+ return await this.get(`/api/v1/opencomputers/hosts/${encodeURIComponent(idOrName)}`).then((r) => r.data);
141
+ }
142
+ catch {
143
+ // Fallback: search by name
144
+ const hosts = await this.listHosts();
145
+ const match = hosts.find((h) => h.name === idOrName || h.id === idOrName);
146
+ if (!match) {
147
+ const { UserError } = await import("./errors.js");
148
+ throw new UserError(`Host not found: ${idOrName}`);
149
+ }
150
+ return match;
151
+ }
152
+ }
153
+ async createHost(params) {
154
+ return this.post("/api/v1/opencomputers/hosts", params).then((r) => r.data);
155
+ }
156
+ // --- Terminal ---
157
+ async getTerminalTicket(hostId) {
158
+ return this.post(`/api/v1/opencomputers/hosts/${hostId}/terminal/ticket`).then((r) => r.data);
159
+ }
160
+ // --- Jobs ---
161
+ async createJob(hostId, params) {
162
+ return this.post(`/api/v1/opencomputers/hosts/${hostId}/jobs`, params).then((r) => r.data);
163
+ }
164
+ /** Returns a raw Response for SSE streaming */
165
+ async streamJob(hostId, params) {
166
+ let res;
167
+ try {
168
+ res = await request(this.url(`/api/v1/opencomputers/hosts/${hostId}/jobs`), {
169
+ method: "POST",
170
+ headers: {
171
+ ...this.headers(),
172
+ Accept: "text/event-stream",
173
+ },
174
+ body: JSON.stringify({ ...params, stream: true }),
175
+ });
176
+ }
177
+ catch (err) {
178
+ throw new NetworkError(`Network error: ${err instanceof Error ? err.message : String(err)}`);
179
+ }
180
+ if (res.statusCode >= 400)
181
+ return this.parseError(res);
182
+ return res;
183
+ }
184
+ // --- Filesystem ---
185
+ async listFs(hostId, path) {
186
+ return this.get(`/api/v1/opencomputers/hosts/${hostId}/fs?path=${encodeURIComponent(path)}`).then((r) => r.data);
187
+ }
188
+ async downloadFile(hostId, remotePath) {
189
+ let res;
190
+ try {
191
+ res = await request(this.url(`/api/v1/opencomputers/hosts/${hostId}/fs/content?path=${encodeURIComponent(remotePath)}`), { method: "GET", headers: this.headers() });
192
+ }
193
+ catch (err) {
194
+ throw new NetworkError(`Network error: ${err instanceof Error ? err.message : String(err)}`);
195
+ }
196
+ if (res.statusCode >= 400)
197
+ return this.parseError(res);
198
+ return res;
199
+ }
200
+ async uploadFile(hostId, remotePath, data, filename) {
201
+ const boundary = `----MiosaUpload${Date.now()}`;
202
+ const header = `--${boundary}\r\n` +
203
+ `Content-Disposition: form-data; name="file"; filename="${filename}"\r\n` +
204
+ `Content-Type: application/octet-stream\r\n\r\n`;
205
+ const footer = `\r\n--${boundary}--\r\n`;
206
+ const body = Buffer.concat([
207
+ Buffer.from(header),
208
+ data,
209
+ Buffer.from(footer),
210
+ ]);
211
+ let res;
212
+ try {
213
+ res = await request(this.url(`/api/v1/opencomputers/hosts/${hostId}/fs/content`), {
214
+ method: "POST",
215
+ headers: {
216
+ Authorization: `Bearer ${this.apiKey}`,
217
+ "Content-Type": `multipart/form-data; boundary=${boundary}`,
218
+ "X-Remote-Path": remotePath,
219
+ "User-Agent": `@miosa/cli/0.1.0`,
220
+ },
221
+ body,
222
+ });
223
+ }
224
+ catch (err) {
225
+ throw new NetworkError(`Network error: ${err instanceof Error ? err.message : String(err)}`);
226
+ }
227
+ if (res.statusCode >= 400)
228
+ await this.parseError(res);
229
+ await res.body.dump();
230
+ }
231
+ async deleteFs(hostId, path, recursive) {
232
+ await this.delete(`/api/v1/opencomputers/hosts/${hostId}/fs?path=${encodeURIComponent(path)}&recursive=${recursive}`);
233
+ }
234
+ // --- Computers (Firecracker microVMs) filesystem ---
235
+ async computerListFiles(computerId, remotePath) {
236
+ return this.get(`/api/v1/computers/${computerId}/files?path=${encodeURIComponent(remotePath)}`).then((r) => r.data);
237
+ }
238
+ async computerWriteFile(computerId, remotePath, content) {
239
+ const body = content instanceof Buffer ? content.toString("base64") : content;
240
+ await this.post(`/api/v1/computers/${computerId}/files/write`, {
241
+ path: remotePath,
242
+ content: body,
243
+ encoding: content instanceof Buffer ? "base64" : "utf8",
244
+ });
245
+ }
246
+ async computerDownloadFile(computerId, remotePath) {
247
+ let res;
248
+ try {
249
+ res = await request(this.url(`/api/v1/computers/${computerId}/files/download?path=${encodeURIComponent(remotePath)}`), { method: "GET", headers: this.headers() });
250
+ }
251
+ catch (err) {
252
+ throw new NetworkError(`Network error: ${err instanceof Error ? err.message : String(err)}`);
253
+ }
254
+ if (res.statusCode >= 400)
255
+ return this.parseError(res);
256
+ return res;
257
+ }
258
+ async computerUploadFile(computerId, remotePath, data, filename) {
259
+ const boundary = `----MiosaComputerUpload${Date.now()}`;
260
+ const header = `--${boundary}\r\n` +
261
+ `Content-Disposition: form-data; name="file"; filename="${filename}"\r\n` +
262
+ `Content-Type: application/octet-stream\r\n\r\n`;
263
+ const footer = `\r\n--${boundary}--\r\n`;
264
+ const body = Buffer.concat([
265
+ Buffer.from(header),
266
+ data,
267
+ Buffer.from(footer),
268
+ ]);
269
+ let res;
270
+ try {
271
+ res = await request(this.url(`/api/v1/computers/${computerId}/files/upload`), {
272
+ method: "POST",
273
+ headers: {
274
+ Authorization: `Bearer ${this.apiKey}`,
275
+ "Content-Type": `multipart/form-data; boundary=${boundary}`,
276
+ "X-Remote-Path": remotePath,
277
+ "User-Agent": `@miosa/cli/0.1.0`,
278
+ },
279
+ body,
280
+ });
281
+ }
282
+ catch (err) {
283
+ throw new NetworkError(`Network error: ${err instanceof Error ? err.message : String(err)}`);
284
+ }
285
+ if (res.statusCode >= 400)
286
+ await this.parseError(res);
287
+ await res.body.dump();
288
+ }
289
+ async computerMkdir(computerId, remotePath) {
290
+ await this.post(`/api/v1/computers/${computerId}/files/mkdir`, {
291
+ path: remotePath,
292
+ });
293
+ }
294
+ async computerDeleteFile(computerId, remotePath) {
295
+ await this.delete(`/api/v1/computers/${computerId}/files?path=${encodeURIComponent(remotePath)}`);
296
+ }
297
+ async computerStat(computerId, remotePath) {
298
+ return this.post(`/api/v1/computers/${computerId}/files/stat`, { path: remotePath }).then((r) => r.data);
299
+ }
300
+ // --- Computers exec ---
301
+ async computerExec(computerId, command, opts) {
302
+ const path = opts?.language === "python"
303
+ ? `/api/v1/computers/${computerId}/exec/python`
304
+ : `/api/v1/computers/${computerId}/exec`;
305
+ let res;
306
+ try {
307
+ res = await request(this.url(path), {
308
+ method: "POST",
309
+ headers: {
310
+ ...this.headers(),
311
+ Accept: "text/event-stream",
312
+ },
313
+ body: JSON.stringify({ command }),
314
+ });
315
+ }
316
+ catch (err) {
317
+ throw new NetworkError(`Network error: ${err instanceof Error ? err.message : String(err)}`);
318
+ }
319
+ if (res.statusCode >= 400)
320
+ return this.parseError(res);
321
+ return res;
322
+ }
323
+ // --- Tunnels ---
324
+ async listTunnels(hostId) {
325
+ return this.get(`/api/v1/opencomputers/hosts/${hostId}/tunnels`).then((r) => r.data);
326
+ }
327
+ async createTunnel(hostId, params) {
328
+ return this.post(`/api/v1/opencomputers/hosts/${hostId}/tunnels`, params).then((r) => r.data);
329
+ }
330
+ async closeTunnel(hostId, slug) {
331
+ await this.delete(`/api/v1/opencomputers/hosts/${hostId}/tunnels/${slug}`);
332
+ }
333
+ // --- Agent ---
334
+ async dispatchAgent(hostId, params) {
335
+ let res;
336
+ try {
337
+ res = await request(this.url(`/api/v1/opencomputers/hosts/${hostId}/agent/dispatch`), {
338
+ method: "POST",
339
+ headers: {
340
+ ...this.headers(),
341
+ Accept: "text/event-stream",
342
+ },
343
+ body: JSON.stringify(params),
344
+ });
345
+ }
346
+ catch (err) {
347
+ throw new NetworkError(`Network error: ${err instanceof Error ? err.message : String(err)}`);
348
+ }
349
+ if (res.statusCode >= 400)
350
+ return this.parseError(res);
351
+ return res;
352
+ }
353
+ // --- Deployments ---
354
+ async listDeployments() {
355
+ return this.get("/api/v1/deployments").then((r) => r.data);
356
+ }
357
+ async getDeployment(id) {
358
+ return this.get(`/api/v1/deployments/${encodeURIComponent(id)}`).then((r) => r.data);
359
+ }
360
+ async createDeployment(params) {
361
+ return this.post("/api/v1/deployments", params);
362
+ }
363
+ async deleteDeployment(id) {
364
+ return this.delete(`/api/v1/deployments/${encodeURIComponent(id)}`);
365
+ }
366
+ async redeployDeployment(id) {
367
+ return this.post(`/api/v1/deployments/${encodeURIComponent(id)}/redeploy`).then((r) => r.data);
368
+ }
369
+ async listBuilds(id) {
370
+ return this.get(`/api/v1/deployments/${encodeURIComponent(id)}/builds`).then((r) => r.data);
371
+ }
372
+ async getBuild(id, bid) {
373
+ return this.get(`/api/v1/deployments/${encodeURIComponent(id)}/builds/${encodeURIComponent(bid)}`).then((r) => r.data);
374
+ }
375
+ /** Returns a raw SSE Response for deployment log streaming */
376
+ async streamDeploymentLogs(id) {
377
+ let res;
378
+ try {
379
+ res = await request(this.url(`/api/v1/deployments/${encodeURIComponent(id)}/logs`), {
380
+ method: "GET",
381
+ headers: {
382
+ ...this.headers(),
383
+ Accept: "text/event-stream",
384
+ },
385
+ });
386
+ }
387
+ catch (err) {
388
+ throw new NetworkError(`Network error: ${err instanceof Error ? err.message : String(err)}`);
389
+ }
390
+ if (res.statusCode >= 400)
391
+ return this.parseError(res);
392
+ return res;
393
+ }
394
+ async getDeploymentEnv(id) {
395
+ return this.get(`/api/v1/deployments/${encodeURIComponent(id)}/env`).then((r) => r.data);
396
+ }
397
+ async setDeploymentEnv(id, env) {
398
+ return this.post(`/api/v1/deployments/${encodeURIComponent(id)}/env`, { env }).then((r) => r.data);
399
+ }
400
+ // --- Watch ---
401
+ async watchEvents(hostId) {
402
+ let res;
403
+ try {
404
+ res = await request(this.url(`/api/v1/opencomputers/hosts/${hostId}/events`), {
405
+ method: "GET",
406
+ headers: {
407
+ ...this.headers(),
408
+ Accept: "text/event-stream",
409
+ },
410
+ });
411
+ }
412
+ catch (err) {
413
+ throw new NetworkError(`Network error: ${err instanceof Error ? err.message : String(err)}`);
414
+ }
415
+ if (res.statusCode >= 400)
416
+ return this.parseError(res);
417
+ return res;
418
+ }
419
+ /** Open an SSE event stream for a Computer (Firecracker microVM). */
420
+ async watchComputerEvents(computerId) {
421
+ let res;
422
+ try {
423
+ res = await request(this.url(`/api/v1/computers/${computerId}/events`), {
424
+ method: "GET",
425
+ headers: {
426
+ ...this.headers(),
427
+ Accept: "text/event-stream",
428
+ },
429
+ });
430
+ }
431
+ catch (err) {
432
+ throw new NetworkError(`Network error: ${err instanceof Error ? err.message : String(err)}`);
433
+ }
434
+ if (res.statusCode >= 400)
435
+ return this.parseError(res);
436
+ return res;
437
+ }
438
+ }
439
+ // SSE parser — consumes undici body stream, yields parsed events
440
+ export async function* parseSse(body) {
441
+ let buffer = "";
442
+ for await (const chunk of body) {
443
+ buffer += chunk.toString();
444
+ const lines = buffer.split("\n");
445
+ // Keep last potentially incomplete line
446
+ buffer = lines.pop() ?? "";
447
+ let eventType = "";
448
+ let dataLines = [];
449
+ for (const line of lines) {
450
+ if (line.startsWith("event:")) {
451
+ eventType = line.slice(6).trim();
452
+ }
453
+ else if (line.startsWith("data:")) {
454
+ dataLines.push(line.slice(5).trim());
455
+ }
456
+ else if (line === "") {
457
+ // Dispatch event
458
+ if (dataLines.length > 0) {
459
+ const raw = dataLines.join("\n");
460
+ yield parseSseEvent(eventType, raw);
461
+ }
462
+ eventType = "";
463
+ dataLines = [];
464
+ }
465
+ }
466
+ }
467
+ }
468
+ function parseSseEvent(eventType, raw) {
469
+ let parsed;
470
+ try {
471
+ parsed = JSON.parse(raw);
472
+ }
473
+ catch {
474
+ return { type: "unknown", raw };
475
+ }
476
+ const data = parsed;
477
+ // Normalize event type from field or explicit event: line
478
+ const type = eventType || (typeof data["type"] === "string" ? data["type"] : "unknown");
479
+ switch (type) {
480
+ case "stdout":
481
+ return {
482
+ type: "stdout",
483
+ data: String(data["data"] ?? data["output"] ?? ""),
484
+ };
485
+ case "stderr":
486
+ return {
487
+ type: "stderr",
488
+ data: String(data["data"] ?? data["output"] ?? ""),
489
+ };
490
+ case "exit":
491
+ return {
492
+ type: "exit",
493
+ exit_code: Number(data["exit_code"] ?? data["code"] ?? 0),
494
+ };
495
+ case "error":
496
+ return { type: "error", message: String(data["message"] ?? raw) };
497
+ case "thought":
498
+ return {
499
+ type: "thought",
500
+ content: String(data["content"] ?? data["thought"] ?? ""),
501
+ };
502
+ case "tool_call":
503
+ return {
504
+ type: "tool_call",
505
+ tool: String(data["tool"] ?? ""),
506
+ input: data["input"],
507
+ };
508
+ case "tool_result":
509
+ return {
510
+ type: "tool_result",
511
+ tool: String(data["tool"] ?? ""),
512
+ output: data["output"],
513
+ };
514
+ case "done":
515
+ return { type: "done", result: data["result"] };
516
+ case "heartbeat":
517
+ case "ping":
518
+ return { type: "heartbeat" };
519
+ default:
520
+ return { type: "unknown", raw };
521
+ }
522
+ }
523
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * miosa agent — first-class CUA (Computer Use Agent) session management.
3
+ *
4
+ * Routes map to: /api/v1/computers/:computer_id/cua/sessions[/:session_id/...]
5
+ *
6
+ * Subcommands:
7
+ * start POST /computers/:id/cua/sessions
8
+ * ls GET /computers/:id/cua/sessions (all computers when no --computer)
9
+ * get GET /computers/:id/cua/sessions/:session_id
10
+ * task POST /computers/:id/cua/sessions/:session_id/task
11
+ * pause POST /computers/:id/cua/sessions/:session_id/pause
12
+ * resume POST /computers/:id/cua/sessions/:session_id/resume
13
+ * stop DELETE /computers/:id/cua/sessions/:session_id
14
+ * history GET /computers/:id/cua/sessions/:session_id/events
15
+ */
16
+ import type { Command } from "commander";
17
+ export declare function register(program: Command): void;
18
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAomBzC,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAe/C"}