autowonder 0.2.80 → 0.2.82
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
CHANGED
|
@@ -6,13 +6,13 @@ AutoWonder 本地 agent runtime。安装后启动 daemon,持续轮询本地 as
|
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
# Qoder CLI
|
|
9
|
-
npx -y autowonder@0.2.
|
|
9
|
+
npx -y autowonder@0.2.82 connect --ws-url <wss-endpoint> --token <executor-token> --executor-id <executor-id> --provider qoder --model Qwen3.7-Max --reasoning-effort medium --context-window 131072
|
|
10
10
|
|
|
11
11
|
# Claude Code
|
|
12
|
-
npx -y autowonder@0.2.
|
|
12
|
+
npx -y autowonder@0.2.82 connect --ws-url <wss-endpoint> --token <executor-token> --executor-id <executor-id> --provider claude
|
|
13
13
|
|
|
14
14
|
# Codex CLI
|
|
15
|
-
npx -y autowonder@0.2.
|
|
15
|
+
npx -y autowonder@0.2.82 connect --ws-url <wss-endpoint> --token <executor-token> --executor-id <executor-id> --provider codex --model gpt-5.5 --reasoning-effort medium
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
`connect` 会安装当前 npm 包内置的 daemon,并使用页面生成的 WebSocket endpoint、Token 和执行器 ID 建立连接。目标机器必须提前安装并登录对应的 Qoder CLI、Claude Code 或 Codex CLI;runtime 会继承当前用户的 HOME、环境变量和 CLI 登录状态。
|
|
@@ -55,14 +55,14 @@ mv "$queue/.assignment.tmp" "$queue/assignment.json"
|
|
|
55
55
|
也可以直接提交到本地 API:
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
|
-
npx -y autowonder@0.2.
|
|
58
|
+
npx -y autowonder@0.2.82 dispatch ./assignment.json
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
## 管理 daemon
|
|
62
62
|
|
|
63
63
|
```bash
|
|
64
|
-
npx -y autowonder@0.2.
|
|
65
|
-
npx -y autowonder@0.2.
|
|
64
|
+
npx -y autowonder@0.2.82 status
|
|
65
|
+
npx -y autowonder@0.2.82 stop
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
默认 API 是 `http://127.0.0.1:34989`,日志位于 `~/.autowonder/daemon.log`。npm 包不包含任何 agent、MCP 或服务端凭证。
|
package/bin/cli.js
CHANGED
|
@@ -282,7 +282,7 @@ function buildFromSource() {
|
|
|
282
282
|
// ─── Commands ────────────────────────────────────────────────────────
|
|
283
283
|
|
|
284
284
|
async function cmdConnect(args) {
|
|
285
|
-
const flags = parseFlags(args, ["ws-url", "token", "executor-id", "provider", "name", "max-tasks", "model", "reasoning-effort", "context-window", "memory-mode"]);
|
|
285
|
+
const flags = parseFlags(args, ["ws-url", "token", "executor-id", "provider", "name", "max-tasks", "model", "reasoning-effort", "context-window", "memory-mode", "settings"]);
|
|
286
286
|
|
|
287
287
|
if (!flags["ws-url"] || !flags.token || !flags["executor-id"]) {
|
|
288
288
|
error("Usage: autowonder connect --ws-url <url> --token <token> --executor-id <id> [--provider qoder]");
|
|
@@ -313,6 +313,22 @@ async function cmdConnect(args) {
|
|
|
313
313
|
error("--context-window must be a positive integer");
|
|
314
314
|
process.exit(1);
|
|
315
315
|
}
|
|
316
|
+
let claudeSettingsPath = "";
|
|
317
|
+
if (flags.settings) {
|
|
318
|
+
if (provider !== "claude") {
|
|
319
|
+
error("--settings is supported only for claude");
|
|
320
|
+
process.exit(1);
|
|
321
|
+
}
|
|
322
|
+
claudeSettingsPath = resolveUserPath(flags.settings);
|
|
323
|
+
try {
|
|
324
|
+
const stat = fs.statSync(claudeSettingsPath);
|
|
325
|
+
if (!stat.isFile()) throw new Error("not a regular file");
|
|
326
|
+
fs.accessSync(claudeSettingsPath, fs.constants.R_OK);
|
|
327
|
+
} catch {
|
|
328
|
+
error(`Claude settings file does not exist or is not readable: ${claudeSettingsPath}`);
|
|
329
|
+
process.exit(1);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
316
332
|
const memoryMode = flags["memory-mode"] || "platform";
|
|
317
333
|
if (!["platform", "provider-local", "none"].includes(memoryMode)) {
|
|
318
334
|
error("--memory-mode must be one of: platform, provider-local, none");
|
|
@@ -329,6 +345,7 @@ async function cmdConnect(args) {
|
|
|
329
345
|
name: flags.name || `daemon_${provider}_${executorId}`,
|
|
330
346
|
maxTasks: parseInt(flags["max-tasks"] || "10", 10),
|
|
331
347
|
memoryMode,
|
|
348
|
+
claudeSettingsPath,
|
|
332
349
|
};
|
|
333
350
|
saveConfig(config);
|
|
334
351
|
|
|
@@ -355,6 +372,7 @@ async function cmdConnect(args) {
|
|
|
355
372
|
if (flags.model) env.AUTOWONDER_MODEL = flags.model;
|
|
356
373
|
if (flags["reasoning-effort"]) env.AUTOWONDER_REASONING_EFFORT = flags["reasoning-effort"];
|
|
357
374
|
if (flags["context-window"]) env.AUTOWONDER_CONTEXT_WINDOW = flags["context-window"];
|
|
375
|
+
if (config.claudeSettingsPath) env.AUTOWONDER_CLAUDE_SETTINGS = config.claudeSettingsPath;
|
|
358
376
|
|
|
359
377
|
const child = spawn(DAEMON_BIN, [], { env, stdio: "inherit" });
|
|
360
378
|
child.on("exit", (code) => process.exit(code || 0));
|
|
@@ -362,6 +380,14 @@ async function cmdConnect(args) {
|
|
|
362
380
|
process.on("SIGTERM", () => { child.kill("SIGTERM"); });
|
|
363
381
|
}
|
|
364
382
|
|
|
383
|
+
function resolveUserPath(value) {
|
|
384
|
+
if (value === "~") return os.homedir();
|
|
385
|
+
if (value.startsWith("~/") || value.startsWith("~\\")) {
|
|
386
|
+
return path.resolve(os.homedir(), value.slice(2));
|
|
387
|
+
}
|
|
388
|
+
return path.resolve(value);
|
|
389
|
+
}
|
|
390
|
+
|
|
365
391
|
async function cmdStart(args) {
|
|
366
392
|
const flags = parseFlags(args, ["provider", "max-tasks", "addr"]);
|
|
367
393
|
|
|
@@ -552,6 +578,7 @@ function cmdHelp() {
|
|
|
552
578
|
--model <model> Default model for Codex or Qoder
|
|
553
579
|
--reasoning-effort <level> Default reasoning effort for Codex or Qoder
|
|
554
580
|
--context-window <n> Qoder context window (positive integer)
|
|
581
|
+
--settings <file> Claude settings JSON file
|
|
555
582
|
--memory-mode <mode> Memory: platform, provider-local, or none (default: platform)
|
|
556
583
|
--name <name> Runtime name (default: provider + executor ID)
|
|
557
584
|
-h, --help Show this help
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|