frely-cli 0.6.10 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +97 -293
  2. package/README.zh-CN.md +230 -0
  3. package/dist/agent/agent-service.d.ts +77 -0
  4. package/dist/agent/agent-service.js +348 -0
  5. package/dist/agent/agent-service.js.map +1 -0
  6. package/dist/agent/app-install.d.ts +49 -0
  7. package/dist/agent/app-install.js +133 -0
  8. package/dist/agent/app-install.js.map +1 -0
  9. package/dist/agent/app-key.d.ts +14 -0
  10. package/dist/agent/app-key.js +46 -0
  11. package/dist/agent/app-key.js.map +1 -0
  12. package/dist/agent/compose.d.ts +23 -0
  13. package/dist/agent/compose.js +42 -0
  14. package/dist/agent/compose.js.map +1 -0
  15. package/dist/agent/ops-server.d.ts +18 -0
  16. package/dist/agent/ops-server.js +175 -0
  17. package/dist/agent/ops-server.js.map +1 -0
  18. package/dist/agent/ops-stdio.d.ts +5 -0
  19. package/dist/agent/ops-stdio.js +47 -0
  20. package/dist/agent/ops-stdio.js.map +1 -0
  21. package/dist/agent/ops.d.ts +25 -0
  22. package/dist/agent/ops.js +82 -0
  23. package/dist/agent/ops.js.map +1 -0
  24. package/dist/agent/protocol.d.ts +72 -0
  25. package/dist/agent/protocol.js +195 -0
  26. package/dist/agent/protocol.js.map +1 -0
  27. package/dist/agent/supervisor.d.ts +80 -0
  28. package/dist/agent/supervisor.js +278 -0
  29. package/dist/agent/supervisor.js.map +1 -0
  30. package/dist/agent/task-store.d.ts +82 -0
  31. package/dist/agent/task-store.js +220 -0
  32. package/dist/agent/task-store.js.map +1 -0
  33. package/dist/agent/tool-executor.d.ts +28 -0
  34. package/dist/agent/tool-executor.js +113 -0
  35. package/dist/agent/tool-executor.js.map +1 -0
  36. package/dist/agent/worktrees.d.ts +35 -0
  37. package/dist/agent/worktrees.js +143 -0
  38. package/dist/agent/worktrees.js.map +1 -0
  39. package/dist/agent-help.d.ts +200 -176
  40. package/dist/agent-help.js +65 -32
  41. package/dist/agent-help.js.map +1 -1
  42. package/dist/auth.d.ts +3 -0
  43. package/dist/auth.js +52 -14
  44. package/dist/auth.js.map +1 -1
  45. package/dist/cloud.d.ts +1 -1
  46. package/dist/cloud.js +6 -13
  47. package/dist/cloud.js.map +1 -1
  48. package/dist/device/protocol.d.ts +11 -2
  49. package/dist/device/protocol.js +18 -2
  50. package/dist/device/protocol.js.map +1 -1
  51. package/dist/device/relay-client.d.ts +19 -2
  52. package/dist/device/relay-client.js +65 -13
  53. package/dist/device/relay-client.js.map +1 -1
  54. package/dist/diagnostics.js +12 -4
  55. package/dist/diagnostics.js.map +1 -1
  56. package/dist/index.js +203 -173
  57. package/dist/index.js.map +1 -1
  58. package/dist/key-budget.js +2 -2
  59. package/dist/key-budget.js.map +1 -1
  60. package/dist/mcp-authorization.js +9 -7
  61. package/dist/mcp-authorization.js.map +1 -1
  62. package/dist/mcp-command.d.ts +12 -4
  63. package/dist/mcp-command.js +54 -25
  64. package/dist/mcp-command.js.map +1 -1
  65. package/dist/provider/state.d.ts +2 -0
  66. package/dist/provider/state.js +1 -0
  67. package/dist/provider/state.js.map +1 -1
  68. package/dist/runtime/mcp-lease.js +1 -1
  69. package/dist/runtime/mcp-lease.js.map +1 -1
  70. package/dist/runtime/mcp.d.ts +139 -0
  71. package/dist/runtime/mcp.js +88 -29
  72. package/dist/runtime/mcp.js.map +1 -1
  73. package/dist/runtime/process-manager.d.ts +1 -1
  74. package/dist/runtime/process-manager.js +4 -2
  75. package/dist/runtime/process-manager.js.map +1 -1
  76. package/dist/runtime/relay-agent.d.ts +25 -0
  77. package/dist/runtime/relay-agent.js +63 -0
  78. package/dist/runtime/relay-agent.js.map +1 -0
  79. package/dist/runtime/relay-mcp.d.ts +5 -2
  80. package/dist/runtime/relay-mcp.js +6 -1
  81. package/dist/runtime/relay-mcp.js.map +1 -1
  82. package/dist/runtime/relay-session.d.ts +47 -0
  83. package/dist/runtime/relay-session.js +56 -0
  84. package/dist/runtime/relay-session.js.map +1 -0
  85. package/dist/runtime/sandbox.d.ts +16 -0
  86. package/dist/runtime/sandbox.js +149 -0
  87. package/dist/runtime/sandbox.js.map +1 -0
  88. package/dist/runtime/workspace-registry.d.ts +5 -0
  89. package/dist/runtime/workspace-registry.js +87 -0
  90. package/dist/runtime/workspace-registry.js.map +1 -0
  91. package/dist/runtime/workspace-router.d.ts +5 -0
  92. package/dist/runtime/workspace-router.js +32 -0
  93. package/dist/runtime/workspace-router.js.map +1 -0
  94. package/dist/runtime/workspace.js +3 -1
  95. package/dist/runtime/workspace.js.map +1 -1
  96. package/dist/skill/access.d.ts +4 -2
  97. package/dist/skill/access.js +7 -3
  98. package/dist/skill/access.js.map +1 -1
  99. package/dist/upgrade/installation.js +1 -1
  100. package/dist/upgrade/installation.js.map +1 -1
  101. package/dist/workspace-command.d.ts +8 -0
  102. package/dist/workspace-command.js +36 -0
  103. package/dist/workspace-command.js.map +1 -0
  104. package/package.json +2 -1
package/dist/index.js CHANGED
@@ -1,26 +1,37 @@
1
1
  #!/usr/bin/env node
2
2
  import { upgrade } from "./upgrade/update.js";
3
- import { setupMcpAuthorization, requireMcpAuthorization, inspectMcpMetadata, revokeMcpAuthorization } from "./mcp-authorization.js";
3
+ import { requireMcpAuthorization, inspectMcpMetadata, revokeMcpAuthorization } from "./mcp-authorization.js";
4
+ import { runWorkspaceCommand } from "./workspace-command.js";
4
5
  import { McpLease } from "./runtime/mcp-lease.js";
5
- import { resolve } from "node:path";
6
+ import { join, resolve } from "node:path";
6
7
  import { stdin, stdout } from "node:process";
7
- import { loginDevice, logout, requireLogin, whoami } from "./auth.js";
8
- import { doctor, formatDoctor, statusSnapshot } from "./diagnostics.js";
8
+ import { inspectAuth, loginDevice, logout, normalizeRelayUrl, requireLogin } from "./auth.js";
9
+ import { doctor, formatDoctor } from "./diagnostics.js";
9
10
  import { ensureDevice } from "./device/control.js";
10
11
  import { createLocalProviderToken, loadOrCreateDeviceIdentity } from "./device/identity.js";
11
12
  import { serveDeviceRelay } from "./device/relay-client.js";
12
13
  import { startStdioMcp } from "./runtime/mcp.js";
13
- import { installDeviceRelayService, installMcpService, serviceStatus, startMcpService, stopMcpService, uninstallMcpService } from "./service.js";
14
+ import { installDeviceRelayService, startMcpService, stopMcpService, uninstallMcpService } from "./service.js";
14
15
  import { discoverLocalModels } from "./provider/local.js";
15
16
  import { finalizeLocalProvider, listPersonalProviderSlots, prepareLocalProvider, waitForLocalProviderRelay } from "./provider/control.js";
16
- import { getLocalProvider, isSupportedLocalModelName, listLocalProviders, normalizeLoopbackOpenAiBaseUrl, saveLocalProvider } from "./provider/state.js";
17
- import { runCloud } from "./cloud.js";
17
+ import { isSupportedLocalModelName, listLocalProviders, normalizeLoopbackOpenAiBaseUrl, saveLocalProvider } from "./provider/state.js";
18
+ import { logoutCloud, runCloud } from "./cloud.js";
19
+ import { createAgentService } from "./agent/compose.js";
20
+ import { loadAgentConfig, saveAgentConfig } from "./agent/agent-service.js";
21
+ import { readAppInstall } from "./agent/app-install.js";
22
+ import { detectSandboxBackend } from "./runtime/sandbox.js";
23
+ import { provisionAgentKey } from "./agent/app-key.js";
24
+ import { startAgentOpsServer } from "./agent/ops-server.js";
25
+ import { runAgentOpsStdioBridge } from "./agent/ops-stdio.js";
26
+ import { pingAgentOpsSocket } from "./agent/ops-server.js";
27
+ import { agentStateDir } from "./agent/task-store.js";
28
+ import { TaskStore } from "./agent/task-store.js";
18
29
  import { VERSION } from "./version.js";
19
30
  import { agentHelp, cliUsage, mcpUsage } from "./agent-help.js";
20
- import { normalizeMcpArgs, resolveMcpUrlAuthorization } from "./mcp-command.js";
31
+ import { ensureMcpAuthorization, normalizeMcpArgs } from "./mcp-command.js";
21
32
  import { getKeyBudget, KeyBudgetError, publicKeyBudgetError } from "./key-budget.js";
22
33
  import { runNetwork, publicNetworkError } from "./network.js";
23
- import { installSkillAdapter, invokeInstalledAgent, publicSkillAccessError, removeSkillAdapter, skillAdapterStatus } from "./skill/access.js";
34
+ import { agentManifestUrl, installSkillAdapter, invokeInstalledAgent, publicSkillAccessError, removeSkillAdapter, skillAdapterStatus } from "./skill/access.js";
24
35
  async function main() {
25
36
  const args = normalizeMcpArgs(process.argv.slice(2));
26
37
  const command = args[0];
@@ -43,22 +54,6 @@ async function main() {
43
54
  stdout.write(JSON.stringify(agentHelp(), null, args.includes("--json") ? undefined : 2) + "\n");
44
55
  return;
45
56
  }
46
- if (command === "key") {
47
- if (args[1] !== "budget")
48
- throw new KeyBudgetError("input_invalid", "Usage: frely key budget (--api-key-stdin|--distribution <distribution-id>) [--json]");
49
- const distributionId = option(args, "--distribution");
50
- const relayUrl = option(args, "--relay");
51
- if (args.includes("--api-key-stdin") === (distributionId !== undefined))
52
- throw new KeyBudgetError("input_invalid", "Use exactly one of --api-key-stdin or --distribution <distribution-id>.");
53
- const apiKey = args.includes("--api-key-stdin") ? await readStdinSecret(8192) : undefined;
54
- const value = await getKeyBudget({
55
- ...(apiKey === undefined ? {} : { apiKey }),
56
- ...(distributionId === undefined ? {} : { distributionId }),
57
- ...(relayUrl === undefined ? {} : { relayUrl }),
58
- });
59
- stdout.write(JSON.stringify(value, null, args.includes("--json") ? undefined : 2) + "\n");
60
- return;
61
- }
62
57
  if (!command || command === "help" || command === "--help" || command === "-h")
63
58
  return usage();
64
59
  if (command === "cloud") {
@@ -76,59 +71,74 @@ async function main() {
76
71
  stdout.write(`${JSON.stringify(value, null, 2)}\n`);
77
72
  return;
78
73
  }
79
- if (command === "skill") {
74
+ if (command === "agent") {
80
75
  const action = args[1];
81
76
  if (action === "install") {
82
- const manifestUrl = args[2];
83
- if (!manifestUrl)
84
- throw new Error("Usage: frely skill install <manifest-url> [--host chatgpt|codex|claude-code|pi|generic] [--scope global|project] [--api-key-stdin] [--json]");
77
+ const target = args[2];
78
+ if (!target || target.startsWith("-"))
79
+ throw new Error("Usage: frely agent install <distribution-id|manifest-url> [--host chatgpt|codex|claude-code|pi|generic] [--scope global|project] [--api-key-stdin] [--json]");
85
80
  const host = skillHost(option(args, "--host") ?? "generic");
86
81
  const scope = skillScope(option(args, "--scope") ?? "global");
87
82
  const apiKey = args.includes("--api-key-stdin") ? await readStdinSecret(8192) : undefined;
88
- const value = await installSkillAdapter({ manifestUrl, host, scope, ...(apiKey ? { apiKey } : {}) });
83
+ const relayUrl = normalizeRelayUrl((await inspectAuth().catch(() => null))?.relayUrl);
84
+ const value = await installSkillAdapter({ manifestUrl: agentManifestUrl(target, relayUrl), host, scope, ...(apiKey ? { apiKey } : {}) });
89
85
  if (args.includes("--json"))
90
86
  stdout.write(`${JSON.stringify(value)}\n`);
91
87
  else
92
- stdout.write(`Skill: ${value.name}\nPath: ${value.skillPath}\nAuth: ${value.authMode}\nState: ${value.state}\n${value.hostAction ? `Host action: ${value.hostAction}\n` : ""}`);
88
+ stdout.write(`Agent: ${value.name}\nSkill: ${value.skillPath}\nAuth: ${value.authMode}\nState: ${value.state}\n${value.hostAction ? `Host action: ${value.hostAction}\n` : ""}`);
93
89
  return;
94
90
  }
95
- if (action === "status") {
91
+ if (action === "run") {
96
92
  const distributionId = args[2];
97
- if (!distributionId)
98
- throw new Error("Usage: frely skill status <distribution-id> [--json]");
99
- const value = await skillAdapterStatus(distributionId);
93
+ if (!distributionId || distributionId.startsWith("-"))
94
+ throw new Error("Usage: frely agent run <distribution-id> (--input <text>|--input-stdin) [--json]");
95
+ const task = args.includes("--input-stdin") ? await readStdinText(128 * 1024) : option(args, "--input");
96
+ if (!task)
97
+ throw new Error("Agent input is required. Use --input or --input-stdin.");
98
+ const value = await invokeInstalledAgent({ distributionId, task });
100
99
  if (args.includes("--json"))
101
100
  stdout.write(`${JSON.stringify(value)}\n`);
102
101
  else
103
- stdout.write(value.installed ? `Skill: ${value.name}\nState: ${value.state}\nPath: ${value.skillPath}\n` : "Skill is not installed.\n");
102
+ stdout.write(`${value.text}\n`);
103
+ return;
104
+ }
105
+ if (action === "status") {
106
+ const json = args.includes("--json");
107
+ if (args.includes("--api-key-stdin")) {
108
+ const relayUrl = option(args, "--relay");
109
+ const budget = await getKeyBudget({ apiKey: await readStdinSecret(8192), ...(relayUrl === undefined ? {} : { relayUrl }) });
110
+ stdout.write(JSON.stringify({ ok: true, budget }, null, json ? undefined : 2) + "\n");
111
+ return;
112
+ }
113
+ const distributionId = args[2];
114
+ if (!distributionId || distributionId.startsWith("-"))
115
+ throw new KeyBudgetError("input_invalid", "Usage: frely agent status (<distribution-id>|--api-key-stdin [--relay <url>]) [--json]");
116
+ const status = await skillAdapterStatus(distributionId);
117
+ let budget;
118
+ if (status.installed && status.authMode === "api-key") {
119
+ budget = await getKeyBudget({ distributionId }).then((value) => ({ ...value }), (error) => ({ error: publicKeyBudgetError(error).error }));
120
+ }
121
+ const value = { ...status, ...(budget ? { budget } : {}) };
122
+ if (json)
123
+ stdout.write(`${JSON.stringify(value)}\n`);
124
+ else if (!status.installed)
125
+ stdout.write("Agent is not installed.\n");
126
+ else
127
+ stdout.write(`Agent: ${status.name}\nState: ${status.state}\nAuth: ${status.authMode}\nSkill: ${status.skillPath}\n${budget ? `Budget: ${JSON.stringify(budget, null, 2)}\n` : ""}`);
104
128
  return;
105
129
  }
106
130
  if (action === "remove") {
107
131
  const distributionId = args[2];
108
- if (!distributionId)
109
- throw new Error("Usage: frely skill remove <distribution-id> [--json]");
132
+ if (!distributionId || distributionId.startsWith("-"))
133
+ throw new Error("Usage: frely agent remove <distribution-id> [--json]");
110
134
  const value = await removeSkillAdapter(distributionId);
111
135
  if (args.includes("--json"))
112
136
  stdout.write(`${JSON.stringify(value)}\n`);
113
137
  else
114
- stdout.write(value.removed ? "Skill removed.\n" : "Skill was not installed.\n");
138
+ stdout.write(value.removed ? "Agent removed.\n" : "Agent was not installed.\n");
115
139
  return;
116
140
  }
117
- throw new Error("Usage: frely skill install|status|remove ...");
118
- }
119
- if (command === "agent" && args[1] === "invoke") {
120
- const distributionId = args[2];
121
- if (!distributionId)
122
- throw new Error("Usage: frely agent invoke <distribution-id> (--input <text>|--input-stdin) [--json]");
123
- const task = args.includes("--input-stdin") ? await readStdinText(128 * 1024) : option(args, "--input");
124
- if (!task)
125
- throw new Error("Agent input is required. Use --input or --input-stdin.");
126
- const value = await invokeInstalledAgent({ distributionId, task });
127
- if (args.includes("--json"))
128
- stdout.write(`${JSON.stringify(value)}\n`);
129
- else
130
- stdout.write(`${value.text}\n`);
131
- return;
141
+ throw new Error("Usage: frely agent install|run|status|remove ...");
132
142
  }
133
143
  if (command === "login") {
134
144
  if (args.includes("--help") || args.includes("-h"))
@@ -145,30 +155,20 @@ async function main() {
145
155
  }, { openBrowser: !noBrowser });
146
156
  const user = result.user;
147
157
  stdout.write(`Logged in as ${user.email}.\n`);
158
+ if (!("sessionBound" in result) || !result.sessionBound) {
159
+ stdout.write("Your server version is older and does not support logging out per device yet.\n");
160
+ }
148
161
  stdout.write("Run `frely mcp --workspace <path>` on the computer you want to control, then connect your MCP client with OAuth.\n");
149
162
  return;
150
163
  }
151
164
  if (command === "logout") {
152
165
  await stopMcpService().catch(() => undefined);
166
+ // Cloud credentials are keyed by the signed-in account, so revoke them before removing the login.
167
+ const cloudRevoked = await logoutCloud().then(() => true, () => false);
153
168
  await logout();
154
169
  stdout.write("Frely login removed and MCP background service stopped.\n");
155
- return;
156
- }
157
- if (command === "whoami") {
158
- const user = await whoami();
159
- stdout.write(`${user.email} (${user.id})\n`);
160
- return;
161
- }
162
- if (command === "status") {
163
- const value = await statusSnapshot();
164
- if (args.includes("--json"))
165
- stdout.write(`${JSON.stringify(value, null, 2)}\n`);
166
- else {
167
- stdout.write(`Frely CLI ${VERSION}\n`);
168
- stdout.write(`Relay: ${value.auth.relayUrl ?? "not configured"}\n`);
169
- stdout.write(`Account: ${value.auth.user?.email ?? "not logged in"}\n`);
170
- stdout.write(`Credential: ${value.auth.credentialStored ? "stored" : "missing"}\n`);
171
- }
170
+ if (!cloudRevoked)
171
+ process.stderr.write("Cloud authorization revocation was not confirmed; revoke it in Frely account settings if needed.\n");
172
172
  return;
173
173
  }
174
174
  if (command === "doctor") {
@@ -182,11 +182,17 @@ async function main() {
182
182
  return;
183
183
  }
184
184
  if (command === "provider" && args[1] === "share") {
185
+ const auth = await requireLogin();
186
+ const device = await ensureDevice();
187
+ const pending = (await listLocalProviders()).find((provider) => provider.pending);
188
+ if (pending) {
189
+ stdout.write(`Resuming prepared Provider ${pending.providerId}.\n`);
190
+ await activateLocalProvider(auth, device.deviceId, pending);
191
+ return;
192
+ }
185
193
  const driver = args[2] ?? "ollama";
186
194
  if (driver !== "ollama" && driver !== "openai-compatible")
187
195
  throw new Error("Provider driver must be `ollama` or `openai-compatible`.");
188
- const auth = await requireLogin();
189
- const device = await ensureDevice();
190
196
  const defaultUrl = driver === "ollama" ? "http://127.0.0.1:11434/v1" : "http://127.0.0.1:8080/v1";
191
197
  const baseUrl = normalizeLoopbackOpenAiBaseUrl(option(args, "--url") ?? defaultUrl);
192
198
  const selectedModels = option(args, "--models")?.split(",").map((value) => value.trim()).filter(Boolean);
@@ -202,41 +208,9 @@ async function main() {
202
208
  throw new Error("The selected personal Provider slot is not empty and active.");
203
209
  const name = (option(args, "--name") ?? `${driver === "ollama" ? "Ollama" : "Local"}: ${models[0]}`).slice(0, 128);
204
210
  const prepared = await prepareLocalProvider({ deviceId: device.deviceId, slotId: slot.id, name, models });
205
- await saveLocalProvider({ providerId: prepared.providerId, name, driver, baseUrl, providerBaseUrl: prepared.providerBaseUrl, models, createdAt: new Date().toISOString() });
206
- const service = await installDeviceRelayService();
207
- const identity = await loadOrCreateDeviceIdentity(auth.config.relayUrl, auth.user.id);
208
- const token = createLocalProviderToken(identity, device.deviceId, auth.user.id, prepared.providerId);
209
- try {
210
- await waitForLocalProviderRelay(prepared.providerBaseUrl, token);
211
- await finalizeLocalProvider({ providerId: prepared.providerId, token });
212
- }
213
- catch (error) {
214
- throw new Error(`Provider ${prepared.providerId} is prepared but not ready. Run \`frely provider finalize ${prepared.providerId}\`. ${error instanceof Error ? error.message : String(error)}`);
215
- }
216
- stdout.write(`Provider: ${prepared.providerId}\n`);
217
- stdout.write(`Models: ${models.join(", ")}\n`);
218
- stdout.write(`Device Relay: ${service.active ? "running" : "installed"}\n`);
219
- stdout.write("The Provider is ready for Access Point creation in Frely.\n");
220
- return;
221
- }
222
- if (command === "provider" && args[1] === "finalize") {
223
- const providerId = args[2] ?? "";
224
- if (!/^prv_[0-9a-f]{24}$/u.test(providerId))
225
- throw new Error("Usage: frely provider finalize <provider-id>");
226
- const auth = await requireLogin();
227
- const device = await ensureDevice();
228
- const provider = await getLocalProvider(providerId);
229
- if (!provider)
230
- throw new Error("Local Provider is not configured on this device.");
231
- const service = await installDeviceRelayService();
232
- const identity = await loadOrCreateDeviceIdentity(auth.config.relayUrl, auth.user.id);
233
- const token = createLocalProviderToken(identity, device.deviceId, auth.user.id, providerId);
234
- await waitForLocalProviderRelay(provider.providerBaseUrl, token);
235
- await finalizeLocalProvider({ providerId, token });
236
- stdout.write(`Provider: ${providerId}\n`);
237
- stdout.write(`Models: ${provider.models.join(", ")}\n`);
238
- stdout.write(`Device Relay: ${service.active ? "running" : "installed"}\n`);
239
- stdout.write("The Provider is ready for Access Point creation in Frely.\n");
211
+ const provider = { providerId: prepared.providerId, name, driver, baseUrl, providerBaseUrl: prepared.providerBaseUrl, models, createdAt: new Date().toISOString(), pending: true };
212
+ await saveLocalProvider(provider);
213
+ await activateLocalProvider(auth, device.deviceId, provider);
240
214
  return;
241
215
  }
242
216
  if (command === "provider" && args[1] === "list") {
@@ -248,39 +222,74 @@ async function main() {
248
222
  stdout.write("No local Providers are configured on this device.\n");
249
223
  else
250
224
  for (const provider of providers)
251
- stdout.write(`${provider.providerId} ${provider.driver} ${provider.name} ${provider.models.join(", ")}\n`);
252
- return;
253
- }
254
- if (command === "mcp" && (args[1] === "setup" || args[1] === "renew")) {
255
- const old = await inspectMcpMetadata();
256
- const workspace = option(args, "--workspace") ?? (args[1] === "renew" ? old?.grant.workspace : undefined) ?? process.cwd();
257
- const authorization = await setupMcpAuthorization(workspace, option(args, "--days"), args[1] === "renew", ({ verificationUri, keyThumbprint, days }) => {
258
- stdout.write(`Device MCP execution authorization: ${days} days\nMCP key: ${keyThumbprint}\nApprove: ${verificationUri}\n`);
259
- });
260
- const service = await installMcpService(authorization.grant.workspace);
261
- stdout.write(`MCP URL: ${authorization.mcpUrl}\nExpires: ${authorization.grant.expiresAt}\nBackground service: ${service.active ? "running" : "installed"}\n`);
262
- stdout.write("Connect ChatGPT, Claude Code on another computer, or another remote HTTP MCP client with OAuth.\n");
263
- stdout.write(`Manage device MCP: ${new URL("/user/account/connections", authorization.relayUrl).toString()}\n`);
264
- stdout.write("Keep this computer running and online. Check configuration and connection with frely doctor; use -v for diagnostics.\n");
265
- stdout.write("Verify the client connection by asking for workspace_info or list_directory. The MCP URL stays the same after renewal.\n");
225
+ stdout.write(`${provider.providerId} ${provider.driver} ${provider.name} ${provider.models.join(", ")}${provider.pending ? " (pending: run frely provider share)" : ""}\n`);
266
226
  return;
267
227
  }
268
- if (command === "mcp" && (args[1] === "url" || args[1] === "chatgpt")) {
269
- const authorization = await resolveMcpUrlAuthorization((message) => { process.stderr.write(message); });
228
+ if (command === "mcp" && args[1] === "setup") {
229
+ const workspace = option(args, "--workspace");
230
+ const days = option(args, "--days");
231
+ const authorization = await ensureMcpAuthorization({ ...(workspace ? { workspace } : {}), ...(days ? { days } : {}), notify: (message) => { process.stderr.write(message); } });
270
232
  const value = { deviceId: authorization.grant.deviceId, mcpUrl: authorization.mcpUrl, transport: "http", authentication: "oauth", workspace: authorization.grant.workspace, expiresAt: authorization.grant.expiresAt };
271
233
  if (args.includes("--json"))
272
234
  stdout.write(`${JSON.stringify(value)}\n`);
273
- else if (args[1] === "chatgpt")
274
- stdout.write(`MCP URL: ${authorization.mcpUrl}\nAuthentication: OAuth\n`);
275
235
  else
276
236
  stdout.write(`${authorization.mcpUrl}\n`);
277
237
  return;
278
238
  }
279
- if (command === "mcp" && args[1] === "status") {
280
- const metadata = await inspectMcpMetadata();
281
- const value = metadata ? { configured: true, deviceId: metadata.grant.deviceId, workspace: metadata.grant.workspace,
282
- expiresAt: metadata.grant.expiresAt, expired: !metadata.grant.expiresAt || Date.parse(metadata.grant.expiresAt) <= Date.now() } : { configured: false };
283
- stdout.write(`${JSON.stringify(value, null, 2)}\n`);
239
+ if (command === "app" && args[1] === "key") {
240
+ const lifetime = Number(option(args, "--lifetime-usd") ?? 50);
241
+ const key = await provisionAgentKey(lifetime);
242
+ if (args.includes("--json"))
243
+ stdout.write(`${JSON.stringify({ keyId: key.keyId, name: key.name, lifetimeUsd: key.lifetimeUsd })}\n`);
244
+ else
245
+ stdout.write(`Frely app key: ${key.name}\nKey: ${key.rawKey}\nLifetime spend limit: $${key.lifetimeUsd ?? "unlimited"}\n`);
246
+ stdout.write("This key is shown once and is not stored by the CLI. Store it where the frely app reads model credentials.\n");
247
+ return;
248
+ }
249
+ if (command === "app" && args[1] === "ops") {
250
+ process.exitCode = await runAgentOpsStdioBridge({ stdout: process.stdout, stdin: process.stdin, stderr: process.stderr });
251
+ return;
252
+ }
253
+ if (command === "app" && args[1] === "connect-info") {
254
+ const socketPath = join(agentStateDir(), "ops.sock");
255
+ const probe = await pingAgentOpsSocket(socketPath, 300);
256
+ const value = { opsSocketPath: socketPath, running: probe.running, ...(probe.version ? { version: probe.version } : {}), ...(probe.pid ? { pid: probe.pid } : {}) };
257
+ if (args.includes("--json"))
258
+ stdout.write(`${JSON.stringify(value)}\n`);
259
+ else
260
+ stdout.write(`Ops socket: ${socketPath}\nStatus: ${probe.running ? "running" : "stopped (start with frely mcp serve)"}\n`);
261
+ return;
262
+ }
263
+ if (command === "app" && args[1] === "remote") {
264
+ const action = args[2];
265
+ const config = await loadAgentConfig();
266
+ if (action === "enable") {
267
+ await saveAgentConfig({ ...config, remoteControlEnabled: true });
268
+ stdout.write("Agent remote control enabled. Start or restart the device relay service (frely mcp service start).\n");
269
+ }
270
+ else if (action === "disable") {
271
+ await saveAgentConfig({ ...config, remoteControlEnabled: false });
272
+ stdout.write("Agent remote control disabled.\n");
273
+ }
274
+ else if (action === "status" || action === undefined) {
275
+ const value = { remoteControlEnabled: config.remoteControlEnabled, defaultMaxCostUsd: config.defaultMaxCostUsd, maxCostUsdLimit: config.maxCostUsdLimit, maxConcurrentTasks: config.maxConcurrentTasks };
276
+ if (args.includes("--json"))
277
+ stdout.write(`${JSON.stringify(value)}\n`);
278
+ else
279
+ stdout.write(`Agent remote control: ${config.remoteControlEnabled ? "enabled" : "disabled"}\nDefault task budget: $${config.defaultMaxCostUsd} (limit $${config.maxCostUsdLimit})\nConcurrent tasks: up to ${config.maxConcurrentTasks}\n`);
280
+ }
281
+ else
282
+ throw new Error("Unknown app remote action. Use enable, disable, or status.");
283
+ return;
284
+ }
285
+ if (command === "app" && args[1] === "tasks") {
286
+ const store = TaskStore.open();
287
+ const tasks = await store.list();
288
+ if (args.includes("--json"))
289
+ stdout.write(`${JSON.stringify(tasks)}\n`);
290
+ else
291
+ for (const task of tasks)
292
+ stdout.write(`${task.id} ${task.status.padEnd(14)} ${task.mergeStatus.padEnd(15)} $${task.usage.costUsd.toFixed(3)}/${task.maxCostUsd.toFixed(2)} ${task.goal.split("\n")[0].slice(0, 60)}\n`);
284
293
  return;
285
294
  }
286
295
  if (command === "mcp" && args[1] === "serve") {
@@ -293,12 +302,31 @@ async function main() {
293
302
  await requireLogin();
294
303
  const providerOnly = args.includes("--provider-only");
295
304
  const workspace = providerOnly ? undefined : resolve(option(args, "--workspace") || process.cwd());
305
+ const agentLog = (message) => process.stderr.write(`${message}\n`);
306
+ const agent = createAgentService({ defaultWorkspace: workspace ?? process.cwd(), log: agentLog });
296
307
  const controller = new AbortController();
297
308
  const stop = () => controller.abort();
298
309
  process.once("SIGINT", stop);
299
310
  process.once("SIGTERM", stop);
300
311
  try {
301
- await serveDeviceRelay({ ...(workspace ? { workspace } : {}), managedService: Boolean(serviceConfigHome), restartForUpgrade: stop, signal: controller.signal, log: (message) => process.stderr.write(`${message}\n`) });
312
+ const capabilities = async () => {
313
+ const install = await readAppInstall().then((value) => value, () => null);
314
+ const config = await loadAgentConfig();
315
+ return {
316
+ app: { ...(install ? { installed: true, version: install.appVersion } : { installed: false }) },
317
+ sandbox: detectSandboxBackend(),
318
+ agentHost: true,
319
+ remoteControl: config.remoteControlEnabled,
320
+ };
321
+ };
322
+ const ops = await startAgentOpsServer(agent, { workspace: workspace ?? process.cwd(), log: agentLog });
323
+ process.stderr.write(`Agent ops socket: ${ops.path}\n`);
324
+ try {
325
+ await serveDeviceRelay({ ...(workspace ? { workspace } : {}), agent, capabilities, managedService: Boolean(serviceConfigHome), restartForUpgrade: stop, signal: controller.signal, log: (message) => process.stderr.write(`${message}\n`) });
326
+ }
327
+ finally {
328
+ await ops.close().catch(() => undefined);
329
+ }
302
330
  }
303
331
  finally {
304
332
  process.off("SIGINT", stop);
@@ -306,40 +334,31 @@ async function main() {
306
334
  }
307
335
  return;
308
336
  }
309
- if (command === "mcp" && args[1] === "service") {
310
- const action = args[2] ?? "status";
311
- if (action === "status") {
312
- const service = await serviceStatus();
313
- if (args.includes("--json"))
314
- stdout.write(`${JSON.stringify(service, null, 2)}\n`);
315
- else {
316
- stdout.write(`Installed: ${service.installed ? "yes" : "no"}\n`);
317
- stdout.write(`Active: ${service.active ? "yes" : "no"}\n`);
318
- if (service.workspace)
319
- stdout.write(`Workspace: ${service.workspace}\n`);
320
- }
321
- return;
322
- }
323
- if (action === "start") {
324
- const service = await startMcpService();
325
- stdout.write(`Frely MCP service ${service.active ? "started" : "not active"}.\n`);
326
- return;
327
- }
328
- if (action === "stop") {
329
- const service = await stopMcpService();
330
- stdout.write(`Frely MCP service ${service.active ? "still active" : "stopped"}.\n`);
331
- return;
337
+ if (command === "mcp" && args[1] === "workspace") {
338
+ const metadata = await inspectMcpMetadata();
339
+ await runWorkspaceCommand({ args, primary: metadata?.grant.workspace ?? null, write: (text) => { stdout.write(text); } });
340
+ return;
341
+ }
342
+ if (command === "mcp" && args[1] === "start") {
343
+ const service = await startMcpService();
344
+ stdout.write(`Frely MCP service ${service.active ? "started" : "not active"}.\n`);
345
+ return;
346
+ }
347
+ if (command === "mcp" && args[1] === "stop") {
348
+ const service = await stopMcpService();
349
+ stdout.write(`Frely MCP service ${service.active ? "still active" : "stopped"}.\n`);
350
+ return;
351
+ }
352
+ if (command === "mcp" && args[1] === "remove") {
353
+ await revokeMcpAuthorization();
354
+ if ((await listLocalProviders()).length > 0) {
355
+ await installDeviceRelayService();
356
+ stdout.write("Device MCP removed. The background service keeps running for local Providers.\n");
332
357
  }
333
- if (action === "uninstall") {
358
+ else {
334
359
  await uninstallMcpService();
335
- stdout.write("Frely MCP background service removed.\n");
336
- return;
360
+ stdout.write("Device MCP removed and background service uninstalled.\n");
337
361
  }
338
- throw new Error("Unknown MCP service action. Use status, start, stop, or uninstall.");
339
- }
340
- if (command === "mcp" && args[1] === "revoke") {
341
- await revokeMcpAuthorization();
342
- stdout.write("MCP execution authorization revoked. The Provider device and service were retained.\n");
343
362
  return;
344
363
  }
345
364
  if (command === "mcp" && args[1] === "stdio") {
@@ -355,6 +374,24 @@ async function main() {
355
374
  usage();
356
375
  process.exitCode = 2;
357
376
  }
377
+ async function activateLocalProvider(auth, deviceId, provider) {
378
+ const service = await installDeviceRelayService();
379
+ const identity = await loadOrCreateDeviceIdentity(auth.config.relayUrl, auth.user.id);
380
+ const token = createLocalProviderToken(identity, deviceId, auth.user.id, provider.providerId);
381
+ try {
382
+ await waitForLocalProviderRelay(provider.providerBaseUrl, token);
383
+ await finalizeLocalProvider({ providerId: provider.providerId, token });
384
+ }
385
+ catch (error) {
386
+ throw new Error(`Provider ${provider.providerId} is prepared but not ready. Run \`frely provider share\` again to resume. ${error instanceof Error ? error.message : String(error)}`);
387
+ }
388
+ const { pending: _pending, ...ready } = provider;
389
+ await saveLocalProvider(ready);
390
+ stdout.write(`Provider: ${provider.providerId}\n`);
391
+ stdout.write(`Models: ${provider.models.join(", ")}\n`);
392
+ stdout.write(`Device Relay: ${service.active ? "running" : "installed"}\n`);
393
+ stdout.write("The Provider is ready for Access Point creation in Frely.\n");
394
+ }
358
395
  function option(args, name) {
359
396
  const index = args.indexOf(name);
360
397
  if (index < 0)
@@ -396,15 +433,8 @@ main().catch((error) => {
396
433
  const command = process.argv[2];
397
434
  if (jsonMode && command === "network")
398
435
  process.stdout.write(`${JSON.stringify(publicNetworkError(error))}\n`);
399
- else if (command === "key") {
400
- const value = publicKeyBudgetError(error);
401
- if (jsonMode)
402
- process.stdout.write(JSON.stringify(value) + "\n");
403
- else
404
- process.stderr.write(value.error.message + "\n");
405
- }
406
- else if (jsonMode && (command === "skill" || command === "agent"))
407
- process.stdout.write(`${JSON.stringify(publicSkillAccessError(error))}\n`);
436
+ else if (jsonMode && command === "agent")
437
+ process.stdout.write(`${JSON.stringify(error instanceof KeyBudgetError ? publicKeyBudgetError(error) : publicSkillAccessError(error))}\n`);
408
438
  else
409
439
  process.stderr.write(`${message}\n`);
410
440
  process.exitCode = 1;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}