claude-yes 1.151.2 → 1.152.0
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/dist/SUPPORTED_CLIS-3sP7QMdT.js +8 -0
- package/dist/{SUPPORTED_CLIS-gCwkPSj-.js → SUPPORTED_CLIS-Cc_CQLNY.js} +2 -2
- package/dist/cli.js +3 -3
- package/dist/index.js +2 -2
- package/dist/{schedule-B-GRqelj.js → schedule-C0IBT9Dv.js} +4 -4
- package/dist/{serve-DFrNHFxO.js → serve-BQUBdYgC.js} +5 -5
- package/dist/{setup-CLxbP7AC.js → setup-BNxr7dVS.js} +2 -2
- package/dist/{subcommands-BnB6rGk_.js → subcommands-D-zxJ5pJ.js} +18 -11
- package/dist/{subcommands-gEF2buIZ.js → subcommands-DCXK2hqQ.js} +1 -1
- package/dist/{ts-BI55YX0a.js → ts-42ZzA2qb.js} +2 -2
- package/dist/{versionChecker-DBn23Rn8.js → versionChecker-BqnxJ5wI.js} +2 -2
- package/lab/ui/index.html +26 -7
- package/package.json +4 -4
- package/ts/subcommands.spec.ts +28 -0
- package/ts/subcommands.ts +26 -11
- package/ts/webrtcRemote.ts +8 -2
- package/dist/SUPPORTED_CLIS-Cb-mL5un.js +0 -8
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import "./ts-42ZzA2qb.js";
|
|
2
|
+
import "./logger-CDIsZ-Pp.js";
|
|
3
|
+
import "./versionChecker-BqnxJ5wI.js";
|
|
4
|
+
import "./pidStore-fqXqTKkh.js";
|
|
5
|
+
import "./globalPidIndex-DlmmJlO8.js";
|
|
6
|
+
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-Cc_CQLNY.js";
|
|
7
|
+
|
|
8
|
+
export { SUPPORTED_CLIS };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as CLIS_CONFIG } from "./ts-
|
|
1
|
+
import { t as CLIS_CONFIG } from "./ts-42ZzA2qb.js";
|
|
2
2
|
|
|
3
3
|
//#region ts/SUPPORTED_CLIS.ts
|
|
4
4
|
const SUPPORTED_CLIS = Object.keys(CLIS_CONFIG);
|
|
5
5
|
|
|
6
6
|
//#endregion
|
|
7
7
|
export { SUPPORTED_CLIS as t };
|
|
8
|
-
//# sourceMappingURL=SUPPORTED_CLIS-
|
|
8
|
+
//# sourceMappingURL=SUPPORTED_CLIS-Cc_CQLNY.js.map
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
import { t as invokedCliName } from "./invokedCli-uqM2YYA7.js";
|
|
3
3
|
import { n as logger } from "./logger-CDIsZ-Pp.js";
|
|
4
|
-
import { i as versionString, n as displayVersion, r as getInstalledPackage, t as checkAndAutoUpdate } from "./versionChecker-
|
|
4
|
+
import { i as versionString, n as displayVersion, r as getInstalledPackage, t as checkAndAutoUpdate } from "./versionChecker-BqnxJ5wI.js";
|
|
5
5
|
import { argv } from "process";
|
|
6
6
|
import { execFileSync, spawn } from "child_process";
|
|
7
7
|
import ms from "ms";
|
|
@@ -470,7 +470,7 @@ function buildRustArgs(argv, cliFromScript, supportedClis) {
|
|
|
470
470
|
const rawArg = process.argv[2];
|
|
471
471
|
const managerCommands = !invokedCliName(process.argv);
|
|
472
472
|
const isHelpFlag = rawArg === "-h" || rawArg === "--help";
|
|
473
|
-
const { isSubcommand, runSubcommand, cmdHelp } = await import("./subcommands-
|
|
473
|
+
const { isSubcommand, runSubcommand, cmdHelp } = await import("./subcommands-DCXK2hqQ.js");
|
|
474
474
|
if (isHelpFlag && process.argv.length === 3) {
|
|
475
475
|
cmdHelp(managerCommands);
|
|
476
476
|
process.exit(0);
|
|
@@ -503,7 +503,7 @@ if (config.useRust) {
|
|
|
503
503
|
}
|
|
504
504
|
}
|
|
505
505
|
if (rustBinary) {
|
|
506
|
-
const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-
|
|
506
|
+
const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-3sP7QMdT.js");
|
|
507
507
|
const rustArgs = buildRustArgs(process.argv, config.cli, SUPPORTED_CLIS);
|
|
508
508
|
if (config.verbose) {
|
|
509
509
|
console.log(`[rust] Using binary: ${rustBinary}`);
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as removeControlCharacters, i as AgentContext, n as agentYes, r as config, t as CLIS_CONFIG } from "./ts-
|
|
1
|
+
import { a as removeControlCharacters, i as AgentContext, n as agentYes, r as config, t as CLIS_CONFIG } from "./ts-42ZzA2qb.js";
|
|
2
2
|
import "./logger-CDIsZ-Pp.js";
|
|
3
|
-
import "./versionChecker-
|
|
3
|
+
import "./versionChecker-BqnxJ5wI.js";
|
|
4
4
|
import "./pidStore-fqXqTKkh.js";
|
|
5
5
|
import "./globalPidIndex-DlmmJlO8.js";
|
|
6
6
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./ts-
|
|
1
|
+
import "./ts-42ZzA2qb.js";
|
|
2
2
|
import "./logger-CDIsZ-Pp.js";
|
|
3
|
-
import "./versionChecker-
|
|
3
|
+
import "./versionChecker-BqnxJ5wI.js";
|
|
4
4
|
import "./pidStore-fqXqTKkh.js";
|
|
5
5
|
import "./globalPidIndex-DlmmJlO8.js";
|
|
6
|
-
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-
|
|
6
|
+
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-Cc_CQLNY.js";
|
|
7
7
|
import { i as resolveSpawnCwd } from "./workspaceConfig-B9VX8tVO.js";
|
|
8
8
|
import { createHash } from "node:crypto";
|
|
9
9
|
|
|
@@ -141,4 +141,4 @@ async function cmdSchedule(rest) {
|
|
|
141
141
|
|
|
142
142
|
//#endregion
|
|
143
143
|
export { cmdSchedule };
|
|
144
|
-
//# sourceMappingURL=schedule-
|
|
144
|
+
//# sourceMappingURL=schedule-C0IBT9Dv.js.map
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import "./ts-
|
|
1
|
+
import "./ts-42ZzA2qb.js";
|
|
2
2
|
import "./logger-CDIsZ-Pp.js";
|
|
3
|
-
import { r as getInstalledPackage } from "./versionChecker-
|
|
3
|
+
import { r as getInstalledPackage } from "./versionChecker-BqnxJ5wI.js";
|
|
4
4
|
import "./pidStore-fqXqTKkh.js";
|
|
5
5
|
import { a as updateGlobalPidStatus } from "./globalPidIndex-DlmmJlO8.js";
|
|
6
6
|
import { t as pgidForWrapper } from "./reaper-C-eWAxIj.js";
|
|
7
7
|
import "./configShared-C1C04bbq.js";
|
|
8
|
-
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-
|
|
8
|
+
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-Cc_CQLNY.js";
|
|
9
9
|
import "./e2e-ClOI_aqV.js";
|
|
10
10
|
import "./webrtcLink-BWhuA74k.js";
|
|
11
11
|
import "./remotes-qK6uozO4.js";
|
|
12
12
|
import { i as resolveSpawnCwd, r as isProvisionAllowed, t as getProvisionRoot } from "./workspaceConfig-B9VX8tVO.js";
|
|
13
|
-
import { C as snapshotStatus, T as writeToIpc, _ as readPtysize, b as resolveOne, c as extractTaskCounts, g as readNotes, i as controlCodeFromName, m as listRecords, o as deriveLiveStatus, v as renderRawLog } from "./subcommands-
|
|
13
|
+
import { C as snapshotStatus, T as writeToIpc, _ as readPtysize, b as resolveOne, c as extractTaskCounts, g as readNotes, i as controlCodeFromName, m as listRecords, o as deriveLiveStatus, v as renderRawLog } from "./subcommands-D-zxJ5pJ.js";
|
|
14
14
|
import yargs from "yargs";
|
|
15
15
|
import { mkdir, open, readFile, stat, writeFile } from "fs/promises";
|
|
16
16
|
import { homedir, hostname, userInfo } from "os";
|
|
@@ -1265,4 +1265,4 @@ Options:
|
|
|
1265
1265
|
|
|
1266
1266
|
//#endregion
|
|
1267
1267
|
export { cmdServe };
|
|
1268
|
-
//# sourceMappingURL=serve-
|
|
1268
|
+
//# sourceMappingURL=serve-BQUBdYgC.js.map
|
|
@@ -32,7 +32,7 @@ async function cmdSetup(rest) {
|
|
|
32
32
|
if (!existsSync(abs)) process.stderr.write(` note: that directory doesn't exist yet — create it, or agents spawned there will fail\n`);
|
|
33
33
|
if (noShare) return 0;
|
|
34
34
|
process.stdout.write(`\nsharing this machine to agent-yes.com…\n`);
|
|
35
|
-
const { cmdServe } = await import("./serve-
|
|
35
|
+
const { cmdServe } = await import("./serve-BQUBdYgC.js");
|
|
36
36
|
return cmdServe([
|
|
37
37
|
"install",
|
|
38
38
|
"--share",
|
|
@@ -42,4 +42,4 @@ async function cmdSetup(rest) {
|
|
|
42
42
|
|
|
43
43
|
//#endregion
|
|
44
44
|
export { cmdSetup };
|
|
45
|
-
//# sourceMappingURL=setup-
|
|
45
|
+
//# sourceMappingURL=setup-BNxr7dVS.js.map
|
|
@@ -554,15 +554,15 @@ async function runSubcommand(argv) {
|
|
|
554
554
|
case "restart": return await cmdRestart(rest);
|
|
555
555
|
case "note": return await cmdNote(rest);
|
|
556
556
|
case "serve": {
|
|
557
|
-
const { cmdServe } = await import("./serve-
|
|
557
|
+
const { cmdServe } = await import("./serve-BQUBdYgC.js");
|
|
558
558
|
return cmdServe(rest);
|
|
559
559
|
}
|
|
560
560
|
case "setup": {
|
|
561
|
-
const { cmdSetup } = await import("./setup-
|
|
561
|
+
const { cmdSetup } = await import("./setup-BNxr7dVS.js");
|
|
562
562
|
return cmdSetup(rest);
|
|
563
563
|
}
|
|
564
564
|
case "schedule": {
|
|
565
|
-
const { cmdSchedule } = await import("./schedule-
|
|
565
|
+
const { cmdSchedule } = await import("./schedule-C0IBT9Dv.js");
|
|
566
566
|
return cmdSchedule(rest);
|
|
567
567
|
}
|
|
568
568
|
case "remote": {
|
|
@@ -1050,23 +1050,22 @@ async function cmdLs(rest) {
|
|
|
1050
1050
|
}).option("all-remotes", {
|
|
1051
1051
|
type: "boolean",
|
|
1052
1052
|
default: false,
|
|
1053
|
-
description: "Include agents from all configured remotes (
|
|
1053
|
+
description: "Include agents from all configured remotes (now the default — kept for explicitness)"
|
|
1054
|
+
}).option("local", {
|
|
1055
|
+
type: "boolean",
|
|
1056
|
+
default: false,
|
|
1057
|
+
description: "Only this machine's agents — skip configured remotes (the pre-default behaviour)"
|
|
1054
1058
|
}).option("help", {
|
|
1055
1059
|
alias: "h",
|
|
1056
1060
|
type: "boolean",
|
|
1057
1061
|
default: false,
|
|
1058
1062
|
description: "Show this help"
|
|
1059
|
-
}).example("ay ls", "list
|
|
1063
|
+
}).example("ay ls", "list local + all configured remotes").example("ay ls --local", "only this machine's agents").example("ay ls --all", "include exited agents").example("ay ls --json", "machine-readable output").example("ay ls --watch", "stream state transitions for a whole fan-out as NDJSON").example("ay ls symval", "filter by cwd/prompt keyword").help(false).version(false).exitProcess(false);
|
|
1060
1064
|
const argv = await y.parseAsync();
|
|
1061
1065
|
if (argv.help || argv.h) {
|
|
1062
1066
|
process.stdout.write(await y.getHelp() + "\n");
|
|
1063
1067
|
return 0;
|
|
1064
1068
|
}
|
|
1065
|
-
if (argv["all-remotes"]) return runAllRemotesLs({
|
|
1066
|
-
all: argv.all,
|
|
1067
|
-
active: argv.active,
|
|
1068
|
-
keyword: argv._[0] !== void 0 ? String(argv._[0]) : void 0
|
|
1069
|
-
});
|
|
1070
1069
|
const keyword = argv._[0] !== void 0 ? String(argv._[0]) : void 0;
|
|
1071
1070
|
if (keyword) {
|
|
1072
1071
|
const remote = await resolveRemoteSpec(keyword);
|
|
@@ -1114,6 +1113,14 @@ async function cmdLs(rest) {
|
|
|
1114
1113
|
});
|
|
1115
1114
|
return 0;
|
|
1116
1115
|
}
|
|
1116
|
+
if (!argv.local && !opts.json && !argv.latest) {
|
|
1117
|
+
const remotes = await readRemotes();
|
|
1118
|
+
if (argv["all-remotes"] || remotes.size > 0) return runAllRemotesLs({
|
|
1119
|
+
all: argv.all,
|
|
1120
|
+
active: argv.active,
|
|
1121
|
+
keyword
|
|
1122
|
+
});
|
|
1123
|
+
}
|
|
1117
1124
|
const records = await listRecords(keyword, opts);
|
|
1118
1125
|
if (opts.json) {
|
|
1119
1126
|
const enriched = await Promise.all(records.map(async (r) => ({
|
|
@@ -2619,4 +2626,4 @@ async function cmdResultSet(rest) {
|
|
|
2619
2626
|
|
|
2620
2627
|
//#endregion
|
|
2621
2628
|
export { snapshotStatus as C, runSubcommand as S, writeToIpc as T, readPtysize as _, cursorAbs as a, resolveOne as b, extractTaskCounts as c, isExitRequest as d, isPidAlive as f, readNotes as g, matchKeyword as h, controlCodeFromName as i, finalizedLines as l, listRecords as m, READ_PAGE_DEFAULT as n, deriveLiveStatus as o, isSubcommand as p, cmdHelp as r, extractNeedsInput as s, GRACEFUL_EXIT_COMMANDS as t, isAgentStuck as u, renderRawLog as v, stopTipForCli as w, resolveReadWindow as x, renderRawLogLines as y };
|
|
2622
|
-
//# sourceMappingURL=subcommands-
|
|
2629
|
+
//# sourceMappingURL=subcommands-D-zxJ5pJ.js.map
|
|
@@ -4,6 +4,6 @@ import "./configShared-C1C04bbq.js";
|
|
|
4
4
|
import "./e2e-ClOI_aqV.js";
|
|
5
5
|
import "./webrtcLink-BWhuA74k.js";
|
|
6
6
|
import "./remotes-qK6uozO4.js";
|
|
7
|
-
import { C as snapshotStatus, S as runSubcommand, T as writeToIpc, _ as readPtysize, a as cursorAbs, b as resolveOne, c as extractTaskCounts, d as isExitRequest, f as isPidAlive, g as readNotes, h as matchKeyword, i as controlCodeFromName, l as finalizedLines, m as listRecords, n as READ_PAGE_DEFAULT, o as deriveLiveStatus, p as isSubcommand, r as cmdHelp, s as extractNeedsInput, t as GRACEFUL_EXIT_COMMANDS, u as isAgentStuck, v as renderRawLog, w as stopTipForCli, x as resolveReadWindow, y as renderRawLogLines } from "./subcommands-
|
|
7
|
+
import { C as snapshotStatus, S as runSubcommand, T as writeToIpc, _ as readPtysize, a as cursorAbs, b as resolveOne, c as extractTaskCounts, d as isExitRequest, f as isPidAlive, g as readNotes, h as matchKeyword, i as controlCodeFromName, l as finalizedLines, m as listRecords, n as READ_PAGE_DEFAULT, o as deriveLiveStatus, p as isSubcommand, r as cmdHelp, s as extractNeedsInput, t as GRACEFUL_EXIT_COMMANDS, u as isAgentStuck, v as renderRawLog, w as stopTipForCli, x as resolveReadWindow, y as renderRawLogLines } from "./subcommands-D-zxJ5pJ.js";
|
|
8
8
|
|
|
9
9
|
export { cmdHelp, isSubcommand, runSubcommand };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as logger, t as addTransport } from "./logger-CDIsZ-Pp.js";
|
|
2
|
-
import { r as getInstalledPackage } from "./versionChecker-
|
|
2
|
+
import { r as getInstalledPackage } from "./versionChecker-BqnxJ5wI.js";
|
|
3
3
|
import { t as agentYesHome } from "./agentYesHome-_eJa3DaX.js";
|
|
4
4
|
import { i as shouldUseLock, r as releaseLock, t as acquireLock } from "./runningLock-V4qvXgAw.js";
|
|
5
5
|
import { t as PidStore } from "./pidStore-fqXqTKkh.js";
|
|
@@ -1802,4 +1802,4 @@ function sleep(ms) {
|
|
|
1802
1802
|
|
|
1803
1803
|
//#endregion
|
|
1804
1804
|
export { removeControlCharacters as a, AgentContext as i, agentYes as n, config as r, CLIS_CONFIG as t };
|
|
1805
|
-
//# sourceMappingURL=ts-
|
|
1805
|
+
//# sourceMappingURL=ts-42ZzA2qb.js.map
|
|
@@ -7,7 +7,7 @@ import { fileURLToPath } from "url";
|
|
|
7
7
|
|
|
8
8
|
//#region package.json
|
|
9
9
|
var name = "claude-yes";
|
|
10
|
-
var version = "1.
|
|
10
|
+
var version = "1.152.0";
|
|
11
11
|
|
|
12
12
|
//#endregion
|
|
13
13
|
//#region ts/versionChecker.ts
|
|
@@ -215,4 +215,4 @@ async function displayVersion() {
|
|
|
215
215
|
|
|
216
216
|
//#endregion
|
|
217
217
|
export { versionString as i, displayVersion as n, getInstalledPackage as r, checkAndAutoUpdate as t };
|
|
218
|
-
//# sourceMappingURL=versionChecker-
|
|
218
|
+
//# sourceMappingURL=versionChecker-BqnxJ5wI.js.map
|
package/lab/ui/index.html
CHANGED
|
@@ -3794,16 +3794,31 @@
|
|
|
3794
3794
|
}, 120);
|
|
3795
3795
|
}
|
|
3796
3796
|
|
|
3797
|
-
//
|
|
3798
|
-
|
|
3799
|
-
|
|
3800
|
-
const s = q
|
|
3797
|
+
// git-safe branch slug: lowercase, non-alnum → "-", trimmed, capped.
|
|
3798
|
+
function branchSlug(s) {
|
|
3799
|
+
return (s || "")
|
|
3801
3800
|
.toLowerCase()
|
|
3802
3801
|
.replace(/[^a-z0-9]+/g, "-")
|
|
3803
3802
|
.replace(/^-+|-+$/g, "")
|
|
3804
3803
|
.slice(0, 40)
|
|
3805
3804
|
.replace(/-+$/, "");
|
|
3806
|
-
|
|
3805
|
+
}
|
|
3806
|
+
|
|
3807
|
+
// Auto-derive a branch name from the typed prompt for the Cmd+K fork action
|
|
3808
|
+
// (editable at launch). Forks off a default branch get the flat `fork/`
|
|
3809
|
+
// namespace, e.g. main + "fix the auth bug" → "fork/fix-the-auth-bug".
|
|
3810
|
+
// Forks off any other branch dash-prefix the source to show lineage, so
|
|
3811
|
+
// "def" forked from "feat-abc" reads as a stacked branch "feat-abc-def".
|
|
3812
|
+
// We dash-join (not slash-nest "feat-abc/def") on purpose: git stores refs
|
|
3813
|
+
// as files, so `feat-abc/def` can't be created while `feat-abc` still
|
|
3814
|
+
// exists (D/F conflict) — and the source branch is normally still live when
|
|
3815
|
+
// we fork from it. Any slashes in the source (e.g. a prior "fork/x") are
|
|
3816
|
+
// flattened to dashes so the new ref stays a single node.
|
|
3817
|
+
function forkSlug(q, srcBranch) {
|
|
3818
|
+
const topic = branchSlug(q) || "wip";
|
|
3819
|
+
const base = branchSlug(srcBranch);
|
|
3820
|
+
if (!base || /^(main|master)$/.test((srcBranch || "").trim())) return "fork/" + topic;
|
|
3821
|
+
return base + "-" + topic;
|
|
3807
3822
|
}
|
|
3808
3823
|
|
|
3809
3824
|
function renderOmni() {
|
|
@@ -3868,7 +3883,8 @@
|
|
|
3868
3883
|
if (q) {
|
|
3869
3884
|
omniRows.push({ kind: "spawn" });
|
|
3870
3885
|
const anchor = omniAnchor();
|
|
3871
|
-
if (anchor?.cwd)
|
|
3886
|
+
if (anchor?.cwd)
|
|
3887
|
+
omniRows.push({ kind: "fork", branch: forkSlug(q, anchor?.git?.branch) });
|
|
3872
3888
|
omniRows.push({ kind: "spawncwd" });
|
|
3873
3889
|
}
|
|
3874
3890
|
omniIdx = 0;
|
|
@@ -3947,7 +3963,10 @@
|
|
|
3947
3963
|
}
|
|
3948
3964
|
if (row && row.kind === "fork") {
|
|
3949
3965
|
// Editable at launch (auto-slug is the default); carries the anchor's WIP.
|
|
3950
|
-
const branch = prompt(
|
|
3966
|
+
const branch = prompt(
|
|
3967
|
+
"Fork to a new branch (carries your uncommitted work):",
|
|
3968
|
+
row.branch,
|
|
3969
|
+
);
|
|
3951
3970
|
if (!branch || !branch.trim()) return; // cancelled — leave the omnibox open
|
|
3952
3971
|
closeOmni(false);
|
|
3953
3972
|
await spawnAndSelect(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-yes",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.152.0",
|
|
4
4
|
"description": "A wrapper tool that automates interactions with various AI CLI tools by automatically handling common prompts and responses.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"glm-yes": "./dist/glm-yes.js",
|
|
43
43
|
"grok-yes": "./dist/grok-yes.js",
|
|
44
44
|
"opencode-yes": "./dist/opencode-yes.js",
|
|
45
|
-
"qwen-yes": "./dist/qwen-yes.js",
|
|
46
|
-
"pi-yes": "./dist/pi-yes.js",
|
|
47
45
|
"openrouter-yes": "./dist/openrouter-yes.js",
|
|
48
|
-
"orcy": "./dist/orcy.js"
|
|
46
|
+
"orcy": "./dist/orcy.js",
|
|
47
|
+
"pi-yes": "./dist/pi-yes.js",
|
|
48
|
+
"qwen-yes": "./dist/qwen-yes.js"
|
|
49
49
|
},
|
|
50
50
|
"directories": {
|
|
51
51
|
"doc": "docs"
|
package/ts/subcommands.spec.ts
CHANGED
|
@@ -521,6 +521,34 @@ describe("subcommands.cmdLs human table", () => {
|
|
|
521
521
|
await rm(otherCwd, { recursive: true, force: true }).catch(() => null);
|
|
522
522
|
}
|
|
523
523
|
});
|
|
524
|
+
|
|
525
|
+
it("--local forces the rich local-only table (AGE column, no HOST column)", async () => {
|
|
526
|
+
const { runSubcommand } = await loadModule();
|
|
527
|
+
const { appendGlobalPid } = await import("./globalPidIndex.ts");
|
|
528
|
+
await appendGlobalPid({
|
|
529
|
+
pid: process.pid,
|
|
530
|
+
cli: "claude",
|
|
531
|
+
prompt: "local only please",
|
|
532
|
+
cwd: process.cwd(),
|
|
533
|
+
log_file: null,
|
|
534
|
+
status: "active",
|
|
535
|
+
exit_code: null,
|
|
536
|
+
exit_reason: null,
|
|
537
|
+
started_at: Date.now() - 5000,
|
|
538
|
+
});
|
|
539
|
+
const cap = captureStdout();
|
|
540
|
+
try {
|
|
541
|
+
const code = await runSubcommand(["bun", "cli.js", "ls", "--local"]);
|
|
542
|
+
expect(code).toBe(0);
|
|
543
|
+
} finally {
|
|
544
|
+
cap.restore();
|
|
545
|
+
}
|
|
546
|
+
// The local table has an AGE column under NOTE/PROMPT; the aggregated remote
|
|
547
|
+
// table has a HOST column and no AGE. --local must pick the former.
|
|
548
|
+
expect(cap.text).toMatch(/PID\s+CLI\s+STATUS\s+AGE\s+CWD\s+NOTE\/PROMPT/);
|
|
549
|
+
expect(cap.text).not.toMatch(/^HOST\s/m);
|
|
550
|
+
expect(cap.text).toMatch(new RegExp(`${process.pid}\\s`));
|
|
551
|
+
});
|
|
524
552
|
});
|
|
525
553
|
|
|
526
554
|
describe("subcommands.cmdRead renders raw log via xterm-headless", () => {
|
package/ts/subcommands.ts
CHANGED
|
@@ -1052,11 +1052,18 @@ async function cmdLs(rest: string[]): Promise<number> {
|
|
|
1052
1052
|
.option("all-remotes", {
|
|
1053
1053
|
type: "boolean",
|
|
1054
1054
|
default: false,
|
|
1055
|
-
description:
|
|
1055
|
+
description:
|
|
1056
|
+
"Include agents from all configured remotes (now the default — kept for explicitness)",
|
|
1057
|
+
})
|
|
1058
|
+
.option("local", {
|
|
1059
|
+
type: "boolean",
|
|
1060
|
+
default: false,
|
|
1061
|
+
description:
|
|
1062
|
+
"Only this machine's agents — skip configured remotes (the pre-default behaviour)",
|
|
1056
1063
|
})
|
|
1057
1064
|
.option("help", { alias: "h", type: "boolean", default: false, description: "Show this help" })
|
|
1058
|
-
.example("ay ls", "list
|
|
1059
|
-
.example("ay ls --
|
|
1065
|
+
.example("ay ls", "list local + all configured remotes")
|
|
1066
|
+
.example("ay ls --local", "only this machine's agents")
|
|
1060
1067
|
.example("ay ls --all", "include exited agents")
|
|
1061
1068
|
.example("ay ls --json", "machine-readable output")
|
|
1062
1069
|
.example("ay ls --watch", "stream state transitions for a whole fan-out as NDJSON")
|
|
@@ -1072,15 +1079,9 @@ async function cmdLs(rest: string[]): Promise<number> {
|
|
|
1072
1079
|
return 0;
|
|
1073
1080
|
}
|
|
1074
1081
|
|
|
1075
|
-
if (argv["all-remotes"]) {
|
|
1076
|
-
return runAllRemotesLs({
|
|
1077
|
-
all: argv.all,
|
|
1078
|
-
active: argv.active,
|
|
1079
|
-
keyword: argv._[0] !== undefined ? String(argv._[0]) : undefined,
|
|
1080
|
-
});
|
|
1081
|
-
}
|
|
1082
|
-
|
|
1083
1082
|
const keyword = argv._[0] !== undefined ? String(argv._[0]) : undefined;
|
|
1083
|
+
// A keyword naming a specific remote (alias or token@host:port) → just that
|
|
1084
|
+
// remote, regardless of the local/all-remotes default below.
|
|
1084
1085
|
if (keyword) {
|
|
1085
1086
|
const remote = await resolveRemoteSpec(keyword);
|
|
1086
1087
|
if (remote) return runRemoteLs(remote, { all: argv.all, active: argv.active });
|
|
@@ -1128,6 +1129,20 @@ async function cmdLs(rest: string[]): Promise<number> {
|
|
|
1128
1129
|
return 0;
|
|
1129
1130
|
}
|
|
1130
1131
|
|
|
1132
|
+
// The human table now spans local + every configured remote by DEFAULT (one
|
|
1133
|
+
// fleet view across machines). `--local` opts back to this machine only, and
|
|
1134
|
+
// a single-machine box (no remotes configured) keeps the richer local-only
|
|
1135
|
+
// table automatically. The programmatic paths above (--watch) and the --json
|
|
1136
|
+
// path below stay LOCAL-only on purpose: orchestrators parse them and expect
|
|
1137
|
+
// this box's pids, and the aggregated view is a flat human table without the
|
|
1138
|
+
// forest/notes/badges those consumers don't need.
|
|
1139
|
+
if (!argv.local && !opts.json && !argv.latest) {
|
|
1140
|
+
const remotes = await readRemotes();
|
|
1141
|
+
if (argv["all-remotes"] || remotes.size > 0) {
|
|
1142
|
+
return runAllRemotesLs({ all: argv.all, active: argv.active, keyword });
|
|
1143
|
+
}
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1131
1146
|
const records = await listRecords(keyword, opts);
|
|
1132
1147
|
|
|
1133
1148
|
if (opts.json) {
|
package/ts/webrtcRemote.ts
CHANGED
|
@@ -117,7 +117,9 @@ class WebRtcConn {
|
|
|
117
117
|
const keys = await deriveDirKeys(this.link.s, this.th);
|
|
118
118
|
this.keyC2H = keys.keyC2H;
|
|
119
119
|
this.keyH2C = keys.keyH2C;
|
|
120
|
-
this.ws.send(
|
|
120
|
+
this.ws.send(
|
|
121
|
+
JSON.stringify({ type: "answer", to: this.hostPeer, sdp: pc.localDescription.sdp }),
|
|
122
|
+
);
|
|
121
123
|
} else if (m.type === "candidate" && this.pc) {
|
|
122
124
|
await this.pc.addIceCandidate(m.candidate).catch(() => {});
|
|
123
125
|
}
|
|
@@ -146,7 +148,11 @@ class WebRtcConn {
|
|
|
146
148
|
if (!this.confirmed) {
|
|
147
149
|
if (!env || env.t !== "confirm") return;
|
|
148
150
|
if (typeof env.nonce === "string" && !this.confirmedOut) {
|
|
149
|
-
await this.enqueueSeal(FLAG_CONFIRM, {
|
|
151
|
+
await this.enqueueSeal(FLAG_CONFIRM, {
|
|
152
|
+
t: "confirm",
|
|
153
|
+
nonce: this.myNonce,
|
|
154
|
+
echo: env.nonce,
|
|
155
|
+
});
|
|
150
156
|
this.confirmedOut = true;
|
|
151
157
|
}
|
|
152
158
|
if (env.echo && env.echo === this.myNonce) this.confirmedIn = true;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import "./ts-BI55YX0a.js";
|
|
2
|
-
import "./logger-CDIsZ-Pp.js";
|
|
3
|
-
import "./versionChecker-DBn23Rn8.js";
|
|
4
|
-
import "./pidStore-fqXqTKkh.js";
|
|
5
|
-
import "./globalPidIndex-DlmmJlO8.js";
|
|
6
|
-
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-gCwkPSj-.js";
|
|
7
|
-
|
|
8
|
-
export { SUPPORTED_CLIS };
|