agent-yes 1.294.0 → 1.294.1-beta.750.1
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-CPXyE9Tg.js → SUPPORTED_CLIS-BmFucl40.js} +3 -3
- package/dist/{SUPPORTED_CLIS-BxxxYx1J.js → SUPPORTED_CLIS-CNaOWQr6.js} +2 -2
- package/dist/{agentShare-BXg5zEtW.js → agentShare-DpJrxWI4.js} +2 -2
- package/dist/{callback-TqS7f7-H.js → callback-CnzT3sMS.js} +2 -2
- package/dist/{callback-MneknqcS.js → callback-D6FLQ5IG.js} +3 -3
- package/dist/cli.js +5 -5
- package/dist/{cmdPs-BwDyVmFi.js → cmdPs-CCb6aiqJ.js} +2 -2
- package/dist/index.js +2 -2
- package/dist/{notifyDaemon-lY7jeQcF.js → notifyDaemon-CudyV-xk.js} +2 -2
- package/dist/{parentPingLoop-BNk9bmkL.js → parentPingLoop-DGmjbTGW.js} +2 -2
- package/dist/{rustBinary-Wh9kNpga.js → rustBinary-BDWTBHNk.js} +2 -2
- package/dist/{rustBinary-DsxZnwXj.js → rustBinary-D9LImHwC.js} +2 -2
- package/dist/{schedule-yMAymlHZ.js → schedule-73un4lz8.js} +4 -4
- package/dist/{serve-Cn6LTsO5.js → serve-HzPmrkoQ.js} +40 -18
- package/dist/{setup-DAKtsxiB.js → setup-D8HSFVS-.js} +2 -2
- package/dist/{subcommands-CyhuIreR.js → subcommands-CJaf5iJ8.js} +15 -15
- package/dist/{subcommands-CE0EOwno.js → subcommands-DPKTGX1I.js} +1 -1
- package/dist/{terminal-D7G7Ngnj.js → terminal-CjP9waBm.js} +2 -2
- package/dist/{trayApp-C77uhW1i.js → trayApp-ClgnrIyz.js} +2 -2
- package/dist/trayApp-D8mtC2nX.js +5 -0
- package/dist/{ts-DYKrhLtc.js → ts-D--BjWeq.js} +3 -3
- package/dist/{versionChecker-CqaWZAm0.js → versionChecker-DQtvrPml.js} +2 -2
- package/dist/{widget-D2sc3bde.js → widget-CAGGIsmN.js} +3 -3
- package/dist/{ws-ClgsUOJu.js → ws-BOHUpXom.js} +2 -2
- package/dist/{ws-Dsu27GmE.js → ws-iBBgfNlr.js} +2 -2
- package/lab/ui/console-logic.js +73 -7
- package/lab/ui/index.html +17 -9
- package/package.json +1 -1
- package/ts/serve.spec.ts +26 -3
- package/ts/serve.ts +31 -0
- package/dist/trayApp-i6201tMp.js +0 -5
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import "./logger-CDIsZ-Pp.js";
|
|
2
|
-
import "./versionChecker-
|
|
3
|
-
import "./ts-
|
|
2
|
+
import "./versionChecker-DQtvrPml.js";
|
|
3
|
+
import "./ts-D--BjWeq.js";
|
|
4
4
|
import "./todoAutomation-CbVVS4re.js";
|
|
5
5
|
import "./JsonlStore-BqF7AQ6E.js";
|
|
6
6
|
import "./globalPidIndex-CRH9L9tn.js";
|
|
7
7
|
import "./pidStore-DXWqzTSz.js";
|
|
8
8
|
import "./messageLog-Brx3w6zT.js";
|
|
9
9
|
import "./todoStore-DF6vxHgV.js";
|
|
10
|
-
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-
|
|
10
|
+
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CNaOWQr6.js";
|
|
11
11
|
|
|
12
12
|
export { SUPPORTED_CLIS };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as CLIS_CONFIG } from "./ts-
|
|
1
|
+
import { t as CLIS_CONFIG } from "./ts-D--BjWeq.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-CNaOWQr6.js.map
|
|
@@ -5,7 +5,7 @@ import "./pidStore-DXWqzTSz.js";
|
|
|
5
5
|
import "./messageLog-Brx3w6zT.js";
|
|
6
6
|
import "./e2e-z1xpwSAg.js";
|
|
7
7
|
import "./configShared-DKTgiz7K.js";
|
|
8
|
-
import { J as resolveOne } from "./subcommands-
|
|
8
|
+
import { J as resolveOne } from "./subcommands-CJaf5iJ8.js";
|
|
9
9
|
import "./notifyStore-2SWKGwZI.js";
|
|
10
10
|
import "./webrtcLink-CnQf9pmu.js";
|
|
11
11
|
import "./remotes-5P__pAXA.js";
|
|
@@ -232,4 +232,4 @@ function transformEvent(rawEvent, agentId, forwarded) {
|
|
|
232
232
|
|
|
233
233
|
//#endregion
|
|
234
234
|
export { createScopedShare, listShares, revokeAllShares, revokeShare };
|
|
235
|
-
//# sourceMappingURL=agentShare-
|
|
235
|
+
//# sourceMappingURL=agentShare-DpJrxWI4.js.map
|
|
@@ -5,11 +5,11 @@ import "./pidStore-DXWqzTSz.js";
|
|
|
5
5
|
import "./messageLog-Brx3w6zT.js";
|
|
6
6
|
import "./e2e-z1xpwSAg.js";
|
|
7
7
|
import "./configShared-DKTgiz7K.js";
|
|
8
|
-
import "./subcommands-
|
|
8
|
+
import "./subcommands-CJaf5iJ8.js";
|
|
9
9
|
import "./notifyStore-2SWKGwZI.js";
|
|
10
10
|
import "./webrtcLink-CnQf9pmu.js";
|
|
11
11
|
import "./remotes-5P__pAXA.js";
|
|
12
12
|
import "./callbackCore-Bl2gGcxg.js";
|
|
13
|
-
import { i as loadOrCreateCallbackSecret, n as isCallbackRevoked, r as loadCallbackSecretReadOnly, t as cmdCallback } from "./callback-
|
|
13
|
+
import { i as loadOrCreateCallbackSecret, n as isCallbackRevoked, r as loadCallbackSecretReadOnly, t as cmdCallback } from "./callback-D6FLQ5IG.js";
|
|
14
14
|
|
|
15
15
|
export { cmdCallback };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as agentYesHome } from "./agentYesHome-BNtn19J4.js";
|
|
2
|
-
import { J as resolveOne } from "./subcommands-
|
|
2
|
+
import { J as resolveOne } from "./subcommands-CJaf5iJ8.js";
|
|
3
3
|
import { a as mintCapability, o as parseExpires } from "./callbackCore-Bl2gGcxg.js";
|
|
4
4
|
import { randomBytes } from "node:crypto";
|
|
5
5
|
import { chmodSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
@@ -72,7 +72,7 @@ async function resolveBase(flag) {
|
|
|
72
72
|
if (flag) return flag;
|
|
73
73
|
if (process.env.AGENT_YES_CALLBACK_BASE) return process.env.AGENT_YES_CALLBACK_BASE;
|
|
74
74
|
try {
|
|
75
|
-
const { resolveLocalServeUrl } = await import("./serve-
|
|
75
|
+
const { resolveLocalServeUrl } = await import("./serve-HzPmrkoQ.js");
|
|
76
76
|
const url = await resolveLocalServeUrl();
|
|
77
77
|
if (url) return url;
|
|
78
78
|
} catch {}
|
|
@@ -187,4 +187,4 @@ async function cmdCallback(rest) {
|
|
|
187
187
|
|
|
188
188
|
//#endregion
|
|
189
189
|
export { loadOrCreateCallbackSecret as i, isCallbackRevoked as n, loadCallbackSecretReadOnly as r, cmdCallback as t };
|
|
190
|
-
//# sourceMappingURL=callback-
|
|
190
|
+
//# sourceMappingURL=callback-D6FLQ5IG.js.map
|
package/dist/cli.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
import { t as invokedCliName } from "./invokedCli-zdFbz1ST.js";
|
|
3
3
|
import { n as logger } from "./logger-CDIsZ-Pp.js";
|
|
4
|
-
import { a as versionString, r as displayVersion, t as checkAndAutoUpdate } from "./versionChecker-
|
|
5
|
-
import { d as getRustBinary } from "./rustBinary-
|
|
4
|
+
import { a as versionString, r as displayVersion, t as checkAndAutoUpdate } from "./versionChecker-DQtvrPml.js";
|
|
5
|
+
import { d as getRustBinary } from "./rustBinary-BDWTBHNk.js";
|
|
6
6
|
import { argv } from "process";
|
|
7
7
|
import { spawn } from "child_process";
|
|
8
8
|
import ms from "ms";
|
|
@@ -295,7 +295,7 @@ function buildRustArgs(argv, cliFromScript, supportedClis) {
|
|
|
295
295
|
const rawArg = process.argv[2];
|
|
296
296
|
const managerCommands = !invokedCliName(process.argv);
|
|
297
297
|
const isHelpFlag = rawArg === "-h" || rawArg === "--help";
|
|
298
|
-
const { isSubcommand, runSubcommand, cmdHelp, isUnknownManagerToken, isBareManagerInvocation } = await import("./subcommands-
|
|
298
|
+
const { isSubcommand, runSubcommand, cmdHelp, isUnknownManagerToken, isBareManagerInvocation } = await import("./subcommands-DPKTGX1I.js");
|
|
299
299
|
if (isHelpFlag && process.argv.length === 3) {
|
|
300
300
|
await cmdHelp(managerCommands);
|
|
301
301
|
process.exit(0);
|
|
@@ -309,7 +309,7 @@ function buildRustArgs(argv, cliFromScript, supportedClis) {
|
|
|
309
309
|
process.exit(code ?? 0);
|
|
310
310
|
}
|
|
311
311
|
{
|
|
312
|
-
const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-
|
|
312
|
+
const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-BmFucl40.js");
|
|
313
313
|
if (isUnknownManagerToken(rawArg, managerCommands, SUPPORTED_CLIS)) {
|
|
314
314
|
process.stderr.write(`ay: unknown subcommand or CLI '${rawArg}'.\n See 'ay help' for subcommands. To run an agent, name a CLI:\n 'ay <cli> …' (e.g. 'ay claude …') or 'ay --cli <cli> …'.\n`);
|
|
315
315
|
process.exit(1);
|
|
@@ -360,7 +360,7 @@ if (config.useRust) {
|
|
|
360
360
|
}
|
|
361
361
|
}
|
|
362
362
|
if (rustBinary) {
|
|
363
|
-
const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-
|
|
363
|
+
const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-BmFucl40.js");
|
|
364
364
|
const rustArgs = buildRustArgs(process.argv, config.cli, SUPPORTED_CLIS);
|
|
365
365
|
if (config.verbose) {
|
|
366
366
|
console.log(`[rust] Using binary: ${rustBinary}`);
|
|
@@ -5,7 +5,7 @@ import "./pidStore-DXWqzTSz.js";
|
|
|
5
5
|
import "./messageLog-Brx3w6zT.js";
|
|
6
6
|
import "./e2e-z1xpwSAg.js";
|
|
7
7
|
import "./configShared-DKTgiz7K.js";
|
|
8
|
-
import { F as listRecords, dt as buildAgentForest, ft as flattenForest, h as deriveLiveState } from "./subcommands-
|
|
8
|
+
import { F as listRecords, dt as buildAgentForest, ft as flattenForest, h as deriveLiveState } from "./subcommands-CJaf5iJ8.js";
|
|
9
9
|
import "./notifyStore-2SWKGwZI.js";
|
|
10
10
|
import "./webrtcLink-CnQf9pmu.js";
|
|
11
11
|
import "./remotes-5P__pAXA.js";
|
|
@@ -330,4 +330,4 @@ function readPpidSync(pid) {
|
|
|
330
330
|
|
|
331
331
|
//#endregion
|
|
332
332
|
export { cmdPs };
|
|
333
|
-
//# sourceMappingURL=cmdPs-
|
|
333
|
+
//# sourceMappingURL=cmdPs-CCb6aiqJ.js.map
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./logger-CDIsZ-Pp.js";
|
|
2
|
-
import "./versionChecker-
|
|
3
|
-
import { a as hasTodoStore, i as answerAsk, l as AgentContext, n as agentYes, o as listAsks, r as config, s as listAsksForProject, t as CLIS_CONFIG } from "./ts-
|
|
2
|
+
import "./versionChecker-DQtvrPml.js";
|
|
3
|
+
import { a as hasTodoStore, i as answerAsk, l as AgentContext, n as agentYes, o as listAsks, r as config, s as listAsksForProject, t as CLIS_CONFIG } from "./ts-D--BjWeq.js";
|
|
4
4
|
import { a as renderTree, c as describeBlock, i as renderDigest, l as monitorHint, o as unblockedTasks, r as openBlockers, t as reconcileTodos, u as removeControlCharacters } from "./todoAutomation-CbVVS4re.js";
|
|
5
5
|
import "./JsonlStore-BqF7AQ6E.js";
|
|
6
6
|
import "./globalPidIndex-CRH9L9tn.js";
|
|
@@ -5,7 +5,7 @@ import "./pidStore-DXWqzTSz.js";
|
|
|
5
5
|
import "./messageLog-Brx3w6zT.js";
|
|
6
6
|
import "./e2e-z1xpwSAg.js";
|
|
7
7
|
import "./configShared-DKTgiz7K.js";
|
|
8
|
-
import { D as isPidAlive, F as listRecords, G as renderLogTailLines, h as deriveLiveState } from "./subcommands-
|
|
8
|
+
import { D as isPidAlive, F as listRecords, G as renderLogTailLines, h as deriveLiveState } from "./subcommands-CJaf5iJ8.js";
|
|
9
9
|
import { f as readInbox, g as daemonLockOwnerPath, h as daemonLockDir, i as gcInboxes, l as listInboxParents, m as shouldStealLock, n as appendEvent, s as hostId, u as liveWatchers, x as notifyDir } from "./notifyStore-2SWKGwZI.js";
|
|
10
10
|
import "./webrtcLink-CnQf9pmu.js";
|
|
11
11
|
import "./remotes-5P__pAXA.js";
|
|
@@ -879,4 +879,4 @@ async function ensureDaemon() {
|
|
|
879
879
|
|
|
880
880
|
//#endregion
|
|
881
881
|
export { daemonStatus, ensureDaemon, requestDaemonStop, runDaemon };
|
|
882
|
-
//# sourceMappingURL=notifyDaemon-
|
|
882
|
+
//# sourceMappingURL=notifyDaemon-CudyV-xk.js.map
|
|
@@ -338,7 +338,7 @@ async function isParentWatching(parentWrapperPid, parentAgentPid, selfAgentPid,
|
|
|
338
338
|
logger.debug("[parent-ping] watcher lookup failed:", error);
|
|
339
339
|
}
|
|
340
340
|
try {
|
|
341
|
-
const { lastReadAt, READ_WINDOW_MS } = await import("./subcommands-
|
|
341
|
+
const { lastReadAt, READ_WINDOW_MS } = await import("./subcommands-DPKTGX1I.js");
|
|
342
342
|
const last = await lastReadAt(`agent:${parentAgentPid}`, selfAgentPid);
|
|
343
343
|
if (last !== null && now - last <= READ_WINDOW_MS) return true;
|
|
344
344
|
} catch (error) {
|
|
@@ -466,4 +466,4 @@ function startParentPingLoop(opts) {
|
|
|
466
466
|
|
|
467
467
|
//#endregion
|
|
468
468
|
export { startParentPingLoop };
|
|
469
|
-
//# sourceMappingURL=parentPingLoop-
|
|
469
|
+
//# sourceMappingURL=parentPingLoop-DGmjbTGW.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as getInstalledPackage, n as compareVersions } from "./versionChecker-
|
|
1
|
+
import { i as getInstalledPackage, n as compareVersions } from "./versionChecker-DQtvrPml.js";
|
|
2
2
|
import { execFileSync } from "child_process";
|
|
3
3
|
import { existsSync, mkdirSync, readdirSync, rmSync, statSync, unlinkSync } from "fs";
|
|
4
4
|
import { chmod, copyFile } from "fs/promises";
|
|
@@ -344,4 +344,4 @@ async function getRustBinary(options = {}) {
|
|
|
344
344
|
|
|
345
345
|
//#endregion
|
|
346
346
|
export { findSpawnHiddenLauncher as a, getBinDir as c, getRustBinary as d, findRustBinary as i, getBinaryName as l, downloadBinary as n, findTrayLauncher as o, findAyrsBinary as r, gcOldBinaryDirs as s, devBuildInfo as t, getDownloadUrl as u };
|
|
347
|
-
//# sourceMappingURL=rustBinary-
|
|
347
|
+
//# sourceMappingURL=rustBinary-BDWTBHNk.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "./versionChecker-
|
|
2
|
-
import { a as findSpawnHiddenLauncher, c as getBinDir, d as getRustBinary, i as findRustBinary, l as getBinaryName, n as downloadBinary, o as findTrayLauncher, r as findAyrsBinary, s as gcOldBinaryDirs, t as devBuildInfo, u as getDownloadUrl } from "./rustBinary-
|
|
1
|
+
import "./versionChecker-DQtvrPml.js";
|
|
2
|
+
import { a as findSpawnHiddenLauncher, c as getBinDir, d as getRustBinary, i as findRustBinary, l as getBinaryName, n as downloadBinary, o as findTrayLauncher, r as findAyrsBinary, s as gcOldBinaryDirs, t as devBuildInfo, u as getDownloadUrl } from "./rustBinary-BDWTBHNk.js";
|
|
3
3
|
|
|
4
4
|
export { findAyrsBinary, gcOldBinaryDirs };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import "./logger-CDIsZ-Pp.js";
|
|
2
|
-
import "./versionChecker-
|
|
3
|
-
import "./ts-
|
|
2
|
+
import "./versionChecker-DQtvrPml.js";
|
|
3
|
+
import "./ts-D--BjWeq.js";
|
|
4
4
|
import "./todoAutomation-CbVVS4re.js";
|
|
5
5
|
import "./JsonlStore-BqF7AQ6E.js";
|
|
6
6
|
import "./globalPidIndex-CRH9L9tn.js";
|
|
7
7
|
import "./pidStore-DXWqzTSz.js";
|
|
8
8
|
import "./messageLog-Brx3w6zT.js";
|
|
9
9
|
import "./todoStore-DF6vxHgV.js";
|
|
10
|
-
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-
|
|
10
|
+
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CNaOWQr6.js";
|
|
11
11
|
import { f as resolveSpawnCwd } from "./workspaceConfig-DTvPtr5j.js";
|
|
12
12
|
import { n as liveEnv, t as ensureNodeRuntime } from "./nodeRuntime-CipjIwfO.js";
|
|
13
13
|
import { createHash } from "node:crypto";
|
|
@@ -154,4 +154,4 @@ async function cmdSchedule(rest) {
|
|
|
154
154
|
|
|
155
155
|
//#endregion
|
|
156
156
|
export { cmdSchedule };
|
|
157
|
-
//# sourceMappingURL=schedule-
|
|
157
|
+
//# sourceMappingURL=schedule-73un4lz8.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./logger-CDIsZ-Pp.js";
|
|
2
|
-
import { i as getInstalledPackage } from "./versionChecker-
|
|
3
|
-
import { a as findSpawnHiddenLauncher } from "./rustBinary-
|
|
4
|
-
import { c as permissionBadge, i as answerAsk, o as listAsks, u as CLAUDE_SESSION_PIN_ENV } from "./ts-
|
|
2
|
+
import { i as getInstalledPackage } from "./versionChecker-DQtvrPml.js";
|
|
3
|
+
import { a as findSpawnHiddenLauncher } from "./rustBinary-BDWTBHNk.js";
|
|
4
|
+
import { c as permissionBadge, i as answerAsk, o as listAsks, u as CLAUDE_SESSION_PIN_ENV } from "./ts-D--BjWeq.js";
|
|
5
5
|
import { t as agentYesHome$1 } from "./agentYesHome-BNtn19J4.js";
|
|
6
6
|
import { u as removeControlCharacters } from "./todoAutomation-CbVVS4re.js";
|
|
7
7
|
import "./JsonlStore-BqF7AQ6E.js";
|
|
@@ -12,19 +12,19 @@ import { t as pgidForWrapper } from "./reaper-UimuuTfO.js";
|
|
|
12
12
|
import "./todoStore-DF6vxHgV.js";
|
|
13
13
|
import "./e2e-z1xpwSAg.js";
|
|
14
14
|
import "./configShared-DKTgiz7K.js";
|
|
15
|
-
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-
|
|
16
|
-
import { B as readLogForRender, F as listRecords, G as renderLogTailLines, H as readPtysize, J as resolveOne, K as renderRawLog, M as isUserTyping, O as isSlashCommand, S as extractTaskCounts, U as recentMessageEdges, V as readNotes, W as recentReadEdges, ct as framePaste, et as snapshotStatus, g as deriveLiveStatus, lt as shouldFramePaste, ot as writeToIpc, p as controlCodeFromName, q as renderRawLogLines, st as withIpcLock, u as cliDefaults, ut as TYPING_BADGE, x as extractNeedsInput, y as extractBadges } from "./subcommands-
|
|
15
|
+
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CNaOWQr6.js";
|
|
16
|
+
import { B as readLogForRender, F as listRecords, G as renderLogTailLines, H as readPtysize, J as resolveOne, K as renderRawLog, M as isUserTyping, O as isSlashCommand, S as extractTaskCounts, U as recentMessageEdges, V as readNotes, W as recentReadEdges, ct as framePaste, et as snapshotStatus, g as deriveLiveStatus, lt as shouldFramePaste, ot as writeToIpc, p as controlCodeFromName, q as renderRawLogLines, st as withIpcLock, u as cliDefaults, ut as TYPING_BADGE, x as extractNeedsInput, y as extractBadges } from "./subcommands-CJaf5iJ8.js";
|
|
17
17
|
import { c as isTransientLockMkdirError } from "./notifyStore-2SWKGwZI.js";
|
|
18
18
|
import { i as toWebrtcUrl, n as isWebrtcSpec } from "./webrtcLink-CnQf9pmu.js";
|
|
19
19
|
import "./remotes-5P__pAXA.js";
|
|
20
20
|
import { i as frameVisitorMessage, s as verifyCapability, t as MAX_CALLBACK_MSG_BYTES } from "./callbackCore-Bl2gGcxg.js";
|
|
21
|
-
import { n as isCallbackRevoked, r as loadCallbackSecretReadOnly } from "./callback-
|
|
21
|
+
import { n as isCallbackRevoked, r as loadCallbackSecretReadOnly } from "./callback-D6FLQ5IG.js";
|
|
22
22
|
import { n as sampleTrees } from "./procStats-CyD8h5nx.js";
|
|
23
23
|
import { a as getProvisionRoot, d as isProvisionAllowed, f as resolveSpawnCwd, i as getProvisionHook, l as hasProvisionHook, o as getSpawnHook, t as allowsSkipPermissions, u as hasSpawnHook } from "./workspaceConfig-DTvPtr5j.js";
|
|
24
24
|
import { n as liveEnv, t as ensureNodeRuntime } from "./nodeRuntime-CipjIwfO.js";
|
|
25
|
-
import { i as importProvisionModule } from "./ws-
|
|
25
|
+
import { i as importProvisionModule } from "./ws-BOHUpXom.js";
|
|
26
26
|
import { r as spawnRejectionReason } from "./spawnGate-YpHopveO.js";
|
|
27
|
-
import { i as launchTray } from "./trayApp-
|
|
27
|
+
import { i as launchTray } from "./trayApp-ClgnrIyz.js";
|
|
28
28
|
import yargs from "yargs";
|
|
29
29
|
import { appendFile, mkdir, open, readFile, readdir, rename, rm, stat, unlink, writeFile } from "fs/promises";
|
|
30
30
|
import { arch, cpus, freemem, homedir, hostname, loadavg, platform, totalmem, uptime, userInfo } from "os";
|
|
@@ -1516,6 +1516,22 @@ async function cmdServeDaemon(sub, args) {
|
|
|
1516
1516
|
}).exited ?? 1;
|
|
1517
1517
|
return 1;
|
|
1518
1518
|
}
|
|
1519
|
+
/**
|
|
1520
|
+
* Content type for a `/vendor/<name>` console asset, or null when `name` is not
|
|
1521
|
+
* one we ship. The set is the exact list index.html loads (see lab/ui/vendor/
|
|
1522
|
+
* and #317): a request for anything else — a traversal attempt, a stray file
|
|
1523
|
+
* in the directory — is a 404, never a read.
|
|
1524
|
+
*/
|
|
1525
|
+
function vendorAssetType(name) {
|
|
1526
|
+
switch (name) {
|
|
1527
|
+
case "xterm.min.css": return "text/css; charset=utf-8";
|
|
1528
|
+
case "xterm.min.js":
|
|
1529
|
+
case "addon-fit.min.js":
|
|
1530
|
+
case "addon-web-links.min.js":
|
|
1531
|
+
case "addon-clipboard.min.js": return "text/javascript; charset=utf-8";
|
|
1532
|
+
default: return null;
|
|
1533
|
+
}
|
|
1534
|
+
}
|
|
1519
1535
|
function shareLinkStatus(shareLink, installed, webrtcish) {
|
|
1520
1536
|
if (!shareLink) return {
|
|
1521
1537
|
link: null,
|
|
@@ -1655,7 +1671,7 @@ Options:
|
|
|
1655
1671
|
const { planRustServe } = await import("./serveRust-DDQiZmMf.js");
|
|
1656
1672
|
const plan = planRustServe(rest);
|
|
1657
1673
|
if (plan.kind === "rust") {
|
|
1658
|
-
const { findAyrsBinary } = await import("./rustBinary-
|
|
1674
|
+
const { findAyrsBinary } = await import("./rustBinary-D9LImHwC.js");
|
|
1659
1675
|
const ayrs = findAyrsBinary();
|
|
1660
1676
|
if (ayrs) return runAyrsServe(ayrs, plan.argv);
|
|
1661
1677
|
process.stderr.write("ay serve: ayrs binary not found — running the TypeScript server (bun run build:rs, or reinstall, to get the Rust daemon)\n");
|
|
@@ -2630,7 +2646,7 @@ Options:
|
|
|
2630
2646
|
}
|
|
2631
2647
|
});
|
|
2632
2648
|
if (req.method === "GET" && p === "/api/ws") {
|
|
2633
|
-
const ws = await import("./ws-
|
|
2649
|
+
const ws = await import("./ws-iBBgfNlr.js");
|
|
2634
2650
|
try {
|
|
2635
2651
|
await ws.loadProvision();
|
|
2636
2652
|
} catch (e) {
|
|
@@ -2650,7 +2666,7 @@ Options:
|
|
|
2650
2666
|
if (req.method === "GET" && p === "/api/ws/status") {
|
|
2651
2667
|
const dirRaw = url.searchParams.get("path");
|
|
2652
2668
|
if (!dirRaw) return new Response("missing ?path=<workspace dir>", { status: 400 });
|
|
2653
|
-
const ws = await import("./ws-
|
|
2669
|
+
const ws = await import("./ws-iBBgfNlr.js");
|
|
2654
2670
|
let prov;
|
|
2655
2671
|
try {
|
|
2656
2672
|
prov = await ws.loadProvision();
|
|
@@ -2672,7 +2688,7 @@ Options:
|
|
|
2672
2688
|
}
|
|
2673
2689
|
}
|
|
2674
2690
|
if (req.method === "GET" && p === "/api/ws/repos") {
|
|
2675
|
-
const ws = await import("./ws-
|
|
2691
|
+
const ws = await import("./ws-iBBgfNlr.js");
|
|
2676
2692
|
try {
|
|
2677
2693
|
await ws.loadProvision();
|
|
2678
2694
|
} catch (e) {
|
|
@@ -2753,7 +2769,7 @@ Options:
|
|
|
2753
2769
|
const m = /^([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+)$/.exec(repoParam);
|
|
2754
2770
|
if (!m || m[1] === "." || m[1] === ".." || m[2] === "." || m[2] === "..") return new Response("missing/invalid ?repo=<owner>/<repo>", { status: 400 });
|
|
2755
2771
|
const [, owner, repo] = m;
|
|
2756
|
-
const ws = await import("./ws-
|
|
2772
|
+
const ws = await import("./ws-iBBgfNlr.js");
|
|
2757
2773
|
let prov;
|
|
2758
2774
|
try {
|
|
2759
2775
|
prov = await ws.loadProvision();
|
|
@@ -3671,7 +3687,7 @@ Options:
|
|
|
3671
3687
|
const perm = body.perm ?? "r";
|
|
3672
3688
|
if (perm !== "r" && perm !== "rw") return new Response(`invalid perm ${perm} (want r or rw)`, { status: 400 });
|
|
3673
3689
|
try {
|
|
3674
|
-
const { createScopedShare } = await import("./agentShare-
|
|
3690
|
+
const { createScopedShare } = await import("./agentShare-DpJrxWI4.js");
|
|
3675
3691
|
const share = await createScopedShare({
|
|
3676
3692
|
agent: body.agent,
|
|
3677
3693
|
perm,
|
|
@@ -3686,12 +3702,12 @@ Options:
|
|
|
3686
3702
|
}
|
|
3687
3703
|
}
|
|
3688
3704
|
if (req.method === "GET" && p === "/api/shares") {
|
|
3689
|
-
const { listShares } = await import("./agentShare-
|
|
3705
|
+
const { listShares } = await import("./agentShare-DpJrxWI4.js");
|
|
3690
3706
|
return Response.json(listShares());
|
|
3691
3707
|
}
|
|
3692
3708
|
const revokeM = /^\/api\/share\/([^/]+)$/.exec(p);
|
|
3693
3709
|
if (req.method === "DELETE" && revokeM) {
|
|
3694
|
-
const { revokeShare } = await import("./agentShare-
|
|
3710
|
+
const { revokeShare } = await import("./agentShare-DpJrxWI4.js");
|
|
3695
3711
|
const ok = revokeShare(decodeURIComponent(revokeM[1]));
|
|
3696
3712
|
return new Response(ok ? "revoked" : "no such share", { status: ok ? 200 : 404 });
|
|
3697
3713
|
}
|
|
@@ -3843,6 +3859,12 @@ Options:
|
|
|
3843
3859
|
if (req.method === "GET" && p === "/sw.js") return serveUiFile("sw.js", "text/javascript; charset=utf-8");
|
|
3844
3860
|
if (req.method === "GET" && p === "/manifest.webmanifest") return serveUiFile("manifest.webmanifest", "application/manifest+json");
|
|
3845
3861
|
if (req.method === "GET" && p === "/icon.svg") return serveUiFile("icon.svg", "image/svg+xml");
|
|
3862
|
+
if (req.method === "GET" && p.startsWith("/vendor/")) {
|
|
3863
|
+
const name = p.slice(8);
|
|
3864
|
+
const type = vendorAssetType(name);
|
|
3865
|
+
if (type) return serveUiFile(`vendor/${name}`, type);
|
|
3866
|
+
return new Response("not found", { status: 404 });
|
|
3867
|
+
}
|
|
3846
3868
|
if (req.method === "GET" && p === "/favicon.ico") return new Response(null, { status: 204 });
|
|
3847
3869
|
if (p.startsWith("/cb/")) return handleCallback(req, p);
|
|
3848
3870
|
return withTermCors(req, await apiFetch(req, srv));
|
|
@@ -3997,7 +4019,7 @@ Options:
|
|
|
3997
4019
|
const shutdown = (resolve) => {
|
|
3998
4020
|
if (heartbeat) clearInterval(heartbeat);
|
|
3999
4021
|
closeShare?.();
|
|
4000
|
-
import("./agentShare-
|
|
4022
|
+
import("./agentShare-DpJrxWI4.js").then((m) => m.revokeAllShares()).catch(() => {});
|
|
4001
4023
|
server?.stop();
|
|
4002
4024
|
Promise.resolve(releaseHostLock?.()).catch(() => {}).then(resolve);
|
|
4003
4025
|
};
|
|
@@ -4010,4 +4032,4 @@ Options:
|
|
|
4010
4032
|
|
|
4011
4033
|
//#endregion
|
|
4012
4034
|
export { cmdServe, loadTokenReadOnly, mintScopedTermToken, resolveDaemonHttpBase, resolveLocalServeUrl };
|
|
4013
|
-
//# sourceMappingURL=serve-
|
|
4035
|
+
//# sourceMappingURL=serve-HzPmrkoQ.js.map
|
|
@@ -97,7 +97,7 @@ async function cmdSetup(rest) {
|
|
|
97
97
|
} catch {}
|
|
98
98
|
if (noShare) return 0;
|
|
99
99
|
process.stdout.write(`\nsharing this machine to agent-yes.com…\n`);
|
|
100
|
-
const { cmdServe } = await import("./serve-
|
|
100
|
+
const { cmdServe } = await import("./serve-HzPmrkoQ.js");
|
|
101
101
|
return cmdServe([
|
|
102
102
|
"install",
|
|
103
103
|
"--share",
|
|
@@ -107,4 +107,4 @@ async function cmdSetup(rest) {
|
|
|
107
107
|
|
|
108
108
|
//#endregion
|
|
109
109
|
export { cmdSetup };
|
|
110
|
-
//# sourceMappingURL=setup-
|
|
110
|
+
//# sourceMappingURL=setup-D8HSFVS-.js.map
|
|
@@ -1546,7 +1546,7 @@ async function runSubcommand(argv) {
|
|
|
1546
1546
|
switch (sub) {
|
|
1547
1547
|
case "ls":
|
|
1548
1548
|
case "list": return await cmdLs(rest);
|
|
1549
|
-
case "ps": return await (await import("./cmdPs-
|
|
1549
|
+
case "ps": return await (await import("./cmdPs-CCb6aiqJ.js")).cmdPs(rest);
|
|
1550
1550
|
case "status": return await cmdStatus(rest);
|
|
1551
1551
|
case "whoami": return await cmdWhoami(rest);
|
|
1552
1552
|
case "result": return await cmdResult(rest);
|
|
@@ -1593,35 +1593,35 @@ async function runSubcommand(argv) {
|
|
|
1593
1593
|
return cmdCh(rest);
|
|
1594
1594
|
}
|
|
1595
1595
|
case "term": {
|
|
1596
|
-
const { cmdTerm } = await import("./terminal-
|
|
1596
|
+
const { cmdTerm } = await import("./terminal-CjP9waBm.js");
|
|
1597
1597
|
return cmdTerm(rest);
|
|
1598
1598
|
}
|
|
1599
1599
|
case "widget": {
|
|
1600
|
-
const { cmdWidget } = await import("./widget-
|
|
1600
|
+
const { cmdWidget } = await import("./widget-CAGGIsmN.js");
|
|
1601
1601
|
return cmdWidget(rest);
|
|
1602
1602
|
}
|
|
1603
1603
|
case "mint": {
|
|
1604
|
-
const { cmdMint } = await import("./widget-
|
|
1604
|
+
const { cmdMint } = await import("./widget-CAGGIsmN.js");
|
|
1605
1605
|
return cmdMint(rest);
|
|
1606
1606
|
}
|
|
1607
1607
|
case "serve": {
|
|
1608
|
-
const { cmdServe } = await import("./serve-
|
|
1608
|
+
const { cmdServe } = await import("./serve-HzPmrkoQ.js");
|
|
1609
1609
|
return cmdServe(rest);
|
|
1610
1610
|
}
|
|
1611
1611
|
case "tray": {
|
|
1612
|
-
const { cmdTray } = await import("./trayApp-
|
|
1612
|
+
const { cmdTray } = await import("./trayApp-D8mtC2nX.js");
|
|
1613
1613
|
return cmdTray(rest);
|
|
1614
1614
|
}
|
|
1615
1615
|
case "setup": {
|
|
1616
|
-
const { cmdSetup } = await import("./setup-
|
|
1616
|
+
const { cmdSetup } = await import("./setup-D8HSFVS-.js");
|
|
1617
1617
|
return cmdSetup(rest);
|
|
1618
1618
|
}
|
|
1619
1619
|
case "ws": {
|
|
1620
|
-
const { cmdWs } = await import("./ws-
|
|
1620
|
+
const { cmdWs } = await import("./ws-iBBgfNlr.js");
|
|
1621
1621
|
return cmdWs(rest);
|
|
1622
1622
|
}
|
|
1623
1623
|
case "schedule": {
|
|
1624
|
-
const { cmdSchedule } = await import("./schedule-
|
|
1624
|
+
const { cmdSchedule } = await import("./schedule-73un4lz8.js");
|
|
1625
1625
|
return cmdSchedule(rest);
|
|
1626
1626
|
}
|
|
1627
1627
|
case "remote": {
|
|
@@ -1633,7 +1633,7 @@ async function runSubcommand(argv) {
|
|
|
1633
1633
|
return cmdExpose(rest);
|
|
1634
1634
|
}
|
|
1635
1635
|
case "callback": {
|
|
1636
|
-
const { cmdCallback } = await import("./callback-
|
|
1636
|
+
const { cmdCallback } = await import("./callback-CnzT3sMS.js");
|
|
1637
1637
|
return cmdCallback(rest);
|
|
1638
1638
|
}
|
|
1639
1639
|
case "reap":
|
|
@@ -1644,7 +1644,7 @@ async function runSubcommand(argv) {
|
|
|
1644
1644
|
return await cmdDsh(rest);
|
|
1645
1645
|
}
|
|
1646
1646
|
case "gc": {
|
|
1647
|
-
const { gcOldBinaryDirs } = await import("./rustBinary-
|
|
1647
|
+
const { gcOldBinaryDirs } = await import("./rustBinary-D9LImHwC.js");
|
|
1648
1648
|
const { gcLogs } = await import("./globalPidIndex-DC93JhHQ.js");
|
|
1649
1649
|
const bins = gcOldBinaryDirs();
|
|
1650
1650
|
const logs = await gcLogs();
|
|
@@ -4351,7 +4351,7 @@ async function cmdAttach(rest) {
|
|
|
4351
4351
|
const winsizeDir = path.join(ayHome, "winsize");
|
|
4352
4352
|
await mkdir(winsizeDir, { recursive: true });
|
|
4353
4353
|
const winsizePath = path.join(winsizeDir, String(record.pid));
|
|
4354
|
-
const { resolveDaemonHttpBase, loadTokenReadOnly } = await import("./serve-
|
|
4354
|
+
const { resolveDaemonHttpBase, loadTokenReadOnly } = await import("./serve-HzPmrkoQ.js");
|
|
4355
4355
|
const daemonBase = await resolveDaemonHttpBase().catch(() => null);
|
|
4356
4356
|
const daemonToken = daemonBase ? await loadTokenReadOnly().catch(() => null) ?? "" : "";
|
|
4357
4357
|
const capViewer = `attach:${process.pid}`;
|
|
@@ -5078,7 +5078,7 @@ async function cmdNotify(rest) {
|
|
|
5078
5078
|
}
|
|
5079
5079
|
const ensure = async () => {
|
|
5080
5080
|
if (!argv["ensure-daemon"]) return;
|
|
5081
|
-
const { ensureDaemon } = await import("./notifyDaemon-
|
|
5081
|
+
const { ensureDaemon } = await import("./notifyDaemon-CudyV-xk.js");
|
|
5082
5082
|
await ensureDaemon().catch(() => null);
|
|
5083
5083
|
};
|
|
5084
5084
|
await heartbeatWatcher(parent, selfStartedAt);
|
|
@@ -5152,7 +5152,7 @@ async function cmdNotifyCursor(args) {
|
|
|
5152
5152
|
}
|
|
5153
5153
|
async function cmdNotifyd(rest) {
|
|
5154
5154
|
const sub = rest[0] ?? "status";
|
|
5155
|
-
const daemon = await import("./notifyDaemon-
|
|
5155
|
+
const daemon = await import("./notifyDaemon-CudyV-xk.js");
|
|
5156
5156
|
switch (sub) {
|
|
5157
5157
|
case "run": return daemon.runDaemon();
|
|
5158
5158
|
case "once": return daemon.runDaemon({ once: true });
|
|
@@ -5179,4 +5179,4 @@ async function cmdNotifyd(rest) {
|
|
|
5179
5179
|
|
|
5180
5180
|
//#endregion
|
|
5181
5181
|
export { sendPayloadCapError as $, isUnknownManagerToken as A, readLogForRender as B, finalizedLines as C, isPidAlive as D, isExitRequest as E, listRecords as F, renderLogTailLines as G, readPtysize as H, matchKeyword as I, resolveOne as J, renderRawLog as K, menuSelectKeys as L, isUserTyping as M, lastReadAt as N, isSlashCommand as O, lastStdinAt as P, runSubcommand as Q, probeStdinReachable as R, extractTaskCounts as S, isBareManagerInvocation as T, recentMessageEdges as U, readNotes as V, recentReadEdges as W, resolveResumeArgs as X, resolveReadWindow as Y, restartHintLines as Z, envelopeAttribution as _, SEND_BODY_MAX_CHARS as a, writeKeysPaced as at, extractMenu as b, backoffWhileTyping as c, framePaste as ct, cmdHelp as d, buildAgentForest as dt, snapshotStatus as et, confirmStdinUnreachable as f, flattenForest as ft, deriveLiveStatus as g, deriveLiveState as h, READ_WINDOW_MS as i, waitForLogQuiet as it, isUnreachableWriteErrno as j, isSubcommand as k, buildEnvelope as l, shouldFramePaste as lt, cursorAbs as m, MAX_RENDER_BYTES as n, stopTipForCli as nt, SEND_EXIT_UNREACHABLE as o, writeToIpc as ot, controlCodeFromName as p, renderRawLogLines as q, READ_PAGE_DEFAULT as r, submitAndConfirm as rt, TYPING_WINDOW_MS as s, withIpcLock as st, GRACEFUL_EXIT_COMMANDS as t, stdinActivityPath as tt, cliDefaults as u, TYPING_BADGE as ut, envelopeCostFor as v, isAgentStuck as w, extractNeedsInput as x, extractBadges as y, readAgentPtysize as z };
|
|
5182
|
-
//# sourceMappingURL=subcommands-
|
|
5182
|
+
//# sourceMappingURL=subcommands-CJaf5iJ8.js.map
|
|
@@ -5,7 +5,7 @@ import "./pidStore-DXWqzTSz.js";
|
|
|
5
5
|
import "./messageLog-Brx3w6zT.js";
|
|
6
6
|
import "./e2e-z1xpwSAg.js";
|
|
7
7
|
import "./configShared-DKTgiz7K.js";
|
|
8
|
-
import { $ as sendPayloadCapError, A as isUnknownManagerToken, B as readLogForRender, C as finalizedLines, D as isPidAlive, E as isExitRequest, F as listRecords, G as renderLogTailLines, H as readPtysize, I as matchKeyword, J as resolveOne, K as renderRawLog, L as menuSelectKeys, M as isUserTyping, N as lastReadAt, O as isSlashCommand, P as lastStdinAt, Q as runSubcommand, R as probeStdinReachable, S as extractTaskCounts, T as isBareManagerInvocation, U as recentMessageEdges, V as readNotes, W as recentReadEdges, X as resolveResumeArgs, Y as resolveReadWindow, Z as restartHintLines, _ as envelopeAttribution, a as SEND_BODY_MAX_CHARS, at as writeKeysPaced, b as extractMenu, c as backoffWhileTyping, d as cmdHelp, et as snapshotStatus, f as confirmStdinUnreachable, g as deriveLiveStatus, h as deriveLiveState, i as READ_WINDOW_MS, it as waitForLogQuiet, j as isUnreachableWriteErrno, k as isSubcommand, l as buildEnvelope, m as cursorAbs, n as MAX_RENDER_BYTES, nt as stopTipForCli, o as SEND_EXIT_UNREACHABLE, ot as writeToIpc, p as controlCodeFromName, q as renderRawLogLines, r as READ_PAGE_DEFAULT, rt as submitAndConfirm, s as TYPING_WINDOW_MS, t as GRACEFUL_EXIT_COMMANDS, tt as stdinActivityPath, u as cliDefaults, v as envelopeCostFor, w as isAgentStuck, x as extractNeedsInput, y as extractBadges, z as readAgentPtysize } from "./subcommands-
|
|
8
|
+
import { $ as sendPayloadCapError, A as isUnknownManagerToken, B as readLogForRender, C as finalizedLines, D as isPidAlive, E as isExitRequest, F as listRecords, G as renderLogTailLines, H as readPtysize, I as matchKeyword, J as resolveOne, K as renderRawLog, L as menuSelectKeys, M as isUserTyping, N as lastReadAt, O as isSlashCommand, P as lastStdinAt, Q as runSubcommand, R as probeStdinReachable, S as extractTaskCounts, T as isBareManagerInvocation, U as recentMessageEdges, V as readNotes, W as recentReadEdges, X as resolveResumeArgs, Y as resolveReadWindow, Z as restartHintLines, _ as envelopeAttribution, a as SEND_BODY_MAX_CHARS, at as writeKeysPaced, b as extractMenu, c as backoffWhileTyping, d as cmdHelp, et as snapshotStatus, f as confirmStdinUnreachable, g as deriveLiveStatus, h as deriveLiveState, i as READ_WINDOW_MS, it as waitForLogQuiet, j as isUnreachableWriteErrno, k as isSubcommand, l as buildEnvelope, m as cursorAbs, n as MAX_RENDER_BYTES, nt as stopTipForCli, o as SEND_EXIT_UNREACHABLE, ot as writeToIpc, p as controlCodeFromName, q as renderRawLogLines, r as READ_PAGE_DEFAULT, rt as submitAndConfirm, s as TYPING_WINDOW_MS, t as GRACEFUL_EXIT_COMMANDS, tt as stdinActivityPath, u as cliDefaults, v as envelopeCostFor, w as isAgentStuck, x as extractNeedsInput, y as extractBadges, z as readAgentPtysize } from "./subcommands-CJaf5iJ8.js";
|
|
9
9
|
import "./notifyStore-2SWKGwZI.js";
|
|
10
10
|
import "./webrtcLink-CnQf9pmu.js";
|
|
11
11
|
import "./remotes-5P__pAXA.js";
|
|
@@ -98,7 +98,7 @@ async function cmdTermMint(args) {
|
|
|
98
98
|
if (flags.ro && flags.interactive) throw new Error("--ro and --interactive are mutually exclusive");
|
|
99
99
|
const ttlSec = parseTtlSec(typeof flags.ttl === "string" ? flags.ttl : "15m");
|
|
100
100
|
const canSend = flags.interactive === true;
|
|
101
|
-
const { mintScopedTermToken } = await import("./serve-
|
|
101
|
+
const { mintScopedTermToken } = await import("./serve-HzPmrkoQ.js");
|
|
102
102
|
const r = await mintScopedTermToken(pid, {
|
|
103
103
|
ttlSec,
|
|
104
104
|
canSend
|
|
@@ -135,4 +135,4 @@ async function cmdTerm(args) {
|
|
|
135
135
|
|
|
136
136
|
//#endregion
|
|
137
137
|
export { cmdTerm };
|
|
138
|
-
//# sourceMappingURL=terminal-
|
|
138
|
+
//# sourceMappingURL=terminal-CjP9waBm.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { o as findTrayLauncher } from "./rustBinary-
|
|
1
|
+
import { o as findTrayLauncher } from "./rustBinary-BDWTBHNk.js";
|
|
2
2
|
import { t as agentYesHome } from "./agentYesHome-BNtn19J4.js";
|
|
3
3
|
import { existsSync } from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
@@ -97,4 +97,4 @@ async function cmdTray(args) {
|
|
|
97
97
|
|
|
98
98
|
//#endregion
|
|
99
99
|
export { trayHiddenMarker as a, launchTray as i, hasDesktop as n, isTrayHidden as r, cmdTray as t };
|
|
100
|
-
//# sourceMappingURL=trayApp-
|
|
100
|
+
//# sourceMappingURL=trayApp-ClgnrIyz.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as __esmMin, r as __exportAll } from "./chunk-cZBX9HZv.js";
|
|
2
2
|
import { n as logger, t as addTransport } from "./logger-CDIsZ-Pp.js";
|
|
3
|
-
import { i as getInstalledPackage } from "./versionChecker-
|
|
3
|
+
import { i as getInstalledPackage } from "./versionChecker-DQtvrPml.js";
|
|
4
4
|
import { t as agentYesHome } from "./agentYesHome-BNtn19J4.js";
|
|
5
5
|
import { u as removeControlCharacters } from "./todoAutomation-CbVVS4re.js";
|
|
6
6
|
import { i as shouldUseLock, r as releaseLock, t as acquireLock } from "./runningLock-BOIPD_Vs.js";
|
|
@@ -2086,7 +2086,7 @@ async function agentYes({ cli, cliArgs = [], skipPermissions = false, prompt, ro
|
|
|
2086
2086
|
}, 100);
|
|
2087
2087
|
const cleanupHeartbeat = () => clearInterval(heartbeatInterval);
|
|
2088
2088
|
shell.onExit(cleanupHeartbeat);
|
|
2089
|
-
const { startParentPingLoop } = await import("./parentPingLoop-
|
|
2089
|
+
const { startParentPingLoop } = await import("./parentPingLoop-DGmjbTGW.js");
|
|
2090
2090
|
const parentPingLoop = startParentPingLoop({
|
|
2091
2091
|
parentPid,
|
|
2092
2092
|
selfWrapperPid: process.pid,
|
|
@@ -2349,4 +2349,4 @@ function sleep(ms) {
|
|
|
2349
2349
|
|
|
2350
2350
|
//#endregion
|
|
2351
2351
|
export { hasTodoStore as a, permissionBadge as c, answerAsk as i, AgentContext as l, agentYes as n, listAsks as o, config as r, listAsksForProject as s, CLIS_CONFIG as t, CLAUDE_SESSION_PIN_ENV as u };
|
|
2352
|
-
//# sourceMappingURL=ts-
|
|
2352
|
+
//# sourceMappingURL=ts-D--BjWeq.js.map
|
|
@@ -7,7 +7,7 @@ import { fileURLToPath } from "url";
|
|
|
7
7
|
|
|
8
8
|
//#region package.json
|
|
9
9
|
var name = "agent-yes";
|
|
10
|
-
var version = "1.294.
|
|
10
|
+
var version = "1.294.1-beta.750.1";
|
|
11
11
|
|
|
12
12
|
//#endregion
|
|
13
13
|
//#region ts/versionChecker.ts
|
|
@@ -285,4 +285,4 @@ async function displayVersion() {
|
|
|
285
285
|
|
|
286
286
|
//#endregion
|
|
287
287
|
export { versionString as a, getInstalledPackage as i, compareVersions as n, displayVersion as r, checkAndAutoUpdate as t };
|
|
288
|
-
//# sourceMappingURL=versionChecker-
|
|
288
|
+
//# sourceMappingURL=versionChecker-DQtvrPml.js.map
|
|
@@ -28,7 +28,7 @@ function parseFlags(args, known) {
|
|
|
28
28
|
}
|
|
29
29
|
/** Resolve the local daemon base URL + token (flags override discovery). */
|
|
30
30
|
async function daemonTarget(flags) {
|
|
31
|
-
const { resolveDaemonHttpBase, loadTokenReadOnly } = await import("./serve-
|
|
31
|
+
const { resolveDaemonHttpBase, loadTokenReadOnly } = await import("./serve-HzPmrkoQ.js");
|
|
32
32
|
const base = typeof flags.base === "string" ? flags.base : await resolveDaemonHttpBase();
|
|
33
33
|
if (!base) throw new Error("no running ay serve daemon found — start `ay serve` or pass --base <url> (e.g. http://127.0.0.1:PORT)");
|
|
34
34
|
const token = typeof flags.token === "string" ? flags.token : await loadTokenReadOnly() ?? "";
|
|
@@ -186,7 +186,7 @@ async function cmdMint(args) {
|
|
|
186
186
|
const bad = caps.filter((c) => !KNOWN_CAPS.has(c));
|
|
187
187
|
if (bad.length) throw new Error(`unknown cap(s): ${bad.join(", ")} (valid: ${[...KNOWN_CAPS].join(", ")})`);
|
|
188
188
|
const ttlSec = parseTtlSec(typeof flags.ttl === "string" ? flags.ttl : "15m");
|
|
189
|
-
const { mintScopedTermToken } = await import("./serve-
|
|
189
|
+
const { mintScopedTermToken } = await import("./serve-HzPmrkoQ.js");
|
|
190
190
|
const r = await mintScopedTermToken(target, {
|
|
191
191
|
ttlSec,
|
|
192
192
|
caps
|
|
@@ -202,4 +202,4 @@ async function cmdMint(args) {
|
|
|
202
202
|
|
|
203
203
|
//#endregion
|
|
204
204
|
export { cmdMint, cmdWidget };
|
|
205
|
-
//# sourceMappingURL=widget-
|
|
205
|
+
//# sourceMappingURL=widget-CAGGIsmN.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as listRecords } from "./subcommands-
|
|
1
|
+
import { F as listRecords } from "./subcommands-CJaf5iJ8.js";
|
|
2
2
|
import { a as getProvisionRoot } from "./workspaceConfig-DTvPtr5j.js";
|
|
3
3
|
import { existsSync } from "fs";
|
|
4
4
|
import { lstat, opendir } from "fs/promises";
|
|
@@ -424,4 +424,4 @@ async function cmdWs(args) {
|
|
|
424
424
|
|
|
425
425
|
//#endregion
|
|
426
426
|
export { isPathInside as a, walkWorkspaces as c, importProvisionModule as i, workspaceStatus as l, cmdWs as n, loadProvision as o, collectWorkspaces as r, resolveOperand as s, WS_JSON_SCHEMA as t };
|
|
427
|
-
//# sourceMappingURL=ws-
|
|
427
|
+
//# sourceMappingURL=ws-BOHUpXom.js.map
|
|
@@ -5,10 +5,10 @@ import "./pidStore-DXWqzTSz.js";
|
|
|
5
5
|
import "./messageLog-Brx3w6zT.js";
|
|
6
6
|
import "./e2e-z1xpwSAg.js";
|
|
7
7
|
import "./configShared-DKTgiz7K.js";
|
|
8
|
-
import "./subcommands-
|
|
8
|
+
import "./subcommands-CJaf5iJ8.js";
|
|
9
9
|
import "./notifyStore-2SWKGwZI.js";
|
|
10
10
|
import "./webrtcLink-CnQf9pmu.js";
|
|
11
11
|
import "./remotes-5P__pAXA.js";
|
|
12
|
-
import { a as isPathInside, c as walkWorkspaces, i as importProvisionModule, l as workspaceStatus, n as cmdWs, o as loadProvision, r as collectWorkspaces, s as resolveOperand, t as WS_JSON_SCHEMA } from "./ws-
|
|
12
|
+
import { a as isPathInside, c as walkWorkspaces, i as importProvisionModule, l as workspaceStatus, n as cmdWs, o as loadProvision, r as collectWorkspaces, s as resolveOperand, t as WS_JSON_SCHEMA } from "./ws-BOHUpXom.js";
|
|
13
13
|
|
|
14
14
|
export { WS_JSON_SCHEMA, cmdWs, collectWorkspaces, isPathInside, loadProvision, walkWorkspaces, workspaceStatus };
|
package/lab/ui/console-logic.js
CHANGED
|
@@ -170,19 +170,27 @@ export function identContext(entries) {
|
|
|
170
170
|
return { uniform, anyDevice };
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
+
// Per-field clip for the compact identity. Was 3, which turned every row into
|
|
174
|
+
// an unreadable "sno/age/mai" — three-letter stubs distinguish nothing a human
|
|
175
|
+
// can name, and the field-blanking below already removes what is uniform, so
|
|
176
|
+
// what survives is exactly the part worth reading. 12 fits the common repo and
|
|
177
|
+
// branch names whole ("agent-yes", "CapsLockX", "main") and still bounds a
|
|
178
|
+
// long feature-branch name so the title column keeps its room.
|
|
179
|
+
export const IDENT_CAP = 12;
|
|
180
|
+
|
|
173
181
|
// Build an agent's compact identity against a precomputed identContext. Each
|
|
174
182
|
// field is clipped to `cap` chars (compact one-liner) and BLANKED when uniform
|
|
175
183
|
// across the list — but the separators (@ : / /) are kept so the string stays
|
|
176
|
-
// machine-parseable: e.g. all on one device → "@:
|
|
177
|
-
// "sno@
|
|
178
|
-
// legacy "
|
|
184
|
+
// machine-parseable: e.g. all on one device → "@:agent-yes/main", a mixed-device
|
|
185
|
+
// list → "sno@taka:agent-yes/main". A purely local list (no devices anywhere)
|
|
186
|
+
// falls back to the legacy "owner/repo/branch" with no device prefix.
|
|
179
187
|
//
|
|
180
188
|
// `parent` is this row's tree parent entry (a subagent's superagent), when it
|
|
181
189
|
// has one. A field that matches the parent's is ALSO blanked: the nesting
|
|
182
190
|
// already conveys it, so a subagent in the same worktree as its parent shows
|
|
183
191
|
// only what differs — often just the submodule leaf (e.g. "//→bot"), or nothing
|
|
184
192
|
// at all (hidden by hasIdent) when it's the very same checkout.
|
|
185
|
-
export function compactIdent(e, ctx, cap =
|
|
193
|
+
export function compactIdent(e, ctx, cap = IDENT_CAP, parent = null) {
|
|
186
194
|
const m = identFields(e);
|
|
187
195
|
const p = parent ? identFields(parent) : null;
|
|
188
196
|
const clip = (s) => (cap && s.length > cap ? s.slice(0, cap) : s);
|
|
@@ -375,7 +383,66 @@ export function age(e, now = Date.now()) {
|
|
|
375
383
|
const s = Math.max(0, (now - at) / 1000);
|
|
376
384
|
if (s < 60) return Math.floor(s) + "s";
|
|
377
385
|
if (s < 3600) return Math.floor(s / 60) + "m";
|
|
378
|
-
|
|
386
|
+
// Hours stop being a unit anyone converts in their head after a couple of
|
|
387
|
+
// days: "2196h" is a row that has been dead for three months, and the column
|
|
388
|
+
// exists so the eye can rank rows by recency. Days from 48h, weeks from 14d.
|
|
389
|
+
if (s < 48 * 3600) return Math.floor(s / 3600) + "h";
|
|
390
|
+
if (s < 14 * 86400) return Math.floor(s / 86400) + "d";
|
|
391
|
+
return Math.floor(s / (7 * 86400)) + "w";
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
// The gist of a spawn prompt for a one-line label: the `<ay-msg …>` provenance
|
|
395
|
+
// envelope (which a spawned agent's prompt carries, see rs/src/pid_store.rs
|
|
396
|
+
// wrap_spawn_prompt) is dropped so the header never becomes the title, then
|
|
397
|
+
// the first non-blank line, clipped.
|
|
398
|
+
export function promptGist(prompt, max = 120) {
|
|
399
|
+
let s = String(prompt || "").trim();
|
|
400
|
+
const m = /^<ay-msg [^\n]*>\n([\s\S]*?)\n<\/ay-msg [^\n]*>$/.exec(s);
|
|
401
|
+
if (m) s = m[1];
|
|
402
|
+
s = (s.split("\n").find((l) => l.trim()) || "").trim();
|
|
403
|
+
return s.length > max ? s.slice(0, max - 1) + "…" : s;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
// One-line label for a row: what the agent is ABOUT, not what its footer says
|
|
407
|
+
// this second. The CLI's own terminal title first (Claude Code sets it to the
|
|
408
|
+
// conversation topic); then the operator's `ay note`; then the spawn prompt's
|
|
409
|
+
// gist; and only then the transient status line. That last one used to be the
|
|
410
|
+
// SECOND choice, so every agent without a title was labelled by whatever its
|
|
411
|
+
// footer said when the list was drawn — "Cogitated for 1m 15s · done 9:15 PM",
|
|
412
|
+
// "Remote Control not started here · …" — which says nothing about the task and
|
|
413
|
+
// changes under the reader's eyes.
|
|
414
|
+
//
|
|
415
|
+
// `remembered` is the last non-transient title this page saw for the agent
|
|
416
|
+
// (Claude alternates topic ↔ status in the title, so the topic was on screen a
|
|
417
|
+
// moment ago); it outranks the prompt gist because it is the CLI's own, newer
|
|
418
|
+
// summary of the conversation, and a human-launched session has no prompt.
|
|
419
|
+
export function rowTitle(e, remembered = "") {
|
|
420
|
+
const title = (e.title || "").trim();
|
|
421
|
+
return (
|
|
422
|
+
(isTransientTitle(title) ? "" : title) ||
|
|
423
|
+
(e.note || "").trim() ||
|
|
424
|
+
String(remembered || "").trim() ||
|
|
425
|
+
promptGist(e.prompt) ||
|
|
426
|
+
title ||
|
|
427
|
+
(e.status_text || "").trim()
|
|
428
|
+
);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
// Claude Code writes its terminal title from two different things: the
|
|
432
|
+
// conversation topic ("✳ Agy install") and, while it works or right after, its
|
|
433
|
+
// own status line — a spinner with a timer ("✽ Fiddle-faddling… (6m 50s · ↓
|
|
434
|
+
// 11.8k token)"), a completion stamp ("✻ Cogitated for 1m 15s · done 9:15 PM"),
|
|
435
|
+
// or the last assistant message ("● Remote Control not started here · …").
|
|
436
|
+
// The latter say nothing about the task and change under the reader's eyes, so
|
|
437
|
+
// rowTitle only lets them win when nothing better exists. Recognised by shape,
|
|
438
|
+
// not by verb list — the verbs are random.
|
|
439
|
+
export function isTransientTitle(t) {
|
|
440
|
+
const s = String(t || "");
|
|
441
|
+
return (
|
|
442
|
+
/·\s*done\b/.test(s) || // "… for 1m 15s · done 9:15 PM"
|
|
443
|
+
/…\s*\(\d+[smh]/.test(s) || // "Verb… (6m 50s · …)"
|
|
444
|
+
/^[✳✻✽]?\s*●\s/.test(s) // "● <assistant message>"
|
|
445
|
+
);
|
|
379
446
|
}
|
|
380
447
|
|
|
381
448
|
// Filter predicate: every space-separated token must match. A `key:value` token
|
|
@@ -642,8 +709,7 @@ export function layeredRows(entries) {
|
|
|
642
709
|
for (const [src, pe] of peerGroups) {
|
|
643
710
|
const agentNodes = agentForestNodes(pe).map(toAgentNode);
|
|
644
711
|
const host = pe[0]?._host || "";
|
|
645
|
-
const label =
|
|
646
|
-
host && labelCounts.get(host) > 1 ? `${host} (${String(src).slice(-6)})` : host;
|
|
712
|
+
const label = host && labelCounts.get(host) > 1 ? `${host} (${String(src).slice(-6)})` : host;
|
|
647
713
|
if (multiPeer && label)
|
|
648
714
|
underRoom.push({ kind: "peer", label, room: rid, host, src, children: agentNodes });
|
|
649
715
|
else underRoom.push(...agentNodes); // single/unlabelled peer hidden
|
package/lab/ui/index.html
CHANGED
|
@@ -2205,13 +2205,13 @@
|
|
|
2205
2205
|
</div>
|
|
2206
2206
|
<div class="install" title="click to copy">
|
|
2207
2207
|
install:
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2208
|
+
<code class="copy" id="setup-sh">curl -fsSL https://agent-yes.com/setup.sh | sh</code>
|
|
2209
|
+
<span class="winhint"
|
|
2210
|
+
>· Windows:
|
|
2211
|
+
<code class="copy" id="setup-ps"
|
|
2212
|
+
>powershell -c "irm https://agent-yes.com/setup.ps1 | iex"</code
|
|
2213
|
+
></span
|
|
2214
|
+
>
|
|
2215
2215
|
</div>
|
|
2216
2216
|
</div>
|
|
2217
2217
|
<div class="ibox">
|
|
@@ -2579,6 +2579,9 @@
|
|
|
2579
2579
|
nextIndex,
|
|
2580
2580
|
identContext,
|
|
2581
2581
|
compactIdent,
|
|
2582
|
+
IDENT_CAP,
|
|
2583
|
+
rowTitle,
|
|
2584
|
+
isTransientTitle,
|
|
2582
2585
|
fullIdent,
|
|
2583
2586
|
hasIdent,
|
|
2584
2587
|
deviceCount,
|
|
@@ -6155,6 +6158,8 @@ my.translate = async (text, lang) => {
|
|
|
6155
6158
|
}
|
|
6156
6159
|
return `<div class="ioheat"><svg width="${w}" height="${h}" viewBox="0 0 ${w} ${h}" preserveAspectRatio="none" shape-rendering="crispEdges" style="position:absolute;inset:0;width:100%;height:100%">${cells.join("")}</svg></div>`;
|
|
6157
6160
|
}
|
|
6161
|
+
// Last non-transient (topic) title seen per agent key — see rowTitle.
|
|
6162
|
+
const topicTitles = new Map();
|
|
6158
6163
|
function renderList() {
|
|
6159
6164
|
// The graph view (/r/) only exists on the hosted origin — a local
|
|
6160
6165
|
// `ay serve --http` console (served at /) has no /r/ route, so the
|
|
@@ -6195,8 +6200,11 @@ my.translate = async (text, lang) => {
|
|
|
6195
6200
|
.map((r) => {
|
|
6196
6201
|
if (r.kind !== "agent") return headerHtml(r);
|
|
6197
6202
|
const e = r.entry;
|
|
6198
|
-
|
|
6199
|
-
|
|
6203
|
+
// Remember the agent's last topic title so a status-line title
|
|
6204
|
+
// (spinner / "· done" stamp) doesn't replace it on the next draw.
|
|
6205
|
+
if (e.title && !isTransientTitle(e.title)) topicTitles.set(e._key, e.title);
|
|
6206
|
+
const t = rowTitle(e, topicTitles.get(e._key));
|
|
6207
|
+
const id = compactIdent(e, ctx, IDENT_CAP, r.parentEntry);
|
|
6200
6208
|
const cli = cliLabel(e);
|
|
6201
6209
|
return `<div class="row crow ${e._key === sel ? "sel" : ""}${rowFlags(e)}" data-key="${esc(e._key)}">${rowIoHeat(e)}
|
|
6202
6210
|
${r.branch ? `<span class="tbranch">${esc(r.branch)}</span>` : ""}
|
package/package.json
CHANGED
package/ts/serve.spec.ts
CHANGED
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
parseGitUrl,
|
|
9
9
|
portlessConsoleUrl,
|
|
10
10
|
shareLinkStatus,
|
|
11
|
+
vendorAssetType,
|
|
11
12
|
} from "./serve.ts";
|
|
12
13
|
|
|
13
14
|
describe("portlessConsoleUrl", () => {
|
|
@@ -197,11 +198,33 @@ describe("oxmgrCmd", () => {
|
|
|
197
198
|
expect(oxmgrCmd([String.raw`C:\x\ay.exe`, "serve", "--share"])).toBe(
|
|
198
199
|
String.raw`"C:\x\ay.exe" serve --share`,
|
|
199
200
|
);
|
|
200
|
-
expect(oxmgrCmd(["/usr/bin/bun", "/x/a b/ay", "serve"])).toBe(
|
|
201
|
-
'/usr/bin/bun "/x/a b/ay" serve',
|
|
202
|
-
);
|
|
201
|
+
expect(oxmgrCmd(["/usr/bin/bun", "/x/a b/ay", "serve"])).toBe('/usr/bin/bun "/x/a b/ay" serve');
|
|
203
202
|
});
|
|
204
203
|
it("escapes an embedded double quote inside a quoted arg", () => {
|
|
205
204
|
expect(oxmgrCmd(['say "hi"'])).toBe(String.raw`"say \"hi\""`);
|
|
206
205
|
});
|
|
207
206
|
});
|
|
207
|
+
|
|
208
|
+
// The console self-hosts xterm from ./vendor/ (#317), but the TS daemon's
|
|
209
|
+
// static allowlist never routed /vendor/*, so those render-blocking scripts
|
|
210
|
+
// fell through to the token-gated API and came back 401 — the terminal pane
|
|
211
|
+
// sat on "connecting…" with `Terminal is not defined`. Exactly the shipped
|
|
212
|
+
// files are served; anything else (a traversal, a stray file) is a 404.
|
|
213
|
+
describe("vendorAssetType", () => {
|
|
214
|
+
it("types the pinned xterm builds the page loads", () => {
|
|
215
|
+
expect(vendorAssetType("xterm.min.css")).toBe("text/css; charset=utf-8");
|
|
216
|
+
for (const js of [
|
|
217
|
+
"xterm.min.js",
|
|
218
|
+
"addon-fit.min.js",
|
|
219
|
+
"addon-web-links.min.js",
|
|
220
|
+
"addon-clipboard.min.js",
|
|
221
|
+
]) {
|
|
222
|
+
expect(vendorAssetType(js)).toBe("text/javascript; charset=utf-8");
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
it("refuses anything that is not a shipped vendor asset", () => {
|
|
226
|
+
expect(vendorAssetType("../index.html")).toBeNull();
|
|
227
|
+
expect(vendorAssetType("xterm.min.js.map")).toBeNull();
|
|
228
|
+
expect(vendorAssetType("")).toBeNull();
|
|
229
|
+
});
|
|
230
|
+
});
|
package/ts/serve.ts
CHANGED
|
@@ -1534,6 +1534,26 @@ async function cmdServeDaemon(sub: string, args: string[]): Promise<number> {
|
|
|
1534
1534
|
return 1;
|
|
1535
1535
|
}
|
|
1536
1536
|
|
|
1537
|
+
/**
|
|
1538
|
+
* Content type for a `/vendor/<name>` console asset, or null when `name` is not
|
|
1539
|
+
* one we ship. The set is the exact list index.html loads (see lab/ui/vendor/
|
|
1540
|
+
* and #317): a request for anything else — a traversal attempt, a stray file
|
|
1541
|
+
* in the directory — is a 404, never a read.
|
|
1542
|
+
*/
|
|
1543
|
+
export function vendorAssetType(name: string): string | null {
|
|
1544
|
+
switch (name) {
|
|
1545
|
+
case "xterm.min.css":
|
|
1546
|
+
return "text/css; charset=utf-8";
|
|
1547
|
+
case "xterm.min.js":
|
|
1548
|
+
case "addon-fit.min.js":
|
|
1549
|
+
case "addon-web-links.min.js":
|
|
1550
|
+
case "addon-clipboard.min.js":
|
|
1551
|
+
return "text/javascript; charset=utf-8";
|
|
1552
|
+
default:
|
|
1553
|
+
return null;
|
|
1554
|
+
}
|
|
1555
|
+
}
|
|
1556
|
+
|
|
1537
1557
|
// How `ay serve status` should report the persisted share link. The link file
|
|
1538
1558
|
// outlives the daemon config that minted it: `ay serve install` (no --share)
|
|
1539
1559
|
// over an older --share install leaves ~/.agent-yes/.share-link in place while
|
|
@@ -5018,6 +5038,17 @@ export async function cmdServe(rest: string[]): Promise<number> {
|
|
|
5018
5038
|
if (req.method === "GET" && p === "/manifest.webmanifest")
|
|
5019
5039
|
return serveUiFile("manifest.webmanifest", "application/manifest+json");
|
|
5020
5040
|
if (req.method === "GET" && p === "/icon.svg") return serveUiFile("icon.svg", "image/svg+xml");
|
|
5041
|
+
// Self-hosted xterm (lab/ui/vendor/*, #317). The page loads these
|
|
5042
|
+
// same-origin and render-blocking, so a 401 here — which is what the
|
|
5043
|
+
// token-gated API fallthrough returned — leaves the terminal pane on
|
|
5044
|
+
// "connecting…" forever with `Terminal is not defined`. Allowlisted by
|
|
5045
|
+
// basename (no directory walk): the CSS and the pinned xterm builds only.
|
|
5046
|
+
if (req.method === "GET" && p.startsWith("/vendor/")) {
|
|
5047
|
+
const name = p.slice("/vendor/".length);
|
|
5048
|
+
const type = vendorAssetType(name);
|
|
5049
|
+
if (type) return serveUiFile(`vendor/${name}`, type);
|
|
5050
|
+
return new Response("not found", { status: 404 });
|
|
5051
|
+
}
|
|
5021
5052
|
if (req.method === "GET" && p === "/favicon.ico") return new Response(null, { status: 204 });
|
|
5022
5053
|
if (p.startsWith("/cb/")) return handleCallback(req, p);
|
|
5023
5054
|
// CORS-open the embeddable terminal routes (tail/size/send) so a cross-origin
|
package/dist/trayApp-i6201tMp.js
DELETED