frely-cli 0.23.8 → 0.23.9
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.
- package/README.md +1 -0
- package/dist/agent-help.d.ts +176 -8
- package/dist/agent-help.js +32 -2
- package/dist/agent-help.js.map +1 -1
- package/dist/auth.d.ts +5 -0
- package/dist/auth.js +36 -0
- package/dist/auth.js.map +1 -1
- package/dist/cloud.d.ts +2 -0
- package/dist/cloud.js +38 -0
- package/dist/cloud.js.map +1 -1
- package/dist/controller/args.d.ts +25 -0
- package/dist/controller/args.js +61 -0
- package/dist/controller/args.js.map +1 -0
- package/dist/controller/client.d.ts +52 -0
- package/dist/controller/client.js +124 -0
- package/dist/controller/client.js.map +1 -0
- package/dist/controller/commands.d.ts +16 -0
- package/dist/controller/commands.js +411 -0
- package/dist/controller/commands.js.map +1 -0
- package/dist/controller/dpop.d.ts +24 -0
- package/dist/controller/dpop.js +26 -0
- package/dist/controller/dpop.js.map +1 -0
- package/dist/controller/session.d.ts +53 -0
- package/dist/controller/session.js +211 -0
- package/dist/controller/session.js.map +1 -0
- package/dist/device/protocol.d.ts +1 -1
- package/dist/device/protocol.js +1 -1
- package/dist/device/protocol.js.map +1 -1
- package/dist/device/relay-client.d.ts +14 -0
- package/dist/device/relay-client.js +34 -14
- package/dist/device/relay-client.js.map +1 -1
- package/dist/index.js +45 -4
- package/dist/index.js.map +1 -1
- package/dist/share/control.d.ts +16 -0
- package/dist/share/control.js +49 -0
- package/dist/share/control.js.map +1 -0
- package/dist/share/frpc-config.d.ts +24 -0
- package/dist/share/frpc-config.js +63 -0
- package/dist/share/frpc-config.js.map +1 -0
- package/dist/share/frpc.d.ts +30 -0
- package/dist/share/frpc.js +108 -0
- package/dist/share/frpc.js.map +1 -0
- package/dist/share/gateway.d.ts +26 -0
- package/dist/share/gateway.js +100 -0
- package/dist/share/gateway.js.map +1 -0
- package/dist/share/run.d.ts +43 -0
- package/dist/share/run.js +163 -0
- package/dist/share/run.js.map +1 -0
- package/dist/skill/sealed-run.js +5 -3
- package/dist/skill/sealed-run.js.map +1 -1
- package/package.json +1 -1
- package/skills/frely-cli/SKILL.md +8 -0
package/README.md
CHANGED
|
@@ -93,6 +93,7 @@ To check the connection, ask the client to list the top-level names in your work
|
|
|
93
93
|
- **Frely-hosted Agents**: `frely item install <username/name> --host claude-code` installs an Agent as a local Skill; `frely agent run <username/name>` calls it. [More](https://cli.frely.cloud/docs/help/install-agents-and-items/)
|
|
94
94
|
- **Marketplace Prompts and Skills**: `frely item install <username/name> --host claude-code` (the same command installs Agents too; add `@3` for version 3). Paid parts install only when your account holds a pass. `frely item update` lists installed items that have a newer version; it changes nothing until you run `frely item update <folder>`. [More](https://cli.frely.cloud/docs/help/install-agents-and-items/)
|
|
95
95
|
- **Local model sharing**: `frely provider share ollama` publishes a loopback model server as your personal Frely Provider. [More](https://cli.frely.cloud/docs/help/share-local-model/)
|
|
96
|
+
- **Share a local web page**: `frely share 3000` asks first, then prints a private link to `http://127.0.0.1:3000` through Frely's relay until you press Ctrl+C or it expires (at most 24 hours). Relay traffic is a plan allowance per UTC week; direct connections are not counted. Not the same as `frely provider share` (local models) or `frely tunnel` (inside the command sandbox).
|
|
96
97
|
- **Your account from the terminal**: `frely api list|describe|call`. [More](https://cli.frely.cloud/docs/help/manage-account-from-cli/)
|
|
97
98
|
|
|
98
99
|
## Safety
|
package/dist/agent-help.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export declare const COMMANDS: readonly [{
|
|
2
2
|
readonly id: "login";
|
|
3
|
-
readonly usage: "frely login [--relay <url>] [--no-browser] | frely login --email <address> [--invite <link>] [--mcp] [--workspace <path>] [--days <n>] then frely login --code <6-digit code>";
|
|
3
|
+
readonly usage: "frely login [--relay <url>] [--no-browser] | frely login --wait | frely login --email <address> [--invite <link>] [--mcp] [--workspace <path>] [--days <n>] then frely login --code <6-digit code>";
|
|
4
4
|
readonly auth: "browser-or-email";
|
|
5
5
|
readonly effect: "authorization";
|
|
6
|
-
readonly purpose: "Authorize the CLI for the user's Frely account. With --email, Frely emails a code; the user pastes it into `frely login --code` (enter only the 6 digits; the mail also shows a short reference such as K7, which is only for matching the mail). Add --mcp to also enable device MCP for the workspace (default 90 days) once the code is verified; do this when the user is registering for the first time, and tell them before asking for the code.";
|
|
6
|
+
readonly purpose: "Authorize the CLI for the user's Frely account. The browser form blocks until the user approves, then returns, so continue the task when it exits; if the command is stopped first, run `frely login --wait` to resume on the same link. With --email, Frely emails a code; the user pastes it into `frely login --code` (enter only the 6 digits; the mail also shows a short reference such as K7, which is only for matching the mail). Add --mcp to also enable device MCP for the workspace (default 90 days) once the code is verified; do this when the user is registering for the first time, and tell them before asking for the code.";
|
|
7
7
|
}, {
|
|
8
8
|
readonly id: "logout";
|
|
9
9
|
readonly usage: "frely logout";
|
|
@@ -196,6 +196,12 @@ export declare const COMMANDS: readonly [{
|
|
|
196
196
|
readonly auth: "account";
|
|
197
197
|
readonly effect: "read";
|
|
198
198
|
readonly purpose: "List configured local Providers.";
|
|
199
|
+
}, {
|
|
200
|
+
readonly id: "share";
|
|
201
|
+
readonly usage: "frely share <port> [--ttl <hours>] [--rewrite-host] [--yes] [--json]";
|
|
202
|
+
readonly auth: "account";
|
|
203
|
+
readonly effect: "remote-write";
|
|
204
|
+
readonly purpose: "Make a web service on this computer (http://127.0.0.1:<port>) reachable from the Internet by a private link through Frely's relay, until Ctrl+C or expiry (at most 24 hours). Asks first. The relay allowance is a plan limit per UTC week; --rewrite-host sends Host: localhost to dev servers that refuse other names. Not the same as `frely provider share` (local models) or `frely tunnel` (command sandbox).";
|
|
199
205
|
}, {
|
|
200
206
|
readonly id: "tunnel";
|
|
201
207
|
readonly usage: "frely tunnel <host>:<port> [--local-port N]";
|
|
@@ -208,12 +214,90 @@ export declare const COMMANDS: readonly [{
|
|
|
208
214
|
readonly auth: "none";
|
|
209
215
|
readonly effect: "local-write";
|
|
210
216
|
readonly purpose: "Show, save or remove the HTTP(S) proxy that the command sandbox forwards its network traffic to (your own proxy, for example Clash). Without one saved it uses the HTTPS_PROXY / HTTP_PROXY / ALL_PROXY of the CLI process and, on macOS, the system proxy. Your proxy settings are never changed. Takes effect when the MCP service restarts.";
|
|
217
|
+
}, {
|
|
218
|
+
readonly id: "devices";
|
|
219
|
+
readonly usage: "frely devices [--add] [--json]";
|
|
220
|
+
readonly auth: "controller";
|
|
221
|
+
readonly effect: "read";
|
|
222
|
+
readonly purpose: "List your Frely devices with online state and workspaces (list_devices). --add prints a one-time install command for a new computer.";
|
|
223
|
+
}, {
|
|
224
|
+
readonly id: "run";
|
|
225
|
+
readonly usage: "frely run <device> [--cwd <dir>] [--timeout <s>] [--background] -- <command> [--json] [--out <file>]";
|
|
226
|
+
readonly auth: "controller";
|
|
227
|
+
readonly effect: "remote-execution";
|
|
228
|
+
readonly purpose: "Run a shell command on a device inside its sandbox and print its output; --background returns a process id. The command's own failure is exit code 2.";
|
|
229
|
+
}, {
|
|
230
|
+
readonly id: "ps";
|
|
231
|
+
readonly usage: "frely ps <device>";
|
|
232
|
+
readonly auth: "controller";
|
|
233
|
+
readonly effect: "read";
|
|
234
|
+
readonly purpose: "List background commands on a device.";
|
|
235
|
+
}, {
|
|
236
|
+
readonly id: "logs";
|
|
237
|
+
readonly usage: "frely logs <device> <id> [--follow]";
|
|
238
|
+
readonly auth: "controller";
|
|
239
|
+
readonly effect: "read";
|
|
240
|
+
readonly purpose: "Output of a background command; --follow shows it live until it ends.";
|
|
241
|
+
}, {
|
|
242
|
+
readonly id: "kill";
|
|
243
|
+
readonly usage: "frely kill <device> <id>";
|
|
244
|
+
readonly auth: "controller";
|
|
245
|
+
readonly effect: "remote-execution";
|
|
246
|
+
readonly purpose: "Stop a background command on a device.";
|
|
247
|
+
}, {
|
|
248
|
+
readonly id: "read";
|
|
249
|
+
readonly usage: "frely read <device>:<path> [--lines a:b] [--json] [--out <file>]";
|
|
250
|
+
readonly auth: "controller";
|
|
251
|
+
readonly effect: "read";
|
|
252
|
+
readonly purpose: "Print a file on a device (UTF-8, up to 1 MiB). A Windows drive path such as C:\\x is this computer, not a device.";
|
|
253
|
+
}, {
|
|
254
|
+
readonly id: "ls";
|
|
255
|
+
readonly usage: "frely ls [<device>[:<path>]] [--json]";
|
|
256
|
+
readonly auth: "controller";
|
|
257
|
+
readonly effect: "read";
|
|
258
|
+
readonly purpose: "List a folder on a device; with only a device, its workspace roots.";
|
|
259
|
+
}, {
|
|
260
|
+
readonly id: "grep";
|
|
261
|
+
readonly usage: "frely grep <device>:<path> <text> [--regex] [--case] [--max <n>]";
|
|
262
|
+
readonly auth: "controller";
|
|
263
|
+
readonly effect: "read";
|
|
264
|
+
readonly purpose: "Search file contents on a device.";
|
|
265
|
+
}, {
|
|
266
|
+
readonly id: "edit";
|
|
267
|
+
readonly usage: "frely edit <device>:<path> (--from <local file> | --patch <json file>) [--overwrite]";
|
|
268
|
+
readonly auth: "controller";
|
|
269
|
+
readonly effect: "remote-write";
|
|
270
|
+
readonly purpose: "Write a device file from a local file, or apply line-range edits from a JSON file.";
|
|
271
|
+
}, {
|
|
272
|
+
readonly id: "permission";
|
|
273
|
+
readonly usage: "frely permission request <device> --resource <name> --reason <text> --command <text> | confirm <code> [A|B|C] | wait <short code> [--then '<command>']";
|
|
274
|
+
readonly auth: "controller";
|
|
275
|
+
readonly effect: "authorization";
|
|
276
|
+
readonly purpose: "Ask the owner to open what the device sandbox blocks. Exit code 3 prints the approval link and the wait command: show the link to the user, then run `frely permission wait <short code> --then '<original command>'` in the background so the original command runs once they approve.";
|
|
277
|
+
}, {
|
|
278
|
+
readonly id: "tools";
|
|
279
|
+
readonly usage: "frely tools [--json]";
|
|
280
|
+
readonly auth: "controller";
|
|
281
|
+
readonly effect: "read";
|
|
282
|
+
readonly purpose: "Print FrelyMCP's own instructions and every tool it offers.";
|
|
283
|
+
}, {
|
|
284
|
+
readonly id: "call";
|
|
285
|
+
readonly usage: "frely call <tool> [--json '<object>' | --input <file>] [--out <file>]";
|
|
286
|
+
readonly auth: "controller";
|
|
287
|
+
readonly effect: "subcommand-dependent";
|
|
288
|
+
readonly purpose: "Call any FrelyMCP tool by name (browser, models, web_fetch, local_mcp_call, store, ...).";
|
|
289
|
+
}, {
|
|
290
|
+
readonly id: "controller";
|
|
291
|
+
readonly usage: "frely controller login|logout|status";
|
|
292
|
+
readonly auth: "browser";
|
|
293
|
+
readonly effect: "authorization-if-needed";
|
|
294
|
+
readonly purpose: "Authorize this computer to control your devices: shows a short code, you open the link, type the code and confirm with a passkey or authenticator code. The first controller command does this by itself in a terminal.";
|
|
211
295
|
}, {
|
|
212
296
|
readonly id: "api";
|
|
213
297
|
readonly usage: "frely api list|describe|call [--wait] [--help]";
|
|
214
|
-
readonly auth: "
|
|
298
|
+
readonly auth: "controller";
|
|
215
299
|
readonly effect: "subcommand-dependent";
|
|
216
|
-
readonly purpose: "Discover and call your Frely account's business operations (the same tools FrelyMCP offers through frely_list/frely_call).
|
|
300
|
+
readonly purpose: "Discover and call your Frely account's business operations (the same tools FrelyMCP offers through frely_list/frely_call). Runs on this computer's controller authorization; the first call requests browser approval (frely controller login). `list` is grouped and compact (add --json for the full tool list); use describe before call; parameters and results are JSON; --input reads a file up to 512 KiB. When a call needs the owner's approval the error links to it; run the call with --wait (in the foreground, tool timeout of at least 10 minutes) to show the user the link first and then block until they approve on their phone or the web, so the call finishes by itself and you need not be told. Never background or kill it.";
|
|
217
301
|
}, {
|
|
218
302
|
readonly id: "app.install";
|
|
219
303
|
readonly usage: "frely app install [--force] [--json]";
|
|
@@ -289,10 +373,10 @@ export declare function agentHelp(): {
|
|
|
289
373
|
instructions: string[];
|
|
290
374
|
commands: readonly [{
|
|
291
375
|
readonly id: "login";
|
|
292
|
-
readonly usage: "frely login [--relay <url>] [--no-browser] | frely login --email <address> [--invite <link>] [--mcp] [--workspace <path>] [--days <n>] then frely login --code <6-digit code>";
|
|
376
|
+
readonly usage: "frely login [--relay <url>] [--no-browser] | frely login --wait | frely login --email <address> [--invite <link>] [--mcp] [--workspace <path>] [--days <n>] then frely login --code <6-digit code>";
|
|
293
377
|
readonly auth: "browser-or-email";
|
|
294
378
|
readonly effect: "authorization";
|
|
295
|
-
readonly purpose: "Authorize the CLI for the user's Frely account. With --email, Frely emails a code; the user pastes it into `frely login --code` (enter only the 6 digits; the mail also shows a short reference such as K7, which is only for matching the mail). Add --mcp to also enable device MCP for the workspace (default 90 days) once the code is verified; do this when the user is registering for the first time, and tell them before asking for the code.";
|
|
379
|
+
readonly purpose: "Authorize the CLI for the user's Frely account. The browser form blocks until the user approves, then returns, so continue the task when it exits; if the command is stopped first, run `frely login --wait` to resume on the same link. With --email, Frely emails a code; the user pastes it into `frely login --code` (enter only the 6 digits; the mail also shows a short reference such as K7, which is only for matching the mail). Add --mcp to also enable device MCP for the workspace (default 90 days) once the code is verified; do this when the user is registering for the first time, and tell them before asking for the code.";
|
|
296
380
|
}, {
|
|
297
381
|
readonly id: "logout";
|
|
298
382
|
readonly usage: "frely logout";
|
|
@@ -485,6 +569,12 @@ export declare function agentHelp(): {
|
|
|
485
569
|
readonly auth: "account";
|
|
486
570
|
readonly effect: "read";
|
|
487
571
|
readonly purpose: "List configured local Providers.";
|
|
572
|
+
}, {
|
|
573
|
+
readonly id: "share";
|
|
574
|
+
readonly usage: "frely share <port> [--ttl <hours>] [--rewrite-host] [--yes] [--json]";
|
|
575
|
+
readonly auth: "account";
|
|
576
|
+
readonly effect: "remote-write";
|
|
577
|
+
readonly purpose: "Make a web service on this computer (http://127.0.0.1:<port>) reachable from the Internet by a private link through Frely's relay, until Ctrl+C or expiry (at most 24 hours). Asks first. The relay allowance is a plan limit per UTC week; --rewrite-host sends Host: localhost to dev servers that refuse other names. Not the same as `frely provider share` (local models) or `frely tunnel` (command sandbox).";
|
|
488
578
|
}, {
|
|
489
579
|
readonly id: "tunnel";
|
|
490
580
|
readonly usage: "frely tunnel <host>:<port> [--local-port N]";
|
|
@@ -497,12 +587,90 @@ export declare function agentHelp(): {
|
|
|
497
587
|
readonly auth: "none";
|
|
498
588
|
readonly effect: "local-write";
|
|
499
589
|
readonly purpose: "Show, save or remove the HTTP(S) proxy that the command sandbox forwards its network traffic to (your own proxy, for example Clash). Without one saved it uses the HTTPS_PROXY / HTTP_PROXY / ALL_PROXY of the CLI process and, on macOS, the system proxy. Your proxy settings are never changed. Takes effect when the MCP service restarts.";
|
|
590
|
+
}, {
|
|
591
|
+
readonly id: "devices";
|
|
592
|
+
readonly usage: "frely devices [--add] [--json]";
|
|
593
|
+
readonly auth: "controller";
|
|
594
|
+
readonly effect: "read";
|
|
595
|
+
readonly purpose: "List your Frely devices with online state and workspaces (list_devices). --add prints a one-time install command for a new computer.";
|
|
596
|
+
}, {
|
|
597
|
+
readonly id: "run";
|
|
598
|
+
readonly usage: "frely run <device> [--cwd <dir>] [--timeout <s>] [--background] -- <command> [--json] [--out <file>]";
|
|
599
|
+
readonly auth: "controller";
|
|
600
|
+
readonly effect: "remote-execution";
|
|
601
|
+
readonly purpose: "Run a shell command on a device inside its sandbox and print its output; --background returns a process id. The command's own failure is exit code 2.";
|
|
602
|
+
}, {
|
|
603
|
+
readonly id: "ps";
|
|
604
|
+
readonly usage: "frely ps <device>";
|
|
605
|
+
readonly auth: "controller";
|
|
606
|
+
readonly effect: "read";
|
|
607
|
+
readonly purpose: "List background commands on a device.";
|
|
608
|
+
}, {
|
|
609
|
+
readonly id: "logs";
|
|
610
|
+
readonly usage: "frely logs <device> <id> [--follow]";
|
|
611
|
+
readonly auth: "controller";
|
|
612
|
+
readonly effect: "read";
|
|
613
|
+
readonly purpose: "Output of a background command; --follow shows it live until it ends.";
|
|
614
|
+
}, {
|
|
615
|
+
readonly id: "kill";
|
|
616
|
+
readonly usage: "frely kill <device> <id>";
|
|
617
|
+
readonly auth: "controller";
|
|
618
|
+
readonly effect: "remote-execution";
|
|
619
|
+
readonly purpose: "Stop a background command on a device.";
|
|
620
|
+
}, {
|
|
621
|
+
readonly id: "read";
|
|
622
|
+
readonly usage: "frely read <device>:<path> [--lines a:b] [--json] [--out <file>]";
|
|
623
|
+
readonly auth: "controller";
|
|
624
|
+
readonly effect: "read";
|
|
625
|
+
readonly purpose: "Print a file on a device (UTF-8, up to 1 MiB). A Windows drive path such as C:\\x is this computer, not a device.";
|
|
626
|
+
}, {
|
|
627
|
+
readonly id: "ls";
|
|
628
|
+
readonly usage: "frely ls [<device>[:<path>]] [--json]";
|
|
629
|
+
readonly auth: "controller";
|
|
630
|
+
readonly effect: "read";
|
|
631
|
+
readonly purpose: "List a folder on a device; with only a device, its workspace roots.";
|
|
632
|
+
}, {
|
|
633
|
+
readonly id: "grep";
|
|
634
|
+
readonly usage: "frely grep <device>:<path> <text> [--regex] [--case] [--max <n>]";
|
|
635
|
+
readonly auth: "controller";
|
|
636
|
+
readonly effect: "read";
|
|
637
|
+
readonly purpose: "Search file contents on a device.";
|
|
638
|
+
}, {
|
|
639
|
+
readonly id: "edit";
|
|
640
|
+
readonly usage: "frely edit <device>:<path> (--from <local file> | --patch <json file>) [--overwrite]";
|
|
641
|
+
readonly auth: "controller";
|
|
642
|
+
readonly effect: "remote-write";
|
|
643
|
+
readonly purpose: "Write a device file from a local file, or apply line-range edits from a JSON file.";
|
|
644
|
+
}, {
|
|
645
|
+
readonly id: "permission";
|
|
646
|
+
readonly usage: "frely permission request <device> --resource <name> --reason <text> --command <text> | confirm <code> [A|B|C] | wait <short code> [--then '<command>']";
|
|
647
|
+
readonly auth: "controller";
|
|
648
|
+
readonly effect: "authorization";
|
|
649
|
+
readonly purpose: "Ask the owner to open what the device sandbox blocks. Exit code 3 prints the approval link and the wait command: show the link to the user, then run `frely permission wait <short code> --then '<original command>'` in the background so the original command runs once they approve.";
|
|
650
|
+
}, {
|
|
651
|
+
readonly id: "tools";
|
|
652
|
+
readonly usage: "frely tools [--json]";
|
|
653
|
+
readonly auth: "controller";
|
|
654
|
+
readonly effect: "read";
|
|
655
|
+
readonly purpose: "Print FrelyMCP's own instructions and every tool it offers.";
|
|
656
|
+
}, {
|
|
657
|
+
readonly id: "call";
|
|
658
|
+
readonly usage: "frely call <tool> [--json '<object>' | --input <file>] [--out <file>]";
|
|
659
|
+
readonly auth: "controller";
|
|
660
|
+
readonly effect: "subcommand-dependent";
|
|
661
|
+
readonly purpose: "Call any FrelyMCP tool by name (browser, models, web_fetch, local_mcp_call, store, ...).";
|
|
662
|
+
}, {
|
|
663
|
+
readonly id: "controller";
|
|
664
|
+
readonly usage: "frely controller login|logout|status";
|
|
665
|
+
readonly auth: "browser";
|
|
666
|
+
readonly effect: "authorization-if-needed";
|
|
667
|
+
readonly purpose: "Authorize this computer to control your devices: shows a short code, you open the link, type the code and confirm with a passkey or authenticator code. The first controller command does this by itself in a terminal.";
|
|
500
668
|
}, {
|
|
501
669
|
readonly id: "api";
|
|
502
670
|
readonly usage: "frely api list|describe|call [--wait] [--help]";
|
|
503
|
-
readonly auth: "
|
|
671
|
+
readonly auth: "controller";
|
|
504
672
|
readonly effect: "subcommand-dependent";
|
|
505
|
-
readonly purpose: "Discover and call your Frely account's business operations (the same tools FrelyMCP offers through frely_list/frely_call).
|
|
673
|
+
readonly purpose: "Discover and call your Frely account's business operations (the same tools FrelyMCP offers through frely_list/frely_call). Runs on this computer's controller authorization; the first call requests browser approval (frely controller login). `list` is grouped and compact (add --json for the full tool list); use describe before call; parameters and results are JSON; --input reads a file up to 512 KiB. When a call needs the owner's approval the error links to it; run the call with --wait (in the foreground, tool timeout of at least 10 minutes) to show the user the link first and then block until they approve on their phone or the web, so the call finishes by itself and you need not be told. Never background or kill it.";
|
|
506
674
|
}, {
|
|
507
675
|
readonly id: "app.install";
|
|
508
676
|
readonly usage: "frely app install [--force] [--json]";
|
package/dist/agent-help.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VERSION } from "./version.js";
|
|
2
2
|
export const COMMANDS = [
|
|
3
|
-
{ id: "login", usage: "frely login [--relay <url>] [--no-browser] | frely login --email <address> [--invite <link>] [--mcp] [--workspace <path>] [--days <n>] then frely login --code <6-digit code>", auth: "browser-or-email", effect: "authorization", purpose: "Authorize the CLI for the user's Frely account. With --email, Frely emails a code; the user pastes it into `frely login --code` (enter only the 6 digits; the mail also shows a short reference such as K7, which is only for matching the mail). Add --mcp to also enable device MCP for the workspace (default 90 days) once the code is verified; do this when the user is registering for the first time, and tell them before asking for the code." },
|
|
3
|
+
{ id: "login", usage: "frely login [--relay <url>] [--no-browser] | frely login --wait | frely login --email <address> [--invite <link>] [--mcp] [--workspace <path>] [--days <n>] then frely login --code <6-digit code>", auth: "browser-or-email", effect: "authorization", purpose: "Authorize the CLI for the user's Frely account. The browser form blocks until the user approves, then returns, so continue the task when it exits; if the command is stopped first, run `frely login --wait` to resume on the same link. With --email, Frely emails a code; the user pastes it into `frely login --code` (enter only the 6 digits; the mail also shows a short reference such as K7, which is only for matching the mail). Add --mcp to also enable device MCP for the workspace (default 90 days) once the code is verified; do this when the user is registering for the first time, and tell them before asking for the code." },
|
|
4
4
|
{ id: "logout", usage: "frely logout", auth: "none", effect: "local-write", purpose: "Remove login, revoke Cloud authorization and stop the MCP background service." },
|
|
5
5
|
{ id: "uninstall", usage: "frely uninstall [--yes] [--json]", auth: "optional-account", effect: "remote-write", purpose: "Remove Frely from this computer: revoke this device's Device MCP authorization, Cloud and account login on the Frely side, stop and uninstall the background service, delete saved login, device and MCP data, installed Agent Skills and the frely program itself. It lists everything first and removes nothing until the user types yes; without a terminal it only lists, and --yes confirms. Frely App and server-side Providers/Agents are not removed. Refuses to run inside device MCP. Destructive: run only when the user asks for it." },
|
|
6
6
|
{ id: "doctor", usage: "frely doctor [-v] [--json]", auth: "optional-account", effect: "diagnostic", purpose: "Show the signed-in account, installation, available updates, MCP and connection status; -v verifies the account online and runs detailed diagnostics." },
|
|
@@ -33,9 +33,23 @@ export const COMMANDS = [
|
|
|
33
33
|
{ id: "agent.remove", usage: "frely agent remove <username/name> [--json]", auth: "none", effect: "local-write", purpose: "Remove an installed Agent Skill and its saved API key." },
|
|
34
34
|
{ id: "provider.share", usage: "frely provider share [ollama|openai-compatible] [--url <loopback-v1-url>] [--models <a,b>] [--slot <slot-id>] [--name <name>]", auth: "account", effect: "remote-write", purpose: "Publish a local model Provider. If a prepared Provider on this device is not finished, resume it instead." },
|
|
35
35
|
{ id: "provider.list", usage: "frely provider list [--json]", auth: "account", effect: "read", purpose: "List configured local Providers." },
|
|
36
|
+
{ id: "share", usage: "frely share <port> [--ttl <hours>] [--rewrite-host] [--yes] [--json]", auth: "account", effect: "remote-write", purpose: "Make a web service on this computer (http://127.0.0.1:<port>) reachable from the Internet by a private link through Frely's relay, until Ctrl+C or expiry (at most 24 hours). Asks first. The relay allowance is a plan limit per UTC week; --rewrite-host sends Host: localhost to dev servers that refuse other names. Not the same as `frely provider share` (local models) or `frely tunnel` (command sandbox)." },
|
|
36
37
|
{ id: "tunnel", usage: "frely tunnel <host>:<port> [--local-port N]", auth: "none", effect: "local-execution", purpose: "Run inside a sandboxed command (run_command): listen on 127.0.0.1:<local-port> (default: the same port) and forward each TCP connection to host:port through the command sandbox's proxy, so database and redis clients connect to 127.0.0.1 without turning the sandbox off. Start it in the same command as the client, for example `frely tunnel db.example.com:5432 & sleep 1; psql -h 127.0.0.1 ...`. Prints the local address and runs until killed." },
|
|
37
38
|
{ id: "sandbox.proxy", usage: "frely sandbox proxy [<http://host:port> [--no-proxy <list>] | --clear]", auth: "none", effect: "local-write", purpose: "Show, save or remove the HTTP(S) proxy that the command sandbox forwards its network traffic to (your own proxy, for example Clash). Without one saved it uses the HTTPS_PROXY / HTTP_PROXY / ALL_PROXY of the CLI process and, on macOS, the system proxy. Your proxy settings are never changed. Takes effect when the MCP service restarts." },
|
|
38
|
-
{ id: "
|
|
39
|
+
{ id: "devices", usage: "frely devices [--add] [--json]", auth: "controller", effect: "read", purpose: "List your Frely devices with online state and workspaces (list_devices). --add prints a one-time install command for a new computer." },
|
|
40
|
+
{ id: "run", usage: "frely run <device> [--cwd <dir>] [--timeout <s>] [--background] -- <command> [--json] [--out <file>]", auth: "controller", effect: "remote-execution", purpose: "Run a shell command on a device inside its sandbox and print its output; --background returns a process id. The command's own failure is exit code 2." },
|
|
41
|
+
{ id: "ps", usage: "frely ps <device>", auth: "controller", effect: "read", purpose: "List background commands on a device." },
|
|
42
|
+
{ id: "logs", usage: "frely logs <device> <id> [--follow]", auth: "controller", effect: "read", purpose: "Output of a background command; --follow shows it live until it ends." },
|
|
43
|
+
{ id: "kill", usage: "frely kill <device> <id>", auth: "controller", effect: "remote-execution", purpose: "Stop a background command on a device." },
|
|
44
|
+
{ id: "read", usage: "frely read <device>:<path> [--lines a:b] [--json] [--out <file>]", auth: "controller", effect: "read", purpose: "Print a file on a device (UTF-8, up to 1 MiB). A Windows drive path such as C:\\x is this computer, not a device." },
|
|
45
|
+
{ id: "ls", usage: "frely ls [<device>[:<path>]] [--json]", auth: "controller", effect: "read", purpose: "List a folder on a device; with only a device, its workspace roots." },
|
|
46
|
+
{ id: "grep", usage: "frely grep <device>:<path> <text> [--regex] [--case] [--max <n>]", auth: "controller", effect: "read", purpose: "Search file contents on a device." },
|
|
47
|
+
{ id: "edit", usage: "frely edit <device>:<path> (--from <local file> | --patch <json file>) [--overwrite]", auth: "controller", effect: "remote-write", purpose: "Write a device file from a local file, or apply line-range edits from a JSON file." },
|
|
48
|
+
{ id: "permission", usage: "frely permission request <device> --resource <name> --reason <text> --command <text> | confirm <code> [A|B|C] | wait <short code> [--then '<command>']", auth: "controller", effect: "authorization", purpose: "Ask the owner to open what the device sandbox blocks. Exit code 3 prints the approval link and the wait command: show the link to the user, then run `frely permission wait <short code> --then '<original command>'` in the background so the original command runs once they approve." },
|
|
49
|
+
{ id: "tools", usage: "frely tools [--json]", auth: "controller", effect: "read", purpose: "Print FrelyMCP's own instructions and every tool it offers." },
|
|
50
|
+
{ id: "call", usage: "frely call <tool> [--json '<object>' | --input <file>] [--out <file>]", auth: "controller", effect: "subcommand-dependent", purpose: "Call any FrelyMCP tool by name (browser, models, web_fetch, local_mcp_call, store, ...)." },
|
|
51
|
+
{ id: "controller", usage: "frely controller login|logout|status", auth: "browser", effect: "authorization-if-needed", purpose: "Authorize this computer to control your devices: shows a short code, you open the link, type the code and confirm with a passkey or authenticator code. The first controller command does this by itself in a terminal." },
|
|
52
|
+
{ id: "api", usage: "frely api list|describe|call [--wait] [--help]", auth: "controller", effect: "subcommand-dependent", purpose: "Discover and call your Frely account's business operations (the same tools FrelyMCP offers through frely_list/frely_call). Runs on this computer's controller authorization; the first call requests browser approval (frely controller login). `list` is grouped and compact (add --json for the full tool list); use describe before call; parameters and results are JSON; --input reads a file up to 512 KiB. When a call needs the owner's approval the error links to it; run the call with --wait (in the foreground, tool timeout of at least 10 minutes) to show the user the link first and then block until they approve on their phone or the web, so the call finishes by itself and you need not be told. Never background or kill it." },
|
|
39
53
|
{ id: "app.install", usage: "frely app install [--force] [--json]", auth: "local", effect: "local-write", purpose: "Install the Frely App: Homebrew cask when available, otherwise a verified download (SHA-256) from the FrelyHQ/frely-cli release mirror; quarantine is preserved." },
|
|
40
54
|
{ id: "app.open", usage: "frely app open [--window]", auth: "local", effect: "local-write", purpose: "Launch the Frely App in the background (menu bar) or with its main window via --window." },
|
|
41
55
|
{ id: "app.status", usage: "frely app status [--json]", auth: "local", effect: "read", purpose: "Show whether the Frely App is installed, its version, install path, running state and how it is managed." },
|
|
@@ -72,12 +86,14 @@ export function agentHelp() {
|
|
|
72
86
|
};
|
|
73
87
|
}
|
|
74
88
|
const GROUPS = [
|
|
89
|
+
{ title: "Control your devices", ids: ["devices", "run", "ps", "logs", "kill", "read", "ls", "grep", "edit", "permission", "tools", "call", "controller"] },
|
|
75
90
|
{ title: "Account", ids: ["login", "logout", "uninstall", "doctor", "update"] },
|
|
76
91
|
{ title: "Device MCP", ids: ["mcp.start", "mcp.workspace", "mcp.local", "mcp.lifecycle"] },
|
|
77
92
|
{ title: "Agents", ids: ["agent.install", "agent.run", "agent.status", "agent.remove"] },
|
|
78
93
|
{ title: "Skills", ids: ["skill.install"] },
|
|
79
94
|
{ title: "Marketplace items", ids: ["item.install", "item.update", "item.run", "item.trust"] },
|
|
80
95
|
{ title: "Providers", ids: ["provider.share", "provider.list"] },
|
|
96
|
+
{ title: "Share", ids: ["share"] },
|
|
81
97
|
{ title: "Command sandbox", ids: ["tunnel", "sandbox.proxy"] },
|
|
82
98
|
{ title: "API", ids: ["api", "remote.tools", "remote.call", "remote.config"] },
|
|
83
99
|
];
|
|
@@ -86,6 +102,19 @@ const GROUPS = [
|
|
|
86
102
|
// --json`, which this overview points to for the complete contract. Commands
|
|
87
103
|
// meant for services and Agents (mcp serve/stdio, network) appear only there.
|
|
88
104
|
const SHORT_USAGE = {
|
|
105
|
+
devices: "frely devices [--add]",
|
|
106
|
+
run: "frely run <device> [--cwd <dir>] [--background] -- <command>",
|
|
107
|
+
ps: "frely ps <device>",
|
|
108
|
+
logs: "frely logs <device> <id> [--follow]",
|
|
109
|
+
kill: "frely kill <device> <id>",
|
|
110
|
+
read: "frely read <device>:<path> [--lines a:b]",
|
|
111
|
+
ls: "frely ls [<device>[:<path>]]",
|
|
112
|
+
grep: "frely grep <device>:<path> <text>",
|
|
113
|
+
edit: "frely edit <device>:<path> --from <file>",
|
|
114
|
+
permission: "frely permission request|confirm|wait",
|
|
115
|
+
tools: "frely tools",
|
|
116
|
+
call: "frely call <tool> [--json '<object>']",
|
|
117
|
+
controller: "frely controller login|logout|status",
|
|
89
118
|
login: "frely login [--no-browser]",
|
|
90
119
|
logout: "frely logout",
|
|
91
120
|
uninstall: "frely uninstall [--yes]",
|
|
@@ -106,6 +135,7 @@ const SHORT_USAGE = {
|
|
|
106
135
|
"agent.remove": "frely agent remove <username/name>",
|
|
107
136
|
"provider.share": "frely provider share [ollama|openai-compatible] [--models <a,b>]",
|
|
108
137
|
"provider.list": "frely provider list",
|
|
138
|
+
share: "frely share <port> [--ttl <hours>]",
|
|
109
139
|
tunnel: "frely tunnel <host>:<port> [--local-port N]",
|
|
110
140
|
"sandbox.proxy": "frely sandbox proxy [<url> [--no-proxy <list>] | --clear]",
|
|
111
141
|
api: "frely api list|describe|call",
|
package/dist/agent-help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-help.js","sourceRoot":"","sources":["../src/agent-help.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-help.js","sourceRoot":"","sources":["../src/agent-help.ts"],"names":[],"mappings":"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"}
|
package/dist/auth.d.ts
CHANGED
|
@@ -117,6 +117,11 @@ export declare function loginDevice(relayInput?: string, notify?: (details: {
|
|
|
117
117
|
userCode: string;
|
|
118
118
|
sessionBound: boolean;
|
|
119
119
|
}>;
|
|
120
|
+
/** Continues a browser login whose process ended before the owner approved (an agent shell can kill it): waits on the saved device code until it expires. */
|
|
121
|
+
export declare function resumeDeviceLogin(relayInput?: string): Promise<{
|
|
122
|
+
user: PublicUser;
|
|
123
|
+
sessionBound: boolean;
|
|
124
|
+
} | null>;
|
|
120
125
|
/** Poll the approved device code, then store the credentials and the signed-in user. */
|
|
121
126
|
export declare function finishDeviceLogin(relayUrl: string, device: DeviceCodeResponse | EmailDeviceChallenge, deviceId: string): Promise<{
|
|
122
127
|
user: PublicUser;
|
package/dist/auth.js
CHANGED
|
@@ -178,14 +178,27 @@ export async function loginDevice(relayInput, notify, options = {}) {
|
|
|
178
178
|
await probeCredentialStore();
|
|
179
179
|
const deviceId = localDeviceId((await readConfig().catch(() => null))?.deviceId);
|
|
180
180
|
const device = await requestDeviceCode(relayUrl);
|
|
181
|
+
await savePendingDeviceLogin(relayUrl, device);
|
|
181
182
|
await options.beforeNotify?.({ relayUrl, userCode: device.user_code });
|
|
182
183
|
const verificationUri = validateVerificationUrl(device.verification_uri_complete || `${device.verification_uri}?user_code=${encodeURIComponent(device.user_code)}`, relayUrl);
|
|
183
184
|
notify?.({ verificationUri, userCode: device.user_code });
|
|
184
185
|
if (options.openBrowser !== false)
|
|
185
186
|
openVerificationUrl(verificationUri);
|
|
186
187
|
const { user, sessionBound } = await finishDeviceLogin(relayUrl, device, deviceId);
|
|
188
|
+
await deletePendingDeviceLogin();
|
|
187
189
|
return { user, verificationUri, userCode: device.user_code, sessionBound };
|
|
188
190
|
}
|
|
191
|
+
/** Continues a browser login whose process ended before the owner approved (an agent shell can kill it): waits on the saved device code until it expires. */
|
|
192
|
+
export async function resumeDeviceLogin(relayInput) {
|
|
193
|
+
const relayUrl = normalizeRelayUrl(relayInput);
|
|
194
|
+
const pending = await readPendingDeviceLogin(relayUrl);
|
|
195
|
+
if (!pending)
|
|
196
|
+
return null;
|
|
197
|
+
const deviceId = localDeviceId((await readConfig().catch(() => null))?.deviceId);
|
|
198
|
+
const result = await finishDeviceLogin(relayUrl, { ...pending.device, expires_in: Math.max(1, pending.device.expires_in - Math.floor((Date.now() - pending.savedAt) / 1000)) }, deviceId);
|
|
199
|
+
await deletePendingDeviceLogin();
|
|
200
|
+
return result;
|
|
201
|
+
}
|
|
189
202
|
/** Poll the approved device code, then store the credentials and the signed-in user. */
|
|
190
203
|
export async function finishDeviceLogin(relayUrl, device, deviceId) {
|
|
191
204
|
const token = await pollDeviceToken(relayUrl, device, deviceId);
|
|
@@ -652,6 +665,29 @@ function pendingEmailChallengePath() {
|
|
|
652
665
|
const root = process.env.XDG_RUNTIME_DIR || join(homedir(), ".cache");
|
|
653
666
|
return join(root, "frely", "pending-email-challenge.json");
|
|
654
667
|
}
|
|
668
|
+
function pendingDeviceLoginPath() {
|
|
669
|
+
const root = process.env.XDG_RUNTIME_DIR || join(homedir(), ".cache");
|
|
670
|
+
return join(root, "frely", "pending-device-login.json");
|
|
671
|
+
}
|
|
672
|
+
async function savePendingDeviceLogin(relayUrl, device) {
|
|
673
|
+
const path = pendingDeviceLoginPath();
|
|
674
|
+
await mkdir(dirname(path), { recursive: true });
|
|
675
|
+
await writeFile(path, JSON.stringify({ relayUrl, device, savedAt: Date.now() }), { mode: 0o600 });
|
|
676
|
+
}
|
|
677
|
+
async function readPendingDeviceLogin(relayUrl) {
|
|
678
|
+
try {
|
|
679
|
+
const data = JSON.parse(await readFile(pendingDeviceLoginPath(), "utf8"));
|
|
680
|
+
if (data.relayUrl !== relayUrl || !data.device || typeof data.savedAt !== "number")
|
|
681
|
+
return null;
|
|
682
|
+
return Date.now() < data.savedAt + data.device.expires_in * 1000 ? { device: data.device, savedAt: data.savedAt } : null;
|
|
683
|
+
}
|
|
684
|
+
catch {
|
|
685
|
+
return null;
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
async function deletePendingDeviceLogin() {
|
|
689
|
+
await unlink(pendingDeviceLoginPath()).catch(() => undefined);
|
|
690
|
+
}
|
|
655
691
|
export async function savePendingEmailChallenge(relayUrl, challenge) {
|
|
656
692
|
const path = pendingEmailChallengePath();
|
|
657
693
|
await mkdir(dirname(path), { recursive: true });
|