agent-yes 1.244.2 → 1.244.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{SUPPORTED_CLIS-76JVIvo2.js → SUPPORTED_CLIS-CBvOkKWy.js} +2 -2
- package/dist/{SUPPORTED_CLIS-wtZAWIqV.js → SUPPORTED_CLIS-DOsOoWWj.js} +3 -3
- package/dist/{agentShare-BokFN5yh.js → agentShare-CZDGq255.js} +2 -2
- package/dist/{browser-CNdIibfn.js → browser-DV0CLEwt.js} +25 -4
- package/dist/{callback-CfpP3G3E.js → callback-mAJwjimd.js} +3 -3
- package/dist/{callback-CvbnQmfJ.js → callback-rdBfFIT7.js} +2 -2
- package/dist/cli.js +5 -5
- package/dist/index.js +2 -2
- package/dist/{notifyDaemon-2Wt04RUC.js → notifyDaemon-iWgP8qm8.js} +2 -2
- package/dist/{rustBinary-CK3EucYy.js → rustBinary-COxLjNGI.js} +2 -2
- package/dist/{schedule-D_gxvnkf.js → schedule-jAbfVPYP.js} +4 -4
- package/dist/{serve-CeFGSWkZ.js → serve-S0WQf_6L.js} +13 -13
- package/dist/{setup-BMZ5CUKG.js → setup-CDc6c39I.js} +2 -2
- package/dist/{subcommands-CPRjp_FY.js → subcommands-BFuXHk4W.js} +1 -1
- package/dist/{subcommands-DHzOWlWy.js → subcommands-CmUg-41z.js} +11 -11
- package/dist/{terminal-DmqEOsjR.js → terminal-fVjGs86e.js} +2 -2
- package/dist/terminal.js +1 -1
- package/dist/{ts-DE2iV6rV.js → ts-IchALxVm.js} +2 -2
- package/dist/{versionChecker-Ba8m9VTm.js → versionChecker-CICTsesA.js} +2 -2
- package/dist/{widget-CtAC5BHV.js → widget-BvqSNeiG.js} +3 -3
- package/dist/widgets.js +1 -1
- package/dist/{ws-CZEJdPBM.js → ws-BCs6g2iQ.js} +2 -2
- package/package.json +1 -1
- package/ts/terminal/browser.ts +39 -8
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as CLIS_CONFIG } from "./ts-
|
|
1
|
+
import { t as CLIS_CONFIG } from "./ts-IchALxVm.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-CBvOkKWy.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "./logger-CDIsZ-Pp.js";
|
|
2
|
-
import "./versionChecker-
|
|
3
|
-
import "./ts-
|
|
2
|
+
import "./versionChecker-CICTsesA.js";
|
|
3
|
+
import "./ts-IchALxVm.js";
|
|
4
4
|
import "./todoAutomation-Buo457VO.js";
|
|
5
5
|
import "./JsonlStore-CPGIR0Wy.js";
|
|
6
6
|
import "./globalPidIndex-D9DOSd-c.js";
|
|
7
7
|
import "./pidStore-6EZd5DUv.js";
|
|
8
8
|
import "./messageLog-C-YIzhRj.js";
|
|
9
|
-
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-
|
|
9
|
+
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CBvOkKWy.js";
|
|
10
10
|
|
|
11
11
|
export { SUPPORTED_CLIS };
|
|
@@ -3,7 +3,7 @@ import "./globalPidIndex-D9DOSd-c.js";
|
|
|
3
3
|
import "./messageLog-C-YIzhRj.js";
|
|
4
4
|
import "./e2e-CEIdJGZ7.js";
|
|
5
5
|
import "./configShared-9wVlbPyC.js";
|
|
6
|
-
import { P as resolveOne } from "./subcommands-
|
|
6
|
+
import { P as resolveOne } from "./subcommands-CmUg-41z.js";
|
|
7
7
|
import "./webrtcLink-BMYneHbu.js";
|
|
8
8
|
import "./remotes-BxQnNxQv.js";
|
|
9
9
|
import { a as startShare } from "./share-BGl3wutJ.js";
|
|
@@ -229,4 +229,4 @@ function transformEvent(rawEvent, agentId, forwarded) {
|
|
|
229
229
|
|
|
230
230
|
//#endregion
|
|
231
231
|
export { createScopedShare, listShares, revokeAllShares, revokeShare };
|
|
232
|
-
//# sourceMappingURL=agentShare-
|
|
232
|
+
//# sourceMappingURL=agentShare-CZDGq255.js.map
|
|
@@ -13013,6 +13013,7 @@ var AyTerminal = class {
|
|
|
13013
13013
|
capTimer = null;
|
|
13014
13014
|
capHeartbeat = null;
|
|
13015
13015
|
lastCap = null;
|
|
13016
|
+
panelEl;
|
|
13016
13017
|
constructor(info) {
|
|
13017
13018
|
const o = typeof info === "string" || typeof info === "number" ? { pid: info } : info;
|
|
13018
13019
|
if (o.pid === void 0 || o.pid === null || o.pid === "") throw new Error("AyTerminal: need a pid/keyword");
|
|
@@ -13076,10 +13077,22 @@ var AyTerminal = class {
|
|
|
13076
13077
|
this.sendCap(this.lastCap.cols, this.lastCap.rows);
|
|
13077
13078
|
}, 5e3);
|
|
13078
13079
|
}
|
|
13079
|
-
/**
|
|
13080
|
+
/**
|
|
13081
|
+
* True while this widget's panel is actually on-screen. Checks the PANEL element
|
|
13082
|
+
* itself — its computed `display` and bounding rect — NOT the xterm grid: xterm
|
|
13083
|
+
* keeps a non-zero `cols/rows` (and its `.xterm` node a cached box) even when an
|
|
13084
|
+
* ancestor is `display:none`, so measuring the grid falsely reads "visible" while
|
|
13085
|
+
* collapsed (grocy's ③). The panel's own `display:none`/0×0 rect is unambiguous.
|
|
13086
|
+
*/
|
|
13080
13087
|
isPanelVisible() {
|
|
13081
|
-
const
|
|
13082
|
-
|
|
13088
|
+
const p = this.panelEl;
|
|
13089
|
+
if (!p) return false;
|
|
13090
|
+
const g = globalThis;
|
|
13091
|
+
try {
|
|
13092
|
+
if (g.getComputedStyle?.(p)?.display === "none") return false;
|
|
13093
|
+
} catch {}
|
|
13094
|
+
const r = p.getBoundingClientRect?.();
|
|
13095
|
+
return !!(r && r.width > 0 && r.height > 0);
|
|
13083
13096
|
}
|
|
13084
13097
|
/** Withdraw this widget's size cap (closed/minimized) → the daemon re-negotiates without it. */
|
|
13085
13098
|
withdrawCap() {
|
|
@@ -13215,8 +13228,13 @@ var AyTerminal = class {
|
|
|
13215
13228
|
const wrap = root.getElementById("wrap");
|
|
13216
13229
|
const titleEl = root.getElementById("title");
|
|
13217
13230
|
this.badgeEl = root.getElementById("badge");
|
|
13231
|
+
this.panelEl = panel;
|
|
13218
13232
|
if (this.transparent) panel.classList.add("transparent");
|
|
13219
13233
|
const reflow = () => {
|
|
13234
|
+
if (!this.readOnly && !this.isPanelVisible()) {
|
|
13235
|
+
if (this.capHeartbeat || this.lastCap) this.withdrawCap();
|
|
13236
|
+
return;
|
|
13237
|
+
}
|
|
13220
13238
|
const xt = inner.querySelector(".xterm");
|
|
13221
13239
|
if (!xt || !xt.offsetWidth || !xt.offsetHeight) {
|
|
13222
13240
|
if (!this.readOnly && (this.capHeartbeat || this.lastCap)) this.withdrawCap();
|
|
@@ -13238,6 +13256,9 @@ var AyTerminal = class {
|
|
|
13238
13256
|
try {
|
|
13239
13257
|
new g.ResizeObserver(() => reflow()).observe(wrap);
|
|
13240
13258
|
} catch {}
|
|
13259
|
+
try {
|
|
13260
|
+
new g.IntersectionObserver(() => reflow()).observe(panel);
|
|
13261
|
+
} catch {}
|
|
13241
13262
|
g.addEventListener?.("resize", reflow);
|
|
13242
13263
|
(async () => {
|
|
13243
13264
|
await this.start(inner);
|
|
@@ -13524,4 +13545,4 @@ const XTERM_CSS = `
|
|
|
13524
13545
|
|
|
13525
13546
|
//#endregion
|
|
13526
13547
|
export { AyTerminal as t };
|
|
13527
|
-
//# sourceMappingURL=browser-
|
|
13548
|
+
//# sourceMappingURL=browser-DV0CLEwt.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as agentYesHome } from "./agentYesHome-CtmsY6I-.js";
|
|
2
|
-
import { P as resolveOne } from "./subcommands-
|
|
2
|
+
import { P as resolveOne } from "./subcommands-CmUg-41z.js";
|
|
3
3
|
import { a as mintCapability, o as parseExpires } from "./callbackCore-Dd28_cBM.js";
|
|
4
4
|
import { randomBytes } from "node:crypto";
|
|
5
5
|
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
@@ -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-S0WQf_6L.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-mAJwjimd.js.map
|
|
@@ -3,10 +3,10 @@ import "./globalPidIndex-D9DOSd-c.js";
|
|
|
3
3
|
import "./messageLog-C-YIzhRj.js";
|
|
4
4
|
import "./e2e-CEIdJGZ7.js";
|
|
5
5
|
import "./configShared-9wVlbPyC.js";
|
|
6
|
-
import "./subcommands-
|
|
6
|
+
import "./subcommands-CmUg-41z.js";
|
|
7
7
|
import "./webrtcLink-BMYneHbu.js";
|
|
8
8
|
import "./remotes-BxQnNxQv.js";
|
|
9
9
|
import "./callbackCore-Dd28_cBM.js";
|
|
10
|
-
import { i as loadOrCreateCallbackSecret, n as isCallbackRevoked, r as loadCallbackSecretReadOnly, t as cmdCallback } from "./callback-
|
|
10
|
+
import { i as loadOrCreateCallbackSecret, n as isCallbackRevoked, r as loadCallbackSecretReadOnly, t as cmdCallback } from "./callback-mAJwjimd.js";
|
|
11
11
|
|
|
12
12
|
export { cmdCallback };
|
package/dist/cli.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
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, t as checkAndAutoUpdate } from "./versionChecker-
|
|
5
|
-
import { n as getRustBinary } from "./rustBinary-
|
|
4
|
+
import { i as versionString, n as displayVersion, t as checkAndAutoUpdate } from "./versionChecker-CICTsesA.js";
|
|
5
|
+
import { n as getRustBinary } from "./rustBinary-COxLjNGI.js";
|
|
6
6
|
import { argv } from "process";
|
|
7
7
|
import { spawn } from "child_process";
|
|
8
8
|
import ms from "ms";
|
|
@@ -285,7 +285,7 @@ function buildRustArgs(argv, cliFromScript, supportedClis) {
|
|
|
285
285
|
const rawArg = process.argv[2];
|
|
286
286
|
const managerCommands = !invokedCliName(process.argv);
|
|
287
287
|
const isHelpFlag = rawArg === "-h" || rawArg === "--help";
|
|
288
|
-
const { isSubcommand, runSubcommand, cmdHelp, isUnknownManagerToken } = await import("./subcommands-
|
|
288
|
+
const { isSubcommand, runSubcommand, cmdHelp, isUnknownManagerToken } = await import("./subcommands-BFuXHk4W.js");
|
|
289
289
|
if (isHelpFlag && process.argv.length === 3) {
|
|
290
290
|
await cmdHelp(managerCommands);
|
|
291
291
|
process.exit(0);
|
|
@@ -295,7 +295,7 @@ function buildRustArgs(argv, cliFromScript, supportedClis) {
|
|
|
295
295
|
process.exit(code ?? 0);
|
|
296
296
|
}
|
|
297
297
|
{
|
|
298
|
-
const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-
|
|
298
|
+
const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-DOsOoWWj.js");
|
|
299
299
|
if (isUnknownManagerToken(rawArg, managerCommands, SUPPORTED_CLIS)) {
|
|
300
300
|
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`);
|
|
301
301
|
process.exit(1);
|
|
@@ -346,7 +346,7 @@ if (config.useRust) {
|
|
|
346
346
|
}
|
|
347
347
|
}
|
|
348
348
|
if (rustBinary) {
|
|
349
|
-
const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-
|
|
349
|
+
const { SUPPORTED_CLIS } = await import("./SUPPORTED_CLIS-DOsOoWWj.js");
|
|
350
350
|
const rustArgs = buildRustArgs(process.argv, config.cli, SUPPORTED_CLIS);
|
|
351
351
|
if (config.verbose) {
|
|
352
352
|
console.log(`[rust] Using binary: ${rustBinary}`);
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./logger-CDIsZ-Pp.js";
|
|
2
|
-
import "./versionChecker-
|
|
3
|
-
import { a as hasTodoStore, c as AgentContext, i as answerAsk, n as agentYes, o as listAsks, r as config, s as listAsksForProject, t as CLIS_CONFIG } from "./ts-
|
|
2
|
+
import "./versionChecker-CICTsesA.js";
|
|
3
|
+
import { a as hasTodoStore, c as AgentContext, i as answerAsk, n as agentYes, o as listAsks, r as config, s as listAsksForProject, t as CLIS_CONFIG } from "./ts-IchALxVm.js";
|
|
4
4
|
import { _ as isKnownKind, a as renderTree, b as statesOf, c as monitorHint, d as openStore, f as DONE_STATE, g as initialState, h as canTransition, i as renderDigest, l as CycleError, m as ORPHANED_STATE, o as unblockedTasks, p as LIFECYCLES, r as openBlockers, s as describeBlock, t as reconcileTodos, u as TodoStore, v as nextStates, x as removeControlCharacters, y as requiredGate } from "./todoAutomation-Buo457VO.js";
|
|
5
5
|
import "./JsonlStore-CPGIR0Wy.js";
|
|
6
6
|
import "./globalPidIndex-D9DOSd-c.js";
|
|
@@ -3,7 +3,7 @@ import "./globalPidIndex-D9DOSd-c.js";
|
|
|
3
3
|
import "./messageLog-C-YIzhRj.js";
|
|
4
4
|
import "./e2e-CEIdJGZ7.js";
|
|
5
5
|
import "./configShared-9wVlbPyC.js";
|
|
6
|
-
import { $ as shouldStealLock, C as listRecords, J as hostId, K as appendEvent, Q as readInbox, X as listInboxParents, Z as liveWatchers, _ as isPidAlive, c as deriveLiveState, et as daemonLockDir, j as renderLogTailLines, nt as notifyDir, q as gcInboxes, tt as daemonLockOwnerPath } from "./subcommands-
|
|
6
|
+
import { $ as shouldStealLock, C as listRecords, J as hostId, K as appendEvent, Q as readInbox, X as listInboxParents, Z as liveWatchers, _ as isPidAlive, c as deriveLiveState, et as daemonLockDir, j as renderLogTailLines, nt as notifyDir, q as gcInboxes, tt as daemonLockOwnerPath } from "./subcommands-CmUg-41z.js";
|
|
7
7
|
import "./webrtcLink-BMYneHbu.js";
|
|
8
8
|
import "./remotes-BxQnNxQv.js";
|
|
9
9
|
import { mkdir, readFile, rename, rm, stat, writeFile } from "fs/promises";
|
|
@@ -589,4 +589,4 @@ async function ensureDaemon() {
|
|
|
589
589
|
|
|
590
590
|
//#endregion
|
|
591
591
|
export { daemonStatus, ensureDaemon, requestDaemonStop, runDaemon };
|
|
592
|
-
//# sourceMappingURL=notifyDaemon-
|
|
592
|
+
//# sourceMappingURL=notifyDaemon-iWgP8qm8.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as getInstalledPackage } from "./versionChecker-
|
|
1
|
+
import { r as getInstalledPackage } from "./versionChecker-CICTsesA.js";
|
|
2
2
|
import { execFileSync } from "child_process";
|
|
3
3
|
import { existsSync, mkdirSync, unlinkSync } from "fs";
|
|
4
4
|
import { chmod, copyFile } from "fs/promises";
|
|
@@ -225,4 +225,4 @@ async function getRustBinary(options = {}) {
|
|
|
225
225
|
|
|
226
226
|
//#endregion
|
|
227
227
|
export { getRustBinary as n, findSpawnHiddenLauncher as t };
|
|
228
|
-
//# sourceMappingURL=rustBinary-
|
|
228
|
+
//# sourceMappingURL=rustBinary-COxLjNGI.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import "./logger-CDIsZ-Pp.js";
|
|
2
|
-
import "./versionChecker-
|
|
3
|
-
import "./ts-
|
|
2
|
+
import "./versionChecker-CICTsesA.js";
|
|
3
|
+
import "./ts-IchALxVm.js";
|
|
4
4
|
import "./todoAutomation-Buo457VO.js";
|
|
5
5
|
import "./JsonlStore-CPGIR0Wy.js";
|
|
6
6
|
import "./globalPidIndex-D9DOSd-c.js";
|
|
7
7
|
import "./pidStore-6EZd5DUv.js";
|
|
8
8
|
import "./messageLog-C-YIzhRj.js";
|
|
9
|
-
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-
|
|
9
|
+
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CBvOkKWy.js";
|
|
10
10
|
import { d as resolveSpawnCwd } from "./workspaceConfig-DOHygA2x.js";
|
|
11
11
|
import { n as liveEnv, t as ensureNodeRuntime } from "./nodeRuntime-BtL6Oo1o.js";
|
|
12
12
|
import { createHash } from "node:crypto";
|
|
@@ -153,4 +153,4 @@ async function cmdSchedule(rest) {
|
|
|
153
153
|
|
|
154
154
|
//#endregion
|
|
155
155
|
export { cmdSchedule };
|
|
156
|
-
//# sourceMappingURL=schedule-
|
|
156
|
+
//# sourceMappingURL=schedule-jAbfVPYP.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "./logger-CDIsZ-Pp.js";
|
|
2
|
-
import { r as getInstalledPackage } from "./versionChecker-
|
|
3
|
-
import { t as findSpawnHiddenLauncher } from "./rustBinary-
|
|
4
|
-
import { i as answerAsk, l as CLAUDE_SESSION_PIN_ENV, o as listAsks } from "./ts-
|
|
2
|
+
import { r as getInstalledPackage } from "./versionChecker-CICTsesA.js";
|
|
3
|
+
import { t as findSpawnHiddenLauncher } from "./rustBinary-COxLjNGI.js";
|
|
4
|
+
import { i as answerAsk, l as CLAUDE_SESSION_PIN_ENV, o as listAsks } from "./ts-IchALxVm.js";
|
|
5
5
|
import { t as agentYesHome$1 } from "./agentYesHome-CtmsY6I-.js";
|
|
6
6
|
import { x as removeControlCharacters } from "./todoAutomation-Buo457VO.js";
|
|
7
7
|
import "./JsonlStore-CPGIR0Wy.js";
|
|
@@ -11,12 +11,12 @@ import { r as recordInbox } from "./messageLog-C-YIzhRj.js";
|
|
|
11
11
|
import { t as pgidForWrapper } from "./reaper-DP49VCKx.js";
|
|
12
12
|
import "./e2e-CEIdJGZ7.js";
|
|
13
13
|
import "./configShared-9wVlbPyC.js";
|
|
14
|
-
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-
|
|
15
|
-
import { A as recentReadEdges, C as listRecords, D as readNotes, G as writeToIpc, M as renderRawLog, N as renderRawLogLines, O as readPtysize, P as resolveOne, Y as isTransientLockMkdirError, f as extractNeedsInput, j as renderLogTailLines, k as recentMessageEdges, l as deriveLiveStatus, o as controlCodeFromName, p as extractTaskCounts, rt as TYPING_BADGE, u as extractBadges, x as isUserTyping, z as snapshotStatus } from "./subcommands-
|
|
14
|
+
import { t as SUPPORTED_CLIS } from "./SUPPORTED_CLIS-CBvOkKWy.js";
|
|
15
|
+
import { A as recentReadEdges, C as listRecords, D as readNotes, G as writeToIpc, M as renderRawLog, N as renderRawLogLines, O as readPtysize, P as resolveOne, Y as isTransientLockMkdirError, f as extractNeedsInput, j as renderLogTailLines, k as recentMessageEdges, l as deriveLiveStatus, o as controlCodeFromName, p as extractTaskCounts, rt as TYPING_BADGE, u as extractBadges, x as isUserTyping, z as snapshotStatus } from "./subcommands-CmUg-41z.js";
|
|
16
16
|
import "./webrtcLink-BMYneHbu.js";
|
|
17
17
|
import "./remotes-BxQnNxQv.js";
|
|
18
18
|
import { i as frameVisitorMessage, s as verifyCapability, t as MAX_CALLBACK_MSG_BYTES } from "./callbackCore-Dd28_cBM.js";
|
|
19
|
-
import { n as isCallbackRevoked, r as loadCallbackSecretReadOnly } from "./callback-
|
|
19
|
+
import { n as isCallbackRevoked, r as loadCallbackSecretReadOnly } from "./callback-mAJwjimd.js";
|
|
20
20
|
import { a as getSpawnHook, c as hasProvisionHook, d as resolveSpawnCwd, i as getProvisionRoot, l as hasSpawnHook, r as getProvisionHook, u as isProvisionAllowed } from "./workspaceConfig-DOHygA2x.js";
|
|
21
21
|
import { n as liveEnv, t as ensureNodeRuntime } from "./nodeRuntime-BtL6Oo1o.js";
|
|
22
22
|
import { r as spawnRejectionReason } from "./spawnGate-BxgS_GlF.js";
|
|
@@ -2294,7 +2294,7 @@ Options:
|
|
|
2294
2294
|
}
|
|
2295
2295
|
});
|
|
2296
2296
|
if (req.method === "GET" && p === "/api/ws") {
|
|
2297
|
-
const ws = await import("./ws-
|
|
2297
|
+
const ws = await import("./ws-BCs6g2iQ.js");
|
|
2298
2298
|
try {
|
|
2299
2299
|
await ws.loadProvision();
|
|
2300
2300
|
} catch (e) {
|
|
@@ -2314,7 +2314,7 @@ Options:
|
|
|
2314
2314
|
if (req.method === "GET" && p === "/api/ws/status") {
|
|
2315
2315
|
const dirRaw = url.searchParams.get("path");
|
|
2316
2316
|
if (!dirRaw) return new Response("missing ?path=<workspace dir>", { status: 400 });
|
|
2317
|
-
const ws = await import("./ws-
|
|
2317
|
+
const ws = await import("./ws-BCs6g2iQ.js");
|
|
2318
2318
|
let prov;
|
|
2319
2319
|
try {
|
|
2320
2320
|
prov = await ws.loadProvision();
|
|
@@ -3045,7 +3045,7 @@ Options:
|
|
|
3045
3045
|
const perm = body.perm ?? "r";
|
|
3046
3046
|
if (perm !== "r" && perm !== "rw") return new Response(`invalid perm ${perm} (want r or rw)`, { status: 400 });
|
|
3047
3047
|
try {
|
|
3048
|
-
const { createScopedShare } = await import("./agentShare-
|
|
3048
|
+
const { createScopedShare } = await import("./agentShare-CZDGq255.js");
|
|
3049
3049
|
const share = await createScopedShare({
|
|
3050
3050
|
agent: body.agent,
|
|
3051
3051
|
perm,
|
|
@@ -3060,12 +3060,12 @@ Options:
|
|
|
3060
3060
|
}
|
|
3061
3061
|
}
|
|
3062
3062
|
if (req.method === "GET" && p === "/api/shares") {
|
|
3063
|
-
const { listShares } = await import("./agentShare-
|
|
3063
|
+
const { listShares } = await import("./agentShare-CZDGq255.js");
|
|
3064
3064
|
return Response.json(listShares());
|
|
3065
3065
|
}
|
|
3066
3066
|
const revokeM = /^\/api\/share\/([^/]+)$/.exec(p);
|
|
3067
3067
|
if (req.method === "DELETE" && revokeM) {
|
|
3068
|
-
const { revokeShare } = await import("./agentShare-
|
|
3068
|
+
const { revokeShare } = await import("./agentShare-CZDGq255.js");
|
|
3069
3069
|
const ok = revokeShare(decodeURIComponent(revokeM[1]));
|
|
3070
3070
|
return new Response(ok ? "revoked" : "no such share", { status: ok ? 200 : 404 });
|
|
3071
3071
|
}
|
|
@@ -3367,7 +3367,7 @@ Options:
|
|
|
3367
3367
|
const shutdown = (resolve) => {
|
|
3368
3368
|
if (heartbeat) clearInterval(heartbeat);
|
|
3369
3369
|
closeShare?.();
|
|
3370
|
-
import("./agentShare-
|
|
3370
|
+
import("./agentShare-CZDGq255.js").then((m) => m.revokeAllShares()).catch(() => {});
|
|
3371
3371
|
server?.stop();
|
|
3372
3372
|
Promise.resolve(releaseHostLock?.()).catch(() => {}).then(resolve);
|
|
3373
3373
|
};
|
|
@@ -3380,4 +3380,4 @@ Options:
|
|
|
3380
3380
|
|
|
3381
3381
|
//#endregion
|
|
3382
3382
|
export { cmdServe, loadTokenReadOnly, mintScopedTermToken, resolveDaemonHttpBase, resolveLocalServeUrl };
|
|
3383
|
-
//# sourceMappingURL=serve-
|
|
3383
|
+
//# sourceMappingURL=serve-S0WQf_6L.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-S0WQf_6L.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-CDc6c39I.js.map
|
|
@@ -3,7 +3,7 @@ import "./globalPidIndex-D9DOSd-c.js";
|
|
|
3
3
|
import "./messageLog-C-YIzhRj.js";
|
|
4
4
|
import "./e2e-CEIdJGZ7.js";
|
|
5
5
|
import "./configShared-9wVlbPyC.js";
|
|
6
|
-
import { A as recentReadEdges, B as stdinActivityPath, C as listRecords, D as readNotes, E as readAgentPtysize, F as resolveReadWindow, G as writeToIpc, H as submitAndConfirm, I as resolveResumeArgs, L as restartHintLines, M as renderRawLog, N as renderRawLogLines, O as readPtysize, P as resolveOne, R as runSubcommand, S as lastStdinAt, T as menuSelectKeys, U as waitForLogQuiet, V as stopTipForCli, W as writeKeysPaced, _ as isPidAlive, a as cmdHelp, b as isUnknownManagerToken, c as deriveLiveState, d as extractMenu, f as extractNeedsInput, g as isExitRequest, h as isAgentStuck, i as backoffWhileTyping, j as renderLogTailLines, k as recentMessageEdges, l as deriveLiveStatus, m as finalizedLines, n as READ_PAGE_DEFAULT, o as controlCodeFromName, p as extractTaskCounts, r as TYPING_WINDOW_MS, s as cursorAbs, t as GRACEFUL_EXIT_COMMANDS, u as extractBadges, v as isSlashCommand, w as matchKeyword, x as isUserTyping, y as isSubcommand, z as snapshotStatus } from "./subcommands-
|
|
6
|
+
import { A as recentReadEdges, B as stdinActivityPath, C as listRecords, D as readNotes, E as readAgentPtysize, F as resolveReadWindow, G as writeToIpc, H as submitAndConfirm, I as resolveResumeArgs, L as restartHintLines, M as renderRawLog, N as renderRawLogLines, O as readPtysize, P as resolveOne, R as runSubcommand, S as lastStdinAt, T as menuSelectKeys, U as waitForLogQuiet, V as stopTipForCli, W as writeKeysPaced, _ as isPidAlive, a as cmdHelp, b as isUnknownManagerToken, c as deriveLiveState, d as extractMenu, f as extractNeedsInput, g as isExitRequest, h as isAgentStuck, i as backoffWhileTyping, j as renderLogTailLines, k as recentMessageEdges, l as deriveLiveStatus, m as finalizedLines, n as READ_PAGE_DEFAULT, o as controlCodeFromName, p as extractTaskCounts, r as TYPING_WINDOW_MS, s as cursorAbs, t as GRACEFUL_EXIT_COMMANDS, u as extractBadges, v as isSlashCommand, w as matchKeyword, x as isUserTyping, y as isSubcommand, z as snapshotStatus } from "./subcommands-CmUg-41z.js";
|
|
7
7
|
import "./webrtcLink-BMYneHbu.js";
|
|
8
8
|
import "./remotes-BxQnNxQv.js";
|
|
9
9
|
|
|
@@ -1267,31 +1267,31 @@ async function runSubcommand(argv) {
|
|
|
1267
1267
|
return cmdCh(rest);
|
|
1268
1268
|
}
|
|
1269
1269
|
case "term": {
|
|
1270
|
-
const { cmdTerm } = await import("./terminal-
|
|
1270
|
+
const { cmdTerm } = await import("./terminal-fVjGs86e.js");
|
|
1271
1271
|
return cmdTerm(rest);
|
|
1272
1272
|
}
|
|
1273
1273
|
case "widget": {
|
|
1274
|
-
const { cmdWidget } = await import("./widget-
|
|
1274
|
+
const { cmdWidget } = await import("./widget-BvqSNeiG.js");
|
|
1275
1275
|
return cmdWidget(rest);
|
|
1276
1276
|
}
|
|
1277
1277
|
case "mint": {
|
|
1278
|
-
const { cmdMint } = await import("./widget-
|
|
1278
|
+
const { cmdMint } = await import("./widget-BvqSNeiG.js");
|
|
1279
1279
|
return cmdMint(rest);
|
|
1280
1280
|
}
|
|
1281
1281
|
case "serve": {
|
|
1282
|
-
const { cmdServe } = await import("./serve-
|
|
1282
|
+
const { cmdServe } = await import("./serve-S0WQf_6L.js");
|
|
1283
1283
|
return cmdServe(rest);
|
|
1284
1284
|
}
|
|
1285
1285
|
case "setup": {
|
|
1286
|
-
const { cmdSetup } = await import("./setup-
|
|
1286
|
+
const { cmdSetup } = await import("./setup-CDc6c39I.js");
|
|
1287
1287
|
return cmdSetup(rest);
|
|
1288
1288
|
}
|
|
1289
1289
|
case "ws": {
|
|
1290
|
-
const { cmdWs } = await import("./ws-
|
|
1290
|
+
const { cmdWs } = await import("./ws-BCs6g2iQ.js");
|
|
1291
1291
|
return cmdWs(rest);
|
|
1292
1292
|
}
|
|
1293
1293
|
case "schedule": {
|
|
1294
|
-
const { cmdSchedule } = await import("./schedule-
|
|
1294
|
+
const { cmdSchedule } = await import("./schedule-jAbfVPYP.js");
|
|
1295
1295
|
return cmdSchedule(rest);
|
|
1296
1296
|
}
|
|
1297
1297
|
case "remote": {
|
|
@@ -1303,7 +1303,7 @@ async function runSubcommand(argv) {
|
|
|
1303
1303
|
return cmdExpose(rest);
|
|
1304
1304
|
}
|
|
1305
1305
|
case "callback": {
|
|
1306
|
-
const { cmdCallback } = await import("./callback-
|
|
1306
|
+
const { cmdCallback } = await import("./callback-rdBfFIT7.js");
|
|
1307
1307
|
return cmdCallback(rest);
|
|
1308
1308
|
}
|
|
1309
1309
|
case "reap":
|
|
@@ -4342,7 +4342,7 @@ async function cmdNotify(rest) {
|
|
|
4342
4342
|
}
|
|
4343
4343
|
const ensure = async () => {
|
|
4344
4344
|
if (!argv["ensure-daemon"]) return;
|
|
4345
|
-
const { ensureDaemon } = await import("./notifyDaemon-
|
|
4345
|
+
const { ensureDaemon } = await import("./notifyDaemon-iWgP8qm8.js");
|
|
4346
4346
|
await ensureDaemon().catch(() => null);
|
|
4347
4347
|
};
|
|
4348
4348
|
await heartbeatWatcher(parent, selfStartedAt);
|
|
@@ -4416,7 +4416,7 @@ async function cmdNotifyCursor(args) {
|
|
|
4416
4416
|
}
|
|
4417
4417
|
async function cmdNotifyd(rest) {
|
|
4418
4418
|
const sub = rest[0] ?? "status";
|
|
4419
|
-
const daemon = await import("./notifyDaemon-
|
|
4419
|
+
const daemon = await import("./notifyDaemon-iWgP8qm8.js");
|
|
4420
4420
|
switch (sub) {
|
|
4421
4421
|
case "run": return daemon.runDaemon();
|
|
4422
4422
|
case "once": return daemon.runDaemon({ once: true });
|
|
@@ -4443,4 +4443,4 @@ async function cmdNotifyd(rest) {
|
|
|
4443
4443
|
|
|
4444
4444
|
//#endregion
|
|
4445
4445
|
export { shouldStealLock as $, recentReadEdges as A, stdinActivityPath as B, listRecords as C, readNotes as D, readAgentPtysize as E, resolveReadWindow as F, writeToIpc as G, submitAndConfirm as H, resolveResumeArgs as I, hostId as J, appendEvent as K, restartHintLines as L, renderRawLog as M, renderRawLogLines as N, readPtysize as O, resolveOne as P, readInbox as Q, runSubcommand as R, lastStdinAt as S, menuSelectKeys as T, waitForLogQuiet as U, stopTipForCli as V, writeKeysPaced as W, listInboxParents as X, isTransientLockMkdirError as Y, liveWatchers as Z, isPidAlive as _, cmdHelp as a, isUnknownManagerToken as b, deriveLiveState as c, extractMenu as d, daemonLockDir as et, extractNeedsInput as f, isExitRequest as g, isAgentStuck as h, backoffWhileTyping as i, renderLogTailLines as j, recentMessageEdges as k, deriveLiveStatus as l, finalizedLines as m, READ_PAGE_DEFAULT as n, notifyDir as nt, controlCodeFromName as o, extractTaskCounts as p, gcInboxes as q, TYPING_WINDOW_MS as r, TYPING_BADGE as rt, cursorAbs as s, GRACEFUL_EXIT_COMMANDS as t, daemonLockOwnerPath as tt, extractBadges as u, isSlashCommand as v, matchKeyword as w, isUserTyping as x, isSubcommand as y, snapshotStatus as z };
|
|
4446
|
-
//# sourceMappingURL=subcommands-
|
|
4446
|
+
//# sourceMappingURL=subcommands-CmUg-41z.js.map
|
|
@@ -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-S0WQf_6L.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-fVjGs86e.js.map
|
package/dist/terminal.js
CHANGED
|
@@ -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 { r as getInstalledPackage } from "./versionChecker-
|
|
3
|
+
import { r as getInstalledPackage } from "./versionChecker-CICTsesA.js";
|
|
4
4
|
import { t as agentYesHome } from "./agentYesHome-CtmsY6I-.js";
|
|
5
5
|
import { d as openStore, p as LIFECYCLES, x as removeControlCharacters } from "./todoAutomation-Buo457VO.js";
|
|
6
6
|
import { i as shouldUseLock, r as releaseLock, t as acquireLock } from "./runningLock-DBoONoM-.js";
|
|
@@ -2027,4 +2027,4 @@ function sleep(ms) {
|
|
|
2027
2027
|
|
|
2028
2028
|
//#endregion
|
|
2029
2029
|
export { hasTodoStore as a, AgentContext as c, answerAsk as i, CLAUDE_SESSION_PIN_ENV as l, agentYes as n, listAsks as o, config as r, listAsksForProject as s, CLIS_CONFIG as t };
|
|
2030
|
-
//# sourceMappingURL=ts-
|
|
2030
|
+
//# sourceMappingURL=ts-IchALxVm.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.244.
|
|
10
|
+
var version = "1.244.3";
|
|
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-CICTsesA.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-S0WQf_6L.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-S0WQf_6L.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-BvqSNeiG.js.map
|
package/dist/widgets.js
CHANGED
|
@@ -2,7 +2,7 @@ import "./e2e-CEIdJGZ7.js";
|
|
|
2
2
|
import "./channels-BiGUYTuz.js";
|
|
3
3
|
import "./peer-B5JKF4BP.js";
|
|
4
4
|
import { t as AyChannel } from "./browser-B3dOptjL.js";
|
|
5
|
-
import { t as AyTerminal } from "./browser-
|
|
5
|
+
import { t as AyTerminal } from "./browser-DV0CLEwt.js";
|
|
6
6
|
import { AyWidget } from "./widget.js";
|
|
7
7
|
|
|
8
8
|
export { AyChannel, AyTerminal, AyWidget };
|
|
@@ -3,7 +3,7 @@ import "./globalPidIndex-D9DOSd-c.js";
|
|
|
3
3
|
import "./messageLog-C-YIzhRj.js";
|
|
4
4
|
import "./e2e-CEIdJGZ7.js";
|
|
5
5
|
import "./configShared-9wVlbPyC.js";
|
|
6
|
-
import { C as listRecords } from "./subcommands-
|
|
6
|
+
import { C as listRecords } from "./subcommands-CmUg-41z.js";
|
|
7
7
|
import "./webrtcLink-BMYneHbu.js";
|
|
8
8
|
import "./remotes-BxQnNxQv.js";
|
|
9
9
|
import { i as getProvisionRoot } from "./workspaceConfig-DOHygA2x.js";
|
|
@@ -418,4 +418,4 @@ async function cmdWs(args) {
|
|
|
418
418
|
|
|
419
419
|
//#endregion
|
|
420
420
|
export { WS_JSON_SCHEMA, cmdWs, collectWorkspaces, isPathInside, loadProvision, workspaceStatus };
|
|
421
|
-
//# sourceMappingURL=ws-
|
|
421
|
+
//# sourceMappingURL=ws-BCs6g2iQ.js.map
|
package/package.json
CHANGED
package/ts/terminal/browser.ts
CHANGED
|
@@ -61,6 +61,7 @@ export class AyTerminal {
|
|
|
61
61
|
private capTimer: any = null; // debounce for cap reports on drag-resize
|
|
62
62
|
private capHeartbeat: any = null; // keeps the cap renewed while the panel is open
|
|
63
63
|
private lastCap: { cols: number; rows: number } | null = null;
|
|
64
|
+
private panelEl?: any; // the #panel element — the thing that goes display:none on collapse
|
|
64
65
|
|
|
65
66
|
constructor(info: string | number | AyTerminalInfo) {
|
|
66
67
|
const o: AyTerminalInfo =
|
|
@@ -135,10 +136,24 @@ export class AyTerminal {
|
|
|
135
136
|
}, 5000);
|
|
136
137
|
}
|
|
137
138
|
|
|
138
|
-
/**
|
|
139
|
+
/**
|
|
140
|
+
* True while this widget's panel is actually on-screen. Checks the PANEL element
|
|
141
|
+
* itself — its computed `display` and bounding rect — NOT the xterm grid: xterm
|
|
142
|
+
* keeps a non-zero `cols/rows` (and its `.xterm` node a cached box) even when an
|
|
143
|
+
* ancestor is `display:none`, so measuring the grid falsely reads "visible" while
|
|
144
|
+
* collapsed (grocy's ③). The panel's own `display:none`/0×0 rect is unambiguous.
|
|
145
|
+
*/
|
|
139
146
|
private isPanelVisible(): boolean {
|
|
140
|
-
const
|
|
141
|
-
|
|
147
|
+
const p = this.panelEl;
|
|
148
|
+
if (!p) return false;
|
|
149
|
+
const g = globalThis as any;
|
|
150
|
+
try {
|
|
151
|
+
if (g.getComputedStyle?.(p)?.display === "none") return false;
|
|
152
|
+
} catch {
|
|
153
|
+
/* no getComputedStyle — fall through to the rect check */
|
|
154
|
+
}
|
|
155
|
+
const r = p.getBoundingClientRect?.();
|
|
156
|
+
return !!(r && r.width > 0 && r.height > 0);
|
|
142
157
|
}
|
|
143
158
|
|
|
144
159
|
/** Withdraw this widget's size cap (closed/minimized) → the daemon re-negotiates without it. */
|
|
@@ -294,6 +309,7 @@ export class AyTerminal {
|
|
|
294
309
|
const wrap = root.getElementById("wrap")!;
|
|
295
310
|
const titleEl = root.getElementById("title")!;
|
|
296
311
|
this.badgeEl = root.getElementById("badge");
|
|
312
|
+
this.panelEl = panel; // used by isPanelVisible() to detect collapse
|
|
297
313
|
if (this.transparent) panel.classList.add("transparent");
|
|
298
314
|
|
|
299
315
|
// Reflow: read-only CSS-scales the native grid to fit; interactive fits the
|
|
@@ -305,13 +321,18 @@ export class AyTerminal {
|
|
|
305
321
|
// agent's own/other viewers' TUI (taku's "xterm looks weird"). Interactive only
|
|
306
322
|
// adds keystroke input (start(), /api/send), not a resize.
|
|
307
323
|
const reflow = () => {
|
|
324
|
+
// Collapsed/hidden interactive panel → withdraw our cap and DON'T re-arm the
|
|
325
|
+
// heartbeat. Gate on the PANEL's own visibility (isPanelVisible), because the
|
|
326
|
+
// wrap ResizeObserver does NOT reliably fire when an ancestor goes display:none,
|
|
327
|
+
// and the xterm grid stays non-zero while hidden — so neither a grid measure nor
|
|
328
|
+
// the ResizeObserver alone catches a collapse (grocy's ③). Guard on an active cap
|
|
329
|
+
// so transient 0-size layout ticks on mount don't spam the daemon.
|
|
330
|
+
if (!this.readOnly && !this.isPanelVisible()) {
|
|
331
|
+
if (this.capHeartbeat || this.lastCap) this.withdrawCap();
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
308
334
|
const xt = inner.querySelector(".xterm") as any;
|
|
309
335
|
if (!xt || !xt.offsetWidth || !xt.offsetHeight) {
|
|
310
|
-
// The panel just went invisible (minimized/collapsed/hidden — the wrap
|
|
311
|
-
// ResizeObserver fires this on collapse). Withdraw our cap so a hidden panel
|
|
312
|
-
// stops constraining the shared PTY, no matter WHICH gesture hid it (the wired
|
|
313
|
-
// min button, a page hiding the host, a max/min quirk). Guard on an active cap
|
|
314
|
-
// so transient 0-size layout ticks on mount don't spam the daemon.
|
|
315
336
|
if (!this.readOnly && (this.capHeartbeat || this.lastCap)) this.withdrawCap();
|
|
316
337
|
return;
|
|
317
338
|
}
|
|
@@ -351,6 +372,16 @@ export class AyTerminal {
|
|
|
351
372
|
} catch {
|
|
352
373
|
/* no ResizeObserver — fall back to the window listener below */
|
|
353
374
|
}
|
|
375
|
+
// Reflow on VISIBILITY changes too. A ResizeObserver does NOT reliably fire when
|
|
376
|
+
// an element (or an ancestor — e.g. a page hiding our host) goes display:none, so
|
|
377
|
+
// a collapse can slip past it and leave the cap pinned (grocy's ③). An
|
|
378
|
+
// IntersectionObserver DOES fire when the panel leaves/enters the viewport or is
|
|
379
|
+
// hidden — that reflow then sees isPanelVisible() false and withdraws the cap.
|
|
380
|
+
try {
|
|
381
|
+
new g.IntersectionObserver(() => reflow()).observe(panel);
|
|
382
|
+
} catch {
|
|
383
|
+
/* no IntersectionObserver — the 5s heartbeat self-check still catches it */
|
|
384
|
+
}
|
|
354
385
|
g.addEventListener?.("resize", reflow);
|
|
355
386
|
|
|
356
387
|
void (async () => {
|