frely-cli 0.23.9 → 0.23.11
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 +49 -20
- package/README.zh-CN.md +47 -19
- package/dist/agent/local/approvals.d.ts +24 -0
- package/dist/agent/local/approvals.js +79 -0
- package/dist/agent/local/approvals.js.map +1 -0
- package/dist/agent/local/command.d.ts +10 -0
- package/dist/agent/local/command.js +292 -0
- package/dist/agent/local/command.js.map +1 -0
- package/dist/agent/local/confine.d.ts +20 -0
- package/dist/agent/local/confine.js +52 -0
- package/dist/agent/local/confine.js.map +1 -0
- package/dist/agent/local/manifest.d.ts +17 -0
- package/dist/agent/local/manifest.js +55 -0
- package/dist/agent/local/manifest.js.map +1 -0
- package/dist/agent/local/model-proxy.d.ts +18 -0
- package/dist/agent/local/model-proxy.js +111 -0
- package/dist/agent/local/model-proxy.js.map +1 -0
- package/dist/agent/local/source.d.ts +28 -0
- package/dist/agent/local/source.js +64 -0
- package/dist/agent/local/source.js.map +1 -0
- package/dist/agent/local/store.d.ts +45 -0
- package/dist/agent/local/store.js +78 -0
- package/dist/agent/local/store.js.map +1 -0
- package/dist/agent/local/supervisor.d.ts +9 -0
- package/dist/agent/local/supervisor.js +62 -0
- package/dist/agent/local/supervisor.js.map +1 -0
- package/dist/agent/run-store.d.ts +80 -0
- package/dist/agent/run-store.js +154 -0
- package/dist/agent/run-store.js.map +1 -0
- package/dist/agent/run.d.ts +41 -0
- package/dist/agent/run.js +233 -0
- package/dist/agent/run.js.map +1 -0
- package/dist/agent/workspace-read.d.ts +78 -0
- package/dist/agent/workspace-read.js +292 -0
- package/dist/agent/workspace-read.js.map +1 -0
- package/dist/agent-help.d.ts +158 -14
- package/dist/agent-help.js +33 -8
- package/dist/agent-help.js.map +1 -1
- package/dist/cloud.d.ts +2 -42
- package/dist/cloud.js +8 -260
- package/dist/cloud.js.map +1 -1
- package/dist/controller/client.d.ts +6 -3
- package/dist/controller/client.js +7 -8
- package/dist/controller/client.js.map +1 -1
- package/dist/controller/session.d.ts +7 -2
- package/dist/controller/session.js +79 -22
- package/dist/controller/session.js.map +1 -1
- package/dist/index.js +114 -9
- package/dist/index.js.map +1 -1
- package/dist/provider/control.d.ts +10 -0
- package/dist/provider/control.js +19 -0
- package/dist/provider/control.js.map +1 -1
- package/dist/provider/share.js +4 -1
- package/dist/provider/share.js.map +1 -1
- package/dist/runtime/sandbox.d.ts +20 -0
- package/dist/runtime/sandbox.js +39 -1
- package/dist/runtime/sandbox.js.map +1 -1
- package/dist/share/allowance.d.ts +8 -0
- package/dist/share/allowance.js +22 -0
- package/dist/share/allowance.js.map +1 -0
- package/dist/share/control.d.ts +2 -0
- package/dist/share/control.js +14 -10
- package/dist/share/control.js.map +1 -1
- package/dist/share/service-config.d.ts +39 -0
- package/dist/share/service-config.js +85 -0
- package/dist/share/service-config.js.map +1 -0
- package/dist/share/service-control.d.ts +15 -0
- package/dist/share/service-control.js +31 -0
- package/dist/share/service-control.js.map +1 -0
- package/dist/share/service-run.d.ts +55 -0
- package/dist/share/service-run.js +285 -0
- package/dist/share/service-run.js.map +1 -0
- package/dist/share/service-state.d.ts +16 -0
- package/dist/share/service-state.js +66 -0
- package/dist/share/service-state.js.map +1 -0
- package/dist/skill/access.d.ts +25 -6
- package/dist/skill/access.js +59 -9
- package/dist/skill/access.js.map +1 -1
- package/dist/skill/cloud-item.d.ts +2 -2
- package/dist/skill/cloud-item.js.map +1 -1
- package/dist/skill/entry.d.ts +1 -1
- package/dist/skill/entry.js +1 -1
- package/dist/skill/remote-mcp.d.ts +3 -0
- package/dist/skill/remote-mcp.js +7 -1
- package/dist/skill/remote-mcp.js.map +1 -1
- package/dist/skill/router.d.ts +57 -2
- package/dist/skill/router.js +76 -40
- package/dist/skill/router.js.map +1 -1
- package/dist/uninstall.d.ts +4 -0
- package/dist/uninstall.js +14 -0
- package/dist/uninstall.js.map +1 -1
- package/package.json +3 -2
|
@@ -96,6 +96,7 @@ async function writeSession(session, store = sessionStore()) {
|
|
|
96
96
|
}
|
|
97
97
|
export async function deleteSession(store = sessionStore()) {
|
|
98
98
|
const { relayUrl, userId } = await ownerOf();
|
|
99
|
+
await store.deletePassword(PENDING_SERVICE, accountOf(relayUrl, userId)).catch(() => false);
|
|
99
100
|
return store.deletePassword(SERVICE, accountOf(relayUrl, userId));
|
|
100
101
|
}
|
|
101
102
|
const formHeaders = (relayUrl, dpop) => ({ "content-type": "application/x-www-form-urlencoded", origin: relayUrl, accept: "application/json", dpop });
|
|
@@ -117,14 +118,29 @@ function tokenFailure(response, payload) {
|
|
|
117
118
|
return new ControllerError(detail, EXIT.auth);
|
|
118
119
|
}
|
|
119
120
|
const delay = (ms) => new Promise((done) => setTimeout(done, ms));
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
121
|
+
const PENDING_SERVICE = "frely-cli-controller-pending-v1";
|
|
122
|
+
async function readPending(relayUrl, store = sessionStore()) {
|
|
123
|
+
const { userId } = await ownerOf();
|
|
124
|
+
const raw = await store.getPassword(PENDING_SERVICE, accountOf(relayUrl, userId)).catch(() => null);
|
|
125
|
+
if (!raw)
|
|
126
|
+
return null;
|
|
127
|
+
try {
|
|
128
|
+
const value = JSON.parse(raw);
|
|
129
|
+
return value.version === 1 && value.relayUrl === relayUrl && value.expiresAt - 5_000 > Date.now() ? value : null;
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async function writePending(pending, relayUrl, store = sessionStore()) {
|
|
136
|
+
const { userId } = await ownerOf();
|
|
137
|
+
if (pending)
|
|
138
|
+
await store.setPassword(PENDING_SERVICE, accountOf(relayUrl, userId), JSON.stringify(pending));
|
|
139
|
+
else
|
|
140
|
+
await store.deletePassword(PENDING_SERVICE, accountOf(relayUrl, userId)).catch(() => false);
|
|
141
|
+
}
|
|
142
|
+
/** Asks Frely for a device code, tells it which computer is asking (the approval page repeats that beside the address the request came from) and keeps the request. */
|
|
143
|
+
async function startLogin(relayUrl) {
|
|
128
144
|
const device = await ensureDevice();
|
|
129
145
|
const mcpUrl = controllerMcpUrl(relayUrl);
|
|
130
146
|
const key = generateDpopKey();
|
|
@@ -145,36 +161,77 @@ export async function controllerLogin(options = {}) {
|
|
|
145
161
|
const link = new URL(code.verification_uri_complete);
|
|
146
162
|
if (link.origin !== relayUrl)
|
|
147
163
|
throw new ControllerError("Frely returned an unexpected approval link.", EXIT.auth);
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
164
|
+
const pending = {
|
|
165
|
+
version: 1, relayUrl, mcpUrl, deviceId: device.deviceId, privateKeyPem: key.privateKeyPem, deviceCode: code.device_code, userCode: code.user_code, link: link.toString(),
|
|
166
|
+
expiresAt: Date.now() + (typeof code.expires_in === "number" ? code.expires_in : 900) * 1000, intervalMs: (typeof code.interval === "number" ? code.interval : 5) * 1000,
|
|
167
|
+
};
|
|
168
|
+
await writePending(pending, relayUrl);
|
|
169
|
+
return pending;
|
|
170
|
+
}
|
|
171
|
+
const approvalNotice = (pending) => `Approve this computer to control your Frely devices.\nCode: ${pending.userCode}\nOpen: ${pending.link}\n(You will be asked to type the code and confirm with a passkey or authenticator code.)\n`;
|
|
172
|
+
/**
|
|
173
|
+
* Trades the approved device code for tokens, once or until the code expires. Returns null when `wait` is false and the owner has not
|
|
174
|
+
* decided yet; an expired or denied request is forgotten and throws.
|
|
175
|
+
*/
|
|
176
|
+
async function pollLogin(pending, wait) {
|
|
177
|
+
const key = dpopKeyFromPem(pending.privateKeyPem);
|
|
178
|
+
let interval = pending.intervalMs;
|
|
179
|
+
while (Date.now() < pending.expiresAt) {
|
|
180
|
+
if (wait)
|
|
181
|
+
await delay(interval);
|
|
182
|
+
const response = await tokenRequest(pending.relayUrl, key, new URLSearchParams({
|
|
183
|
+
grant_type: "urn:ietf:params:oauth:grant-type:device_code", device_code: pending.deviceCode, client_id: CONTROLLER_CLIENT_ID, resource: pending.mcpUrl, controller_device_id: pending.deviceId,
|
|
157
184
|
}));
|
|
158
185
|
const payload = await response.json().catch(() => ({}));
|
|
159
186
|
if (response.ok) {
|
|
160
|
-
const session = { version: 1, relayUrl, mcpUrl, deviceId:
|
|
187
|
+
const session = { version: 1, relayUrl: pending.relayUrl, mcpUrl: pending.mcpUrl, deviceId: pending.deviceId, privateKeyPem: pending.privateKeyPem, ...parseTokens(payload) };
|
|
161
188
|
await writeSession(session);
|
|
189
|
+
await writePending(null, pending.relayUrl);
|
|
162
190
|
return session;
|
|
163
191
|
}
|
|
164
|
-
if (payload.error === "authorization_pending")
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
192
|
+
if (payload.error === "authorization_pending" || payload.error === "slow_down") {
|
|
193
|
+
if (payload.error === "slow_down")
|
|
194
|
+
interval += 5000;
|
|
195
|
+
if (!wait)
|
|
196
|
+
return null;
|
|
168
197
|
continue;
|
|
169
198
|
}
|
|
199
|
+
await writePending(null, pending.relayUrl);
|
|
170
200
|
if (payload.error === "expired_token")
|
|
171
201
|
throw new ControllerError("The approval request expired. Run the command again.", EXIT.auth);
|
|
172
202
|
if (payload.error === "access_denied" && response.status !== 403)
|
|
173
203
|
throw new ControllerError("The request was denied.", EXIT.auth);
|
|
174
204
|
throw tokenFailure(response, payload);
|
|
175
205
|
}
|
|
206
|
+
await writePending(null, pending.relayUrl);
|
|
176
207
|
throw new ControllerError("The approval request expired. Run the command again.", EXIT.auth);
|
|
177
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* Signs this computer in as a controller: a device-code authorization the owner approves in a browser (with a passkey or authenticator code),
|
|
211
|
+
* which issues tokens bound to a new key kept here. Waits for the approval and takes it by itself; a request an earlier command left
|
|
212
|
+
* unapproved is continued instead of asking for a new code.
|
|
213
|
+
*/
|
|
214
|
+
export async function controllerLogin(options = {}) {
|
|
215
|
+
const notify = options.notify ?? ((text) => { process.stderr.write(text); });
|
|
216
|
+
const { relayUrl } = await ownerOf();
|
|
217
|
+
const pending = await readPending(relayUrl) ?? await startLogin(relayUrl);
|
|
218
|
+
notify(approvalNotice(pending));
|
|
219
|
+
if (options.openBrowser !== false && process.env.FRELY_NO_BROWSER !== "1")
|
|
220
|
+
openVerificationUrl(pending.link);
|
|
221
|
+
return (await pollLogin(pending, true));
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* The sign-in for a command nobody can type into (a script, an AI tool): never waits. It picks up an approval the owner has given since the last
|
|
225
|
+
* run; otherwise it shows the approval link and ends with the "approval needed" exit code, and the same command run again continues from the same request.
|
|
226
|
+
*/
|
|
227
|
+
export async function requestControllerLogin() {
|
|
228
|
+
const { relayUrl } = await ownerOf();
|
|
229
|
+
const pending = await readPending(relayUrl) ?? await startLogin(relayUrl);
|
|
230
|
+
const session = await pollLogin(pending, false);
|
|
231
|
+
if (session)
|
|
232
|
+
return session;
|
|
233
|
+
throw new ControllerError(`${approvalNotice(pending)}After approving, run the same command again. To wait for the approval instead: frely controller login\n`, EXIT.approval);
|
|
234
|
+
}
|
|
178
235
|
/** Exchanges the refresh token; a session that another process already renewed is taken from the store instead of spent twice. */
|
|
179
236
|
export async function refreshSession(session) {
|
|
180
237
|
const key = dpopKeyFromPem(session.privateKeyPem);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/controller/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/controller/session.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -20,11 +20,19 @@ import { startStdioMcp } from "./runtime/mcp.js";
|
|
|
20
20
|
import { installDeviceRelayService, serviceStatus, trimServiceLog, startMcpService, stopMcpService, uninstallMcpService } from "./service.js";
|
|
21
21
|
import { createLocalModelsHub } from "./provider/local-models.js";
|
|
22
22
|
import { shareLocalProvider } from "./provider/share.js";
|
|
23
|
-
import { runShareCommand, shareUsage } from "./share/run.js";
|
|
23
|
+
import { probeLoopback, runShareCommand, shareUsage, spawnFrpcProcess } from "./share/run.js";
|
|
24
|
+
import { runServiceCommand, superviseServices } from "./share/service-run.js";
|
|
25
|
+
import { accountServiceControl } from "./share/service-control.js";
|
|
26
|
+
import { ensureFrpc } from "./share/frpc.js";
|
|
27
|
+
import { listLocalServices } from "./share/service-state.js";
|
|
24
28
|
import { listLocalProviders } from "./provider/state.js";
|
|
25
29
|
import { API_USAGE, logoutCloud, runApi } from "./cloud.js";
|
|
26
30
|
import { CONTROLLER_COMMANDS, runControllerCommand } from "./controller/commands.js";
|
|
27
31
|
import { controllerLogout, ControllerError } from "./controller/session.js";
|
|
32
|
+
import { runAgentLocal } from "./agent/local/command.js";
|
|
33
|
+
import { cancelRun, listRunSummaries, resumeRun, runOutcome, runSummary, startRun, waitForRun, workerMain } from "./agent/run.js";
|
|
34
|
+
import { effectiveStatus, isRunId, readRun, resolveRun } from "./agent/run-store.js";
|
|
35
|
+
import { DEFAULT_READ_LIMITS, defaultReadRoot } from "./agent/workspace-read.js";
|
|
28
36
|
import { PiNodeSupervisor } from "./agent/pi-node-supervisor.js";
|
|
29
37
|
import { readAppInstall } from "./agent/app-install.js";
|
|
30
38
|
import { appInstallStatus, installApp, openApp, uninstallApp, updateApp } from "./app-manager.js";
|
|
@@ -38,7 +46,7 @@ import { getKeyBudget, KeyBudgetError, publicKeyBudgetError } from "./key-budget
|
|
|
38
46
|
import { runNetwork, publicNetworkError } from "./network.js";
|
|
39
47
|
import { runComputerCommand } from "./computer/command.js";
|
|
40
48
|
import { runComputerMcpServer } from "./computer/server.js";
|
|
41
|
-
import { agentManifestUrl, installSkillAdapter,
|
|
49
|
+
import { agentManifestUrl, installSkillAdapter, publicSkillAccessError, removeSkillAdapter, resolveAgentTarget, SkillAccessError, skillAdapterStatus } from "./skill/access.js";
|
|
42
50
|
import { CloudToolError, installCloudItem, parseItemRef, trustCloudItem } from "./skill/cloud-item.js";
|
|
43
51
|
import { checkItemUpdates, updateCloudItem } from "./skill/item-update.js";
|
|
44
52
|
import { runSealedScript } from "./skill/sealed-run.js";
|
|
@@ -141,7 +149,7 @@ async function main() {
|
|
|
141
149
|
if (!ref || ref.startsWith("-"))
|
|
142
150
|
throw new Error(`Usage: frely remote ${action} <username/name>${action === "call" ? " <tool> [--json '<object>' | --input <file>]" : ""}`);
|
|
143
151
|
parseMcpName(ref);
|
|
144
|
-
const deps = { call: callCloudTool };
|
|
152
|
+
const deps = { call: callCloudTool, replace: args.includes("--replace") };
|
|
145
153
|
try {
|
|
146
154
|
if (action === "tools") {
|
|
147
155
|
const tools = await listRemoteTools(ref, deps);
|
|
@@ -205,6 +213,10 @@ async function main() {
|
|
|
205
213
|
stdout.write(subcommandUsage("agent"));
|
|
206
214
|
return;
|
|
207
215
|
}
|
|
216
|
+
if (action === "local") {
|
|
217
|
+
process.exitCode = await runAgentLocal(args.slice(2), { out: (text) => { stdout.write(text); }, err: (text) => { process.stderr.write(text); }, interactive: Boolean(process.stdin.isTTY && process.stderr.isTTY), readSecret: () => readStdinSecret(8192) });
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
208
220
|
if (action === "install") {
|
|
209
221
|
const target = args[2];
|
|
210
222
|
if (!target || target.startsWith("-"))
|
|
@@ -215,16 +227,69 @@ async function main() {
|
|
|
215
227
|
if (action === "run") {
|
|
216
228
|
const target = args[2];
|
|
217
229
|
if (!target || target.startsWith("-"))
|
|
218
|
-
throw new Error(
|
|
230
|
+
throw new Error(RUN_USAGE);
|
|
219
231
|
const distributionId = await resolveAgentTarget(target, normalizeRelayUrl((await inspectAuth().catch(() => null))?.relayUrl));
|
|
220
232
|
const task = args.includes("--input-stdin") ? await readStdinText(128 * 1024) : option(args, "--input");
|
|
221
233
|
if (!task)
|
|
222
234
|
throw new Error("Agent input is required. Use --input or --input-stdin.");
|
|
223
|
-
const
|
|
235
|
+
const read = await readOptions(args);
|
|
236
|
+
// The call runs in a detached worker so a cut-off command does not lose it; this process only waits and prints.
|
|
237
|
+
const onInterrupt = () => { process.stderr.write("Interrupted. The run keeps going; fetch it with `frely agent result --last --wait`.\n"); process.exit(130); };
|
|
238
|
+
process.once("SIGINT", onInterrupt);
|
|
239
|
+
const finished = await startRun({ distributionId, task, ...(read === undefined ? {} : { read }) });
|
|
240
|
+
process.off("SIGINT", onInterrupt);
|
|
241
|
+
const value = runOutcome(finished);
|
|
224
242
|
if (args.includes("--json"))
|
|
225
243
|
stdout.write(`${JSON.stringify(value)}\n`);
|
|
226
|
-
else
|
|
244
|
+
else {
|
|
227
245
|
stdout.write(`${value.text}\n`);
|
|
246
|
+
if (read !== undefined)
|
|
247
|
+
process.stderr.write(`Read ${(finished.filesRead).length} file(s), ${finished.rounds.length} round(s), ${finished.usage.total_tokens} tokens. Run ${finished.runId}.\n`);
|
|
248
|
+
}
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
if (action === "result" || action === "cancel") {
|
|
252
|
+
const json = args.includes("--json");
|
|
253
|
+
const runArg = args.slice(2).find((arg) => !arg.startsWith("--"));
|
|
254
|
+
const last = args.includes("--last");
|
|
255
|
+
if (runArg === undefined && !last)
|
|
256
|
+
throw new Error(`Usage: frely agent ${action} (<runId>|--last)${action === "result" ? " [--wait] [--resume] [--json]" : " [--json]"}`);
|
|
257
|
+
let record = action === "cancel" ? await cancelRun(runArg) : await resolveRun(runArg);
|
|
258
|
+
if (action === "result") {
|
|
259
|
+
if (args.includes("--resume")) {
|
|
260
|
+
const status = effectiveStatus(record);
|
|
261
|
+
if (status !== "running") {
|
|
262
|
+
await resumeRun(record.runId);
|
|
263
|
+
record = (await readRun(record.runId));
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
if (args.includes("--wait"))
|
|
267
|
+
record = await waitForRun(record.runId);
|
|
268
|
+
else if (args.includes("--resume"))
|
|
269
|
+
record = (await readRun(record.runId)) ?? record;
|
|
270
|
+
}
|
|
271
|
+
const summary = runSummary(record);
|
|
272
|
+
if (json)
|
|
273
|
+
stdout.write(`${JSON.stringify(summary)}\n`);
|
|
274
|
+
else
|
|
275
|
+
stdout.write(summary.status === "completed" ? `${summary.text}\n` : `${JSON.stringify(summary, null, 2)}\n`);
|
|
276
|
+
if (action === "result" && summary.ok === false)
|
|
277
|
+
process.exitCode = 1;
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
if (action === "runs") {
|
|
281
|
+
const runs = await listRunSummaries();
|
|
282
|
+
if (args.includes("--json"))
|
|
283
|
+
stdout.write(`${JSON.stringify({ ok: true, runs })}\n`);
|
|
284
|
+
else
|
|
285
|
+
stdout.write(runs.length === 0 ? "No agent runs on this computer.\n" : runs.map((run) => `${run.runId} ${run.status} ${run.distributionId} ${run.createdAt}\n`).join(""));
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
if (action === "__worker") {
|
|
289
|
+
const runId = args[2];
|
|
290
|
+
if (!runId || !isRunId(runId))
|
|
291
|
+
throw new Error("Internal command.");
|
|
292
|
+
await workerMain(runId);
|
|
228
293
|
return;
|
|
229
294
|
}
|
|
230
295
|
if (action === "status") {
|
|
@@ -360,7 +425,7 @@ async function main() {
|
|
|
360
425
|
// A name that is not a Skill may be a remote MCP: install the Skill that uses it through `frely remote`.
|
|
361
426
|
if (!isNotASkill(error) || itemRef.includes("@") || !/^[^/@]+\/[^/@]+$/u.test(itemRef))
|
|
362
427
|
throw error;
|
|
363
|
-
return installRemoteMcpSkill({ ref: itemRef, call: callCloudTool, host, scope, ...(dir ? { dir } : {}) }).catch((mcpError) => { throw isNotASkill(mcpError) || (mcpError instanceof CloudToolError && mcpError.code === "remote_mcp_not_found") ? error : mcpError; });
|
|
428
|
+
return installRemoteMcpSkill({ ref: itemRef, call: callCloudTool, host, scope, ...(dir ? { dir } : {}), ...(args.includes("--replace") ? { replace: true } : {}) }).catch((mcpError) => { throw isNotASkill(mcpError) || (mcpError instanceof CloudToolError && mcpError.code === "remote_mcp_not_found") ? error : mcpError; });
|
|
364
429
|
});
|
|
365
430
|
if ("tools" in value) {
|
|
366
431
|
if (args.includes("--json")) {
|
|
@@ -551,6 +616,23 @@ async function main() {
|
|
|
551
616
|
process.exitCode = await runShareCommand(args.slice(1), { write: (text) => { stdout.write(text); }, interactive, ...(prompt ? { prompt } : {}) });
|
|
552
617
|
return;
|
|
553
618
|
}
|
|
619
|
+
if (command === "service") {
|
|
620
|
+
const controller = new AbortController();
|
|
621
|
+
const onSignal = () => controller.abort();
|
|
622
|
+
process.once("SIGINT", onSignal);
|
|
623
|
+
process.once("SIGTERM", onSignal);
|
|
624
|
+
try {
|
|
625
|
+
process.exitCode = await runServiceCommand(args.slice(1), { write: (text) => { stdout.write(text); } }, {
|
|
626
|
+
control: accountServiceControl, probe: probeLoopback, ensureFrpc: () => ensureFrpc({ log: (text) => { stdout.write(text); } }), spawnFrpc: spawnFrpcProcess, signal: controller.signal,
|
|
627
|
+
installDaemon: async () => { await installDeviceRelayService(); },
|
|
628
|
+
});
|
|
629
|
+
}
|
|
630
|
+
finally {
|
|
631
|
+
process.off("SIGINT", onSignal);
|
|
632
|
+
process.off("SIGTERM", onSignal);
|
|
633
|
+
}
|
|
634
|
+
return;
|
|
635
|
+
}
|
|
554
636
|
if (command === "doctor") {
|
|
555
637
|
const value = await doctor({ verbose: args.includes("-v") || args.includes("--verbose"), mcp: args.includes("--mcp") });
|
|
556
638
|
if (args.includes("--json"))
|
|
@@ -671,6 +753,8 @@ async function main() {
|
|
|
671
753
|
}
|
|
672
754
|
localMcp?.start();
|
|
673
755
|
piNode?.start();
|
|
756
|
+
// Services saved with `frely service share --background` stay connected for as long as the daemon runs.
|
|
757
|
+
const services = superviseServices({ signal: controller.signal, log: nodeLog }).catch((error) => nodeLog(`Services stopped: ${error instanceof Error ? error.message : String(error)}`));
|
|
674
758
|
try {
|
|
675
759
|
const capabilities = async () => {
|
|
676
760
|
const install = await readAppInstall().then((value) => value, () => null);
|
|
@@ -689,6 +773,8 @@ async function main() {
|
|
|
689
773
|
finally {
|
|
690
774
|
process.off("SIGINT", stop);
|
|
691
775
|
process.off("SIGTERM", stop);
|
|
776
|
+
controller.abort();
|
|
777
|
+
await services;
|
|
692
778
|
await piNode?.stop(); // the node keeps running; a restarted service adopts it
|
|
693
779
|
await localMcp?.close();
|
|
694
780
|
}
|
|
@@ -771,9 +857,9 @@ async function main() {
|
|
|
771
857
|
}
|
|
772
858
|
if (command === "mcp" && args[1] === "remove") {
|
|
773
859
|
await revokeMcpAuthorization((message) => { process.stderr.write(message); });
|
|
774
|
-
if ((await listLocalProviders()).length > 0) {
|
|
860
|
+
if ((await listLocalProviders()).length > 0 || (await listLocalServices().catch(() => [])).some((service) => service.background)) {
|
|
775
861
|
await installDeviceRelayService();
|
|
776
|
-
stdout.write("Device MCP removed. The background service keeps running for local Providers.\n");
|
|
862
|
+
stdout.write("Device MCP removed. The background service keeps running for local Providers and services.\n");
|
|
777
863
|
}
|
|
778
864
|
else {
|
|
779
865
|
await uninstallMcpService();
|
|
@@ -796,6 +882,25 @@ async function main() {
|
|
|
796
882
|
usage();
|
|
797
883
|
process.exitCode = 2;
|
|
798
884
|
}
|
|
885
|
+
const RUN_USAGE = "Usage: frely agent run <username/name> (--input <text>|--input-stdin) [--read [<dir>] [--read-max-bytes <n>] [--read-max-rounds <n>]] [--json]";
|
|
886
|
+
/** `--read [<dir>]`: let the Agent read files of a directory (default: the git root of the current directory) through read-only tools that run here. */
|
|
887
|
+
async function readOptions(args) {
|
|
888
|
+
const index = args.indexOf("--read");
|
|
889
|
+
if (index < 0)
|
|
890
|
+
return undefined;
|
|
891
|
+
const next = args[index + 1];
|
|
892
|
+
const dir = next !== undefined && !next.startsWith("-") ? resolve(next) : await defaultReadRoot(process.cwd());
|
|
893
|
+
const limit = (name, max) => {
|
|
894
|
+
const raw = option(args, name);
|
|
895
|
+
if (raw === undefined)
|
|
896
|
+
return max;
|
|
897
|
+
const value = Number(raw);
|
|
898
|
+
if (!Number.isSafeInteger(value) || value < 1 || value > max)
|
|
899
|
+
throw new Error(`${name} must be an integer from 1 to ${max}.`);
|
|
900
|
+
return value;
|
|
901
|
+
};
|
|
902
|
+
return { root: dir, limits: { totalBytes: limit("--read-max-bytes", DEFAULT_READ_LIMITS.totalBytes), maxRounds: limit("--read-max-rounds", DEFAULT_READ_LIMITS.maxRounds) } };
|
|
903
|
+
}
|
|
799
904
|
function option(args, name) {
|
|
800
905
|
const index = args.indexOf(name);
|
|
801
906
|
if (index < 0)
|