frely-cli 0.23.12 → 0.23.14
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 +12 -12
- package/README.zh-CN.md +11 -11
- package/dist/agent/local/approvals.js +2 -2
- package/dist/agent/local/approvals.js.map +1 -1
- package/dist/agent/local/command.js +1 -1
- package/dist/agent/local/command.js.map +1 -1
- package/dist/agent-help.d.ts +82 -94
- package/dist/agent-help.js +40 -42
- package/dist/agent-help.js.map +1 -1
- package/dist/auth.d.ts +14 -0
- package/dist/auth.js +60 -14
- package/dist/auth.js.map +1 -1
- package/dist/cloud/direct.d.ts +28 -0
- package/dist/cloud/direct.js +49 -0
- package/dist/cloud/direct.js.map +1 -0
- package/dist/cloud.d.ts +16 -6
- package/dist/cloud.js +82 -23
- package/dist/cloud.js.map +1 -1
- package/dist/controller/args.js +1 -1
- package/dist/controller/args.js.map +1 -1
- package/dist/controller/client.d.ts +30 -15
- package/dist/controller/client.js +42 -26
- package/dist/controller/client.js.map +1 -1
- package/dist/controller/commands.d.ts +1 -1
- package/dist/controller/commands.js +4 -25
- package/dist/controller/commands.js.map +1 -1
- package/dist/credential-file.js +5 -2
- package/dist/credential-file.js.map +1 -1
- package/dist/device/relay-client.js +4 -0
- package/dist/device/relay-client.js.map +1 -1
- package/dist/diagnostics.js +8 -8
- package/dist/diagnostics.js.map +1 -1
- package/dist/index.js +56 -39
- package/dist/index.js.map +1 -1
- package/dist/local-mcp-command.d.ts +1 -1
- package/dist/local-mcp-command.js +6 -6
- package/dist/local-mcp-command.js.map +1 -1
- package/dist/mcp-authorization.d.ts +1 -1
- package/dist/mcp-authorization.js +10 -10
- package/dist/mcp-authorization.js.map +1 -1
- package/dist/mcp-command.d.ts +8 -6
- package/dist/mcp-command.js +53 -43
- package/dist/mcp-command.js.map +1 -1
- package/dist/network-files.js +4 -1
- package/dist/network-files.js.map +1 -1
- package/dist/remote-lock.d.ts +10 -0
- package/dist/remote-lock.js +24 -0
- package/dist/remote-lock.js.map +1 -0
- package/dist/runtime/mcp-lease.js +1 -1
- package/dist/runtime/mcp-lease.js.map +1 -1
- package/dist/runtime/mcp.js +1 -1
- package/dist/runtime/mcp.js.map +1 -1
- package/dist/runtime/sandbox-proxy.js +2 -2
- package/dist/runtime/sandbox-proxy.js.map +1 -1
- package/dist/runtime/workspace-registry.js +1 -1
- package/dist/runtime/workspace-registry.js.map +1 -1
- package/dist/share/control.js +2 -2
- package/dist/share/control.js.map +1 -1
- package/dist/skill/access.js +5 -5
- package/dist/skill/access.js.map +1 -1
- package/dist/skill/cloud-item.js +9 -4
- package/dist/skill/cloud-item.js.map +1 -1
- package/dist/skill/entry.d.ts +12 -1
- package/dist/skill/entry.js +14 -3
- package/dist/skill/entry.js.map +1 -1
- package/dist/skill/managed.d.ts +2 -0
- package/dist/skill/managed.js +8 -1
- package/dist/skill/managed.js.map +1 -1
- package/dist/skill/registry.js +4 -1
- package/dist/skill/registry.js.map +1 -1
- package/dist/skill/remote-mcp.js +3 -3
- package/dist/skill/remote-mcp.js.map +1 -1
- package/dist/update/auto-update.d.ts +1 -1
- package/dist/update/auto-update.js +1 -1
- package/dist/update/auto-update.js.map +1 -1
- package/dist/workspace-command.d.ts +1 -1
- package/dist/workspace-command.js +3 -3
- package/dist/workspace-command.js.map +1 -1
- package/package.json +1 -1
- package/skills/frely-cli/SKILL.md +1 -1
- package/dist/controller/dpop.d.ts +0 -24
- package/dist/controller/dpop.js +0 -26
- package/dist/controller/dpop.js.map +0 -1
- package/dist/controller/session.d.ts +0 -58
- package/dist/controller/session.js +0 -268
- package/dist/controller/session.js.map +0 -1
package/dist/agent-help.d.ts
CHANGED
|
@@ -35,71 +35,71 @@ export declare const COMMANDS: readonly [{
|
|
|
35
35
|
readonly effect: "read";
|
|
36
36
|
readonly purpose: "Read this installed CLI's current Agent instructions.";
|
|
37
37
|
}, {
|
|
38
|
-
readonly id: "
|
|
39
|
-
readonly usage: "frely
|
|
38
|
+
readonly id: "link.on";
|
|
39
|
+
readonly usage: "frely link on [--workspace <path>] [--days 1..365] [--no-browser] [--json]";
|
|
40
40
|
readonly auth: "account-and-browser-if-needed";
|
|
41
41
|
readonly effect: "authorization-if-needed";
|
|
42
|
-
readonly purpose: "Enable, renew, start and read device MCP. Without a stored login it first signs in through the browser (the page also registers new accounts; --no-browser only prints the sign-in URL and device code, which can be approved on any device signed in to Frely); that one approval also enables device MCP, so no second approval link is needed. Unconfigured: request browser approval for --workspace (default: the home directory), install and start the background service. Expired or --days given: renew with browser approval; the MCP URL stays the same. Otherwise start the service if it is not running. With FRELY_INSTALL_TOKEN (the one-time install command from list_devices or the Frely console), it signs in to that account (replacing any stored login) and preapproves device MCP with no browser or prompt. Prompts go to stderr; stdout holds only the URL, or JSON with HTTP transport and OAuth details.
|
|
42
|
+
readonly purpose: "Enable, renew, start and read device MCP. Without a stored login it first signs in through the browser (the page also registers new accounts; --no-browser only prints the sign-in URL and device code, which can be approved on any device signed in to Frely); that one approval also enables device MCP, so no second approval link is needed. Unconfigured: request browser approval for --workspace (default: the home directory), install and start the background service. Expired or --days given: renew with browser approval; the MCP URL stays the same. Otherwise start the service if it is not running. With FRELY_INSTALL_TOKEN (the one-time install command from list_devices or the Frely console), it signs in to that account (replacing any stored login) and preapproves device MCP with no browser or prompt. Prompts go to stderr; stdout holds only the URL, or JSON with HTTP transport and OAuth details.";
|
|
43
43
|
}, {
|
|
44
|
-
readonly id: "
|
|
45
|
-
readonly usage: "frely
|
|
44
|
+
readonly id: "link.workspace.list";
|
|
45
|
+
readonly usage: "frely link workspace list [--json]";
|
|
46
46
|
readonly auth: "mcp";
|
|
47
47
|
readonly effect: "read";
|
|
48
48
|
readonly purpose: "List workspace directories for this device; the primary is marked.";
|
|
49
49
|
}, {
|
|
50
|
-
readonly id: "
|
|
51
|
-
readonly usage: "frely
|
|
50
|
+
readonly id: "link.workspace.add";
|
|
51
|
+
readonly usage: "frely link workspace add [path]";
|
|
52
52
|
readonly auth: "mcp";
|
|
53
53
|
readonly effect: "local-write";
|
|
54
54
|
readonly purpose: "Add an additional workspace directory for this device (default: current directory); takes effect on the running service without restart.";
|
|
55
55
|
}, {
|
|
56
|
-
readonly id: "
|
|
57
|
-
readonly usage: "frely
|
|
56
|
+
readonly id: "link.workspace.remove";
|
|
57
|
+
readonly usage: "frely link workspace remove <path>";
|
|
58
58
|
readonly auth: "mcp";
|
|
59
59
|
readonly effect: "local-write";
|
|
60
60
|
readonly purpose: "Remove an additional workspace directory (the primary cannot be removed).";
|
|
61
61
|
}, {
|
|
62
|
-
readonly id: "
|
|
63
|
-
readonly usage: "frely
|
|
62
|
+
readonly id: "link.local.list";
|
|
63
|
+
readonly usage: "frely link local list [--json]";
|
|
64
64
|
readonly auth: "none";
|
|
65
65
|
readonly effect: "read";
|
|
66
66
|
readonly purpose: "List MCP servers on this device that remote clients could use: loopback HTTP servers found automatically plus ones added by hand. Every server is off for remote clients until the owner turns it on in the web console.";
|
|
67
67
|
}, {
|
|
68
|
-
readonly id: "
|
|
69
|
-
readonly usage: "frely
|
|
68
|
+
readonly id: "link.local.add";
|
|
69
|
+
readonly usage: "frely link local add <name> --url <http://127.0.0.1:port/path> [--header K=V] | frely link local add <name> [--env K=V] -- <command> [args...]";
|
|
70
70
|
readonly auth: "none";
|
|
71
71
|
readonly effect: "local-write";
|
|
72
72
|
readonly purpose: "Add a local MCP server by loopback URL or by the command that starts it (stdio). It is connected once to check it works; it stays off for remote clients until the owner turns it on in the web console.";
|
|
73
73
|
}, {
|
|
74
|
-
readonly id: "
|
|
75
|
-
readonly usage: "frely
|
|
74
|
+
readonly id: "link.local.remove";
|
|
75
|
+
readonly usage: "frely link local remove <name>";
|
|
76
76
|
readonly auth: "none";
|
|
77
77
|
readonly effect: "local-write";
|
|
78
78
|
readonly purpose: "Remove a manually added local MCP server.";
|
|
79
79
|
}, {
|
|
80
|
-
readonly id: "
|
|
81
|
-
readonly usage: "frely
|
|
80
|
+
readonly id: "link.status";
|
|
81
|
+
readonly usage: "frely link status [--json]";
|
|
82
82
|
readonly auth: "none";
|
|
83
83
|
readonly effect: "read";
|
|
84
|
-
readonly purpose: "Show
|
|
84
|
+
readonly purpose: "Show the remote-control state (not enabled by default / on / off and locked here), its URL, workspace, authorization expiry and background service state. Makes no network request.";
|
|
85
85
|
}, {
|
|
86
|
-
readonly id: "
|
|
87
|
-
readonly usage: "frely
|
|
86
|
+
readonly id: "link.stop";
|
|
87
|
+
readonly usage: "frely link stop";
|
|
88
88
|
readonly auth: "none";
|
|
89
89
|
readonly effect: "local-service";
|
|
90
|
-
readonly purpose: "Stop the local MCP background service without revoking authorization; frely
|
|
90
|
+
readonly purpose: "Stop the local MCP background service without revoking authorization; frely link on resumes it. Supported updates restore running services without this command.";
|
|
91
91
|
}, {
|
|
92
|
-
readonly id: "
|
|
93
|
-
readonly usage: "frely
|
|
92
|
+
readonly id: "link.auto-update";
|
|
93
|
+
readonly usage: "frely link auto-update [on|off]";
|
|
94
94
|
readonly auth: "none";
|
|
95
95
|
readonly effect: "local-write";
|
|
96
96
|
readonly purpose: "Show or set whether this device's background service installs new stable versions of its own installation while idle and restarts itself. Off by default; macOS and Linux only.";
|
|
97
97
|
}, {
|
|
98
|
-
readonly id: "
|
|
99
|
-
readonly usage: "frely
|
|
98
|
+
readonly id: "link.off";
|
|
99
|
+
readonly usage: "frely link off";
|
|
100
100
|
readonly auth: "account";
|
|
101
101
|
readonly effect: "remote-write";
|
|
102
|
-
readonly purpose: "
|
|
102
|
+
readonly purpose: "Turn remote control off and lock it on this computer: revoke the authorization for every connected client, uninstall the background service (kept running provider-only when local Providers exist) and write a local lock. The web page cannot turn it on again; only frely link on here can.";
|
|
103
103
|
}, {
|
|
104
104
|
readonly id: "mcp.stdio";
|
|
105
105
|
readonly usage: "frely mcp stdio [--workspace <path>]";
|
|
@@ -289,87 +289,81 @@ export declare const COMMANDS: readonly [{
|
|
|
289
289
|
}, {
|
|
290
290
|
readonly id: "devices";
|
|
291
291
|
readonly usage: "frely devices [--add] [--json]";
|
|
292
|
-
readonly auth: "
|
|
292
|
+
readonly auth: "login";
|
|
293
293
|
readonly effect: "read";
|
|
294
294
|
readonly purpose: "List your Frely devices with online state and workspaces (list_devices). --add prints a one-time install command for a new computer.";
|
|
295
295
|
}, {
|
|
296
296
|
readonly id: "run";
|
|
297
297
|
readonly usage: "frely run <device> [--cwd <dir>] [--timeout <s>] [--background] -- <command> [--json] [--out <file>]";
|
|
298
|
-
readonly auth: "
|
|
298
|
+
readonly auth: "login";
|
|
299
299
|
readonly effect: "remote-execution";
|
|
300
300
|
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.";
|
|
301
301
|
}, {
|
|
302
302
|
readonly id: "ps";
|
|
303
303
|
readonly usage: "frely ps <device>";
|
|
304
|
-
readonly auth: "
|
|
304
|
+
readonly auth: "login";
|
|
305
305
|
readonly effect: "read";
|
|
306
306
|
readonly purpose: "List background commands on a device.";
|
|
307
307
|
}, {
|
|
308
308
|
readonly id: "logs";
|
|
309
309
|
readonly usage: "frely logs <device> <id> [--follow]";
|
|
310
|
-
readonly auth: "
|
|
310
|
+
readonly auth: "login";
|
|
311
311
|
readonly effect: "read";
|
|
312
312
|
readonly purpose: "Output of a background command; --follow shows it live until it ends.";
|
|
313
313
|
}, {
|
|
314
314
|
readonly id: "kill";
|
|
315
315
|
readonly usage: "frely kill <device> <id>";
|
|
316
|
-
readonly auth: "
|
|
316
|
+
readonly auth: "login";
|
|
317
317
|
readonly effect: "remote-execution";
|
|
318
318
|
readonly purpose: "Stop a background command on a device.";
|
|
319
319
|
}, {
|
|
320
320
|
readonly id: "read";
|
|
321
321
|
readonly usage: "frely read <device>:<path> [--lines a:b] [--json] [--out <file>]";
|
|
322
|
-
readonly auth: "
|
|
322
|
+
readonly auth: "login";
|
|
323
323
|
readonly effect: "read";
|
|
324
324
|
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.";
|
|
325
325
|
}, {
|
|
326
326
|
readonly id: "ls";
|
|
327
327
|
readonly usage: "frely ls [<device>[:<path>]] [--json]";
|
|
328
|
-
readonly auth: "
|
|
328
|
+
readonly auth: "login";
|
|
329
329
|
readonly effect: "read";
|
|
330
330
|
readonly purpose: "List a folder on a device; with only a device, its workspace roots.";
|
|
331
331
|
}, {
|
|
332
332
|
readonly id: "grep";
|
|
333
333
|
readonly usage: "frely grep <device>:<path> <text> [--regex] [--case] [--max <n>]";
|
|
334
|
-
readonly auth: "
|
|
334
|
+
readonly auth: "login";
|
|
335
335
|
readonly effect: "read";
|
|
336
336
|
readonly purpose: "Search file contents on a device.";
|
|
337
337
|
}, {
|
|
338
338
|
readonly id: "edit";
|
|
339
339
|
readonly usage: "frely edit <device>:<path> (--from <local file> | --patch <json file>) [--overwrite]";
|
|
340
|
-
readonly auth: "
|
|
340
|
+
readonly auth: "login";
|
|
341
341
|
readonly effect: "remote-write";
|
|
342
342
|
readonly purpose: "Write a device file from a local file, or apply line-range edits from a JSON file.";
|
|
343
343
|
}, {
|
|
344
344
|
readonly id: "permission";
|
|
345
345
|
readonly usage: "frely permission request <device> --resource <name> --reason <text> --command <text> | confirm <code> [A|B|C] | wait <short code> [--then '<command>']";
|
|
346
|
-
readonly auth: "
|
|
346
|
+
readonly auth: "login";
|
|
347
347
|
readonly effect: "authorization";
|
|
348
348
|
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.";
|
|
349
349
|
}, {
|
|
350
350
|
readonly id: "tools";
|
|
351
351
|
readonly usage: "frely tools [--json]";
|
|
352
|
-
readonly auth: "
|
|
352
|
+
readonly auth: "login";
|
|
353
353
|
readonly effect: "read";
|
|
354
354
|
readonly purpose: "Print FrelyMCP's own instructions and every tool it offers.";
|
|
355
355
|
}, {
|
|
356
356
|
readonly id: "call";
|
|
357
357
|
readonly usage: "frely call <tool> [--json '<object>' | --input <file>] [--out <file>]";
|
|
358
|
-
readonly auth: "
|
|
358
|
+
readonly auth: "login";
|
|
359
359
|
readonly effect: "subcommand-dependent";
|
|
360
360
|
readonly purpose: "Call any FrelyMCP tool by name (browser, models, web_fetch, local_mcp_call, store, ...).";
|
|
361
|
-
}, {
|
|
362
|
-
readonly id: "controller";
|
|
363
|
-
readonly usage: "frely controller login|logout|status";
|
|
364
|
-
readonly auth: "browser";
|
|
365
|
-
readonly effect: "authorization-if-needed";
|
|
366
|
-
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.";
|
|
367
361
|
}, {
|
|
368
362
|
readonly id: "api";
|
|
369
363
|
readonly usage: "frely api list|describe|call [--wait] [--help]";
|
|
370
|
-
readonly auth: "
|
|
364
|
+
readonly auth: "login";
|
|
371
365
|
readonly effect: "subcommand-dependent";
|
|
372
|
-
readonly purpose: "Discover and call your Frely account's business operations (the same tools FrelyMCP offers through frely_list/frely_call).
|
|
366
|
+
readonly purpose: "Discover and call your Frely account's business operations (the same tools FrelyMCP offers through frely_list/frely_call). Read-only discovery runs on the account's own login; the first write call asks you to approve this computer in a browser. `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.";
|
|
373
367
|
}, {
|
|
374
368
|
readonly id: "app.install";
|
|
375
369
|
readonly usage: "frely app install [--force] [--json]";
|
|
@@ -480,71 +474,71 @@ export declare function agentHelp(): {
|
|
|
480
474
|
readonly effect: "read";
|
|
481
475
|
readonly purpose: "Read this installed CLI's current Agent instructions.";
|
|
482
476
|
}, {
|
|
483
|
-
readonly id: "
|
|
484
|
-
readonly usage: "frely
|
|
477
|
+
readonly id: "link.on";
|
|
478
|
+
readonly usage: "frely link on [--workspace <path>] [--days 1..365] [--no-browser] [--json]";
|
|
485
479
|
readonly auth: "account-and-browser-if-needed";
|
|
486
480
|
readonly effect: "authorization-if-needed";
|
|
487
|
-
readonly purpose: "Enable, renew, start and read device MCP. Without a stored login it first signs in through the browser (the page also registers new accounts; --no-browser only prints the sign-in URL and device code, which can be approved on any device signed in to Frely); that one approval also enables device MCP, so no second approval link is needed. Unconfigured: request browser approval for --workspace (default: the home directory), install and start the background service. Expired or --days given: renew with browser approval; the MCP URL stays the same. Otherwise start the service if it is not running. With FRELY_INSTALL_TOKEN (the one-time install command from list_devices or the Frely console), it signs in to that account (replacing any stored login) and preapproves device MCP with no browser or prompt. Prompts go to stderr; stdout holds only the URL, or JSON with HTTP transport and OAuth details.
|
|
481
|
+
readonly purpose: "Enable, renew, start and read device MCP. Without a stored login it first signs in through the browser (the page also registers new accounts; --no-browser only prints the sign-in URL and device code, which can be approved on any device signed in to Frely); that one approval also enables device MCP, so no second approval link is needed. Unconfigured: request browser approval for --workspace (default: the home directory), install and start the background service. Expired or --days given: renew with browser approval; the MCP URL stays the same. Otherwise start the service if it is not running. With FRELY_INSTALL_TOKEN (the one-time install command from list_devices or the Frely console), it signs in to that account (replacing any stored login) and preapproves device MCP with no browser or prompt. Prompts go to stderr; stdout holds only the URL, or JSON with HTTP transport and OAuth details.";
|
|
488
482
|
}, {
|
|
489
|
-
readonly id: "
|
|
490
|
-
readonly usage: "frely
|
|
483
|
+
readonly id: "link.workspace.list";
|
|
484
|
+
readonly usage: "frely link workspace list [--json]";
|
|
491
485
|
readonly auth: "mcp";
|
|
492
486
|
readonly effect: "read";
|
|
493
487
|
readonly purpose: "List workspace directories for this device; the primary is marked.";
|
|
494
488
|
}, {
|
|
495
|
-
readonly id: "
|
|
496
|
-
readonly usage: "frely
|
|
489
|
+
readonly id: "link.workspace.add";
|
|
490
|
+
readonly usage: "frely link workspace add [path]";
|
|
497
491
|
readonly auth: "mcp";
|
|
498
492
|
readonly effect: "local-write";
|
|
499
493
|
readonly purpose: "Add an additional workspace directory for this device (default: current directory); takes effect on the running service without restart.";
|
|
500
494
|
}, {
|
|
501
|
-
readonly id: "
|
|
502
|
-
readonly usage: "frely
|
|
495
|
+
readonly id: "link.workspace.remove";
|
|
496
|
+
readonly usage: "frely link workspace remove <path>";
|
|
503
497
|
readonly auth: "mcp";
|
|
504
498
|
readonly effect: "local-write";
|
|
505
499
|
readonly purpose: "Remove an additional workspace directory (the primary cannot be removed).";
|
|
506
500
|
}, {
|
|
507
|
-
readonly id: "
|
|
508
|
-
readonly usage: "frely
|
|
501
|
+
readonly id: "link.local.list";
|
|
502
|
+
readonly usage: "frely link local list [--json]";
|
|
509
503
|
readonly auth: "none";
|
|
510
504
|
readonly effect: "read";
|
|
511
505
|
readonly purpose: "List MCP servers on this device that remote clients could use: loopback HTTP servers found automatically plus ones added by hand. Every server is off for remote clients until the owner turns it on in the web console.";
|
|
512
506
|
}, {
|
|
513
|
-
readonly id: "
|
|
514
|
-
readonly usage: "frely
|
|
507
|
+
readonly id: "link.local.add";
|
|
508
|
+
readonly usage: "frely link local add <name> --url <http://127.0.0.1:port/path> [--header K=V] | frely link local add <name> [--env K=V] -- <command> [args...]";
|
|
515
509
|
readonly auth: "none";
|
|
516
510
|
readonly effect: "local-write";
|
|
517
511
|
readonly purpose: "Add a local MCP server by loopback URL or by the command that starts it (stdio). It is connected once to check it works; it stays off for remote clients until the owner turns it on in the web console.";
|
|
518
512
|
}, {
|
|
519
|
-
readonly id: "
|
|
520
|
-
readonly usage: "frely
|
|
513
|
+
readonly id: "link.local.remove";
|
|
514
|
+
readonly usage: "frely link local remove <name>";
|
|
521
515
|
readonly auth: "none";
|
|
522
516
|
readonly effect: "local-write";
|
|
523
517
|
readonly purpose: "Remove a manually added local MCP server.";
|
|
524
518
|
}, {
|
|
525
|
-
readonly id: "
|
|
526
|
-
readonly usage: "frely
|
|
519
|
+
readonly id: "link.status";
|
|
520
|
+
readonly usage: "frely link status [--json]";
|
|
527
521
|
readonly auth: "none";
|
|
528
522
|
readonly effect: "read";
|
|
529
|
-
readonly purpose: "Show
|
|
523
|
+
readonly purpose: "Show the remote-control state (not enabled by default / on / off and locked here), its URL, workspace, authorization expiry and background service state. Makes no network request.";
|
|
530
524
|
}, {
|
|
531
|
-
readonly id: "
|
|
532
|
-
readonly usage: "frely
|
|
525
|
+
readonly id: "link.stop";
|
|
526
|
+
readonly usage: "frely link stop";
|
|
533
527
|
readonly auth: "none";
|
|
534
528
|
readonly effect: "local-service";
|
|
535
|
-
readonly purpose: "Stop the local MCP background service without revoking authorization; frely
|
|
529
|
+
readonly purpose: "Stop the local MCP background service without revoking authorization; frely link on resumes it. Supported updates restore running services without this command.";
|
|
536
530
|
}, {
|
|
537
|
-
readonly id: "
|
|
538
|
-
readonly usage: "frely
|
|
531
|
+
readonly id: "link.auto-update";
|
|
532
|
+
readonly usage: "frely link auto-update [on|off]";
|
|
539
533
|
readonly auth: "none";
|
|
540
534
|
readonly effect: "local-write";
|
|
541
535
|
readonly purpose: "Show or set whether this device's background service installs new stable versions of its own installation while idle and restarts itself. Off by default; macOS and Linux only.";
|
|
542
536
|
}, {
|
|
543
|
-
readonly id: "
|
|
544
|
-
readonly usage: "frely
|
|
537
|
+
readonly id: "link.off";
|
|
538
|
+
readonly usage: "frely link off";
|
|
545
539
|
readonly auth: "account";
|
|
546
540
|
readonly effect: "remote-write";
|
|
547
|
-
readonly purpose: "
|
|
541
|
+
readonly purpose: "Turn remote control off and lock it on this computer: revoke the authorization for every connected client, uninstall the background service (kept running provider-only when local Providers exist) and write a local lock. The web page cannot turn it on again; only frely link on here can.";
|
|
548
542
|
}, {
|
|
549
543
|
readonly id: "mcp.stdio";
|
|
550
544
|
readonly usage: "frely mcp stdio [--workspace <path>]";
|
|
@@ -734,87 +728,81 @@ export declare function agentHelp(): {
|
|
|
734
728
|
}, {
|
|
735
729
|
readonly id: "devices";
|
|
736
730
|
readonly usage: "frely devices [--add] [--json]";
|
|
737
|
-
readonly auth: "
|
|
731
|
+
readonly auth: "login";
|
|
738
732
|
readonly effect: "read";
|
|
739
733
|
readonly purpose: "List your Frely devices with online state and workspaces (list_devices). --add prints a one-time install command for a new computer.";
|
|
740
734
|
}, {
|
|
741
735
|
readonly id: "run";
|
|
742
736
|
readonly usage: "frely run <device> [--cwd <dir>] [--timeout <s>] [--background] -- <command> [--json] [--out <file>]";
|
|
743
|
-
readonly auth: "
|
|
737
|
+
readonly auth: "login";
|
|
744
738
|
readonly effect: "remote-execution";
|
|
745
739
|
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.";
|
|
746
740
|
}, {
|
|
747
741
|
readonly id: "ps";
|
|
748
742
|
readonly usage: "frely ps <device>";
|
|
749
|
-
readonly auth: "
|
|
743
|
+
readonly auth: "login";
|
|
750
744
|
readonly effect: "read";
|
|
751
745
|
readonly purpose: "List background commands on a device.";
|
|
752
746
|
}, {
|
|
753
747
|
readonly id: "logs";
|
|
754
748
|
readonly usage: "frely logs <device> <id> [--follow]";
|
|
755
|
-
readonly auth: "
|
|
749
|
+
readonly auth: "login";
|
|
756
750
|
readonly effect: "read";
|
|
757
751
|
readonly purpose: "Output of a background command; --follow shows it live until it ends.";
|
|
758
752
|
}, {
|
|
759
753
|
readonly id: "kill";
|
|
760
754
|
readonly usage: "frely kill <device> <id>";
|
|
761
|
-
readonly auth: "
|
|
755
|
+
readonly auth: "login";
|
|
762
756
|
readonly effect: "remote-execution";
|
|
763
757
|
readonly purpose: "Stop a background command on a device.";
|
|
764
758
|
}, {
|
|
765
759
|
readonly id: "read";
|
|
766
760
|
readonly usage: "frely read <device>:<path> [--lines a:b] [--json] [--out <file>]";
|
|
767
|
-
readonly auth: "
|
|
761
|
+
readonly auth: "login";
|
|
768
762
|
readonly effect: "read";
|
|
769
763
|
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.";
|
|
770
764
|
}, {
|
|
771
765
|
readonly id: "ls";
|
|
772
766
|
readonly usage: "frely ls [<device>[:<path>]] [--json]";
|
|
773
|
-
readonly auth: "
|
|
767
|
+
readonly auth: "login";
|
|
774
768
|
readonly effect: "read";
|
|
775
769
|
readonly purpose: "List a folder on a device; with only a device, its workspace roots.";
|
|
776
770
|
}, {
|
|
777
771
|
readonly id: "grep";
|
|
778
772
|
readonly usage: "frely grep <device>:<path> <text> [--regex] [--case] [--max <n>]";
|
|
779
|
-
readonly auth: "
|
|
773
|
+
readonly auth: "login";
|
|
780
774
|
readonly effect: "read";
|
|
781
775
|
readonly purpose: "Search file contents on a device.";
|
|
782
776
|
}, {
|
|
783
777
|
readonly id: "edit";
|
|
784
778
|
readonly usage: "frely edit <device>:<path> (--from <local file> | --patch <json file>) [--overwrite]";
|
|
785
|
-
readonly auth: "
|
|
779
|
+
readonly auth: "login";
|
|
786
780
|
readonly effect: "remote-write";
|
|
787
781
|
readonly purpose: "Write a device file from a local file, or apply line-range edits from a JSON file.";
|
|
788
782
|
}, {
|
|
789
783
|
readonly id: "permission";
|
|
790
784
|
readonly usage: "frely permission request <device> --resource <name> --reason <text> --command <text> | confirm <code> [A|B|C] | wait <short code> [--then '<command>']";
|
|
791
|
-
readonly auth: "
|
|
785
|
+
readonly auth: "login";
|
|
792
786
|
readonly effect: "authorization";
|
|
793
787
|
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.";
|
|
794
788
|
}, {
|
|
795
789
|
readonly id: "tools";
|
|
796
790
|
readonly usage: "frely tools [--json]";
|
|
797
|
-
readonly auth: "
|
|
791
|
+
readonly auth: "login";
|
|
798
792
|
readonly effect: "read";
|
|
799
793
|
readonly purpose: "Print FrelyMCP's own instructions and every tool it offers.";
|
|
800
794
|
}, {
|
|
801
795
|
readonly id: "call";
|
|
802
796
|
readonly usage: "frely call <tool> [--json '<object>' | --input <file>] [--out <file>]";
|
|
803
|
-
readonly auth: "
|
|
797
|
+
readonly auth: "login";
|
|
804
798
|
readonly effect: "subcommand-dependent";
|
|
805
799
|
readonly purpose: "Call any FrelyMCP tool by name (browser, models, web_fetch, local_mcp_call, store, ...).";
|
|
806
|
-
}, {
|
|
807
|
-
readonly id: "controller";
|
|
808
|
-
readonly usage: "frely controller login|logout|status";
|
|
809
|
-
readonly auth: "browser";
|
|
810
|
-
readonly effect: "authorization-if-needed";
|
|
811
|
-
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.";
|
|
812
800
|
}, {
|
|
813
801
|
readonly id: "api";
|
|
814
802
|
readonly usage: "frely api list|describe|call [--wait] [--help]";
|
|
815
|
-
readonly auth: "
|
|
803
|
+
readonly auth: "login";
|
|
816
804
|
readonly effect: "subcommand-dependent";
|
|
817
|
-
readonly purpose: "Discover and call your Frely account's business operations (the same tools FrelyMCP offers through frely_list/frely_call).
|
|
805
|
+
readonly purpose: "Discover and call your Frely account's business operations (the same tools FrelyMCP offers through frely_list/frely_call). Read-only discovery runs on the account's own login; the first write call asks you to approve this computer in a browser. `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.";
|
|
818
806
|
}, {
|
|
819
807
|
readonly id: "app.install";
|
|
820
808
|
readonly usage: "frely app install [--force] [--json]";
|
|
@@ -885,8 +873,8 @@ export declare function agentHelp(): {
|
|
|
885
873
|
};
|
|
886
874
|
export declare function cliUsage(): string;
|
|
887
875
|
/**
|
|
888
|
-
* A command group without a direct action (`frely
|
|
876
|
+
* A command group without a direct action (`frely link workspace`, `frely agent`,
|
|
889
877
|
* ...) prints the subcommands under it instead of running one.
|
|
890
878
|
*/
|
|
891
879
|
export declare function subcommandUsage(group: string): string;
|
|
892
|
-
export declare function
|
|
880
|
+
export declare function linkUsage(): string;
|
package/dist/agent-help.js
CHANGED
|
@@ -6,17 +6,17 @@ export const COMMANDS = [
|
|
|
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." },
|
|
7
7
|
{ id: "update", usage: "frely update", auth: "none", effect: "local-write", purpose: "Update the current installation to the latest stable release. Windows prints a manual command; doctor checks versions." },
|
|
8
8
|
{ id: "help", usage: "frely help --agent --json", auth: "none", effect: "read", purpose: "Read this installed CLI's current Agent instructions." },
|
|
9
|
-
{ id: "
|
|
10
|
-
{ id: "
|
|
11
|
-
{ id: "
|
|
12
|
-
{ id: "
|
|
13
|
-
{ id: "
|
|
14
|
-
{ id: "
|
|
15
|
-
{ id: "
|
|
16
|
-
{ id: "
|
|
17
|
-
{ id: "
|
|
18
|
-
{ id: "
|
|
19
|
-
{ id: "
|
|
9
|
+
{ id: "link.on", usage: "frely link on [--workspace <path>] [--days 1..365] [--no-browser] [--json]", auth: "account-and-browser-if-needed", effect: "authorization-if-needed", purpose: "Enable, renew, start and read device MCP. Without a stored login it first signs in through the browser (the page also registers new accounts; --no-browser only prints the sign-in URL and device code, which can be approved on any device signed in to Frely); that one approval also enables device MCP, so no second approval link is needed. Unconfigured: request browser approval for --workspace (default: the home directory), install and start the background service. Expired or --days given: renew with browser approval; the MCP URL stays the same. Otherwise start the service if it is not running. With FRELY_INSTALL_TOKEN (the one-time install command from list_devices or the Frely console), it signs in to that account (replacing any stored login) and preapproves device MCP with no browser or prompt. Prompts go to stderr; stdout holds only the URL, or JSON with HTTP transport and OAuth details." },
|
|
10
|
+
{ id: "link.workspace.list", usage: "frely link workspace list [--json]", auth: "mcp", effect: "read", purpose: "List workspace directories for this device; the primary is marked." },
|
|
11
|
+
{ id: "link.workspace.add", usage: "frely link workspace add [path]", auth: "mcp", effect: "local-write", purpose: "Add an additional workspace directory for this device (default: current directory); takes effect on the running service without restart." },
|
|
12
|
+
{ id: "link.workspace.remove", usage: "frely link workspace remove <path>", auth: "mcp", effect: "local-write", purpose: "Remove an additional workspace directory (the primary cannot be removed)." },
|
|
13
|
+
{ id: "link.local.list", usage: "frely link local list [--json]", auth: "none", effect: "read", purpose: "List MCP servers on this device that remote clients could use: loopback HTTP servers found automatically plus ones added by hand. Every server is off for remote clients until the owner turns it on in the web console." },
|
|
14
|
+
{ id: "link.local.add", usage: "frely link local add <name> --url <http://127.0.0.1:port/path> [--header K=V] | frely link local add <name> [--env K=V] -- <command> [args...]", auth: "none", effect: "local-write", purpose: "Add a local MCP server by loopback URL or by the command that starts it (stdio). It is connected once to check it works; it stays off for remote clients until the owner turns it on in the web console." },
|
|
15
|
+
{ id: "link.local.remove", usage: "frely link local remove <name>", auth: "none", effect: "local-write", purpose: "Remove a manually added local MCP server." },
|
|
16
|
+
{ id: "link.status", usage: "frely link status [--json]", auth: "none", effect: "read", purpose: "Show the remote-control state (not enabled by default / on / off and locked here), its URL, workspace, authorization expiry and background service state. Makes no network request." },
|
|
17
|
+
{ id: "link.stop", usage: "frely link stop", auth: "none", effect: "local-service", purpose: "Stop the local MCP background service without revoking authorization; frely link on resumes it. Supported updates restore running services without this command." },
|
|
18
|
+
{ id: "link.auto-update", usage: "frely link auto-update [on|off]", auth: "none", effect: "local-write", purpose: "Show or set whether this device's background service installs new stable versions of its own installation while idle and restarts itself. Off by default; macOS and Linux only." },
|
|
19
|
+
{ id: "link.off", usage: "frely link off", auth: "account", effect: "remote-write", purpose: "Turn remote control off and lock it on this computer: revoke the authorization for every connected client, uninstall the background service (kept running provider-only when local Providers exist) and write a local lock. The web page cannot turn it on again; only frely link on here can." },
|
|
20
20
|
{ id: "mcp.stdio", usage: "frely mcp stdio [--workspace <path>]", auth: "mcp", effect: "local-execution", purpose: "Serve authorized local tools over stdio for a local MCP client." },
|
|
21
21
|
{ id: "mcp.serve", usage: "frely mcp serve [--workspace <path>]", auth: "account-and-mcp", effect: "local-execution", purpose: "Foreground Device Relay client; the background service runs this. Not needed for normal use." },
|
|
22
22
|
{ id: "skill.install", usage: "frely skill install [--host chatgpt|codex|claude-code|pi|generic] [--scope global|project] [--dir <project>] [--json]", auth: "none", effect: "local-write", purpose: "Install the `frely` Skill into the host Skill folder. It teaches the agent to sign in, use `frely api`, install marketplace items and Agents, and offer FrelyMCP only when a request needs it. Running it again refreshes the Skill; an edited copy is left alone. Does not enable device MCP." },
|
|
@@ -48,20 +48,19 @@ export const COMMANDS = [
|
|
|
48
48
|
{ id: "service.manage", usage: "frely service list [--json] | stop <id|label> | remove <id|label>", auth: "account", effect: "remote-write", purpose: "List registered services, stop one on this computer (it stays registered), or remove it from Frely (products that pointed at it become unreachable)." },
|
|
49
49
|
{ 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." },
|
|
50
50
|
{ 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." },
|
|
51
|
-
{ id: "devices", usage: "frely devices [--add] [--json]", auth: "
|
|
52
|
-
{ id: "run", usage: "frely run <device> [--cwd <dir>] [--timeout <s>] [--background] -- <command> [--json] [--out <file>]", auth: "
|
|
53
|
-
{ id: "ps", usage: "frely ps <device>", auth: "
|
|
54
|
-
{ id: "logs", usage: "frely logs <device> <id> [--follow]", auth: "
|
|
55
|
-
{ id: "kill", usage: "frely kill <device> <id>", auth: "
|
|
56
|
-
{ id: "read", usage: "frely read <device>:<path> [--lines a:b] [--json] [--out <file>]", auth: "
|
|
57
|
-
{ id: "ls", usage: "frely ls [<device>[:<path>]] [--json]", auth: "
|
|
58
|
-
{ id: "grep", usage: "frely grep <device>:<path> <text> [--regex] [--case] [--max <n>]", auth: "
|
|
59
|
-
{ id: "edit", usage: "frely edit <device>:<path> (--from <local file> | --patch <json file>) [--overwrite]", auth: "
|
|
60
|
-
{ id: "permission", usage: "frely permission request <device> --resource <name> --reason <text> --command <text> | confirm <code> [A|B|C] | wait <short code> [--then '<command>']", auth: "
|
|
61
|
-
{ id: "tools", usage: "frely tools [--json]", auth: "
|
|
62
|
-
{ id: "call", usage: "frely call <tool> [--json '<object>' | --input <file>] [--out <file>]", auth: "
|
|
63
|
-
{ id: "
|
|
64
|
-
{ 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." },
|
|
51
|
+
{ id: "devices", usage: "frely devices [--add] [--json]", auth: "login", 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." },
|
|
52
|
+
{ id: "run", usage: "frely run <device> [--cwd <dir>] [--timeout <s>] [--background] -- <command> [--json] [--out <file>]", auth: "login", 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." },
|
|
53
|
+
{ id: "ps", usage: "frely ps <device>", auth: "login", effect: "read", purpose: "List background commands on a device." },
|
|
54
|
+
{ id: "logs", usage: "frely logs <device> <id> [--follow]", auth: "login", effect: "read", purpose: "Output of a background command; --follow shows it live until it ends." },
|
|
55
|
+
{ id: "kill", usage: "frely kill <device> <id>", auth: "login", effect: "remote-execution", purpose: "Stop a background command on a device." },
|
|
56
|
+
{ id: "read", usage: "frely read <device>:<path> [--lines a:b] [--json] [--out <file>]", auth: "login", 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." },
|
|
57
|
+
{ id: "ls", usage: "frely ls [<device>[:<path>]] [--json]", auth: "login", effect: "read", purpose: "List a folder on a device; with only a device, its workspace roots." },
|
|
58
|
+
{ id: "grep", usage: "frely grep <device>:<path> <text> [--regex] [--case] [--max <n>]", auth: "login", effect: "read", purpose: "Search file contents on a device." },
|
|
59
|
+
{ id: "edit", usage: "frely edit <device>:<path> (--from <local file> | --patch <json file>) [--overwrite]", auth: "login", effect: "remote-write", purpose: "Write a device file from a local file, or apply line-range edits from a JSON file." },
|
|
60
|
+
{ id: "permission", usage: "frely permission request <device> --resource <name> --reason <text> --command <text> | confirm <code> [A|B|C] | wait <short code> [--then '<command>']", auth: "login", 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." },
|
|
61
|
+
{ id: "tools", usage: "frely tools [--json]", auth: "login", effect: "read", purpose: "Print FrelyMCP's own instructions and every tool it offers." },
|
|
62
|
+
{ id: "call", usage: "frely call <tool> [--json '<object>' | --input <file>] [--out <file>]", auth: "login", effect: "subcommand-dependent", purpose: "Call any FrelyMCP tool by name (browser, models, web_fetch, local_mcp_call, store, ...)." },
|
|
63
|
+
{ id: "api", usage: "frely api list|describe|call [--wait] [--help]", auth: "login", effect: "subcommand-dependent", purpose: "Discover and call your Frely account's business operations (the same tools FrelyMCP offers through frely_list/frely_call). Read-only discovery runs on the account's own login; the first write call asks you to approve this computer in a browser. `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." },
|
|
65
64
|
{ 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." },
|
|
66
65
|
{ 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." },
|
|
67
66
|
{ 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." },
|
|
@@ -89,18 +88,18 @@ export function agentHelp() {
|
|
|
89
88
|
"A Key amount limit is a spending cap. It reserves no funds and remains subject to its owner's available Plan allowance and Credit.",
|
|
90
89
|
"Budget sources are independent constraints. Do not sum their remaining amounts or describe them as a Key balance.",
|
|
91
90
|
"Installing a remote Agent Skill does not replace the host's current model provider.",
|
|
92
|
-
"
|
|
93
|
-
"Use frely
|
|
94
|
-
"If MCP is unconfigured or expired, frely
|
|
91
|
+
"Remote control lets other clients (HTTP MCP clients with OAuth, frely run from another computer, hosted Agents) use this computer. It is not enabled after install; the owner turns it on from the web page after two-step verification, or with frely link on. Commands execute on the device, not on the calling computer.",
|
|
92
|
+
"Use frely link on to enable remote control, start it, or read its MCP address; frely link off turns it off and locks it on this computer (only frely link on there lifts the lock); frely link status and frely doctor [-v] show status and diagnostics.",
|
|
93
|
+
"If MCP is unconfigured or expired, frely link on requests browser approval; otherwise it only ensures the service is running and prints the URL. Existing workspaces stay unchanged.",
|
|
95
94
|
"Remote clients of one device share its workspace and managed processes. Shell uses the device OS account; it is not a workspace sandbox.",
|
|
96
95
|
],
|
|
97
96
|
commands: COMMANDS,
|
|
98
97
|
};
|
|
99
98
|
}
|
|
100
99
|
const GROUPS = [
|
|
101
|
-
{ title: "Control your devices", ids: ["devices", "run", "ps", "logs", "kill", "read", "ls", "grep", "edit", "permission", "tools", "call"
|
|
100
|
+
{ title: "Control your devices", ids: ["devices", "run", "ps", "logs", "kill", "read", "ls", "grep", "edit", "permission", "tools", "call"] },
|
|
102
101
|
{ title: "Account", ids: ["login", "logout", "uninstall", "doctor", "update"] },
|
|
103
|
-
{ title: "
|
|
102
|
+
{ title: "Let others control this computer", ids: ["link.on", "link.workspace", "link.local", "link.lifecycle"] },
|
|
104
103
|
{ title: "Agents", ids: ["agent.install", "agent.run", "agent.status", "agent.remove", "agent.local"] },
|
|
105
104
|
{ title: "Skills", ids: ["skill.install"] },
|
|
106
105
|
{ title: "Marketplace items", ids: ["item.install", "item.update", "item.run", "item.trust"] },
|
|
@@ -126,16 +125,15 @@ const SHORT_USAGE = {
|
|
|
126
125
|
permission: "frely permission request|confirm|wait",
|
|
127
126
|
tools: "frely tools",
|
|
128
127
|
call: "frely call <tool> [--json '<object>']",
|
|
129
|
-
controller: "frely controller login|logout|status",
|
|
130
128
|
login: "frely login [--no-browser]",
|
|
131
129
|
logout: "frely logout",
|
|
132
130
|
uninstall: "frely uninstall [--yes]",
|
|
133
131
|
doctor: "frely doctor [-v] [--json]",
|
|
134
132
|
update: "frely update",
|
|
135
|
-
"
|
|
136
|
-
"
|
|
137
|
-
"
|
|
138
|
-
"
|
|
133
|
+
"link.on": "frely link on [--workspace <path>] [--days 1..365] [--no-browser] [--json]",
|
|
134
|
+
"link.workspace": "frely link workspace list|add <path>|remove <path>",
|
|
135
|
+
"link.local": "frely link local list|add <name> (--url <address>|-- <command>)|remove <name>",
|
|
136
|
+
"link.lifecycle": "frely link status|stop|remove",
|
|
139
137
|
"skill.install": "frely skill install [--host <host>]",
|
|
140
138
|
"item.install": "frely item install <username/name[@version]> [--host <host>]",
|
|
141
139
|
"item.update": "frely item update [<folder>]",
|
|
@@ -179,7 +177,7 @@ export function cliUsage() {
|
|
|
179
177
|
return lines.join("");
|
|
180
178
|
}
|
|
181
179
|
/**
|
|
182
|
-
* A command group without a direct action (`frely
|
|
180
|
+
* A command group without a direct action (`frely link workspace`, `frely agent`,
|
|
183
181
|
* ...) prints the subcommands under it instead of running one.
|
|
184
182
|
*/
|
|
185
183
|
export function subcommandUsage(group) {
|
|
@@ -188,12 +186,12 @@ export function subcommandUsage(group) {
|
|
|
188
186
|
.map((command) => ` ${SHORT_USAGE[command.id] ?? command.usage}\n`);
|
|
189
187
|
return `Usage:\n${lines.join("")}`;
|
|
190
188
|
}
|
|
191
|
-
export function
|
|
192
|
-
return "
|
|
193
|
-
+ ["
|
|
194
|
-
+ "\nStatus: frely
|
|
195
|
-
+ "Run frely
|
|
189
|
+
export function linkUsage() {
|
|
190
|
+
return "Remote control — let others control this computer (MCP clients, frely run from another computer, hosted Agents).\n\nUsage:\n"
|
|
191
|
+
+ ["link.on", "link.workspace", "link.local", "link.lifecycle"].map((id) => " " + SHORT_USAGE[id] + "\n").join("")
|
|
192
|
+
+ "\nStatus: frely link status [--json]; diagnostics: frely doctor [-v] [--json]\n\n"
|
|
193
|
+
+ "Run frely link on on the computer to control. It asks for browser approval the first time (the home directory, or --workspace) and when authorization has expired, installs and starts the background service, and prints the MCP URL. Add that URL to ChatGPT, Claude Code on another computer, or another HTTP MCP client, then authorize with OAuth.\n"
|
|
196
194
|
+ "Prompts go to stderr; stdout contains only the URL or JSON. --days 1..365 renews now; the URL stays the same.\n"
|
|
197
|
-
+ "frely
|
|
195
|
+
+ "frely link stop only stops the service; frely link off revokes access for every client. Clients share the device workspace and managed processes. Shell runs under the device OS account.\n";
|
|
198
196
|
}
|
|
199
197
|
//# sourceMappingURL=agent-help.js.map
|