@songsid/agend 2.3.3-beta.3 → 2.3.3-beta.5
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/agent-cli.js +13 -112
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.d.ts +0 -1
- package/dist/agent-endpoint.js +1 -9
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-whats-new.d.ts +3 -6
- package/dist/agent-whats-new.js +7 -18
- package/dist/agent-whats-new.js.map +1 -1
- package/dist/auth-api.d.ts +0 -7
- package/dist/auth-api.js +1 -15
- package/dist/auth-api.js.map +1 -1
- package/dist/backend/codex.d.ts +1 -0
- package/dist/backend/codex.js +106 -15
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/types.d.ts +17 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/bundled-skills.d.ts +4 -6
- package/dist/bundled-skills.js +10 -14
- package/dist/bundled-skills.js.map +1 -1
- package/dist/channel/mcp-server.js +5 -5
- package/dist/channel/mcp-server.js.map +1 -1
- package/dist/channel/mcp-tools.d.ts +1 -3
- package/dist/channel/mcp-tools.js +4 -58
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +6 -3
- package/dist/config-validator.js.map +1 -1
- package/dist/daemon.d.ts +11 -3
- package/dist/daemon.js +59 -107
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard-live.d.ts +1 -1
- package/dist/dashboard-live.js +3 -3
- package/dist/dashboard-live.js.map +1 -1
- package/dist/dashboard-permissions.d.ts +1 -1
- package/dist/dashboard-permissions.js +1 -3
- package/dist/dashboard-permissions.js.map +1 -1
- package/dist/fleet-manager.d.ts +26 -44
- package/dist/fleet-manager.js +70 -226
- package/dist/fleet-manager.js.map +1 -1
- package/dist/general-knowledge/skills/credential-profiles/SKILL.md +11 -1
- package/dist/general-knowledge/skills/session-management/SKILL.md +6 -0
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +13 -204
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +26 -63
- package/dist/instance-lifecycle.js +1 -1
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/locale.js +2 -0
- package/dist/locale.js.map +1 -1
- package/dist/outbound-handlers.js +19 -7
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +0 -62
- package/dist/outbound-schemas.js +2 -41
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/public-web-gateway.js +0 -9
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/public-web-link.d.ts +2 -0
- package/dist/public-web-link.js +5 -0
- package/dist/public-web-link.js.map +1 -1
- package/dist/search/search-docs.d.ts +1 -1
- package/dist/search/search-docs.js +2 -2
- package/dist/search/search-docs.js.map +1 -1
- package/dist/settings-api.d.ts +6 -0
- package/dist/settings-api.js +14 -2
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +3 -1
- package/dist/settings-change.js.map +1 -1
- package/dist/task-board-waker.d.ts +4 -1
- package/dist/task-board-waker.js +13 -2
- package/dist/task-board-waker.js.map +1 -1
- package/dist/tool-permissions.js +3 -10
- package/dist/tool-permissions.js.map +1 -1
- package/dist/topic-commands.d.ts +6 -2
- package/dist/topic-commands.js +2 -0
- package/dist/topic-commands.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/ui/chat-ambient.js +4 -4
- package/dist/ui/chat-commands.js +3 -2
- package/dist/ui/chat-store.js +4 -1
- package/dist/ui/chat-strings.js +6 -42
- package/dist/ui/chat-thread.js +6 -44
- package/dist/ui/panel-chat.js +21 -50
- package/dist/ui/preview-panel.js +3 -15
- package/dist/ui/search-dialog.js +30 -14
- package/dist/ui/settings-appearance.js +1 -3
- package/dist/ui/settings-guests.js +13 -4
- package/dist/ui/settings-learn.js +1 -1
- package/dist/ui/settings-mods.js +5 -12
- package/dist/ui/settings-registry.js +0 -1
- package/dist/ui/settings-strings.js +6 -6
- package/dist/ui/shared/app-prefs.js +17 -17
- package/dist/ui/shared/app-shell.js +12 -8
- package/dist/ui/shared/app-store.js +6 -2
- package/dist/ui/shared/app.css +4 -36
- package/dist/ui/shared/app.js +5 -4
- package/dist/ui/shared/instance-nav.js +9 -9
- package/dist/ui/shared/instance-switch.js +8 -2
- package/dist/ui/shared/panel-view.js +22 -8
- package/dist/ui/shared/view-strings.js +6 -0
- package/dist/usage/usage-api.d.ts +3 -0
- package/dist/usage/usage-api.js +5 -1
- package/dist/usage/usage-api.js.map +1 -1
- package/dist/view-api.d.ts +2 -0
- package/dist/view-api.js +64 -0
- package/dist/view-api.js.map +1 -1
- package/dist/web-api.d.ts +9 -17
- package/dist/web-api.js +255 -371
- package/dist/web-api.js.map +1 -1
- package/dist/web-appearance-tools.d.ts +0 -2
- package/dist/web-appearance-tools.js +2 -5
- package/dist/web-appearance-tools.js.map +1 -1
- package/dist/web-appearance-view.d.ts +0 -6
- package/dist/web-appearance-view.js +0 -1
- package/dist/web-appearance-view.js.map +1 -1
- package/dist/web-appearance.d.ts +14 -7
- package/dist/web-appearance.js +5 -6
- package/dist/web-appearance.js.map +1 -1
- package/dist/web-asset-parts.d.ts +1 -17
- package/dist/web-asset-parts.js +1 -15
- package/dist/web-asset-parts.js.map +1 -1
- package/dist/web-auth.js +1 -7
- package/dist/web-auth.js.map +1 -1
- package/dist/web-chat-history.d.ts +3 -7
- package/dist/web-chat-history.js +10 -17
- package/dist/web-chat-history.js.map +1 -1
- package/dist/web-commands.d.ts +9 -1
- package/dist/web-commands.js +13 -0
- package/dist/web-commands.js.map +1 -1
- package/dist/web-experimental.d.ts +2 -11
- package/dist/web-experimental.js +8 -36
- package/dist/web-experimental.js.map +1 -1
- package/dist/web-guest-access.d.ts +40 -2
- package/dist/web-guest-access.js +50 -14
- package/dist/web-guest-access.js.map +1 -1
- package/dist/web-mod-bundle.d.ts +2 -45
- package/dist/web-mod-bundle.js +15 -63
- package/dist/web-mod-bundle.js.map +1 -1
- package/dist/web-mod-store.d.ts +3 -48
- package/dist/web-mod-store.js +30 -97
- package/dist/web-mod-store.js.map +1 -1
- package/dist/web-prefs.d.ts +13 -0
- package/dist/web-prefs.js +38 -0
- package/dist/web-prefs.js.map +1 -1
- package/dist/web-preview.d.ts +1 -11
- package/dist/web-preview.js +6 -20
- package/dist/web-preview.js.map +1 -1
- package/dist/web-session.d.ts +11 -3
- package/dist/web-session.js +22 -11
- package/dist/web-session.js.map +1 -1
- package/dist/web-settings-patch.d.ts +1 -0
- package/dist/web-settings-patch.js +6 -3
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/web-settings-tools.d.ts +0 -13
- package/dist/web-settings-tools.js +12 -84
- package/dist/web-settings-tools.js.map +1 -1
- package/launcher/fleet-service-owner.cjs +4 -1
- package/package.json +1 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.canvas-worker-off.md +0 -376
- package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +0 -672
- package/dist/ui/app-effects.js +0 -251
- package/dist/ui/chat-effect-posters.js +0 -42
- package/dist/ui/chat-effects.js +0 -167
- package/dist/ui/effect-trial-controller.js +0 -124
- package/dist/ui/effect-trial-offer.js +0 -2
- package/dist/ui/effect-trial-panel.js +0 -40
- package/dist/ui/effects-waker.js +0 -2
- package/dist/ui/settings-effects.js +0 -202
- package/dist/ui/settings-owner-effects.js +0 -82
- package/dist/ui/shared/effect-app-runtime.js +0 -299
- package/dist/ui/shared/effect-baseline.js +0 -64
- package/dist/ui/shared/effect-chat-runtime.js +0 -162
- package/dist/ui/shared/effect-cursor.js +0 -126
- package/dist/ui/shared/effect-display-metadata.js +0 -39
- package/dist/ui/shared/effect-frame.js +0 -146
- package/dist/ui/shared/effect-geometry.js +0 -137
- package/dist/ui/shared/effect-host-style.js +0 -10
- package/dist/ui/shared/effect-owner-regions.js +0 -74
- package/dist/ui/shared/effect-owner-source.js +0 -122
- package/dist/ui/shared/effect-policy.js +0 -151
- package/dist/ui/shared/effect-poster-reader.js +0 -98
- package/dist/ui/shared/effect-posters.js +0 -117
- package/dist/ui/shared/effect-profiler.js +0 -184
- package/dist/ui/shared/effect-profiles.js +0 -65
- package/dist/ui/shared/effect-registry.js +0 -545
- package/dist/ui/shared/effect-runtime-loader.js +0 -236
- package/dist/ui/shared/effect-safety.js +0 -153
- package/dist/ui/shared/effect-stock-snapshot.js +0 -43
- package/dist/ui/shared/effect-stock-trust.js +0 -217
- package/dist/ui/shared/effect-trial-shadow.js +0 -62
- package/dist/ui/shared/effect-trial-source.js +0 -103
- package/dist/ui/shared/effect-trial-stage.js +0 -170
- package/dist/ui/shared/effect-trial.css +0 -40
- package/dist/ui/shared/feature-flags.js +0 -127
- package/dist/ui/shared/owner-effect-prefs.js +0 -117
- package/dist/web-effect-bootstrap.d.ts +0 -12
- package/dist/web-effect-bootstrap.js +0 -49
- package/dist/web-effect-bootstrap.js.map +0 -1
- package/dist/web-effect-bundle.d.ts +0 -28
- package/dist/web-effect-bundle.js +0 -171
- package/dist/web-effect-bundle.js.map +0 -1
- package/dist/web-effect-canonical.d.ts +0 -8
- package/dist/web-effect-canonical.js +0 -27
- package/dist/web-effect-canonical.js.map +0 -1
- package/dist/web-effect-library.d.ts +0 -114
- package/dist/web-effect-library.js +0 -530
- package/dist/web-effect-library.js.map +0 -1
- package/dist/web-effect-playback.d.ts +0 -30
- package/dist/web-effect-playback.js +0 -71
- package/dist/web-effect-playback.js.map +0 -1
- package/dist/web-effect-poster.d.ts +0 -8
- package/dist/web-effect-poster.js +0 -52
- package/dist/web-effect-poster.js.map +0 -1
- package/dist/web-effect-profiles.d.ts +0 -118
- package/dist/web-effect-profiles.js +0 -181
- package/dist/web-effect-profiles.js.map +0 -1
- package/dist/web-effect-service.d.ts +0 -93
- package/dist/web-effect-service.js +0 -335
- package/dist/web-effect-service.js.map +0 -1
- package/dist/web-effect-tools.d.ts +0 -48
- package/dist/web-effect-tools.js +0 -129
- package/dist/web-effect-tools.js.map +0 -1
- package/dist/web-effect-trials.d.ts +0 -86
- package/dist/web-effect-trials.js +0 -204
- package/dist/web-effect-trials.js.map +0 -1
- package/dist/web-effect-upload.d.ts +0 -27
- package/dist/web-effect-upload.js +0 -185
- package/dist/web-effect-upload.js.map +0 -1
- package/dist/web-effect-worker.d.ts +0 -8
- package/dist/web-effect-worker.js +0 -170
- package/dist/web-effect-worker.js.map +0 -1
- package/dist/web-effect.d.ts +0 -103
- package/dist/web-effect.js +0 -153
- package/dist/web-effect.js.map +0 -1
- package/dist/web-experimental-http.d.ts +0 -2
- package/dist/web-experimental-http.js +0 -12
- package/dist/web-experimental-http.js.map +0 -1
- package/dist/web-mod-agent.d.ts +0 -50
- package/dist/web-mod-agent.js +0 -207
- package/dist/web-mod-agent.js.map +0 -1
package/dist/ui/shared/app.css
CHANGED
|
@@ -952,6 +952,8 @@ img.amb-p { object-fit: contain; }
|
|
|
952
952
|
.s-guests .g-chips { display: flex; flex-wrap: wrap; gap: var(--s-1); margin: var(--s-2) 0 0 calc(28px + var(--s-2)); }
|
|
953
953
|
.s-guests .g-chip { padding: 1px var(--s-2); border: 1px solid color-mix(in srgb, var(--text-3) 55%, transparent); border-radius: 0; font-size: var(--fs-sm); color: var(--text-2); white-space: nowrap; }
|
|
954
954
|
.s-guests .g-edit { margin: var(--s-2) 0 0 calc(28px + var(--s-2)); }
|
|
955
|
+
.s-guests .g-level { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-2); margin: var(--s-2) 0 0 calc(28px + var(--s-2)); }
|
|
956
|
+
.s-guests .g-level > .note:last-child { flex-basis: 100%; margin: 0; }
|
|
955
957
|
.s-guests .guest-actions { display: flex; flex-wrap: wrap; gap: var(--s-1); margin: var(--s-2) 0 0 calc(28px + var(--s-2)); }
|
|
956
958
|
.s-guests .g-error { color: var(--danger); margin-left: calc(28px + var(--s-2)); }
|
|
957
959
|
.s-guests .g-search { width: 100%; max-width: 360px; margin: var(--s-1) 0 var(--s-2); }
|
|
@@ -1265,6 +1267,7 @@ body.side-resizing, body.side-resizing * { cursor: col-resize !important; user-s
|
|
|
1265
1267
|
.v-pre .ansi[data-b] { font-weight: var(--fw-bold); }
|
|
1266
1268
|
/* #1582: faint text (SGR 2) — a CLI's suggestion or placeholder, never input — stays faint here. */
|
|
1267
1269
|
.v-pre .ansi[data-dim] { opacity: .5; }
|
|
1270
|
+
.v-watching { flex-shrink: 0; margin: 0; padding: var(--s-2) var(--s-4); font-size: var(--fs-sm); color: var(--text-2); background: var(--surface); border-bottom: 1px solid var(--border); }
|
|
1268
1271
|
.v-term-note { position: absolute; left: var(--s-3); right: var(--s-3); top: var(--s-3); padding: var(--s-2) var(--s-3); border-radius: var(--r-sm); background: var(--warn-bg); border: 1px solid var(--warn-line); color: #f0f0f0; font-size: var(--fs-sm); }
|
|
1269
1272
|
.v-probe { position: absolute; visibility: hidden; white-space: pre; left: -9999px; top: 0; font-size: 100px; }
|
|
1270
1273
|
.help-list { list-style: disc; padding-left: var(--s-5); display: flex; flex-direction: column; gap: var(--s-2); font-size: var(--fs-sm); }
|
|
@@ -2201,17 +2204,6 @@ html.oo-immersive .p-fleet > .panel-body { z-index: 50; }
|
|
|
2201
2204
|
.s-limit-warnings { margin: var(--s-2) 0; padding-left: var(--s-4); }
|
|
2202
2205
|
@media (max-width: 479px) { .grid3 { grid-template-columns: minmax(0, 1fr); } }
|
|
2203
2206
|
|
|
2204
|
-
/* #1629 B2: effect library controls. No runtime layer is created by this card. */
|
|
2205
|
-
.s-fx-actions { display: flex; flex-wrap: wrap; gap: var(--s-2); align-items: center; }
|
|
2206
|
-
.s-fx-item { margin-top: var(--s-3); padding-top: var(--s-3); border-top: 1px solid var(--border); }
|
|
2207
|
-
.s-fx-item h4 { margin: 0; }
|
|
2208
|
-
.s-fx-poster { display: block; max-width: min(240px, 100%); max-height: 160px; object-fit: contain; border-radius: var(--r-sm); }
|
|
2209
|
-
|
|
2210
|
-
.s-fx-chat, .s-fx-params label:not(.check) { display: flex; align-items: center; flex-wrap: wrap; gap: var(--s-2); }
|
|
2211
|
-
.s-fx-chat { margin: var(--s-2) 0; }
|
|
2212
|
-
.s-fx-params { display: flex; flex-direction: column; gap: var(--s-2); margin: var(--s-2) 0; max-width: 100%; }
|
|
2213
|
-
.s-fx-target, .s-fx-params input:not([type=checkbox]), .s-fx-params select { min-height: 36px; min-width: 0; max-width: 100%; padding: 0 var(--s-2); border: 1px solid var(--border); border-radius: var(--r-sm); background: var(--bg); color: var(--text); }
|
|
2214
|
-
|
|
2215
2207
|
/* #1629: stock paint bands. Structural ancestors remain neutral; only bounded content owns level 1.
|
|
2216
2208
|
The viewport effect root is a direct body sibling: behind 0 / stock content 1 (header 2) / front 20.
|
|
2217
2209
|
Nested menus cannot cross a content stacking context: the unmounted trust guard suspends fronts for overlays. */
|
|
@@ -2222,38 +2214,14 @@ html.oo-immersive .p-fleet > .panel-body { z-index: 50; }
|
|
|
2222
2214
|
/* Header menus must stay above the later scroller stacking context. */
|
|
2223
2215
|
.panel-head { z-index: 2; }
|
|
2224
2216
|
@media (min-width: 900px) { .chat-split > .pv-divider, .chat-split > .pv-panel { position: relative; z-index: 1; } }
|
|
2225
|
-
/* #1629: owner choices share the existing control font floor. */
|
|
2226
|
-
.s-fx-owner{margin-top:var(--s-4);padding-top:var(--s-3);border-top:1px solid var(--border)}
|
|
2227
|
-
.s-fx-owner-row{display:flex;align-items:end;flex-wrap:wrap;gap:var(--s-2);margin-top:var(--s-2)}
|
|
2228
|
-
.s-fx-owner-row>label{display:flex;flex-direction:column;gap:var(--s-1);min-width:0;flex:1}
|
|
2229
|
-
|
|
2230
|
-
/* #2044: the effect frame's document declares no colour scheme (light). An iframe whose own colour scheme differs
|
|
2231
|
-
from its document's gets an opaque backdrop, so under the dark theme the frame hid the whole chat: keep them equal. */
|
|
2232
|
-
.agend-effect-frame { color-scheme: normal !important; }
|
|
2233
|
-
|
|
2234
|
-
/* #1629: host-created static poster IMG; geometry and visibility belong to the trusted CSSOM binding. */
|
|
2235
|
-
.agend-effect-poster { object-fit: cover !important; object-position: center !important; user-select: none; }
|
|
2236
|
-
|
|
2237
2217
|
/* #1629: full-app bounded stock surfaces. Panel roots stay neutral; effects never raise the whole app. */
|
|
2238
2218
|
.p-fleet > .seg, .p-settings > .seg,
|
|
2239
2219
|
.p-fleet > .panel-body, .p-needs > .panel-body, .p-settings > .panel-body,
|
|
2240
2220
|
.p-log > .panel-body, .p-details > .panel-body, .p-view > .panel-body,
|
|
2241
|
-
.p-log > .log-bar, .p-view > .v-term, .p-view > .v-id { position: relative; z-index: 1; }
|
|
2221
|
+
.p-log > .log-bar, .p-view > .v-term, .p-view > .v-id, .p-view > .v-watching { position: relative; z-index: 1; }
|
|
2242
2222
|
/* Keep the existing Apply bar's sticky behavior, in its own bounded stock band. */
|
|
2243
2223
|
.p-settings > .s-pending { z-index: 1; }
|
|
2244
2224
|
|
|
2245
|
-
/* #1629: host-owned local Trial panel. Only its canvas frame lives inside the paint-contained stage. */
|
|
2246
|
-
.effect-trial-head, .effect-trial-controls, .effect-trial-note { position: relative; z-index: 1; background: var(--bg); padding: var(--s-3); margin: 0; }
|
|
2247
|
-
.effect-trial-head { display: flex; align-items: center; gap: var(--s-2); border-bottom: 1px solid var(--border); }
|
|
2248
|
-
.effect-trial-head > span { flex: 1; min-width: 0; overflow-wrap: anywhere; }
|
|
2249
|
-
.effect-trial-body { flex: 1; min-height: 0; display: flex; padding: var(--s-3); }
|
|
2250
|
-
.effect-trial-stage { position: relative; z-index: 0; flex: 1; min-width: 0; min-height: 0; contain: paint; overflow: clip; padding: 0; border: 0; outline: none; box-shadow: none; }
|
|
2251
|
-
|
|
2252
|
-
/* #2115: diagnostics remain inside the stock protected panel header, never in an effect plane. */
|
|
2253
|
-
.panel-head:has(> .chat-fx-notice) { flex-wrap: wrap; }
|
|
2254
|
-
.chat-fx-notice { order: 10; flex: 1 1 100%; min-width: 0; max-width: 100%; font-size: var(--fs-sm); overflow-wrap: anywhere; }
|
|
2255
|
-
.chat-fx-notice > span { display: block; }
|
|
2256
|
-
|
|
2257
2225
|
/* ── #2293: global search — the sidebar row's shortcut, the header's button (collapsed sidebar, phone), the dialog ── */
|
|
2258
2226
|
/* #2478: a touch screen has no Ctrl/⌘ K — the shortcut's hint is not shown there (the row is). */
|
|
2259
2227
|
@media (pointer: coarse) { .side-search .kbd-hint { display: none; } }
|
package/dist/ui/shared/app.js
CHANGED
|
@@ -13,7 +13,7 @@ import { installSwipe } from "./app-swipe.js";
|
|
|
13
13
|
import { installTextUndo } from "./text-undo.js";
|
|
14
14
|
import { startRouter, navStore, navigate } from "./app-nav.js";
|
|
15
15
|
import { createStream } from "./app-stream.js";
|
|
16
|
-
import { appStore, applyStatus, applyActivity, guestPage } from "./app-store.js";
|
|
16
|
+
import { appStore, applyStatus, applyActivity, guestPage, guestTrusted } from "./app-store.js";
|
|
17
17
|
import { chatPath } from "./app-route.js";
|
|
18
18
|
import { startNeedsNotifier } from "./app-needs.js";
|
|
19
19
|
import { toast } from "./ui-toast.js";
|
|
@@ -101,7 +101,8 @@ if (mode === "full") {
|
|
|
101
101
|
import("/ui/js/backend-signin.js").then((m) => m.installSignIn(), () => {});
|
|
102
102
|
}
|
|
103
103
|
// #1665: this device's first upload of its own choices (once), then another device's changes at each status frame.
|
|
104
|
-
// A guest's page only
|
|
104
|
+
// A guest's page (#2855) uploads and saves only its own keys (prefsWritable(key)); another device's changes reach it at
|
|
105
|
+
// its next load (its status frames carry no prefs_rev).
|
|
105
106
|
bootPrefs();
|
|
106
107
|
// #1629: agents' themes, read when the status frame's themes_rev moves (a guest's frames never carry it).
|
|
107
108
|
if (!guest) startThemes();
|
|
@@ -127,8 +128,8 @@ if (!guest) installOwnerCss();
|
|
|
127
128
|
}
|
|
128
129
|
|
|
129
130
|
document.addEventListener("keydown", handleKey);
|
|
130
|
-
// #2293: Ctrl+K / ⌘K (and Ctrl+F in a chat) — an admin's full app
|
|
131
|
-
if (mode === "full" && !guest) document.addEventListener("keydown", handleSearchKey);
|
|
131
|
+
// #2293: Ctrl+K / ⌘K (and Ctrl+F in a chat) — an admin's full app, and a trusted guest's (#2855: what it can see).
|
|
132
|
+
if (mode === "full" && (!guest || guestTrusted())) document.addEventListener("keydown", handleSearchKey);
|
|
132
133
|
// #2342: Ctrl/⌘+Z and Ctrl+Shift+Z / Ctrl+Y / ⌘⇧Z in every text field, one history per field (the browser's is one
|
|
133
134
|
// for the whole page, and any script write wipes it).
|
|
134
135
|
installTextUndo({ mac: isMacLike() });
|
|
@@ -504,18 +504,18 @@ export function InstanceNav({ route, items, loaded = true, exec = {}, awaiting =
|
|
|
504
504
|
const known = new Set(byName.keys());
|
|
505
505
|
const favs = nav.favorites.filter((n) => known.has(n));
|
|
506
506
|
const favSet = new Set(favs);
|
|
507
|
-
const canStar = !viewOnly && prefsWritable();
|
|
508
|
-
// #1920: a guest's list is
|
|
509
|
-
//
|
|
507
|
+
const canStar = !viewOnly && prefsWritable("nav.favorites");
|
|
508
|
+
// #1920: a guest's list is not reordered (the order is the host's). #2855: it stars, sorts and filters as its own
|
|
509
|
+
// preferences (kept on the host under its account), with reply times that only count replies its channel showed.
|
|
510
510
|
const guest = guestPage();
|
|
511
|
-
// #2179: when each row last replied (a guest's
|
|
511
|
+
// #2179: when each row last replied (a guest's: replies its channel showed). "recent" mode: the favorites keep
|
|
512
512
|
// their order or are sorted too, and every other row is one list, the last reply first. "custom" (the default) is the
|
|
513
513
|
// person's own order — a reply never moves a row.
|
|
514
514
|
const now = Date.now();
|
|
515
515
|
// The anonymous View reader (viewOnly) has no reply times (/api/profiles carries none) and no way to change the sort:
|
|
516
516
|
// its list is always Custom, whatever this browser kept from a signed-in page (#2181 review).
|
|
517
|
-
const ageOf = (n) => (
|
|
518
|
-
const recent = !
|
|
517
|
+
const ageOf = (n) => (viewOnly ? null : replyAge(byName.get(n), now));
|
|
518
|
+
const recent = !viewOnly && nav.sort.mode === "recent";
|
|
519
519
|
const favsSorted = recent && nav.sort.favs === "recent";
|
|
520
520
|
let shownGroups, shownInsts;
|
|
521
521
|
if (recent) {
|
|
@@ -528,7 +528,7 @@ export function InstanceNav({ route, items, loaded = true, exec = {}, awaiting =
|
|
|
528
528
|
shownInsts = new Map([...instByGroup].map(([g, names]) => [g, names.filter((n) => !favSet.has(n))]));
|
|
529
529
|
if (favs.length) shownInsts.set(FAV_GROUP, favs);
|
|
530
530
|
}
|
|
531
|
-
const f =
|
|
531
|
+
const f = nav.filter;
|
|
532
532
|
const shown = filterSidebar(shownGroups, shownInsts, byName, f.q, backendLabel, { status: f.status, cli: f.cli, statusOf: facetOf });
|
|
533
533
|
// #1936: while a filter is on, the instance you have open stays on top, pinned and marked "Current", whether or not
|
|
534
534
|
// it matches; a match is not repeated below. "N / M" still counts the filter's matches (the pinned row counts only
|
|
@@ -626,7 +626,7 @@ export function InstanceNav({ route, items, loaded = true, exec = {}, awaiting =
|
|
|
626
626
|
return html`<div class=${`view-roster inst-nav${editing && canStar ? " fav-editing" : ""}`}>
|
|
627
627
|
<div data-trust="navigation" class="side-section" id="instanceList" ref=${list}>
|
|
628
628
|
<div class="inst-head"><h2 class="side-label">${tn("instancesLabel")}</h2>
|
|
629
|
-
${canStar && items.length
|
|
629
|
+
${canStar && items.length ? html`<${SortMenu} sort=${nav.sort} />`
|
|
630
630
|
: recent ? html`<span class="chip-btn nav-sort-btn on nav-sort-static"><${Icon} name="sort" size=${12} /><span>${tn("sortRecent")}</span></span>` : null}
|
|
631
631
|
${canStar && items.length ? html`<button type="button" class="chip-btn fav-edit" aria-pressed=${editing ? "true" : "false"} onClick=${() => setEditing(!editing)}>
|
|
632
632
|
${editing ? tn("favDone") : html`<${Icon} name="star" size=${12} />${tn("favEdit")}`}</button>` : null}</div>
|
|
@@ -653,7 +653,7 @@ export function InstanceNav({ route, items, loaded = true, exec = {}, awaiting =
|
|
|
653
653
|
})}
|
|
654
654
|
${loaded && shown.active && !shown.groups.length ? html`<p class="side-empty">${tn("filterNone")}</p>` : null}
|
|
655
655
|
</div>
|
|
656
|
-
${
|
|
656
|
+
${html`<div class="v-filter">
|
|
657
657
|
<label class="v-filter-box"><${Icon} name="search" size=${14} /><span class="sr-only">${tn("filterPh")}</span>
|
|
658
658
|
<input ref=${filterRef} id="filterInput" type="text" autocomplete="off" spellcheck=${false} placeholder=${tn("filterPh")} value=${f.q}
|
|
659
659
|
onInput=${(e) => setNavFilter({ q: e.target.value })}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
// #1523 N2 (§3.2): the instance view switch — Chat | View | Details of ONE instance. Each segment is a link to that
|
|
2
2
|
// view's URL for the same instance, so switching keeps the instance (and the sidebar, which is never remounted).
|
|
3
3
|
// Desktop: links in the header; a phone: the same four as top tabs under it (app.css). The anonymous View reader
|
|
4
|
-
// gets none (Chat and Details need a session): the caller does not render it there.
|
|
4
|
+
// gets none (Chat and Details need a session): the caller does not render it there. #2855: a trusted guest's is Chat |
|
|
5
|
+
// View | Search (search opens on this agent); a chat-level guest gets none.
|
|
5
6
|
import { html } from "./app-html.js";
|
|
7
|
+
import { openSearch } from "./app-shell.js";
|
|
6
8
|
import { t } from "./app-i18n.js";
|
|
7
9
|
import { chatPath, detailsPath, logPath, viewPath } from "./app-route.js";
|
|
8
10
|
|
|
@@ -10,9 +12,13 @@ import { chatPath, detailsPath, logPath, viewPath } from "./app-route.js";
|
|
|
10
12
|
* current: "chat" | "view" | "log" | "details". #1218: Log sits between View and Details. `data-label`: each tab is as
|
|
11
13
|
* wide as its label in the current tab's weight (app.css), so the bar keeps its size whichever tab is current.
|
|
12
14
|
*/
|
|
13
|
-
export function InstanceSwitch({ name, current }) {
|
|
15
|
+
export function InstanceSwitch({ name, current, guest = false }) {
|
|
14
16
|
const seg = (key, href, label) => html`<a key=${key} class=${`seg-item${current === key ? " active" : ""}`} href=${href}
|
|
15
17
|
aria-current=${current === key ? "page" : undefined} data-label=${label}>${label}</a>`;
|
|
18
|
+
if (guest) return html`<nav class="inst-switch seg" aria-label=${t("app.instanceViews", name)}>
|
|
19
|
+
${seg("chat", chatPath(name), t("app.chat"))}${seg("view", viewPath(name), t("app.view"))}<button key="search" type="button" class="seg-item"
|
|
20
|
+
data-label=${t("app.search")} onClick=${() => openSearch({ instance: name })}>${t("app.search")}</button>
|
|
21
|
+
</nav>`;
|
|
16
22
|
return html`<nav class="inst-switch seg" aria-label=${t("app.instanceViews", name)}>
|
|
17
23
|
${seg("chat", chatPath(name), t("app.chat"))}${seg("view", viewPath(name), t("app.view"))}${seg("log", logPath(name), t("app.log"))}${seg("details", detailsPath(name), t("app.details"))}
|
|
18
24
|
</nav>`;
|
|
@@ -6,9 +6,13 @@
|
|
|
6
6
|
// Everything recurring is a passive read (#1374) taken through the navigation's lease: the pane every 800 ms and the
|
|
7
7
|
// roster every 5 s while the panel is mounted and the tab is visible, usage every 60 s while its dialog is open. They
|
|
8
8
|
// stop when the panel goes.
|
|
9
|
+
//
|
|
10
|
+
// #2855: a trusted guest's View — read-only: its own agents (the status frame's list, never /api/profiles), the pane
|
|
11
|
+
// every second under a "watching only" line, no identity card, Edit profile or Help. A chat-level guest is told it needs
|
|
12
|
+
// Trusted access; nothing is read.
|
|
9
13
|
import { html, useEffect, useRef, useState } from "./app-html.js";
|
|
10
14
|
import { t } from "./app-i18n.js";
|
|
11
|
-
import { appStore, createStore, useStore } from "./app-store.js";
|
|
15
|
+
import { appStore, createStore, guestPage, guestTrusted, useStore } from "./app-store.js";
|
|
12
16
|
import { useLease } from "./app-ctx.js";
|
|
13
17
|
import { PanelHeader, setTitle, onPanelKey, signInHref } from "./app-shell.js";
|
|
14
18
|
import { InstanceSwitch } from "./instance-switch.js";
|
|
@@ -123,8 +127,11 @@ const MIN_PX = 12, MAX_PX = 22, FIT_FLOOR_PX = 6;
|
|
|
123
127
|
|
|
124
128
|
export function ViewPanel({ route, navKey }) {
|
|
125
129
|
const lease = useLease(navKey);
|
|
126
|
-
const
|
|
127
|
-
const { viewOnly } = useStore(appStore);
|
|
130
|
+
const viewed = useStore(viewStore);
|
|
131
|
+
const { viewOnly, instances, ready } = useStore(appStore);
|
|
132
|
+
const guest = guestPage(), trusted = guest && guestTrusted();
|
|
133
|
+
// #2855: a guest's roster is its own agents, as its status frame lists them.
|
|
134
|
+
const v = guest ? { loaded: ready !== false, error: null, roster: (instances || []).map((i) => ({ instance_name: i.name, display_name: i.display_name, status: i.status })) } : viewed;
|
|
128
135
|
// { kind: "edit" | "usage" | "help", key }: a dialog belongs to the navigation that opened it. The profile editor's
|
|
129
136
|
// draft names one agent; on another navigation it is gone, never retargeted (#1448 review).
|
|
130
137
|
const [dialog, setDialogState] = useState(null);
|
|
@@ -142,6 +149,7 @@ export function ViewPanel({ route, navKey }) {
|
|
|
142
149
|
|
|
143
150
|
// The roster: now, then every 5 s while this panel is mounted and the tab is visible (a passive read).
|
|
144
151
|
useEffect(() => {
|
|
152
|
+
if (guest) return;
|
|
145
153
|
const reads = readStream(lease);
|
|
146
154
|
const load = async () => {
|
|
147
155
|
if (typeof document !== "undefined" && document.hidden) return;
|
|
@@ -180,7 +188,7 @@ export function ViewPanel({ route, navKey }) {
|
|
|
180
188
|
|
|
181
189
|
// Aa and ◔ are every page's (HeaderTools); Help is View's own.
|
|
182
190
|
const actions = html`<${HeaderTools} view=${true} navKey=${navKey} />
|
|
183
|
-
|
|
191
|
+
${guest ? null : html`<button type="button" class="icon-btn" onClick=${() => setDialog("help")} aria-label=${tn("helpButton")} title=${tn("helpButton")}><${Icon} name="info" /></button>`}`;
|
|
184
192
|
|
|
185
193
|
let body;
|
|
186
194
|
if (v.error && !v.roster.length) body = html`<div data-trust="panel-content" class="panel-body center"><${ErrorState} message=${tn("rosterFailedShort")} onRetry=${() => navigate(location.pathname, { replace: true })} /></div>`;
|
|
@@ -188,21 +196,26 @@ export function ViewPanel({ route, navKey }) {
|
|
|
188
196
|
else if (!v.roster.length) body = html`<div data-trust="panel-content" class="panel-body center"><${Empty} icon="view" title=${tn("noInstances")} /></div>`;
|
|
189
197
|
else if (!name) body = html`<div data-trust="panel-content" class="panel-body"><${Skeleton} lines=${6} /></div>`;
|
|
190
198
|
else if (!it) body = html`<div data-trust="panel-content" class="panel-body center"><${Empty} icon="alert" title=${tn("notFound", { name })} hint=${tn("notFoundHint")} /></div>`;
|
|
199
|
+
else if (guest && !trusted) body = html`<div data-trust="panel-content" class="panel-body center"><${Empty} icon="view" title=${tn("guestNeedsTrusted")} hint=${tn("guestNeedsTrustedHint")} /></div>`;
|
|
200
|
+
else if (guest) body = html`<p data-trust="panel-content" class="v-watching" role="note">${tn("guestWatching")}</p>
|
|
201
|
+
<${Terminal} key=${name} name=${name} lease=${lease} density=${density} every=${GUEST_PANE_MS} />`;
|
|
191
202
|
else body = html`<${Terminal} key=${name} name=${name} lease=${lease} density=${density} />
|
|
192
203
|
<${ViewIdentity} it=${it} viewOnly=${viewOnly} onEdit=${() => setDialog("edit")} />`;
|
|
193
204
|
|
|
194
205
|
return html`<div data-effect-panel="view" class="panel p-view">
|
|
195
206
|
<${PanelHeader} title=${it ? (it.display_name || it.instance_name) : tn("title")}
|
|
196
207
|
sub=${it ? html`<span class="status"><span class=${`dot ${it.status === "running" ? "ok" : it.status === "crashed" ? "bad" : "off"}`} aria-hidden="true"></span>${tn(STATUS_KEYS[it.status] || "statusUnknown")}</span>` : null}
|
|
197
|
-
nav=${it && !viewOnly ? html`<${InstanceSwitch} name=${name} current="view" />` : null}>${actions}</${PanelHeader}>
|
|
208
|
+
nav=${it && (guest ? trusted : !viewOnly) ? html`<${InstanceSwitch} name=${name} current="view" guest=${guest} />` : null}>${actions}</${PanelHeader}>
|
|
198
209
|
${body}
|
|
199
210
|
${open === "edit" && it ? html`<${EditProfile} key=${navKey} it=${it} onClose=${() => setDialog(null)} />` : null}
|
|
200
211
|
${open === "help" ? html`<${HelpDialog} onClose=${() => setDialog(null)} />` : null}
|
|
201
212
|
</div>`;
|
|
202
213
|
}
|
|
203
214
|
|
|
215
|
+
/** #2855: how often a guest's View reads the pane (the server allows it two reads a second). */
|
|
216
|
+
const GUEST_PANE_MS = 1000;
|
|
204
217
|
/** The live terminal: the pane every 800 ms (passive), drawn as escaped markup, its font fitted to the pane's grid. */
|
|
205
|
-
function Terminal({ name, lease, density }) {
|
|
218
|
+
function Terminal({ name, lease, density, every = 800 }) {
|
|
206
219
|
const term = useRef(null), pre = useRef(null);
|
|
207
220
|
const grid = useRef({ cols: 0, rows: 0, applied: 0, key: "" });
|
|
208
221
|
const [problem, setProblem] = useState(null);
|
|
@@ -246,7 +259,8 @@ function Terminal({ name, lease, density }) {
|
|
|
246
259
|
try {
|
|
247
260
|
const r = await lease.fetch(`/api/pane/${encodeURIComponent(name)}`);
|
|
248
261
|
if (!reads.live(token)) return;
|
|
249
|
-
if (
|
|
262
|
+
if (r.status === 429) return; // #2855: a guest over its read limit keeps the last frame
|
|
263
|
+
if (!r.ok) { setProblem(r.status === 404 ? tn("paneUnavailable") : r.status === 403 && guestPage() ? tn("guestNeedsTrusted") : tn("paneFailed", { name, status: r.status })); return; }
|
|
250
264
|
const text = await r.text();
|
|
251
265
|
if (!reads.live(token) || !pre.current) return;
|
|
252
266
|
const c = Number(r.headers.get("X-Pane-Cols")), rw = Number(r.headers.get("X-Pane-Rows"));
|
|
@@ -259,7 +273,7 @@ function Terminal({ name, lease, density }) {
|
|
|
259
273
|
finally { reads.end(token); }
|
|
260
274
|
};
|
|
261
275
|
refresh();
|
|
262
|
-
lease.interval(refresh,
|
|
276
|
+
lease.interval(refresh, every);
|
|
263
277
|
let timer = null;
|
|
264
278
|
const schedule = () => { lease.clear(timer); timer = lease.timeout(() => { grid.current.key = ""; fit(); }, 80); };
|
|
265
279
|
lease.on(window, "resize", schedule);
|
|
@@ -210,6 +210,9 @@ register("view", {
|
|
|
210
210
|
"title": "View",
|
|
211
211
|
"notFound": "No instance called “{name}”",
|
|
212
212
|
"notFoundHint": "It may have been deleted or renamed.",
|
|
213
|
+
"guestWatching": "👁 Watching only. You can't type here; send a message in Chat instead.",
|
|
214
|
+
"guestNeedsTrusted": "Watching needs Trusted access",
|
|
215
|
+
"guestNeedsTrustedHint": "Your host gave you chat access to this agent. Ask them to make you Trusted in Settings → Guests.",
|
|
213
216
|
"noInstances": "No instances yet",
|
|
214
217
|
"paneUnavailable": "This instance's terminal is not available (is it stopped?)",
|
|
215
218
|
"rosterFailedShort": "The instance list could not be loaded.",
|
|
@@ -453,6 +456,9 @@ register("view", {
|
|
|
453
456
|
"title": "檢視",
|
|
454
457
|
"notFound": "沒有叫「{name}」的 instance",
|
|
455
458
|
"notFoundHint": "它可能已被刪除或改名。",
|
|
459
|
+
"guestWatching": "👁 只能觀看。這裡不能輸入;要說話請到聊天。",
|
|
460
|
+
"guestNeedsTrusted": "觀看需要「信任」權限",
|
|
461
|
+
"guestNeedsTrustedHint": "主人給你的是這個 agent 的聊天權限。請他在設定 → 訪客把你改成「信任」。",
|
|
456
462
|
"noInstances": "還沒有 instance",
|
|
457
463
|
"paneUnavailable": "無法取得這個 instance 的終端畫面(它是否已停止?)",
|
|
458
464
|
"rosterFailedShort": "無法載入 instance 清單。",
|
|
@@ -63,6 +63,9 @@ export declare function formatDiscordUsageActivity(payload: UsagePayload): strin
|
|
|
63
63
|
/** True if the path belongs to the usage feature (so the caller can skip the
|
|
64
64
|
* global web-token gate and let this module answer, like isViewPath). */
|
|
65
65
|
export declare function isUsagePath(path: string): boolean;
|
|
66
|
+
/** #2855: whether this read forces a refresh — asked for, and not a guest's (it reads the snapshot the fleet keeps, which
|
|
67
|
+
* is refreshed behind it as for anyone). */
|
|
68
|
+
export declare function usageForce(req: IncomingMessage, url: URL): boolean;
|
|
66
69
|
/**
|
|
67
70
|
* Handle a usage API request. Returns true if the request was ours (and has
|
|
68
71
|
* been answered), false otherwise.
|
package/dist/usage/usage-api.js
CHANGED
|
@@ -6,6 +6,7 @@ import { join } from "node:path";
|
|
|
6
6
|
import { getAgendHome } from "../paths.js";
|
|
7
7
|
import { t } from "../locale.js";
|
|
8
8
|
import { usageExpiryText, usageResetSinceText, usageResetText, usageRowName, usageStaleText, usageText } from "./i18n.js";
|
|
9
|
+
import { guestRequestOf } from "../web-guest-access.js";
|
|
9
10
|
/** Keep primary account limits even at zero; hide only unused per-model noise. */
|
|
10
11
|
export function isVisibleUsageMetric(metric) {
|
|
11
12
|
return !(metric.scope === "model"
|
|
@@ -579,6 +580,9 @@ function resetSuffix(resetsAt) {
|
|
|
579
580
|
export function isUsagePath(path) {
|
|
580
581
|
return path === "/api/ai-usage";
|
|
581
582
|
}
|
|
583
|
+
/** #2855: whether this read forces a refresh — asked for, and not a guest's (it reads the snapshot the fleet keeps, which
|
|
584
|
+
* is refreshed behind it as for anyone). */
|
|
585
|
+
export function usageForce(req, url) { return url.searchParams.has("force") && !guestRequestOf(req); }
|
|
582
586
|
/**
|
|
583
587
|
* Handle a usage API request. Returns true if the request was ours (and has
|
|
584
588
|
* been answered), false otherwise.
|
|
@@ -596,7 +600,7 @@ export function handleUsageRequest(req, res, url, ctx) {
|
|
|
596
600
|
}
|
|
597
601
|
// #1585: the panel opens from the last snapshot at once (refreshing behind it); never a browser or proxy cache — the
|
|
598
602
|
// snapshot lives in this process, behind the same gate as every read, and goes when a request may not see it.
|
|
599
|
-
getUsageSnapshot(url
|
|
603
|
+
getUsageSnapshot(usageForce(req, url), ctx.getActiveUsageProviderIds?.(), { allowStale: true })
|
|
600
604
|
.then(payload => json(res, 200, payload))
|
|
601
605
|
.catch(err => {
|
|
602
606
|
ctx.logger.debug({ err }, "ai-usage fetch failed");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-api.js","sourceRoot":"","sources":["../../src/usage/usage-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usage-api.js","sourceRoot":"","sources":["../../src/usage/usage-api.ts"],"names":[],"mappings":"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"}
|
package/dist/view-api.d.ts
CHANGED
|
@@ -135,6 +135,8 @@ export declare function cardPicture(ctx: {
|
|
|
135
135
|
} | null;
|
|
136
136
|
/** Every person-set card, for a status read (never creates profiles.db or its table). */
|
|
137
137
|
export declare function humanCards(dataDir: string): ReturnType<typeof HumanCardStore.all>;
|
|
138
|
+
/** For tests: forget the guests' read counts and shared captures. */
|
|
139
|
+
export declare function resetGuestPanes(): void;
|
|
138
140
|
/** A pane's logical grid size in cells, as tmux sees it. */
|
|
139
141
|
export interface PaneSize {
|
|
140
142
|
cols: number;
|
package/dist/view-api.js
CHANGED
|
@@ -45,6 +45,8 @@ import { evaluateWebRequest } from "./web-auth.js";
|
|
|
45
45
|
import { bannerFocusOk, HumanCardStore, resolveCard } from "./web-card.js";
|
|
46
46
|
import { IdentityColorStore } from "./web-identity-color.js";
|
|
47
47
|
import { effectiveAppearanceLimits } from "./web-appearance-limits.js";
|
|
48
|
+
import { GUEST_PANE_MAX_BYTES, GUEST_PANE_READS, GUEST_PANE_SHARE_MS, guestRequestOf } from "./web-guest-access.js";
|
|
49
|
+
import { OfficeWriteLimiter } from "./web-office-store.js";
|
|
48
50
|
const execFileP = promisify(execFile);
|
|
49
51
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
50
52
|
export function resolveInstanceIdentity(input) {
|
|
@@ -228,6 +230,61 @@ function tmuxArgs(rest) {
|
|
|
228
230
|
const socket = getTmuxSocketName();
|
|
229
231
|
return socket ? ["-L", socket, ...rest] : rest;
|
|
230
232
|
}
|
|
233
|
+
/**
|
|
234
|
+
* #2855: a trusted guest's read-only View. Per account: GUEST_PANE_READS reads a second, of at most `panes` agents at
|
|
235
|
+
* once (agents read within `panesWindowMs`). Every guest viewer of an agent reads one shared capture, at most
|
|
236
|
+
* GUEST_PANE_SHARE_MS old — one tmux read per window however many watch. At most GUEST_PANE_MAX_BYTES (the end of it).
|
|
237
|
+
*/
|
|
238
|
+
const paneReadLimiter = () => new OfficeWriteLimiter(undefined, { perWindow: GUEST_PANE_READS.perWindow, windowMs: GUEST_PANE_READS.windowMs });
|
|
239
|
+
let guestPaneReads = paneReadLimiter();
|
|
240
|
+
const guestPaneAgents = new Map(); // account → agent → when it was last read (ms)
|
|
241
|
+
const sharedCaptures = new Map();
|
|
242
|
+
/** For tests: forget the guests' read counts and shared captures. */
|
|
243
|
+
export function resetGuestPanes() { guestPaneReads = paneReadLimiter(); guestPaneAgents.clear(); sharedCaptures.clear(); }
|
|
244
|
+
function guestPane(ctx, name, guest, res) {
|
|
245
|
+
if (!guest.trusted?.()) {
|
|
246
|
+
json(res, 403, { error: "guest_not_trusted" });
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
const account = `${guest.owner.adapterId}:${guest.owner.userId}`, now = performance.now();
|
|
250
|
+
const agents = guestPaneAgents.get(account) ?? new Map();
|
|
251
|
+
for (const [agent, at] of agents)
|
|
252
|
+
if (now - at >= GUEST_PANE_READS.panesWindowMs)
|
|
253
|
+
agents.delete(agent);
|
|
254
|
+
if (!agents.has(name) && agents.size >= GUEST_PANE_READS.panes) {
|
|
255
|
+
json(res, 429, { error: "guest_view_too_many_agents" });
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
const limit = guestPaneReads.check(account);
|
|
259
|
+
if (!limit.ok) {
|
|
260
|
+
res.setHeader("Retry-After", String(limit.retry_after_s));
|
|
261
|
+
json(res, 429, { error: "guest_view_rate_limited", retry_after_s: limit.retry_after_s });
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
guestPaneReads.record(account);
|
|
265
|
+
agents.set(name, now);
|
|
266
|
+
guestPaneAgents.set(account, agents);
|
|
267
|
+
let shared = sharedCaptures.get(name);
|
|
268
|
+
if (!shared || now - shared.at >= GUEST_PANE_SHARE_MS) {
|
|
269
|
+
shared = { at: now, capture: capturePane(ctx, name) };
|
|
270
|
+
sharedCaptures.set(name, shared);
|
|
271
|
+
shared.capture.catch(() => { if (sharedCaptures.get(name) === shared)
|
|
272
|
+
sharedCaptures.delete(name); });
|
|
273
|
+
}
|
|
274
|
+
shared.capture.then(({ text, size }) => {
|
|
275
|
+
const headers = { "Content-Type": "text/plain; charset=utf-8", "Cache-Control": "private, no-store" };
|
|
276
|
+
if (size) {
|
|
277
|
+
headers["X-Pane-Cols"] = String(size.cols);
|
|
278
|
+
headers["X-Pane-Rows"] = String(size.rows);
|
|
279
|
+
}
|
|
280
|
+
const bytes = Buffer.from(text, "utf8");
|
|
281
|
+
res.writeHead(200, headers);
|
|
282
|
+
// Over the cap: its end, from the first whole line in it (never mid-character or mid-escape sequence).
|
|
283
|
+
const tail = bytes.length > GUEST_PANE_MAX_BYTES ? bytes.subarray(bytes.length - GUEST_PANE_MAX_BYTES) : bytes;
|
|
284
|
+
const line = tail === bytes ? -1 : tail.indexOf(0x0a);
|
|
285
|
+
res.end(line >= 0 ? tail.subarray(line + 1) : tail);
|
|
286
|
+
}, (err) => { ctx.logger.debug({ err, name }, "capture-pane failed (guest)"); res.writeHead(200, { "Content-Type": "text/plain" }); res.end(""); });
|
|
287
|
+
}
|
|
231
288
|
/**
|
|
232
289
|
* Capture a pane's contents (with ANSI escapes) **and** its logical grid size.
|
|
233
290
|
*
|
|
@@ -330,6 +387,13 @@ export function handleViewRequest(req, res, url, ctx) {
|
|
|
330
387
|
json(res, 404, { error: "unknown instance" });
|
|
331
388
|
return true;
|
|
332
389
|
}
|
|
390
|
+
// #2855: a guest (the gate bound it, and checked the agent is in its scope) — Trusted only, within its limits, and
|
|
391
|
+
// reading the capture every guest viewer of this agent shares.
|
|
392
|
+
const guest = guestRequestOf(req);
|
|
393
|
+
if (guest) {
|
|
394
|
+
guestPane(ctx, name, guest, res);
|
|
395
|
+
return true;
|
|
396
|
+
}
|
|
333
397
|
capturePane(ctx, name)
|
|
334
398
|
.then(({ text, size }) => {
|
|
335
399
|
const headers = { "Content-Type": "text/plain; charset=utf-8" };
|