@usenaive-sdk/cli 0.12.2 → 0.12.5

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 (83) hide show
  1. package/README.md +22 -0
  2. package/dist/client.d.ts +26 -1
  3. package/dist/client.js +167 -5
  4. package/dist/client.js.map +1 -1
  5. package/dist/commands/aeo.js +13 -6
  6. package/dist/commands/aeo.js.map +1 -1
  7. package/dist/commands/auth.d.ts +30 -0
  8. package/dist/commands/auth.js +400 -0
  9. package/dist/commands/auth.js.map +1 -0
  10. package/dist/commands/billing.js +9 -9
  11. package/dist/commands/billing.js.map +1 -1
  12. package/dist/commands/brain.d.ts +2 -0
  13. package/dist/commands/brain.js +509 -0
  14. package/dist/commands/brain.js.map +1 -0
  15. package/dist/commands/browser.js +28 -1
  16. package/dist/commands/browser.js.map +1 -1
  17. package/dist/commands/clone.d.ts +2 -0
  18. package/dist/commands/clone.js +199 -0
  19. package/dist/commands/clone.js.map +1 -0
  20. package/dist/commands/config.d.ts +2 -0
  21. package/dist/commands/config.js +36 -0
  22. package/dist/commands/config.js.map +1 -0
  23. package/dist/commands/env.d.ts +3 -3
  24. package/dist/commands/env.js +68 -4
  25. package/dist/commands/env.js.map +1 -1
  26. package/dist/commands/images.js +2 -2
  27. package/dist/commands/keys.js +26 -3
  28. package/dist/commands/keys.js.map +1 -1
  29. package/dist/commands/loops.d.ts +2 -0
  30. package/dist/commands/loops.js +260 -0
  31. package/dist/commands/loops.js.map +1 -0
  32. package/dist/commands/mobile.d.ts +2 -0
  33. package/dist/commands/mobile.js +341 -0
  34. package/dist/commands/mobile.js.map +1 -0
  35. package/dist/commands/payments.d.ts +2 -0
  36. package/dist/commands/payments.js +131 -0
  37. package/dist/commands/payments.js.map +1 -0
  38. package/dist/commands/phone.js +77 -2
  39. package/dist/commands/phone.js.map +1 -1
  40. package/dist/commands/register.js +4 -4
  41. package/dist/commands/register.js.map +1 -1
  42. package/dist/commands/usage.js +4 -4
  43. package/dist/commands/video.js +94 -273
  44. package/dist/commands/video.js.map +1 -1
  45. package/dist/commands/voice.d.ts +2 -0
  46. package/dist/commands/voice.js +516 -0
  47. package/dist/commands/voice.js.map +1 -0
  48. package/dist/commands/wallet.d.ts +2 -0
  49. package/dist/commands/wallet.js +244 -0
  50. package/dist/commands/wallet.js.map +1 -0
  51. package/dist/config.d.ts +15 -0
  52. package/dist/config.js +35 -6
  53. package/dist/config.js.map +1 -1
  54. package/dist/index.js +70 -4
  55. package/dist/index.js.map +1 -1
  56. package/dist/lib/unknown-command.d.ts +17 -0
  57. package/dist/lib/unknown-command.js +19 -0
  58. package/dist/lib/unknown-command.js.map +1 -0
  59. package/dist/lib/version-check.d.ts +26 -0
  60. package/dist/lib/version-check.js +21 -0
  61. package/dist/lib/version-check.js.map +1 -0
  62. package/dist/output.d.ts +20 -5
  63. package/dist/output.js +150 -5
  64. package/dist/output.js.map +1 -1
  65. package/dist/prompt.d.ts +17 -0
  66. package/dist/prompt.js +70 -0
  67. package/dist/prompt.js.map +1 -0
  68. package/package.json +9 -4
  69. package/dist/commands/billing-client.d.ts +0 -2
  70. package/dist/commands/billing-client.js +0 -271
  71. package/dist/commands/billing-client.js.map +0 -1
  72. package/dist/commands/crm-app.d.ts +0 -2
  73. package/dist/commands/crm-app.js +0 -306
  74. package/dist/commands/crm-app.js.map +0 -1
  75. package/dist/commands/crm.d.ts +0 -2
  76. package/dist/commands/crm.js +0 -319
  77. package/dist/commands/crm.js.map +0 -1
  78. package/dist/commands/integrations.d.ts +0 -2
  79. package/dist/commands/integrations.js +0 -199
  80. package/dist/commands/integrations.js.map +0 -1
  81. package/dist/commands/operators.d.ts +0 -11
  82. package/dist/commands/operators.js +0 -120
  83. package/dist/commands/operators.js.map +0 -1
@@ -0,0 +1,260 @@
1
+ import { Command } from "commander";
2
+ import { apiRequest, handleApiError } from "../client.js";
3
+ import { agentOutput } from "../output.js";
4
+ export const loopsCmd = new Command("loops")
5
+ .description("Recurring agent runs — create, list, pause/resume, run now, and remove loops")
6
+ .addHelpText("after", `
7
+ Subcommands:
8
+ naive loops create --schedule <cron> --prompt <text> Create a recurring agent run
9
+ naive loops list List all loops
10
+ naive loops get <id> Show one loop
11
+ naive loops update <id> [--active|--no-active] ... Pause/resume or edit a loop
12
+ naive loops run <id> Fire a loop immediately
13
+ naive loops remove <id> Delete a loop (and its backing cron job)
14
+
15
+ Schedule format (cron expression):
16
+ "0 9 * * *" → every day at 9:00 AM UTC
17
+ "*/30 * * * *" → every 30 minutes
18
+ "0 0 * * 1" → every Monday at midnight UTC
19
+
20
+ A Loop is a first-class recurring agent run: a cron-source trigger subscription
21
+ bound to an agent. Creating one records the binding and creates the backing cron
22
+ job that executes it. Pausing/resuming (--no-active/--active) leaves the runtime
23
+ untouched.
24
+
25
+ Workflow:
26
+ 1. naive loops create --schedule "0 9 * * *" --prompt "Summarize overnight email" --name "Morning triage"
27
+ 2. naive loops list → see all loops
28
+ 3. naive loops run <id> → test-fire immediately
29
+ 4. naive loops update <id> --no-active → pause
30
+ 5. naive loops remove <id> → delete permanently
31
+
32
+ Examples:
33
+ $ naive loops create --schedule "0 9 * * 1" --prompt "Generate the weekly report" --name "Weekly Report"
34
+ $ naive loops list
35
+ $ naive loops run loop_01H...
36
+ $ naive loops update loop_01H... --no-active
37
+ $ naive loops remove loop_01H...
38
+ `);
39
+ loopsCmd
40
+ .command("list")
41
+ .description("List all loops — active and paused recurring agent runs")
42
+ .option("--user <id>", "Target a specific tenant user")
43
+ .addHelpText("after", `
44
+ Examples:
45
+ $ naive loops list
46
+
47
+ Returns loop details:
48
+ - id, name, schedule (cron expression), active
49
+ - target (prompt + optional profileName)
50
+ - cronJobId of the backing executor
51
+ `)
52
+ .action(async (opts) => {
53
+ const resp = await apiRequest("GET", "/v1/loops", undefined, { userId: opts.user });
54
+ handleApiError("loops.list", resp);
55
+ const data = resp.data;
56
+ const count = data.count ?? data.loops?.length ?? 0;
57
+ const active = data.loops?.filter((l) => l.active !== false) ?? [];
58
+ agentOutput({
59
+ action: "loops.list",
60
+ result: resp.data,
61
+ next_steps: [
62
+ ...(count > 0
63
+ ? [{ command: `naive loops get ${data.loops[0].id}`, description: "View details of the first loop" }]
64
+ : []),
65
+ { command: 'naive loops create --schedule "<cron>" --prompt "<text>"', description: "Create a new loop" },
66
+ ],
67
+ hints: [
68
+ `${count} loop${count !== 1 ? "s" : ""} total, ${active.length} active`,
69
+ ],
70
+ related_commands: ["naive loops create", "naive loops get", "naive loops run"],
71
+ });
72
+ });
73
+ loopsCmd
74
+ .command("create")
75
+ .description("Create a recurring agent run that fires a prompt on a cron schedule")
76
+ .requiredOption("--schedule <cron>", "Cron expression (e.g. '0 9 * * *')")
77
+ .requiredOption("--prompt <text>", "Prompt to run each time the loop fires")
78
+ .option("--name <name>", "Human-readable name for the loop")
79
+ .option("--profile <name>", "Agent profile to run as (defaults to the CEO)")
80
+ .option("--user <id>", "Target a specific tenant user")
81
+ .addHelpText("after", `
82
+ Examples:
83
+ $ naive loops create --schedule "0 9 * * *" --prompt "Review overnight email and summarize what needs my attention"
84
+ $ naive loops create --schedule "*/30 * * * *" --prompt "Check social mentions" --profile support --name "Mentions watch"
85
+
86
+ What this does:
87
+ Records the loop binding and creates the backing cron job that executes it.
88
+ The response includes the loop and the cron_job_id of the backing executor
89
+ (null if no runtime is reachable yet — the binding still persists and can
90
+ be synced later).
91
+ `)
92
+ .action(async (opts) => {
93
+ const resp = await apiRequest("POST", "/v1/loops", {
94
+ schedule: opts.schedule,
95
+ prompt: opts.prompt,
96
+ ...(opts.name && { name: opts.name }),
97
+ ...(opts.profile && { profileName: opts.profile }),
98
+ }, { userId: opts.user });
99
+ handleApiError("loops.create", resp);
100
+ const data = resp.data;
101
+ const loop = data.loop ?? {};
102
+ const loopId = loop.id ?? "unknown";
103
+ agentOutput({
104
+ action: "loops.create",
105
+ result: resp.data,
106
+ next_steps: [
107
+ { command: `naive loops run ${loopId}`, description: "Test-fire this loop immediately" },
108
+ { command: "naive loops list", description: "View all loops" },
109
+ ],
110
+ hints: [
111
+ `Loop created (id: ${loopId})`,
112
+ `Schedule: ${loop.schedule ?? opts.schedule}`,
113
+ ...(loop.name ? [`Name: ${loop.name}`] : []),
114
+ data.cron_job_id
115
+ ? `Backing cron job: ${data.cron_job_id}`
116
+ : "No runtime reachable yet — the binding persists and will sync later (cron_job_id: null)",
117
+ ],
118
+ related_commands: ["naive loops list", "naive loops run", "naive loops update"],
119
+ });
120
+ });
121
+ loopsCmd
122
+ .command("get <id>")
123
+ .description("Show full details for a specific loop")
124
+ .option("--user <id>", "Target a specific tenant user")
125
+ .addHelpText("after", `
126
+ Examples:
127
+ $ naive loops get loop_01H...
128
+
129
+ Returns the loop's id, name, schedule, active flag, target (prompt + profile),
130
+ and the cronJobId of the backing executor.
131
+ `)
132
+ .action(async (id, opts) => {
133
+ const resp = await apiRequest("GET", `/v1/loops/${id}`, undefined, { userId: opts.user });
134
+ handleApiError("loops.get", resp);
135
+ const data = resp.data;
136
+ agentOutput({
137
+ action: "loops.get",
138
+ result: resp.data,
139
+ next_steps: [
140
+ { command: `naive loops run ${id}`, description: "Fire this loop now" },
141
+ ...(data.active === false
142
+ ? [{ command: `naive loops update ${id} --active`, description: "Resume this loop" }]
143
+ : [{ command: `naive loops update ${id} --no-active`, description: "Pause this loop" }]),
144
+ { command: "naive loops list", description: "View all loops" },
145
+ ],
146
+ hints: [
147
+ `${data.name ?? data.id ?? id}: ${data.active === false ? "paused" : "active"}${data.schedule ? ` (${data.schedule})` : ""}`,
148
+ ],
149
+ related_commands: ["naive loops list", "naive loops update", "naive loops run"],
150
+ });
151
+ });
152
+ loopsCmd
153
+ .command("update <id>")
154
+ .description("Update a loop — pause/resume, or edit its name, prompt, or profile")
155
+ .option("--name <name>", "New human-readable name")
156
+ .option("--active", "Resume the loop (fire on schedule)")
157
+ .option("--no-active", "Pause the loop (do not fire on schedule)")
158
+ .option("--prompt <text>", "New prompt to run each firing")
159
+ .option("--profile <name>", "New agent profile to run as")
160
+ .option("--user <id>", "Target a specific tenant user")
161
+ .addHelpText("after", `
162
+ Examples:
163
+ $ naive loops update loop_01H... --no-active # pause
164
+ $ naive loops update loop_01H... --active # resume
165
+ $ naive loops update loop_01H... --prompt "New instructions"
166
+ $ naive loops update loop_01H... --name "Renamed loop" --profile support
167
+ `)
168
+ .action(async (id, opts) => {
169
+ const body = {};
170
+ if (opts.name !== undefined)
171
+ body.name = opts.name;
172
+ if (opts.active !== undefined)
173
+ body.active = opts.active;
174
+ if (opts.prompt !== undefined)
175
+ body.prompt = opts.prompt;
176
+ if (opts.profile !== undefined)
177
+ body.profileName = opts.profile;
178
+ const resp = await apiRequest("PATCH", `/v1/loops/${id}`, body, { userId: opts.user });
179
+ handleApiError("loops.update", resp);
180
+ agentOutput({
181
+ action: "loops.update",
182
+ result: resp.data,
183
+ next_steps: [
184
+ { command: `naive loops get ${id}`, description: "View the updated loop" },
185
+ { command: "naive loops list", description: "View all loops" },
186
+ ],
187
+ hints: [
188
+ `Loop ${id} updated`,
189
+ ...(opts.active !== undefined ? [opts.active ? "Resumed — will fire on schedule" : "Paused — will not fire on schedule"] : []),
190
+ ...(opts.name !== undefined ? [`Name → ${opts.name}`] : []),
191
+ ...(opts.prompt !== undefined ? ["Prompt updated"] : []),
192
+ ...(opts.profile !== undefined ? [`Profile → ${opts.profile}`] : []),
193
+ ],
194
+ related_commands: ["naive loops get", "naive loops list"],
195
+ });
196
+ });
197
+ loopsCmd
198
+ .command("run <id>")
199
+ .description("Fire a loop immediately — the regular schedule is unaffected")
200
+ .option("--user <id>", "Target a specific tenant user")
201
+ .addHelpText("after", `
202
+ Examples:
203
+ $ naive loops run loop_01H...
204
+
205
+ Fires the loop's prompt right now, regardless of its schedule. Returns the
206
+ run_id of the triggered run (null if no runtime is reachable).
207
+
208
+ Cost: Same as a regular loop firing (credits based on work performed).
209
+ `)
210
+ .action(async (id, opts) => {
211
+ const resp = await apiRequest("POST", `/v1/loops/${id}/run`, undefined, { userId: opts.user });
212
+ handleApiError("loops.run", resp);
213
+ const data = resp.data;
214
+ agentOutput({
215
+ action: "loops.run",
216
+ result: resp.data,
217
+ next_steps: [
218
+ ...(data.run_id
219
+ ? [{ command: `naive ceo stream ${data.run_id}`, description: "Stream the triggered run" }]
220
+ : []),
221
+ { command: "naive loops list", description: "View all loops" },
222
+ ],
223
+ hints: [
224
+ data.run_id
225
+ ? `Loop ${id} fired (run: ${data.run_id})`
226
+ : `Loop ${id} could not fire — no runtime reachable`,
227
+ "This does not affect the regular schedule",
228
+ ],
229
+ related_commands: ["naive loops list", "naive ceo stream", "naive loops get"],
230
+ });
231
+ });
232
+ loopsCmd
233
+ .command("remove <id>")
234
+ .description("Permanently delete a loop and its backing cron job")
235
+ .option("--user <id>", "Target a specific tenant user")
236
+ .addHelpText("after", `
237
+ Examples:
238
+ $ naive loops remove loop_01H...
239
+
240
+ Deletes the loop binding and best-effort removes the backing cron job.
241
+ This cannot be undone.
242
+ `)
243
+ .action(async (id, opts) => {
244
+ const resp = await apiRequest("DELETE", `/v1/loops/${id}`, undefined, { userId: opts.user });
245
+ handleApiError("loops.remove", resp);
246
+ agentOutput({
247
+ action: "loops.remove",
248
+ result: resp.data,
249
+ next_steps: [
250
+ { command: "naive loops list", description: "View remaining loops" },
251
+ { command: 'naive loops create --schedule "<cron>" --prompt "<text>"', description: "Create a replacement loop" },
252
+ ],
253
+ hints: [
254
+ `Loop ${id} deleted permanently`,
255
+ "The backing cron job is removed too",
256
+ ],
257
+ related_commands: ["naive loops list", "naive loops create"],
258
+ });
259
+ });
260
+ //# sourceMappingURL=loops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loops.js","sourceRoot":"","sources":["../../src/commands/loops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const mobileCmd: Command;
@@ -0,0 +1,341 @@
1
+ import { Command } from "commander";
2
+ import { apiRequest, handleApiError, handlePendingApproval } from "../client.js";
3
+ import { agentOutput } from "../output.js";
4
+ export const mobileCmd = new Command("mobile")
5
+ .description("Mobile — provision, control & display cloud mobile emulators/devices via Mobilerun")
6
+ .addHelpText("after", `
7
+ Phones are billed PER MINUTE from your credits: the phone provisions
8
+ immediately and the meter runs until you terminate it (there is NO upstream
9
+ auto-stop — running out of credits auto-terminates the phone).
10
+
11
+ Subcommands:
12
+ naive mobile status Integration status + your phone count
13
+ naive mobile devices List your phones (alias: phones)
14
+ naive mobile provision Create a phone (alias: create-phone)
15
+ naive mobile device <id> Show a device's live details
16
+ naive mobile stream <id> Get the live stream URL/token (to display)
17
+ naive mobile reboot <id> Reboot a device
18
+ naive mobile reset <id> Reset a device to a fresh state
19
+ naive mobile terminate <id> Release a device (stops the per-minute meter)
20
+ naive mobile wait <id> [--timeout <secs>] Block until a device is ready
21
+ naive mobile proxy <id> Show the device's proxy attachment
22
+ naive mobile proxy-set <id> --host ... Attach a SOCKS5 proxy (residential IP)
23
+ naive mobile proxy-remove <id> Detach the proxy (back to datacenter IP)
24
+ naive mobile run "<task>" [--device <id>] Run an agent task on a device
25
+ naive mobile tasks List agent tasks
26
+ naive mobile task <id> Show a task's status/result
27
+ naive mobile stop <id> Cancel a running task
28
+ naive mobile screenshots <id> List a task's screenshots
29
+ naive mobile trajectory <id> Show a task's trajectory
30
+ naive mobile apps List apps in the Mobilerun library
31
+ naive mobile upload-app <name> Create a signed upload URL for an app
32
+ naive mobile search "<query>" Search the Mobilerun API catalog (wildcard)
33
+ naive mobile call <operationId> ... Call ANY Mobilerun operation (wildcard)
34
+
35
+ Governance:
36
+ Provisioning, reboot/reset/terminate, proxy changes, running/stopping tasks,
37
+ uploading apps, and mutating wildcard calls are SENSITIVE and may require
38
+ human approval depending on the Account Kit (status "pending_approval").
39
+
40
+ Examples:
41
+ $ naive mobile provision --country US
42
+ $ naive mobile run "Open Settings and enable dark mode" --device <id> --vision
43
+ $ naive mobile stream <id>
44
+ $ naive mobile terminate <id>
45
+ $ naive mobile call take-screenshot --path deviceId=<id>
46
+ `);
47
+ mobileCmd
48
+ .command("status", { isDefault: true })
49
+ .description("Show mobile integration status + your device count")
50
+ .action(async () => {
51
+ const resp = await apiRequest("GET", "/v1/mobile/status");
52
+ handleApiError("mobile.status", resp);
53
+ agentOutput({ action: "mobile.status", result: resp.data, next_steps: [] });
54
+ });
55
+ mobileCmd
56
+ .command("devices")
57
+ .alias("phones")
58
+ .description("List your phones (cloud mobile devices) with status")
59
+ .option("--state <state>", "Filter by state, e.g. ready")
60
+ .option("--type <type>", "Filter by device type")
61
+ .option("--country <country>", "Filter by country")
62
+ .action(async (opts) => {
63
+ const params = new URLSearchParams();
64
+ if (opts.state)
65
+ params.set("state", opts.state);
66
+ if (opts.type)
67
+ params.set("type", opts.type);
68
+ if (opts.country)
69
+ params.set("country", opts.country);
70
+ const qs = params.toString();
71
+ const resp = await apiRequest("GET", `/v1/mobile/devices${qs ? `?${qs}` : ""}`);
72
+ handleApiError("mobile.devices", resp);
73
+ agentOutput({ action: "mobile.devices", result: resp.data, next_steps: [] });
74
+ });
75
+ mobileCmd
76
+ .command("provision")
77
+ .alias("create-phone")
78
+ .description("Create a phone — provisions immediately, billed per minute from your credits")
79
+ .option("--type <type>", "Device type (default: dedicated_premium_device — the minute-billed cloud phone)")
80
+ .option("--country <country>", "Country code")
81
+ .option("--profile <id>", "Device profile id")
82
+ .option("--name <name>", "Phone name")
83
+ .action(async (opts) => {
84
+ const body = {
85
+ type: opts.type,
86
+ country: opts.country,
87
+ profile_id: opts.profile,
88
+ name: opts.name,
89
+ };
90
+ const resp = await apiRequest("POST", "/v1/mobile/devices", body);
91
+ if (handlePendingApproval("mobile.provision", resp))
92
+ return;
93
+ handleApiError("mobile.provision", resp);
94
+ const data = resp.data;
95
+ agentOutput({
96
+ action: "mobile.provision",
97
+ result: resp.data,
98
+ next_steps: data.phone?.device_id
99
+ ? [
100
+ { command: `naive mobile wait ${data.phone.device_id}`, description: "Block until the device is ready" },
101
+ { command: `naive mobile terminate ${data.phone.device_id}`, description: "Terminate when done (stops the per-minute meter)" },
102
+ ]
103
+ : [],
104
+ hints: [
105
+ `Billed ${data.credits_per_minute ?? "a few"} credits/min from your balance until terminated — running out of credits auto-terminates the phone.`,
106
+ ],
107
+ });
108
+ });
109
+ mobileCmd
110
+ .command("device <id>")
111
+ .description("Show a device's live details")
112
+ .action(async (id) => {
113
+ const resp = await apiRequest("GET", `/v1/mobile/devices/${id}`);
114
+ handleApiError("mobile.device", resp);
115
+ agentOutput({ action: "mobile.device", result: resp.data, next_steps: [] });
116
+ });
117
+ mobileCmd
118
+ .command("stream <id>")
119
+ .description("Get the live stream URL + token (to display the device screen)")
120
+ .action(async (id) => {
121
+ const resp = await apiRequest("GET", `/v1/mobile/devices/${id}/stream`);
122
+ handleApiError("mobile.stream", resp);
123
+ agentOutput({ action: "mobile.stream", result: resp.data, next_steps: [] });
124
+ });
125
+ for (const verb of ["reboot", "reset"]) {
126
+ mobileCmd
127
+ .command(`${verb} <id>`)
128
+ .description(verb === "reboot" ? "Reboot a device" : "Reset a device to a fresh state")
129
+ .action(async (id) => {
130
+ const resp = await apiRequest("POST", `/v1/mobile/devices/${id}/${verb}`);
131
+ if (handlePendingApproval(`mobile.${verb}`, resp))
132
+ return;
133
+ handleApiError(`mobile.${verb}`, resp);
134
+ agentOutput({ action: `mobile.${verb}`, result: resp.data, next_steps: [] });
135
+ });
136
+ }
137
+ mobileCmd
138
+ .command("terminate <id>")
139
+ .description("Terminate (release) a device")
140
+ .action(async (id) => {
141
+ const resp = await apiRequest("DELETE", `/v1/mobile/devices/${id}`);
142
+ if (handlePendingApproval("mobile.terminate", resp))
143
+ return;
144
+ handleApiError("mobile.terminate", resp);
145
+ agentOutput({ action: "mobile.terminate", result: resp.data, next_steps: [] });
146
+ });
147
+ mobileCmd
148
+ .command("wait <id>")
149
+ .description("Block until a device is ready")
150
+ .option("--timeout <secs>", "Timeout in seconds")
151
+ .action(async (id, opts) => {
152
+ const body = opts.timeout ? { timeout_seconds: Number(opts.timeout) } : {};
153
+ const resp = await apiRequest("POST", `/v1/mobile/devices/${id}/wait`, body);
154
+ handleApiError("mobile.wait", resp);
155
+ agentOutput({ action: "mobile.wait", result: resp.data, next_steps: [] });
156
+ });
157
+ mobileCmd
158
+ .command("proxy <id>")
159
+ .description("Show a device's proxy attachment (devices default to a datacenter IP)")
160
+ .action(async (id) => {
161
+ const resp = await apiRequest("GET", `/v1/mobile/devices/${id}/proxy`);
162
+ handleApiError("mobile.proxy", resp);
163
+ agentOutput({ action: "mobile.proxy", result: resp.data, next_steps: [] });
164
+ });
165
+ mobileCmd
166
+ .command("proxy-set <id>")
167
+ .description("Attach a SOCKS5 proxy to a device (residential / country-specific IP)")
168
+ .requiredOption("--host <host>", "Proxy host")
169
+ .requiredOption("--port <port>", "Proxy port")
170
+ .option("--user <user>", "Proxy username")
171
+ .option("--password <password>", "Proxy password")
172
+ .option("--no-smart-ip", "Disable smart IP rotation handling")
173
+ .action(async (id, opts) => {
174
+ const resp = await apiRequest("POST", `/v1/mobile/devices/${id}/proxy`, {
175
+ host: opts.host,
176
+ port: Number(opts.port),
177
+ user: opts.user,
178
+ password: opts.password,
179
+ smart_ip: opts.smartIp,
180
+ });
181
+ if (handlePendingApproval("mobile.set_proxy", resp))
182
+ return;
183
+ handleApiError("mobile.set_proxy", resp);
184
+ agentOutput({ action: "mobile.set_proxy", result: resp.data, next_steps: [] });
185
+ });
186
+ mobileCmd
187
+ .command("proxy-remove <id>")
188
+ .description("Detach the proxy from a device (back to the datacenter IP)")
189
+ .action(async (id) => {
190
+ const resp = await apiRequest("DELETE", `/v1/mobile/devices/${id}/proxy`);
191
+ if (handlePendingApproval("mobile.remove_proxy", resp))
192
+ return;
193
+ handleApiError("mobile.remove_proxy", resp);
194
+ agentOutput({ action: "mobile.remove_proxy", result: resp.data, next_steps: [] });
195
+ });
196
+ mobileCmd
197
+ .command("run <task>")
198
+ .description("Run an agent task on one of your phones with a natural-language instruction")
199
+ .requiredOption("--device <id>", "Target phone (device) id — required")
200
+ .option("--model <model>", "LLM model id")
201
+ .option("--vision", "Enable vision (screenshots)")
202
+ .option("--reasoning", "Enable multi-step planning")
203
+ .option("--steps <n>", "Max execution steps")
204
+ .action(async (task, opts) => {
205
+ const body = {
206
+ task,
207
+ device_id: opts.device,
208
+ model: opts.model,
209
+ vision: opts.vision || undefined,
210
+ reasoning: opts.reasoning || undefined,
211
+ steps: opts.steps ? Number(opts.steps) : undefined,
212
+ };
213
+ const resp = await apiRequest("POST", "/v1/mobile/tasks", body);
214
+ if (handlePendingApproval("mobile.run", resp))
215
+ return;
216
+ handleApiError("mobile.run", resp);
217
+ agentOutput({ action: "mobile.run", result: resp.data, next_steps: [] });
218
+ });
219
+ mobileCmd
220
+ .command("tasks")
221
+ .description("List agent tasks")
222
+ .option("--device <id>", "Filter by device id")
223
+ .option("--status <status>", "Filter by status")
224
+ .action(async (opts) => {
225
+ const params = new URLSearchParams();
226
+ if (opts.device)
227
+ params.set("device_id", opts.device);
228
+ if (opts.status)
229
+ params.set("status", opts.status);
230
+ const qs = params.toString();
231
+ const resp = await apiRequest("GET", `/v1/mobile/tasks${qs ? `?${qs}` : ""}`);
232
+ handleApiError("mobile.tasks", resp);
233
+ agentOutput({ action: "mobile.tasks", result: resp.data, next_steps: [] });
234
+ });
235
+ mobileCmd
236
+ .command("task <id>")
237
+ .description("Show a task's status/result")
238
+ .action(async (id) => {
239
+ const resp = await apiRequest("GET", `/v1/mobile/tasks/${id}`);
240
+ handleApiError("mobile.task", resp);
241
+ agentOutput({ action: "mobile.task", result: resp.data, next_steps: [] });
242
+ });
243
+ mobileCmd
244
+ .command("stop <id>")
245
+ .description("Cancel a running task")
246
+ .action(async (id) => {
247
+ const resp = await apiRequest("POST", `/v1/mobile/tasks/${id}/stop`);
248
+ if (handlePendingApproval("mobile.stop", resp))
249
+ return;
250
+ handleApiError("mobile.stop", resp);
251
+ agentOutput({ action: "mobile.stop", result: resp.data, next_steps: [] });
252
+ });
253
+ mobileCmd
254
+ .command("screenshots <id>")
255
+ .description("List a task's screenshot URLs")
256
+ .action(async (id) => {
257
+ const resp = await apiRequest("GET", `/v1/mobile/tasks/${id}/screenshots`);
258
+ handleApiError("mobile.screenshots", resp);
259
+ agentOutput({ action: "mobile.screenshots", result: resp.data, next_steps: [] });
260
+ });
261
+ mobileCmd
262
+ .command("trajectory <id>")
263
+ .description("Show a task's step-by-step trajectory")
264
+ .action(async (id) => {
265
+ const resp = await apiRequest("GET", `/v1/mobile/tasks/${id}/trajectory`);
266
+ handleApiError("mobile.trajectory", resp);
267
+ agentOutput({ action: "mobile.trajectory", result: resp.data, next_steps: [] });
268
+ });
269
+ mobileCmd
270
+ .command("apps")
271
+ .description("List apps in the Mobilerun library")
272
+ .action(async () => {
273
+ const resp = await apiRequest("GET", "/v1/mobile/apps");
274
+ handleApiError("mobile.apps", resp);
275
+ agentOutput({ action: "mobile.apps", result: resp.data, next_steps: [] });
276
+ });
277
+ mobileCmd
278
+ .command("upload-app <name>")
279
+ .description("Create a signed upload URL to add an app (APK) to the library")
280
+ .option("--file <name>", "File name of the APK")
281
+ .action(async (name, opts) => {
282
+ const resp = await apiRequest("POST", "/v1/mobile/apps", { name, file_name: opts.file });
283
+ if (handlePendingApproval("mobile.upload_app", resp))
284
+ return;
285
+ handleApiError("mobile.upload_app", resp);
286
+ agentOutput({ action: "mobile.upload_app", result: resp.data, next_steps: [] });
287
+ });
288
+ mobileCmd
289
+ .command("search [query]")
290
+ .description("Search the Mobilerun API catalog (wildcard discovery)")
291
+ .option("--tag <tag>", "Filter by API group, e.g. Devices, Tasks, Tools")
292
+ .action(async (query, opts) => {
293
+ const params = new URLSearchParams();
294
+ if (query)
295
+ params.set("q", query);
296
+ if (opts.tag)
297
+ params.set("tag", opts.tag);
298
+ const qs = params.toString();
299
+ const resp = await apiRequest("GET", `/v1/mobile/methods${qs ? `?${qs}` : ""}`);
300
+ handleApiError("mobile.search", resp);
301
+ agentOutput({ action: "mobile.search", result: resp.data, next_steps: [] });
302
+ });
303
+ mobileCmd
304
+ .command("call <operationId>")
305
+ .description("Call ANY Mobilerun operation by operationId (wildcard)")
306
+ .option("--path <kv...>", "Path params KEY=VALUE (repeatable), e.g. deviceId=<id>")
307
+ .option("--query <kv...>", "Query params KEY=VALUE (repeatable)")
308
+ .option("--body <json>", "JSON request body")
309
+ .action(async (operationId, opts) => {
310
+ const parseKv = (entries) => {
311
+ const out = {};
312
+ for (const kv of entries ?? []) {
313
+ const i = String(kv).indexOf("=");
314
+ if (i > 0)
315
+ out[String(kv).slice(0, i)] = String(kv).slice(i + 1);
316
+ }
317
+ return out;
318
+ };
319
+ let body;
320
+ if (opts.body) {
321
+ try {
322
+ body = JSON.parse(opts.body);
323
+ }
324
+ catch {
325
+ handleApiError("mobile.call", { status: 400, data: { error: { code: "invalid_input", message: "--body must be valid JSON" } } });
326
+ return;
327
+ }
328
+ }
329
+ const reqBody = {
330
+ operation_id: operationId,
331
+ path: parseKv(opts.path),
332
+ query: parseKv(opts.query),
333
+ ...(body !== undefined ? { body } : {}),
334
+ };
335
+ const resp = await apiRequest("POST", "/v1/mobile/call", reqBody);
336
+ if (handlePendingApproval("mobile.call", resp))
337
+ return;
338
+ handleApiError("mobile.call", resp);
339
+ agentOutput({ action: "mobile.call", result: resp.data, next_steps: [] });
340
+ });
341
+ //# sourceMappingURL=mobile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile.js","sourceRoot":"","sources":["../../src/commands/mobile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const paymentsCmd: Command;