@songsid/agend 2.2.0 → 2.2.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-instructions.md +5 -2
- package/dist/agent-cli.js +284 -2
- package/dist/agent-cli.js.map +1 -1
- package/dist/agent-endpoint.d.ts +2 -0
- package/dist/agent-endpoint.js +29 -0
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-file-read.d.ts +38 -0
- package/dist/agent-file-read.js +317 -0
- package/dist/agent-file-read.js.map +1 -0
- package/dist/agent-whats-new.d.ts +11 -0
- package/dist/agent-whats-new.js +34 -2
- package/dist/agent-whats-new.js.map +1 -1
- package/dist/atomic-write.js +9 -1
- package/dist/atomic-write.js.map +1 -1
- package/dist/auth-api.d.ts +30 -1
- package/dist/auth-api.js +61 -12
- package/dist/auth-api.js.map +1 -1
- package/dist/authority/authority-state.d.ts +38 -0
- package/dist/authority/authority-state.js +114 -0
- package/dist/authority/authority-state.js.map +1 -0
- package/dist/authority/session-authorizations.d.ts +43 -0
- package/dist/authority/session-authorizations.js +102 -0
- package/dist/authority/session-authorizations.js.map +1 -0
- package/dist/authority/web-authority.d.ts +120 -0
- package/dist/authority/web-authority.js +157 -0
- package/dist/authority/web-authority.js.map +1 -0
- package/dist/backend/antigravity.js +3 -3
- package/dist/backend/antigravity.js.map +1 -1
- package/dist/backend/claude-code.d.ts +2 -2
- package/dist/backend/claude-code.js +10 -5
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/launch-effort.js +1 -1
- package/dist/backend/launch-effort.js.map +1 -1
- package/dist/backend/muse.js +10 -2
- package/dist/backend/muse.js.map +1 -1
- package/dist/backend/types.d.ts +14 -0
- package/dist/backend/types.js +25 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/backend-availability.d.ts +120 -0
- package/dist/backend-availability.js +396 -0
- package/dist/backend-availability.js.map +1 -0
- package/dist/backend-command.d.ts +21 -3
- package/dist/backend-command.js +23 -4
- package/dist/backend-command.js.map +1 -1
- package/dist/bundled-skills.d.ts +14 -0
- package/dist/bundled-skills.js +29 -0
- package/dist/bundled-skills.js.map +1 -0
- package/dist/cache-analysis.d.ts +47 -1
- package/dist/cache-analysis.js +68 -8
- package/dist/cache-analysis.js.map +1 -1
- package/dist/cache-ledger.d.ts +16 -3
- package/dist/cache-ledger.js +33 -13
- package/dist/cache-ledger.js.map +1 -1
- package/dist/cache-report-tool.d.ts +17 -0
- package/dist/cache-report-tool.js +40 -0
- package/dist/cache-report-tool.js.map +1 -0
- package/dist/cache-service.d.ts +70 -3
- package/dist/cache-service.js +178 -17
- package/dist/cache-service.js.map +1 -1
- package/dist/channel/adapters/discord-client-retirement.d.ts +5 -0
- package/dist/channel/adapters/discord-client-retirement.js +57 -0
- package/dist/channel/adapters/discord-client-retirement.js.map +1 -0
- package/dist/channel/adapters/discord.d.ts +11 -0
- package/dist/channel/adapters/discord.js +66 -6
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/adapters/telegram.d.ts +8 -1
- package/dist/channel/adapters/telegram.js +74 -4
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/mcp-tools.js +48 -2
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/channel/types.d.ts +21 -0
- package/dist/classic-channel-manager.d.ts +10 -5
- package/dist/classic-channel-manager.js +12 -9
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +142 -110
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +119 -4
- package/dist/config-validator.js.map +1 -1
- package/dist/daemon.d.ts +10 -0
- package/dist/daemon.js +327 -31
- package/dist/daemon.js.map +1 -1
- package/dist/decision-list.d.ts +25 -0
- package/dist/decision-list.js +30 -0
- package/dist/decision-list.js.map +1 -0
- package/dist/delivery-outbox.d.ts +10 -0
- package/dist/delivery-outbox.js +12 -1
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/fleet-context.d.ts +15 -0
- package/dist/fleet-manager.d.ts +514 -12
- package/dist/fleet-manager.js +1885 -163
- package/dist/fleet-manager.js.map +1 -1
- package/dist/fleet-process-handlers.d.ts +18 -0
- package/dist/fleet-process-handlers.js +69 -0
- package/dist/fleet-process-handlers.js.map +1 -0
- package/dist/fleet-traffic.d.ts +74 -0
- package/dist/fleet-traffic.js +196 -0
- package/dist/fleet-traffic.js.map +1 -0
- package/dist/general-knowledge/skills/credential-profiles/SKILL.md +20 -5
- package/dist/general-knowledge/skills/cross-instance-messaging/SKILL.md +6 -1
- package/dist/general-knowledge/skills/multi-channel/SKILL.md +3 -2
- package/dist/general-knowledge/skills/persona-emoji/SKILL.md +1 -1
- package/dist/general-knowledge/skills/web-appearance/SKILL.md +492 -0
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +482 -0
- package/dist/general-knowledge/skills/worker-collaboration/SKILL.md +1 -1
- package/dist/human-delivery-receipts.d.ts +24 -1
- package/dist/human-delivery-receipts.js +64 -11
- package/dist/human-delivery-receipts.js.map +1 -1
- package/dist/instance-avatar.js +3 -0
- package/dist/instance-avatar.js.map +1 -1
- package/dist/instance-config-impact.js +6 -1
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +2 -0
- package/dist/instance-lifecycle.js +20 -10
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/instance-names.d.ts +4 -0
- package/dist/instance-names.js +12 -0
- package/dist/instance-names.js.map +1 -0
- package/dist/instructions.d.ts +12 -1
- package/dist/instructions.js +13 -2
- package/dist/instructions.js.map +1 -1
- package/dist/locale.js +100 -8
- package/dist/locale.js.map +1 -1
- package/dist/ls-attach-resolve.d.ts +95 -0
- package/dist/ls-attach-resolve.js +174 -0
- package/dist/ls-attach-resolve.js.map +1 -0
- package/dist/memory-hogs.d.ts +27 -0
- package/dist/memory-hogs.js +124 -0
- package/dist/memory-hogs.js.map +1 -0
- package/dist/needs-you-hub.d.ts +4 -0
- package/dist/needs-you-hub.js +31 -6
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you.d.ts +1 -13
- package/dist/needs-you.js +3 -37
- package/dist/needs-you.js.map +1 -1
- package/dist/outbound-handlers.d.ts +15 -0
- package/dist/outbound-handlers.js +152 -11
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +228 -4
- package/dist/outbound-schemas.js +147 -1
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/public-web-gateway.js +21 -1
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/public-web-link.d.ts +9 -0
- package/dist/public-web-link.js +8 -0
- package/dist/public-web-link.js.map +1 -1
- package/dist/quickstart-api.d.ts +10 -1
- package/dist/quickstart-api.js +12 -4
- package/dist/quickstart-api.js.map +1 -1
- package/dist/reply-buttons-controller.d.ts +4 -0
- package/dist/reply-buttons-controller.js +2 -2
- package/dist/reply-buttons-controller.js.map +1 -1
- package/dist/repo-worktree-guard.d.ts +36 -0
- package/dist/repo-worktree-guard.js +143 -0
- package/dist/repo-worktree-guard.js.map +1 -0
- package/dist/restart-progress.d.ts +65 -1
- package/dist/restart-progress.js +236 -10
- package/dist/restart-progress.js.map +1 -1
- package/dist/rollout-index.d.ts +5 -0
- package/dist/rollout-index.js +26 -5
- package/dist/rollout-index.js.map +1 -1
- package/dist/scheduler/scheduler.d.ts +70 -1
- package/dist/scheduler/scheduler.js +256 -17
- package/dist/scheduler/scheduler.js.map +1 -1
- package/dist/service-installer.d.ts +2 -1
- package/dist/service-installer.js +18 -3
- package/dist/service-installer.js.map +1 -1
- package/dist/settings-api.d.ts +23 -0
- package/dist/settings-api.js +233 -2
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +112 -0
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-effect.js +32 -2
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-http-confirmation.js +5 -0
- package/dist/settings-http-confirmation.js.map +1 -1
- package/dist/tmux-manager.d.ts +5 -0
- package/dist/tmux-manager.js +16 -0
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tool-permissions.d.ts +4 -6
- package/dist/tool-permissions.js +100 -2
- package/dist/tool-permissions.js.map +1 -1
- package/dist/topic-commands.d.ts +17 -7
- package/dist/topic-commands.js +39 -21
- package/dist/topic-commands.js.map +1 -1
- package/dist/topic-link.d.ts +128 -0
- package/dist/topic-link.js +269 -0
- package/dist/topic-link.js.map +1 -0
- package/dist/types.d.ts +61 -1
- package/dist/ui/app-effects.js +245 -0
- package/dist/ui/chat-ambient.js +307 -0
- package/dist/ui/chat-effect-posters.js +42 -0
- package/dist/ui/chat-effects.js +160 -0
- package/dist/ui/chat-live-replies.js +58 -0
- package/dist/ui/chat-render.js +25 -7
- package/dist/ui/chat-store.js +41 -13
- package/dist/ui/chat-strings.js +86 -2
- package/dist/ui/chat-thread.js +204 -37
- package/dist/ui/chat-tour.js +1 -1
- package/dist/ui/effect-trial-controller.js +124 -0
- package/dist/ui/effect-trial-offer.js +31 -0
- package/dist/ui/effect-trial-panel.js +40 -0
- package/dist/ui/fleet-cache.js +23 -1
- package/dist/ui/fleet-canvas-layout.js +111 -0
- package/dist/ui/fleet-canvas.js +525 -0
- package/dist/ui/fleet-org.js +27 -12
- package/dist/ui/fleet-traffic.js +343 -0
- package/dist/ui/fleet-usage.js +401 -0
- package/dist/ui/image-lightbox.js +1 -1
- package/dist/ui/panel-chat.js +252 -58
- package/dist/ui/panel-details.js +20 -6
- package/dist/ui/panel-fleet.js +45 -19
- package/dist/ui/panel-log.js +6 -6
- package/dist/ui/panel-needs.js +3 -3
- package/dist/ui/panel-settings.js +58 -13
- package/dist/ui/preview-panel.js +25 -9
- package/dist/ui/preview.js +3 -2
- package/dist/ui/settings-appearance.js +349 -0
- package/dist/ui/settings-catalog.js +92 -0
- package/dist/ui/settings-dialogs.js +40 -12
- package/dist/ui/settings-effects.js +202 -0
- package/dist/ui/settings-guests.js +117 -0
- package/dist/ui/settings-learn.js +25 -0
- package/dist/ui/settings-model.js +15 -6
- package/dist/ui/settings-mods.js +271 -0
- package/dist/ui/settings-owner-effects.js +80 -0
- package/dist/ui/settings-strings.js +335 -10
- package/dist/ui/settings-web-authority.js +91 -0
- package/dist/ui/shared/agend-auth.js +28 -4
- package/dist/ui/shared/agent-widget.js +248 -0
- package/dist/ui/shared/app-i18n.js +6 -2
- package/dist/ui/shared/app-prefs.js +34 -13
- package/dist/ui/shared/app-route.js +42 -2
- package/dist/ui/shared/app-session.js +3 -1
- package/dist/ui/shared/app-shell.js +119 -41
- package/dist/ui/shared/app-store.js +28 -1
- package/dist/ui/shared/app-stream.js +14 -7
- package/dist/ui/shared/app-themes.js +206 -0
- package/dist/ui/shared/app.css +566 -5
- package/dist/ui/shared/app.js +23 -10
- package/dist/ui/shared/card-strings.js +32 -0
- package/dist/ui/shared/effect-app-runtime.js +297 -0
- package/dist/ui/shared/effect-baseline.js +64 -0
- package/dist/ui/shared/effect-chat-runtime.js +167 -0
- package/dist/ui/shared/effect-cursor.js +125 -0
- package/dist/ui/shared/effect-frame.js +146 -0
- package/dist/ui/shared/effect-geometry.js +137 -0
- package/dist/ui/shared/effect-host-style.js +10 -0
- package/dist/ui/shared/effect-owner-regions.js +74 -0
- package/dist/ui/shared/effect-owner-source.js +122 -0
- package/dist/ui/shared/effect-policy.js +151 -0
- package/dist/ui/shared/effect-poster-reader.js +98 -0
- package/dist/ui/shared/effect-posters.js +117 -0
- package/dist/ui/shared/effect-profiler.js +184 -0
- package/dist/ui/shared/effect-profiles.js +65 -0
- package/dist/ui/shared/effect-registry.js +543 -0
- package/dist/ui/shared/effect-runtime-loader.js +234 -0
- package/dist/ui/shared/effect-safety.js +153 -0
- package/dist/ui/shared/effect-stock-snapshot.js +43 -0
- package/dist/ui/shared/effect-stock-trust.js +217 -0
- package/dist/ui/shared/effect-trial-shadow.js +62 -0
- package/dist/ui/shared/effect-trial-source.js +103 -0
- package/dist/ui/shared/effect-trial-stage.js +170 -0
- package/dist/ui/shared/effect-trial.css +40 -0
- package/dist/ui/shared/fx-motion.js +67 -0
- package/dist/ui/shared/header-tools.js +1 -1
- package/dist/ui/shared/identity-card.js +273 -0
- package/dist/ui/shared/identity-color.js +261 -0
- package/dist/ui/shared/instance-nav.js +215 -41
- package/dist/ui/shared/owner-css.js +250 -0
- package/dist/ui/shared/owner-effect-prefs.js +117 -0
- package/dist/ui/shared/panel-view.js +103 -10
- package/dist/ui/shared/signin.js +2 -0
- package/dist/ui/shared/tokens.css +9 -3
- package/dist/ui/shared/ui-dialog.js +1 -1
- package/dist/ui/shared/ui-icons.js +3 -0
- package/dist/ui/shared/ui-menu.js +1 -1
- package/dist/ui/shared/ui-toast.js +1 -1
- package/dist/ui/shared/usage-dialog.js +22 -2
- package/dist/ui/shared/view-strings.js +98 -2
- package/dist/ui/shared/web-authorize.js +151 -0
- package/dist/ui/signin.html +1 -0
- package/dist/ui/web-terminal/terminal.css +4 -4
- package/dist/usage/providers.d.ts +28 -0
- package/dist/usage/providers.js +126 -36
- package/dist/usage/providers.js.map +1 -1
- package/dist/usage-report.d.ts +158 -0
- package/dist/usage-report.js +226 -0
- package/dist/usage-report.js.map +1 -0
- package/dist/usage-rollup.d.ts +51 -0
- package/dist/usage-rollup.js +168 -0
- package/dist/usage-rollup.js.map +1 -0
- package/dist/view-api.d.ts +68 -0
- package/dist/view-api.js +249 -8
- package/dist/view-api.js.map +1 -1
- package/dist/web-ambient.d.ts +72 -0
- package/dist/web-ambient.js +161 -0
- package/dist/web-ambient.js.map +1 -0
- package/dist/web-api.d.ts +117 -7
- package/dist/web-api.js +1283 -70
- package/dist/web-api.js.map +1 -1
- package/dist/web-appearance-limits.d.ts +82 -0
- package/dist/web-appearance-limits.js +83 -0
- package/dist/web-appearance-limits.js.map +1 -0
- package/dist/web-appearance-policy.d.ts +64 -0
- package/dist/web-appearance-policy.js +87 -0
- package/dist/web-appearance-policy.js.map +1 -0
- package/dist/web-appearance-tools.d.ts +53 -0
- package/dist/web-appearance-tools.js +124 -0
- package/dist/web-appearance-tools.js.map +1 -0
- package/dist/web-appearance-view.d.ts +124 -0
- package/dist/web-appearance-view.js +278 -0
- package/dist/web-appearance-view.js.map +1 -0
- package/dist/web-appearance.d.ts +93 -0
- package/dist/web-appearance.js +373 -0
- package/dist/web-appearance.js.map +1 -0
- package/dist/web-asset-parts.d.ts +93 -0
- package/dist/web-asset-parts.js +133 -0
- package/dist/web-asset-parts.js.map +1 -0
- package/dist/web-auth.js +20 -2
- package/dist/web-auth.js.map +1 -1
- package/dist/web-card.d.ts +110 -0
- package/dist/web-card.js +266 -0
- package/dist/web-card.js.map +1 -0
- package/dist/web-channel-echo.d.ts +7 -1
- package/dist/web-channel-echo.js +6 -2
- package/dist/web-channel-echo.js.map +1 -1
- package/dist/web-chat-history.d.ts +63 -0
- package/dist/web-chat-history.js +109 -6
- package/dist/web-chat-history.js.map +1 -1
- package/dist/web-commands.d.ts +1 -0
- package/dist/web-effect-bootstrap.d.ts +12 -0
- package/dist/web-effect-bootstrap.js +49 -0
- package/dist/web-effect-bootstrap.js.map +1 -0
- package/dist/web-effect-bundle.d.ts +28 -0
- package/dist/web-effect-bundle.js +171 -0
- package/dist/web-effect-bundle.js.map +1 -0
- package/dist/web-effect-canonical.d.ts +8 -0
- package/dist/web-effect-canonical.js +27 -0
- package/dist/web-effect-canonical.js.map +1 -0
- package/dist/web-effect-library.d.ts +114 -0
- package/dist/web-effect-library.js +530 -0
- package/dist/web-effect-library.js.map +1 -0
- package/dist/web-effect-playback.d.ts +30 -0
- package/dist/web-effect-playback.js +71 -0
- package/dist/web-effect-playback.js.map +1 -0
- package/dist/web-effect-poster.d.ts +8 -0
- package/dist/web-effect-poster.js +52 -0
- package/dist/web-effect-poster.js.map +1 -0
- package/dist/web-effect-profiles.d.ts +118 -0
- package/dist/web-effect-profiles.js +180 -0
- package/dist/web-effect-profiles.js.map +1 -0
- package/dist/web-effect-service.d.ts +93 -0
- package/dist/web-effect-service.js +335 -0
- package/dist/web-effect-service.js.map +1 -0
- package/dist/web-effect-tools.d.ts +48 -0
- package/dist/web-effect-tools.js +129 -0
- package/dist/web-effect-tools.js.map +1 -0
- package/dist/web-effect-trials.d.ts +86 -0
- package/dist/web-effect-trials.js +204 -0
- package/dist/web-effect-trials.js.map +1 -0
- package/dist/web-effect-upload.d.ts +27 -0
- package/dist/web-effect-upload.js +185 -0
- package/dist/web-effect-upload.js.map +1 -0
- package/dist/web-effect-worker.d.ts +8 -0
- package/dist/web-effect-worker.js +170 -0
- package/dist/web-effect-worker.js.map +1 -0
- package/dist/web-effect.d.ts +103 -0
- package/dist/web-effect.js +153 -0
- package/dist/web-effect.js.map +1 -0
- package/dist/web-guest-access.d.ts +125 -0
- package/dist/web-guest-access.js +234 -0
- package/dist/web-guest-access.js.map +1 -0
- package/dist/web-guest-rooms.d.ts +82 -0
- package/dist/web-guest-rooms.js +135 -0
- package/dist/web-guest-rooms.js.map +1 -0
- package/dist/web-identity-color.d.ts +87 -0
- package/dist/web-identity-color.js +209 -0
- package/dist/web-identity-color.js.map +1 -0
- package/dist/web-identity-palette.d.ts +113 -0
- package/dist/web-identity-palette.js +84 -0
- package/dist/web-identity-palette.js.map +1 -0
- package/dist/web-image-meta.d.ts +38 -0
- package/dist/web-image-meta.js +262 -0
- package/dist/web-image-meta.js.map +1 -0
- package/dist/web-login.d.ts +47 -0
- package/dist/web-login.js +115 -0
- package/dist/web-login.js.map +1 -1
- package/dist/web-mod-agent.d.ts +50 -0
- package/dist/web-mod-agent.js +207 -0
- package/dist/web-mod-agent.js.map +1 -0
- package/dist/web-mod-bundle.d.ts +157 -0
- package/dist/web-mod-bundle.js +529 -0
- package/dist/web-mod-bundle.js.map +1 -0
- package/dist/web-mod-export.d.ts +68 -0
- package/dist/web-mod-export.js +100 -0
- package/dist/web-mod-export.js.map +1 -0
- package/dist/web-mod-store.d.ts +289 -0
- package/dist/web-mod-store.js +638 -0
- package/dist/web-mod-store.js.map +1 -0
- package/dist/web-org.d.ts +3 -3
- package/dist/web-org.js +11 -17
- package/dist/web-org.js.map +1 -1
- package/dist/web-owner-css-store.d.ts +222 -0
- package/dist/web-owner-css-store.js +440 -0
- package/dist/web-owner-css-store.js.map +1 -0
- package/dist/web-owner-css.d.ts +58 -0
- package/dist/web-owner-css.js +552 -0
- package/dist/web-owner-css.js.map +1 -0
- package/dist/web-prefs.d.ts +62 -0
- package/dist/web-prefs.js +232 -36
- package/dist/web-prefs.js.map +1 -1
- package/dist/web-preview.d.ts +15 -3
- package/dist/web-preview.js +28 -9
- package/dist/web-preview.js.map +1 -1
- package/dist/web-returning-device.d.ts +41 -0
- package/dist/web-returning-device.js +57 -5
- package/dist/web-returning-device.js.map +1 -1
- package/dist/web-session-authorization.d.ts +132 -0
- package/dist/web-session-authorization.js +193 -0
- package/dist/web-session-authorization.js.map +1 -0
- package/dist/web-session.d.ts +70 -10
- package/dist/web-session.js +137 -22
- package/dist/web-session.js.map +1 -1
- package/dist/web-settings-patch.d.ts +67 -2
- package/dist/web-settings-patch.js +196 -1
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/web-settings-tools.d.ts +89 -0
- package/dist/web-settings-tools.js +273 -0
- package/dist/web-settings-tools.js.map +1 -0
- package/dist/web-shell-routes.d.ts +2 -2
- package/dist/web-shell-routes.js +2 -2
- package/dist/web-shell-routes.js.map +1 -1
- package/dist/web-theme-store.d.ts +257 -0
- package/dist/web-theme-store.js +627 -0
- package/dist/web-theme-store.js.map +1 -0
- package/dist/web-theme.d.ts +123 -0
- package/dist/web-theme.js +416 -0
- package/dist/web-theme.js.map +1 -0
- package/dist/web-upload.d.ts +13 -0
- package/dist/web-upload.js +39 -3
- package/dist/web-upload.js.map +1 -1
- package/dist/web-widget.d.ts +72 -0
- package/dist/web-widget.js +245 -0
- package/dist/web-widget.js.map +1 -0
- package/dist/workflow-templates/default.md +1 -1
- package/package.json +1 -1
- package/templates/systemd.service.ejs +8 -0
package/dist/fleet-manager.d.ts
CHANGED
|
@@ -6,10 +6,11 @@ import type { CpuProfile } from "./cpu-profile.js";
|
|
|
6
6
|
import { type FleetMemory } from "./process-memory.js";
|
|
7
7
|
import { MemoryPressure, type MemoryPressureSnapshot } from "./memory-pressure.js";
|
|
8
8
|
import { ReplyDeduper } from "./reply-dedup.js";
|
|
9
|
-
import type { FleetConfig, RawFleetConfig, InstanceConfig } from "./types.js";
|
|
9
|
+
import type { FleetConfig, RawFleetConfig, InstanceConfig, WebVerifiedAuthorityConfig } from "./types.js";
|
|
10
10
|
import { type DeliveryStatus, type GuildEmoji, type GuildEmojiGroup, type ResolvedStatusEmojis } from "./status-emojis.js";
|
|
11
11
|
import { type RouteTarget } from "./fleet-context.js";
|
|
12
12
|
import { EventLog } from "./event-log.js";
|
|
13
|
+
import { BackendAvailabilityStore, type AvailabilityProbes, type BackendAvailability } from "./backend-availability.js";
|
|
13
14
|
import { AdapterWorld } from "./adapter-world.js";
|
|
14
15
|
import { CostGuard } from "./cost-guard.js";
|
|
15
16
|
import { IpcClient } from "./channel/ipc-bridge.js";
|
|
@@ -57,11 +58,24 @@ import { type LogAnswer, type LogQuery } from "./log-service.js";
|
|
|
57
58
|
import { WebChatHistory } from "./web-chat-history.js";
|
|
58
59
|
import { SeenUsers, type MentionNames, type MentionQuery } from "./web-mentions.js";
|
|
59
60
|
import { WebPrefsStore } from "./web-prefs.js";
|
|
61
|
+
import { OwnerCssStore } from "./web-owner-css-store.js";
|
|
62
|
+
import { ThemeStore } from "./web-theme-store.js";
|
|
63
|
+
import { WebAppearance } from "./web-appearance.js";
|
|
64
|
+
import { WebEffectLibrary } from "./web-effect-library.js";
|
|
65
|
+
import { WebEffectTrials } from "./web-effect-trials.js";
|
|
66
|
+
import { WebEffectService } from "./web-effect-service.js";
|
|
67
|
+
import { WebEffectProfiles } from "./web-effect-profiles.js";
|
|
68
|
+
import { WebEffectTools } from "./web-effect-tools.js";
|
|
60
69
|
import { type WebAccount } from "./web-profile.js";
|
|
61
70
|
import type { WebPerson as WebPersonView } from "./web-api.js";
|
|
62
71
|
import { ReplyButtonsController } from "./reply-buttons-controller.js";
|
|
63
72
|
import { WebFileLedger } from "./web-upload.js";
|
|
73
|
+
import { AppearanceTools } from "./web-appearance-tools.js";
|
|
74
|
+
import { ModStore } from "./web-mod-store.js";
|
|
75
|
+
import { AgentMods } from "./web-mod-agent.js";
|
|
64
76
|
import { type CachedImage } from "./web-images.js";
|
|
77
|
+
import { WebSettingsTools } from "./web-settings-tools.js";
|
|
78
|
+
import { type Delegation, type TrafficItem } from "./fleet-traffic.js";
|
|
65
79
|
import { type RawConfigPatch } from "./settings-api.js";
|
|
66
80
|
import { type AgentEndpointContext } from "./agent-endpoint.js";
|
|
67
81
|
import { ClassicChannelManager } from "./classic-channel-manager.js";
|
|
@@ -73,8 +87,14 @@ import { TargetQueueWorker } from "./target-queue-worker.js";
|
|
|
73
87
|
import { resolveDeliveryWorkerMode } from "./types.js";
|
|
74
88
|
import { type WebNeedsItem } from "./needs-you-hub.js";
|
|
75
89
|
import { type OrgChart } from "./web-org.js";
|
|
90
|
+
import { type MemoryHog } from "./memory-hogs.js";
|
|
76
91
|
import { type CacheReport } from "./cache-service.js";
|
|
77
92
|
import { type WebCommandResult } from "./web-commands.js";
|
|
93
|
+
import { type SessionRecord } from "./web-session.js";
|
|
94
|
+
import { VERIFIED_SESSION_HOURS, type HumanAuthority, type WebAuthorityRefusal, type WebAuthorityResult, type WebPeer } from "./authority/web-authority.js";
|
|
95
|
+
import { type AuthorityState } from "./authority/authority-state.js";
|
|
96
|
+
import { type SessionAuthorization } from "./authority/session-authorizations.js";
|
|
97
|
+
import { SessionAuthorizationRequests, type AuthorizationAskRefusal } from "./web-session-authorization.js";
|
|
78
98
|
import { type ReturningDevice } from "./web-returning-device.js";
|
|
79
99
|
import { type PreviewAvailability } from "./web-preview.js";
|
|
80
100
|
import { type ConnectionMetadata, type ConnectionBinding, type BindingProbe, type SecretApplyJob, type ProviderSecretApplyJob } from "./connection-secrets.js";
|
|
@@ -101,12 +121,10 @@ export declare function selectLruEvictions(warm: string[], cap: number, opts: {
|
|
|
101
121
|
lastInboundAt: (name: string) => number;
|
|
102
122
|
}): string[];
|
|
103
123
|
/**
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
* Startup cleanup reaps windows matching this that are no longer in
|
|
107
|
-
* fleet.yaml. Keep in sync with `uniqueInstanceName` — every name it emits
|
|
108
|
-
* must match here, or a deleted instance's CLI is left running (#1305 P2-3).
|
|
124
|
+
* #2163: whether `dir` is inside AgEnD's own workspaces (<AGEND_HOME>/workspaces/<name>/…), compared after resolving
|
|
125
|
+
* symlinks on both sides — including a missing folder's existing ancestors — so a link elsewhere is not inside, nor is a broken link.
|
|
109
126
|
*/
|
|
127
|
+
export declare function insideManagedWorkspaces(dir: string, agendHome?: string): boolean;
|
|
110
128
|
export declare function isOrphanInstanceWindowName(name: string): boolean;
|
|
111
129
|
/** restartSingleInstance's options. `carry` (#1753): a credential-profile switch; its outcome is written into `result`. */
|
|
112
130
|
export interface RestartOpts {
|
|
@@ -390,7 +408,10 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
390
408
|
/** At most one reconnect/backoff loop may exist per instance. */
|
|
391
409
|
private ipcReconnectInFlight;
|
|
392
410
|
private adapterRestarting;
|
|
411
|
+
/** #2175: this boot's progress message, whose completion may still be owed by its background retry. */
|
|
412
|
+
private startupProgress;
|
|
393
413
|
private adapterState;
|
|
414
|
+
private adapterRetryInFlight;
|
|
394
415
|
/** Web Settings secret rotation is deliberately separate from reconnect
|
|
395
416
|
* recovery: a rotation must build a fresh provider client with the new token,
|
|
396
417
|
* and stale callbacks from the old client must not win. */
|
|
@@ -427,10 +448,16 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
427
448
|
private connectionBindingInFlight;
|
|
428
449
|
private collabInstances;
|
|
429
450
|
private healthServer;
|
|
451
|
+
/** #2118: independent of HTML preview availability/port; fixed bootstrap only, no effect resources. */
|
|
452
|
+
private readonly effectBootstrap;
|
|
453
|
+
/** Fixed trusted document coherence, independent of the HTML preview listener; never a resource grant. */
|
|
454
|
+
get effectBoot(): string;
|
|
430
455
|
private healthServerDrain;
|
|
431
456
|
/** #1306: the preview listener (health_port + 1 by default), and whether it is listening. */
|
|
432
457
|
private previewListener;
|
|
433
458
|
private previewListening;
|
|
459
|
+
/** The preview listener could not open its port: "<port>: <error code>", for the page (#2061 follow-up); null otherwise. */
|
|
460
|
+
private previewListenError;
|
|
434
461
|
/** The ports the preview listener was started for, and the inputs it was built from (a reload compares them). */
|
|
435
462
|
private previewPorts;
|
|
436
463
|
private previewInputs;
|
|
@@ -449,6 +476,9 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
449
476
|
/** Injectable only to keep the chat→CLI reload hand-off deterministic in tests. */
|
|
450
477
|
private fullRestartLauncher;
|
|
451
478
|
private eventLogPruneTimer;
|
|
479
|
+
/** #1920 §3.2: the background reads of guests' ClassicBot room membership (a minute's tick; reads only what is due). */
|
|
480
|
+
private guestRoomsTimer;
|
|
481
|
+
private guestRoomMembership;
|
|
452
482
|
private outboxPruneTimer;
|
|
453
483
|
private logRotateTimer;
|
|
454
484
|
private discordPresenceTimer;
|
|
@@ -463,6 +493,17 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
463
493
|
private startedAt;
|
|
464
494
|
private stormOpenNotifyTimer;
|
|
465
495
|
private memoryLogAt;
|
|
496
|
+
/**
|
|
497
|
+
* #2015: while host memory is elevated or critical, the processes holding the most in the fleet's service and whose
|
|
498
|
+
* they are (an instance, the fleet, tmux), for the pressure log, /health and the dashboard — never chat (#1712).
|
|
499
|
+
* Rescanned at most once a minute (async, one at a time); cleared when pressure ends.
|
|
500
|
+
*/
|
|
501
|
+
private memoryTop;
|
|
502
|
+
private memoryTopScan;
|
|
503
|
+
/** The scan (a seam for tests: they give it a fake /proc). */
|
|
504
|
+
private memoryHogScan;
|
|
505
|
+
/** The fleet's own tmux session exists (only then are its panes read: a fleet that never started has none). */
|
|
506
|
+
private tmuxSessionEnsured;
|
|
466
507
|
private memoryDebugAt;
|
|
467
508
|
private memoryLogLevel;
|
|
468
509
|
/** #1685: the host_memory value the last status frame carried, so a change re-sends the frame. */
|
|
@@ -512,6 +553,63 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
512
553
|
*/
|
|
513
554
|
private webNameReserved;
|
|
514
555
|
private webNameTaken;
|
|
556
|
+
private themeStoreInstance?;
|
|
557
|
+
private webAppearanceService?;
|
|
558
|
+
/** #1629: every instance's theme, placements, assets and lock (web-themes.json). */
|
|
559
|
+
get themeStore(): ThemeStore;
|
|
560
|
+
/** #1629: the theme tools, a person's reset and lock, and the one appearance rate limiter (shared with effects). */
|
|
561
|
+
get webAppearance(): WebAppearance;
|
|
562
|
+
private effectLibraryInstance?;
|
|
563
|
+
private effectTrialsInstance?;
|
|
564
|
+
/** Lazy, single-owner storage. Register every host reference source before any operation can collect. */
|
|
565
|
+
get effectLibrary(): WebEffectLibrary;
|
|
566
|
+
/** Volatile Try offers and session-bound runs share this library. */
|
|
567
|
+
get effectTrials(): WebEffectTrials;
|
|
568
|
+
private effectProfilesInstance?;
|
|
569
|
+
get effectProfiles(): WebEffectProfiles;
|
|
570
|
+
private effectServiceInstance?;
|
|
571
|
+
get effectService(): WebEffectService;
|
|
572
|
+
private effectToolsService?;
|
|
573
|
+
/** Caller identity is supplied only by the owned IPC connection / verified agent endpoint token. */
|
|
574
|
+
get effectTools(): WebEffectTools;
|
|
575
|
+
private appearanceToolsService?;
|
|
576
|
+
/** #1629 r4 §1: get_web_appearance / preview_web_appearance — the caller's own look, resolved as the page resolves it. */
|
|
577
|
+
get appearanceTools(): AppearanceTools;
|
|
578
|
+
/** #1958: a profile, card or colour write (view-api.ts) landed: every open page gets a fresh status frame. */
|
|
579
|
+
identityChanged(): void;
|
|
580
|
+
/** A fleet.yaml instance (own key) or a ClassicBot room, now (#1629: a person's reset/lock names one). */
|
|
581
|
+
isKnownInstance(name: string): boolean;
|
|
582
|
+
private modStore?;
|
|
583
|
+
/**
|
|
584
|
+
* #1629 r4-5 / B2: installed mods use the same validated library and scoped holder claims as direct uploads.
|
|
585
|
+
*/
|
|
586
|
+
get mods(): ModStore;
|
|
587
|
+
private agentModsService?;
|
|
588
|
+
/** #1629 r4-5b: export_web_mod / propose_web_mod — the caller's own look as a file, and a proposal for a person. */
|
|
589
|
+
get agentMods(): AgentMods;
|
|
590
|
+
/**
|
|
591
|
+
* #1629 r4-5c: an effect as this person may carry it away in an export — their own claim, or one a person shared —
|
|
592
|
+
* read with their principal (Sol's ACL). Being able to view or run a placed effect never grants packaging someone
|
|
593
|
+
* else's private claim: the library's reference read is runtime access, not an export path. Null: not theirs.
|
|
594
|
+
*/
|
|
595
|
+
modPlacedEffect(person: string, id: string): {
|
|
596
|
+
name: string;
|
|
597
|
+
files: ReadonlyMap<string, Uint8Array>;
|
|
598
|
+
} | null;
|
|
599
|
+
/** #1629 r4-5: an instance's card text as every viewer sees it (a person's fields over the agent's). */
|
|
600
|
+
modCardText(name: string): {
|
|
601
|
+
tagline?: string;
|
|
602
|
+
bio?: string;
|
|
603
|
+
};
|
|
604
|
+
private ownerCssStore?;
|
|
605
|
+
/** #1629 r4 §3: each person's own CSS; which version is in force is their `css.active` in the web preferences. */
|
|
606
|
+
get ownerCss(): OwnerCssStore;
|
|
607
|
+
private webSettingsToolsService?;
|
|
608
|
+
/**
|
|
609
|
+
* #2056: Settings → Web appearance for a tool (General, a coordinator, full) — the page's own stores and checks, and the
|
|
610
|
+
* page's announcement after a change (web-settings-tools.ts).
|
|
611
|
+
*/
|
|
612
|
+
get webSettings(): WebSettingsTools;
|
|
515
613
|
get webPrefs(): WebPrefsStore;
|
|
516
614
|
/**
|
|
517
615
|
* Read from disk on every access rather than cached at startup: `agend
|
|
@@ -541,9 +639,26 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
541
639
|
sseHeartbeatMs: number;
|
|
542
640
|
/** The dashboard's login codes. Memory only: a code that outlives the process is a code nobody can prove was not copied. */
|
|
543
641
|
private webLoginCodes;
|
|
642
|
+
/**
|
|
643
|
+
* #1920 step 4: guests' codes, apart from the admins' — one per account, so no guest's `/web` withdraws another's or
|
|
644
|
+
* an admin's code (#2093 review), at most 32 at once. Local sign-in only for now (audience "local").
|
|
645
|
+
*/
|
|
646
|
+
private webGuestLoginCodes;
|
|
647
|
+
/** #1920 step 4: when each account last got a guest code (monotonic) — one a minute, so `/web` is no DM flood. */
|
|
648
|
+
private readonly guestCodeAskedAt;
|
|
649
|
+
/** #2093 review: an account's guest /web in progress — one at a time, so two at once cannot both pass the minute. */
|
|
650
|
+
private readonly guestCodeInFlight;
|
|
651
|
+
/**
|
|
652
|
+
* #2093 review: revokes a guest /web in progress must see — every web session's (`/web revoke` from an admin) bumps
|
|
653
|
+
* the global count, an account's own bumps its entry — checked before the code is issued and while it is delivered.
|
|
654
|
+
*/
|
|
655
|
+
private guestRevokes;
|
|
656
|
+
private readonly guestAccountRevokes;
|
|
544
657
|
/** #1570: browsers that may ask the sign-in page for a fresh code, and how often they may. */
|
|
545
658
|
private returningDevices;
|
|
546
659
|
private readonly codeRequestLimiter;
|
|
660
|
+
/** #1920 step 4b: guests' device code requests, limited apart — guests never use up the admins' fleet-wide budget. */
|
|
661
|
+
private readonly guestCodeRequestLimiter;
|
|
547
662
|
/**
|
|
548
663
|
* Set while a Settings apply job is driving the reconcile. The reconcile
|
|
549
664
|
* stays the single doer; it just says out loud what it is doing to whom, so
|
|
@@ -589,6 +704,25 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
589
704
|
/** #1266: the choice, delivered as an ordinary inbound message from whoever made it, and shown in the web chat. */
|
|
590
705
|
private deliverReplyButtonChoice;
|
|
591
706
|
private ensureDeliveryOutbox;
|
|
707
|
+
/** #1918: cross-instance traffic, as the org canvas draws it (fleet-traffic.ts). */
|
|
708
|
+
private readonly trafficLog;
|
|
709
|
+
private readonly delegations;
|
|
710
|
+
private trafficMemo;
|
|
711
|
+
/**
|
|
712
|
+
* One delivery row's traffic item, kept for the snapshot and sent to the open pages when it is news; and the
|
|
713
|
+
* delegation it opens or closes (a task and its report), sent as "delegation".
|
|
714
|
+
*/
|
|
715
|
+
private publishTraffic;
|
|
716
|
+
/**
|
|
717
|
+
* GET /ui/traffic: what is in flight now (the outbox's pending rows) and what finished in the last two minutes, at
|
|
718
|
+
* most TRAFFIC_SNAPSHOT_MAX items. Worked out at most once every two seconds, so the public link's polling (or any
|
|
719
|
+
* number of pages) costs one indexed read per two seconds. Visibility is applied as of now.
|
|
720
|
+
*/
|
|
721
|
+
trafficSnapshot(): {
|
|
722
|
+
now: string;
|
|
723
|
+
items: TrafficItem[];
|
|
724
|
+
delegations: Delegation[];
|
|
725
|
+
};
|
|
592
726
|
/** Synchronous SQLite admission; the caller may acknowledge only after this returns. */
|
|
593
727
|
admitDurableDelivery(input: {
|
|
594
728
|
operationId: string;
|
|
@@ -642,6 +776,11 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
642
776
|
private hostMemoryIndicator;
|
|
643
777
|
/** Separate cooldown: changing measurements must not create new text-throttle keys. */
|
|
644
778
|
private reportMemoryPressure;
|
|
779
|
+
/**
|
|
780
|
+
* #2015: rescan the largest processes (at most once a minute, one at a time). The first result of an episode, and
|
|
781
|
+
* then at most every 10 minutes, is logged with the pressure; /health and the dashboard read the latest. Never chat.
|
|
782
|
+
*/
|
|
783
|
+
private refreshMemoryTop;
|
|
645
784
|
/** Wire the one fleet-wide storm into notification and recovery surfaces. */
|
|
646
785
|
private bindStormWindowEvents;
|
|
647
786
|
/** What the gate allows while any storm window is open (see SpawnGate.pump). */
|
|
@@ -931,7 +1070,8 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
931
1070
|
* for `instance` (#1320 part B). Per entry: the channel's own adapter, no
|
|
932
1071
|
* thread, mention suppression on. Returns the number of channels posted
|
|
933
1072
|
* to. Failures are per-entry warn-and-continue — a failed echo never fails
|
|
934
|
-
* the web send.
|
|
1073
|
+
* the web send. Only entries classicWebEchoOn admits are touched (#2054: unset follows web.echo_to_channel; an explicit
|
|
1074
|
+
* `web_echo: false` never echoes).
|
|
935
1075
|
*
|
|
936
1076
|
* Every copy is fenced at start time: an entry whose explicit world is
|
|
937
1077
|
* gone is skipped (only legacy adapterId-less entries fall back to the
|
|
@@ -942,6 +1082,11 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
942
1082
|
* already in flight may still land late — the contract permits that.
|
|
943
1083
|
*/
|
|
944
1084
|
/** `sender` (#1827): the web person's name, as the room log records them ("web-user" when none). */
|
|
1085
|
+
/**
|
|
1086
|
+
* #1920 §5.2: a web message's channel copy was sent — it is now what the channel saw. Kept so (and on disk), and sent
|
|
1087
|
+
* to the guests' streams only: an admin's page already has it, and nothing about it changed for them.
|
|
1088
|
+
*/
|
|
1089
|
+
webMessageInChannel(instance: string, messageId: string): void;
|
|
945
1090
|
sendClassicWebEcho(instance: string, text: string, sender?: string): Promise<number>;
|
|
946
1091
|
/**
|
|
947
1092
|
* #1666: a delivered web chat message starts the same cancel/progress lifecycle in the instance's topic as a platform
|
|
@@ -1297,6 +1442,20 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
1297
1442
|
handle: string;
|
|
1298
1443
|
owner: LoginCodeOwner;
|
|
1299
1444
|
}, current: () => boolean): Promise<void>;
|
|
1445
|
+
/**
|
|
1446
|
+
* #1920 §5.5 (step 4b): a guest signing in through the public link — said in the General of the admin who opened it
|
|
1447
|
+
* (who, how many agents), awaited as an admin's public sign-in is, while that link is the open one, its opener still
|
|
1448
|
+
* current, and the account still an admitted guest. A failure refuses the sign-in.
|
|
1449
|
+
*/
|
|
1450
|
+
confirmGuestPublicWebLogin(info: {
|
|
1451
|
+
label: string;
|
|
1452
|
+
handle: string;
|
|
1453
|
+
account: {
|
|
1454
|
+
adapterId: string;
|
|
1455
|
+
userId: string;
|
|
1456
|
+
};
|
|
1457
|
+
exposureId: string;
|
|
1458
|
+
}, current: () => boolean): Promise<void>;
|
|
1300
1459
|
/** Telegram's typed command enters through the same strict owner and nonce path as Discord. */
|
|
1301
1460
|
dashboardMenu(msg: InboundMessage): Promise<void>;
|
|
1302
1461
|
/**
|
|
@@ -1334,6 +1493,77 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
1334
1493
|
count: number;
|
|
1335
1494
|
durable: boolean;
|
|
1336
1495
|
};
|
|
1496
|
+
/**
|
|
1497
|
+
* #1920 phase 3: Settings → Web sign-ins → Guests — the switches, each connection's access mode and the agents named for
|
|
1498
|
+
* an open one, and every guest account (signed in, with a returning device, or narrowed): who, its platform, what it
|
|
1499
|
+
* reaches now, its sessions and devices, and its narrowing. Ids are the accounts' own (an admin's page).
|
|
1500
|
+
*/
|
|
1501
|
+
guestOverview(): {
|
|
1502
|
+
enabled: boolean;
|
|
1503
|
+
chat: boolean;
|
|
1504
|
+
instances: string[];
|
|
1505
|
+
connections: Array<{
|
|
1506
|
+
id: string;
|
|
1507
|
+
type: string;
|
|
1508
|
+
mode: "open" | "allowlist";
|
|
1509
|
+
named: string[];
|
|
1510
|
+
}>;
|
|
1511
|
+
guests: Array<{
|
|
1512
|
+
adapterId: string;
|
|
1513
|
+
userId: string;
|
|
1514
|
+
name: string;
|
|
1515
|
+
platform: string;
|
|
1516
|
+
scope: string[];
|
|
1517
|
+
reach: string[];
|
|
1518
|
+
sessions: number;
|
|
1519
|
+
lastSeen: number | null;
|
|
1520
|
+
devices: number;
|
|
1521
|
+
narrow: string[] | null;
|
|
1522
|
+
}>;
|
|
1523
|
+
};
|
|
1524
|
+
/** #1920 phase 3 (the app shell): a guest's chip — its web name, and its connection's platform (discord, telegram). */
|
|
1525
|
+
guestBadge(owner: {
|
|
1526
|
+
adapterId: string;
|
|
1527
|
+
userId: string;
|
|
1528
|
+
}): {
|
|
1529
|
+
name: string;
|
|
1530
|
+
platform: string;
|
|
1531
|
+
};
|
|
1532
|
+
/** #1920 step 4: whether a `/web` is a guest's — guest sign-in on, and not from a fleet admin (theirs runs as before). */
|
|
1533
|
+
isGuestWebAsk(adapterId: string | undefined, userId: string): boolean;
|
|
1534
|
+
/** #1920 step 4 (auth-api): a guest code's account may still sign in — guests on, and something in its scope now. */
|
|
1535
|
+
guestSignInAllowed(account: {
|
|
1536
|
+
adapterId: string;
|
|
1537
|
+
userId: string;
|
|
1538
|
+
}): boolean;
|
|
1539
|
+
/**
|
|
1540
|
+
* #1920 §5.4: a guest's own `/web revoke` — its sessions and its outstanding code; nobody else's (an admin's revokes
|
|
1541
|
+
* everyone's, as before).
|
|
1542
|
+
*/
|
|
1543
|
+
revokeGuestWebSessions(owner: {
|
|
1544
|
+
adapterId: string;
|
|
1545
|
+
userId: string;
|
|
1546
|
+
}): {
|
|
1547
|
+
count: number;
|
|
1548
|
+
durable: boolean;
|
|
1549
|
+
};
|
|
1550
|
+
/**
|
|
1551
|
+
* #1920 §2.3 (step 4): `/web` from someone who is not a fleet admin, while guest sign-in is on. `revoke` ends their
|
|
1552
|
+
* own guest sessions. Otherwise a guest code (tier guest, bound to this account) goes privately — a DM, else the
|
|
1553
|
+
* slash command's ephemeral answer (`replyPrivately`) — once a minute at most, and only when their scope (from what
|
|
1554
|
+
* they may already use in chat, rooms read at sign-in) holds something. The code itself is never posted where asked.
|
|
1555
|
+
* Callers ask isGuestWebAsk first (synchronously); false here too when it is not a guest's.
|
|
1556
|
+
*/
|
|
1557
|
+
guestWebCommand(ask: {
|
|
1558
|
+
adapterId: string;
|
|
1559
|
+
userId: string;
|
|
1560
|
+
username?: string;
|
|
1561
|
+
arg: string;
|
|
1562
|
+
replyHere: (text: string) => Promise<unknown>;
|
|
1563
|
+
replyPrivately?: (text: string) => Promise<unknown>;
|
|
1564
|
+
}): Promise<boolean>;
|
|
1565
|
+
/** guestWebCommand's issuance, one per account at a time; a revoke made meanwhile (either kind) ends it unissued. */
|
|
1566
|
+
private issueGuestCode;
|
|
1337
1567
|
/** #1570 (auth-api): this browser becomes a returning device of the code's owner. The cookie value, or null. */
|
|
1338
1568
|
rememberReturningDevice(owner: LoginCodeOwner, input: {
|
|
1339
1569
|
surface: "local" | "gateway";
|
|
@@ -1359,12 +1589,31 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
1359
1589
|
} | {
|
|
1360
1590
|
kind: "refused";
|
|
1361
1591
|
}>;
|
|
1592
|
+
/**
|
|
1593
|
+
* #1920 step 4b: a guest's returning device asks for a code — a guest code for that account, by DM only, under the
|
|
1594
|
+
* same rules as its /web (guests on, not an admin, something in scope now; one per account and the cap; one flow per
|
|
1595
|
+
* account at a time; a revoke meanwhile ends it), its own limiter, and the guests' breaker. Asked through the public
|
|
1596
|
+
* link: only while that exposure is the open one (its code then works through it alone), as an admin's device.
|
|
1597
|
+
*/
|
|
1598
|
+
private requestGuestDeviceCode;
|
|
1599
|
+
/** #1920 step 4b (auth-api): this browser becomes a guest's returning device. The cookie value, or null. */
|
|
1600
|
+
rememberGuestDevice(account: {
|
|
1601
|
+
adapterId: string;
|
|
1602
|
+
userId: string;
|
|
1603
|
+
}, input: {
|
|
1604
|
+
surface: "local" | "gateway";
|
|
1605
|
+
label: string;
|
|
1606
|
+
}): string | null;
|
|
1362
1607
|
/** Called by the sign-in endpoint: a login the operator did not make should be visible to them. */
|
|
1363
1608
|
onWebLogin(info: {
|
|
1364
1609
|
label: string;
|
|
1365
1610
|
surface: "local" | "gateway";
|
|
1366
1611
|
tier: string;
|
|
1367
1612
|
handle: string;
|
|
1613
|
+
owner?: {
|
|
1614
|
+
adapterId: string;
|
|
1615
|
+
userId: string;
|
|
1616
|
+
};
|
|
1368
1617
|
}): void;
|
|
1369
1618
|
getDashboardAccess(): {
|
|
1370
1619
|
ready: boolean;
|
|
@@ -1435,8 +1684,14 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
1435
1684
|
private sweepOrphanedWebUploads;
|
|
1436
1685
|
/** Start the shared channel adapter(s) for topic mode */
|
|
1437
1686
|
private startSharedAdapter;
|
|
1438
|
-
/**
|
|
1687
|
+
/** Keep trying while the fleet runs, with a five-minute cap even after a long outage. */
|
|
1439
1688
|
private scheduleAdapterRetry;
|
|
1689
|
+
/** One login per connection, shared by the background timer and the operator's Retry now. */
|
|
1690
|
+
private attemptAdapterRetry;
|
|
1691
|
+
retryAdapterNow(adapterId: string): {
|
|
1692
|
+
queued: boolean;
|
|
1693
|
+
already_running?: boolean;
|
|
1694
|
+
};
|
|
1440
1695
|
/** Notify admin about adapter failure (uses any available adapter). */
|
|
1441
1696
|
private notifyAdapterFailure;
|
|
1442
1697
|
/** Notify admin that a retried adapter reconnected. */
|
|
@@ -1483,7 +1738,10 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
1483
1738
|
* reported separately because they differ by ~60x and only one of them can
|
|
1484
1739
|
* show a fleet-manager leak. */
|
|
1485
1740
|
memory: FleetMemory;
|
|
1486
|
-
hostMemory: MemoryPressureSnapshot
|
|
1741
|
+
hostMemory: MemoryPressureSnapshot & {
|
|
1742
|
+
topProcesses?: MemoryHog[];
|
|
1743
|
+
topProcessesAt?: string;
|
|
1744
|
+
};
|
|
1487
1745
|
problems: string[];
|
|
1488
1746
|
};
|
|
1489
1747
|
/** Start the primary adapter (backward-compatible, sets this.adapter) */
|
|
@@ -1506,6 +1764,22 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
1506
1764
|
private disposeSettingsAdapter;
|
|
1507
1765
|
/** Restart a channel adapter after fatal error with infinite retry + 60s cap */
|
|
1508
1766
|
private restartAdapter;
|
|
1767
|
+
/**
|
|
1768
|
+
* #1990: how a reader in world `worldId`'s group reaches a place token's target — undefined (plain text) for another
|
|
1769
|
+
* world's instance, an instance without a fleet topic (a ClassicBot room may be anywhere), or an id no link is built
|
|
1770
|
+
* from. Discord: the channel mention; Telegram: the topic URL (General's topic included).
|
|
1771
|
+
*/
|
|
1772
|
+
private placeLink;
|
|
1773
|
+
/** #1990: a message for world `worldId`'s group with its place tokens rendered (links as text or Telegram entities). */
|
|
1774
|
+
renderPlaces(worldId: string | undefined, text: string, opts?: import("./channel/types.js").SendOpts): {
|
|
1775
|
+
text: string;
|
|
1776
|
+
opts?: import("./channel/types.js").SendOpts;
|
|
1777
|
+
};
|
|
1778
|
+
/** #1990: renderPlaces for the world that owns `instanceName`'s topic. */
|
|
1779
|
+
renderPlacesFor(instanceName: string, text: string, opts?: import("./channel/types.js").SendOpts): {
|
|
1780
|
+
text: string;
|
|
1781
|
+
opts?: import("./channel/types.js").SendOpts;
|
|
1782
|
+
};
|
|
1509
1783
|
/** Handle inbound message — transcribe voice if present, then route */
|
|
1510
1784
|
private findGeneralInstance;
|
|
1511
1785
|
/**
|
|
@@ -1619,6 +1893,11 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
1619
1893
|
*/
|
|
1620
1894
|
private inboundNoticeAdapter;
|
|
1621
1895
|
private handleInboundMessageCore;
|
|
1896
|
+
/**
|
|
1897
|
+
* A person's platform message as the web chat shows it — the user's own words, as a user (#1306), in the instance's
|
|
1898
|
+
* history (#1565). #1920 §5.2: said in the instance's topic, General or room, so it is that channel's, by that account.
|
|
1899
|
+
*/
|
|
1900
|
+
private emitPlatformInbound;
|
|
1622
1901
|
/** Handle outbound tool calls from a daemon instance */
|
|
1623
1902
|
/** Warn (but don't block) when rate limits are high. 30-min debounce per instance. */
|
|
1624
1903
|
private rateLimitWarnedAt;
|
|
@@ -1661,6 +1940,14 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
1661
1940
|
/** On a fleet with no chat platform, the dashboard is where an instance-health prompt is posted (#1307 item 6). */
|
|
1662
1941
|
private webOnlyPromptPlace;
|
|
1663
1942
|
/** Resolves when the reply is in the web chat (#1770: after its files are copied); the caller need not wait. */
|
|
1943
|
+
/**
|
|
1944
|
+
* #1920 §5.2: whether a platform send landed in the instance's own place — its ClassicBot room, or its topic in its
|
|
1945
|
+
* connection's group — so its channel's members saw it. Anything else (another chat, a DM, a context left from General,
|
|
1946
|
+
* an answer without the chat it went to) is not the channel's.
|
|
1947
|
+
*/
|
|
1948
|
+
private landedInOwnChannel;
|
|
1949
|
+
/** #1920 §5.2 (#2085 review): a platform click's buttons are in the instance's own place — else not its channel's. */
|
|
1950
|
+
private clickInOwnChannel;
|
|
1664
1951
|
private afterReplyRouted;
|
|
1665
1952
|
/**
|
|
1666
1953
|
* #1770: a reply's files as the web chat shows them. Each is copied into the instance's web-files/ and served from
|
|
@@ -1724,6 +2011,12 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
1724
2011
|
*/
|
|
1725
2012
|
private refuseTypedIpc;
|
|
1726
2013
|
private dispatchTypedIpc;
|
|
2014
|
+
/**
|
|
2015
|
+
* #1629: the caller's own web theme over IPC (the agent endpoint calls the same service). `name` is the instance this
|
|
2016
|
+
* IPC connection belongs to — never anything the message says. A refusal is a result the agent reads (its `error`
|
|
2017
|
+
* and what to do), not a transport error.
|
|
2018
|
+
*/
|
|
2019
|
+
private handleWebTheme;
|
|
1727
2020
|
/** `list_emojis` / `set_persona_emoji` / `preview_emojis` / `list_stickers` / `preview_stickers` over IPC; the agent endpoint calls the same methods. */
|
|
1728
2021
|
private handlePersonaEmoji;
|
|
1729
2022
|
private handleScheduleCrud;
|
|
@@ -1759,6 +2052,8 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
1759
2052
|
handleListStickersHttp(instance: string, args: Record<string, unknown>): Promise<unknown>;
|
|
1760
2053
|
handlePreviewStickersHttp(instance: string, args: Record<string, unknown>): Promise<unknown>;
|
|
1761
2054
|
handleSetPersonaEmojiHttp(instance: string, args: Record<string, unknown>): Promise<unknown>;
|
|
2055
|
+
/** #1629: `agend-agent theme …` — the same service as the tools; `instance` is the token's. */
|
|
2056
|
+
handleWebThemeHttp(instance: string, tool: string, args: Record<string, unknown>): Promise<unknown>;
|
|
1762
2057
|
handlePreviewEmojisHttp(instance: string, args: Record<string, unknown>): Promise<unknown>;
|
|
1763
2058
|
handleSetDescriptionHttp(instance: string, description: string): Promise<unknown>;
|
|
1764
2059
|
private summarizeToolCall;
|
|
@@ -1915,6 +2210,8 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
1915
2210
|
private guildEmojiCache;
|
|
1916
2211
|
private guildEmojiFetches;
|
|
1917
2212
|
private webImageCaches;
|
|
2213
|
+
/** Server emoji whose picture fetch failure was already logged at warn (once each; bounded). */
|
|
2214
|
+
private readonly webEmojiFailures;
|
|
1918
2215
|
private webImageCache;
|
|
1919
2216
|
/**
|
|
1920
2217
|
* The bots instances and ClassicBot rooms speak through, by connections configured now (a connection removed from
|
|
@@ -2285,6 +2582,25 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
2285
2582
|
* (cache-service.ts) — never a vendor call, never a synchronous transcript read.
|
|
2286
2583
|
*/
|
|
2287
2584
|
cacheReport(window: string): Promise<CacheReport>;
|
|
2585
|
+
/**
|
|
2586
|
+
* #2122 §5.1: the profile the usage read now is tagged with — the claude profile whose config dir is read ("default"
|
|
2587
|
+
* without one); codex "unrecorded" (its rollouts don't say which login wrote them).
|
|
2588
|
+
*/
|
|
2589
|
+
private usageProfileOf;
|
|
2590
|
+
/** #2122: the fleet's day boundary zone — defaults.scheduler.default_timezone, else this host's. */
|
|
2591
|
+
usageZone(): string;
|
|
2592
|
+
/**
|
|
2593
|
+
* #2122: the usage report (usage-report.ts) — from the ledgers and rollups as they are now and the delivered-message
|
|
2594
|
+
* counts; never a transcript read. `only`: just that instance (an ordinary agent's own row).
|
|
2595
|
+
*/
|
|
2596
|
+
usageReport(params: {
|
|
2597
|
+
range: import("./usage-report.js").UsageRange;
|
|
2598
|
+
group: import("./usage-report.js").UsageGroup;
|
|
2599
|
+
only?: string;
|
|
2600
|
+
}): Promise<import("./usage-report.js").UsageReport>;
|
|
2601
|
+
/** #2001: get_cache_report's — the same report, as last worked out (reused for a minute, until the next pass). */
|
|
2602
|
+
cacheReportPublished(window: string): Promise<CacheReport>;
|
|
2603
|
+
private cacheServiceFor;
|
|
2288
2604
|
/** The web's Acknowledge (any item; a signed-in session is fleet-admin level). */
|
|
2289
2605
|
acknowledgeNeedsItem(id: string, principal: string): {
|
|
2290
2606
|
status: 200 | 400 | 404 | 409 | 500;
|
|
@@ -2309,6 +2625,7 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
2309
2625
|
label: string;
|
|
2310
2626
|
}>;
|
|
2311
2627
|
expiresAt: number;
|
|
2628
|
+
links?: import("./topic-link.js").TextLink[];
|
|
2312
2629
|
}>;
|
|
2313
2630
|
/**
|
|
2314
2631
|
* A click on a prompt in the web dashboard (web track C4). It is the platform click, made by the
|
|
@@ -2334,6 +2651,8 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
2334
2651
|
key: string;
|
|
2335
2652
|
userId: string;
|
|
2336
2653
|
name: string;
|
|
2654
|
+
guest?: true;
|
|
2655
|
+
authority?: HumanAuthority;
|
|
2337
2656
|
}): Promise<{
|
|
2338
2657
|
status: 200 | 400 | 403 | 409;
|
|
2339
2658
|
error?: string;
|
|
@@ -2371,6 +2690,100 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
2371
2690
|
private readonly webBackendTokens;
|
|
2372
2691
|
/** #1269: the web's /clear confirmations — one token per question, used once, for the instance as it was asked about. */
|
|
2373
2692
|
private readonly webClearTokens;
|
|
2693
|
+
/**
|
|
2694
|
+
* #1939 S1: the design's §3 for one web request (authority/web-authority.ts), with this fleet's admins, policy and
|
|
2695
|
+
* token; `instance` once the body has named it. Observe only: receipts record it, no agent acts on it yet.
|
|
2696
|
+
*/
|
|
2697
|
+
webAuthority(input: {
|
|
2698
|
+
session: SessionRecord | null;
|
|
2699
|
+
gateway: boolean;
|
|
2700
|
+
peer: WebPeer;
|
|
2701
|
+
instance?: string;
|
|
2702
|
+
}): WebAuthorityResult;
|
|
2703
|
+
private sessionAuthorizations;
|
|
2704
|
+
private sessionAuthorizationStore;
|
|
2705
|
+
/**
|
|
2706
|
+
* #1939 §0: record that a session's account has authorized it — called only once that account has confirmed on Discord
|
|
2707
|
+
* or Telegram (S2b). The session must qualify now (§3, as a message from it would be judged); then every message,
|
|
2708
|
+
* click, /steer and /btw from it is web-verified until max_session_hours after now, the session ends, or a revocation.
|
|
2709
|
+
* Ones no longer worth keeping (their session gone, an old epoch, run out) are dropped on the way.
|
|
2710
|
+
*/
|
|
2711
|
+
authorizeWebSession(session: SessionRecord, peer: WebPeer, gateway: boolean): {
|
|
2712
|
+
ok: true;
|
|
2713
|
+
authorization: SessionAuthorization;
|
|
2714
|
+
durable: boolean;
|
|
2715
|
+
} | {
|
|
2716
|
+
ok: false;
|
|
2717
|
+
refusal: WebAuthorityRefusal;
|
|
2718
|
+
};
|
|
2719
|
+
private authorityStateStore;
|
|
2720
|
+
/**
|
|
2721
|
+
* #1939 §10: the switch, "Only this computer can authorize" and the revocation epoch in force for the configuration as
|
|
2722
|
+
* it is now (a change since last seen moves the epoch first; authority-state.ts). No data directory: off.
|
|
2723
|
+
*/
|
|
2724
|
+
webAuthorityState(): AuthorityState;
|
|
2725
|
+
/**
|
|
2726
|
+
* #1939 S2a: Settings → Web → Web authority — the state in force (the switch counts as off while its state cannot be
|
|
2727
|
+
* written), what fleet.yaml says, the hosts that make the dashboard reachable from elsewhere (the warning while
|
|
2728
|
+
* loopback_only is off), and the sessions authorized now (§0): each one's device, account, and when it runs out.
|
|
2729
|
+
*/
|
|
2730
|
+
webAuthorityOverview(): {
|
|
2731
|
+
state: AuthorityState;
|
|
2732
|
+
configured: WebVerifiedAuthorityConfig;
|
|
2733
|
+
hours: typeof VERIFIED_SESSION_HOURS;
|
|
2734
|
+
lanHosts: string[];
|
|
2735
|
+
authorized: Array<{
|
|
2736
|
+
handle: string;
|
|
2737
|
+
label: string;
|
|
2738
|
+
account: string;
|
|
2739
|
+
authorizedAt: number;
|
|
2740
|
+
until: number;
|
|
2741
|
+
}>;
|
|
2742
|
+
};
|
|
2743
|
+
private authorizationRequests;
|
|
2744
|
+
/**
|
|
2745
|
+
* #1939 S2b (§0.1): "Authorize this browser" — the Confirm card in the account's DM. Confirm runs §3 again at the tap
|
|
2746
|
+
* (authorizeWebSession on the session read again by its handle); Not me signs the session out.
|
|
2747
|
+
*/
|
|
2748
|
+
sessionAuthorizationRequests(): SessionAuthorizationRequests;
|
|
2749
|
+
/** #1939 S2b: the web session asks to be authorized (the request judged by §3 first — as it will be again at the tap). */
|
|
2750
|
+
requestSessionAuthorization(input: {
|
|
2751
|
+
session: SessionRecord | null;
|
|
2752
|
+
gateway: boolean;
|
|
2753
|
+
peer: WebPeer;
|
|
2754
|
+
}): Promise<{
|
|
2755
|
+
ok: true;
|
|
2756
|
+
expiresInMs: number;
|
|
2757
|
+
} | {
|
|
2758
|
+
ok: false;
|
|
2759
|
+
refusal: AuthorizationAskRefusal;
|
|
2760
|
+
retryAfterMs?: number;
|
|
2761
|
+
}>;
|
|
2762
|
+
/**
|
|
2763
|
+
* #1939 §3 without the authorization: would this request's session qualify to be authorized? null: yes; otherwise the
|
|
2764
|
+
* first check it fails (for the app to say why it can't be authorized here).
|
|
2765
|
+
*/
|
|
2766
|
+
private webAuthorityQualifies;
|
|
2767
|
+
/** #1939 S2b: what the app shows for this browser — verified (until when), a card pending, or why not. */
|
|
2768
|
+
webSessionAuthorization(input: {
|
|
2769
|
+
session: SessionRecord | null;
|
|
2770
|
+
gateway: boolean;
|
|
2771
|
+
peer: WebPeer;
|
|
2772
|
+
}): {
|
|
2773
|
+
state: "verified";
|
|
2774
|
+
until: number;
|
|
2775
|
+
} | {
|
|
2776
|
+
state: "pending";
|
|
2777
|
+
expiresInMs: number;
|
|
2778
|
+
} | {
|
|
2779
|
+
state: "none";
|
|
2780
|
+
reason: WebAuthorityRefusal;
|
|
2781
|
+
};
|
|
2782
|
+
/** #1939 §10: revoke every web authority given so far (receipts read as none), without signing anyone out. */
|
|
2783
|
+
revokeWebAuthority(): {
|
|
2784
|
+
epoch: number;
|
|
2785
|
+
durable: boolean;
|
|
2786
|
+
};
|
|
2374
2787
|
/** #1269: an instance's chat command from the web chat (web-commands.ts); `publicLink`: a gateway request. */
|
|
2375
2788
|
webCommand(input: {
|
|
2376
2789
|
instance: string;
|
|
@@ -2380,6 +2793,7 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
2380
2793
|
}, opts: {
|
|
2381
2794
|
publicLink: boolean;
|
|
2382
2795
|
person?: Pick<WebPersonView, "userId" | "name">;
|
|
2796
|
+
authority?: HumanAuthority;
|
|
2383
2797
|
}): Promise<WebCommandResult>;
|
|
2384
2798
|
/** Consume `/clear` Confirm/Cancel exactly once; only Confirm reaches IPC. */
|
|
2385
2799
|
private handleClearConfirmation;
|
|
@@ -2744,6 +3158,8 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
2744
3158
|
private restoreWebChat;
|
|
2745
3159
|
/** #1565: who an instance is, for its web chat file: its working directory, or its ClassicBot room; null if neither. */
|
|
2746
3160
|
private webChatOwner;
|
|
3161
|
+
/** The only Try-card publisher: no arbitrary SSE sender/role can manufacture this metadata. */
|
|
3162
|
+
private publishEffectTrial;
|
|
2747
3163
|
/** Push an SSE event to all connected Web UI clients. */
|
|
2748
3164
|
emitSseEvent(event: string, data: unknown): void;
|
|
2749
3165
|
listClaimedTasks(assignee: string): Array<{
|
|
@@ -2845,8 +3261,14 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
2845
3261
|
private pasteRawToClassicInstance;
|
|
2846
3262
|
/** Resolve the backend name configured for an instance (fleet or classic). */
|
|
2847
3263
|
private backendNameForInstance;
|
|
3264
|
+
/**
|
|
3265
|
+
* #2072: a catalog is the account's, so a credential profile has its own. Only claude-code's probe reads an account
|
|
3266
|
+
* catalog through a profile's login (its `GET /v1/models` with the profile's token); other backends' probes read the
|
|
3267
|
+
* process environment, so their catalog stays the backend's own.
|
|
3268
|
+
*/
|
|
3269
|
+
private catalogProfile;
|
|
2848
3270
|
private cliEnvPath;
|
|
2849
|
-
/** Read the cached CLI env for a backend, or null if missing/stale/unparseable. */
|
|
3271
|
+
/** Read the cached CLI env for a backend (a credential profile's own, when given), or null if missing/stale/unparseable. */
|
|
2850
3272
|
private readCliEnv;
|
|
2851
3273
|
/** Return cached CLI versions immediately. Refresh is started after /sysinfo is sent. */
|
|
2852
3274
|
getBackendCliVersionSnapshot(): BackendCliVersionSnapshot;
|
|
@@ -2877,6 +3299,11 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
2877
3299
|
};
|
|
2878
3300
|
/** Human-readable effective model, e.g. `auto (default)`. Used by /ctx. */
|
|
2879
3301
|
modelDisplayForInstance(instanceName: string): string;
|
|
3302
|
+
/**
|
|
3303
|
+
* #2072: the model an instance runs is always among its choices — one its CLI's catalog does not list (an older
|
|
3304
|
+
* name, a custom provider's, a typed one) is shown first, marked, so the menu never hides what is running.
|
|
3305
|
+
*/
|
|
3306
|
+
private withCurrentModel;
|
|
2880
3307
|
private modelChoiceLabel;
|
|
2881
3308
|
/** Preserve the existing cache merge rules for worker probes. */
|
|
2882
3309
|
private persistCliEnvProbeResult;
|
|
@@ -3050,8 +3477,31 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
3050
3477
|
private prospectiveCodexModel;
|
|
3051
3478
|
/** #1811: whether a launch of `backend` here would pass a level: the same gate its builder applies. */
|
|
3052
3479
|
private launchEffortGate;
|
|
3053
|
-
/**
|
|
3054
|
-
|
|
3480
|
+
/**
|
|
3481
|
+
* #2072: what this host can run, from the published availability snapshot (backend-availability.ts). Read only: a
|
|
3482
|
+
* handler never starts a probe, not even in the background — launch, the timer, and /login install or sign-in do.
|
|
3483
|
+
*/
|
|
3484
|
+
backendAvailabilityRows(): BackendAvailability[];
|
|
3485
|
+
/**
|
|
3486
|
+
* #2072 part 3: the models a Settings field offers for `backend` — the cached catalog (an instance's own credential
|
|
3487
|
+
* profile's, when it is named and has one), claude's account catalog included. Read only: never a probe.
|
|
3488
|
+
*/
|
|
3489
|
+
modelCatalogFor(backend: string, instance: string | null): import("./backend/types.js").ModelOption[];
|
|
3490
|
+
/**
|
|
3491
|
+
* #2072 (#2078 review): the snapshot as THIS instance would see it. Its sign-in on a backend is its own credential
|
|
3492
|
+
* profile's when it has one there — the host's default login says nothing about it. A profile's login is a file check
|
|
3493
|
+
* (credentialProfileLogin), no process.
|
|
3494
|
+
*/
|
|
3495
|
+
backendAvailabilityFor(instanceName: string): BackendAvailability[];
|
|
3496
|
+
/** The probes the snapshot runs (tests replace them: no CLI, no account, no network). */
|
|
3497
|
+
availabilityProbes: AvailabilityProbes;
|
|
3498
|
+
private availabilityStore;
|
|
3499
|
+
private availabilityTimer;
|
|
3500
|
+
get backendAvailability(): BackendAvailabilityStore;
|
|
3501
|
+
/** A launch need not look the binary up again (a synchronous `which` on the loop) when the snapshot found it. */
|
|
3502
|
+
private noteAvailabilityPaths;
|
|
3503
|
+
/** Probe now and then every AVAILABILITY_STALE_MS; a pass that finds nothing changed starts no CLI. */
|
|
3504
|
+
private startAvailabilityRefresh;
|
|
3055
3505
|
/** The models `/model` would offer on a backend: the cached CLI env, else (live) a bounded probe. Never throws. */
|
|
3056
3506
|
private backendModelOptions;
|
|
3057
3507
|
/**
|
|
@@ -3096,6 +3546,7 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
3096
3546
|
private findClassicApprovalGeneral;
|
|
3097
3547
|
/** Return a user-facing blocker without mutating ClassicBot state. */
|
|
3098
3548
|
private validateClassicStart;
|
|
3549
|
+
/** #2072: from the published snapshot (no `which` on the loop); not checked yet counts as installed (no false alarm). */
|
|
3099
3550
|
private isBackendInstalled;
|
|
3100
3551
|
private getMissingBackendWarning;
|
|
3101
3552
|
/** Handle Discord's required static slash choice, warning before a likely startup failure. */
|
|
@@ -3391,6 +3842,56 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
3391
3842
|
* Only the parsed host name is logged, never the raw header.
|
|
3392
3843
|
*/
|
|
3393
3844
|
private noteRejectedHost;
|
|
3845
|
+
/**
|
|
3846
|
+
* #1920 §3: the instances a guest session may see — derived on every request from the account's chat access, never
|
|
3847
|
+
* stored; nothing while `web.guests.enabled` is not true.
|
|
3848
|
+
* - Its connection's fleet topics and General (what it may talk to in chat): when that connection's access lets the
|
|
3849
|
+
* account in (AccessManager.isAllowed — allowed_users or paired). An `open` connection lets everyone in, so it gives
|
|
3850
|
+
* only the instances an admin named for its guests (`web.guests.open_instances`; the user's decision: least
|
|
3851
|
+
* privilege, as an open group has no list of people).
|
|
3852
|
+
* - A Telegram private ClassicBot room that is the account's own (its chat id is the user id).
|
|
3853
|
+
* - A ClassicBot group or guild room on its connection: only while its membership is verified (§3.2 — a "member"
|
|
3854
|
+
* answer read in the background, at most 15 minutes old; unknown, failed or stale hides it).
|
|
3855
|
+
* - Then an admin's narrowing (`web.guests.narrow`), which only takes away.
|
|
3856
|
+
* A fleet admin is not a guest: an admin outside the connection's access gets nothing here (admins sign in as admins).
|
|
3857
|
+
*/
|
|
3858
|
+
guestScope(owner: {
|
|
3859
|
+
readonly adapterId: string;
|
|
3860
|
+
readonly userId: string;
|
|
3861
|
+
} | undefined): ReadonlySet<string>;
|
|
3862
|
+
/**
|
|
3863
|
+
* #1920 (#2104 review): what an account reaches before an admin's narrowing — its connection's topics (an open one's
|
|
3864
|
+
* named agents), its own Telegram private room, its verified group rooms. Narrowing can only take from this set, so it
|
|
3865
|
+
* is what Settings offers to narrow to. Empty while guest sign-in is off.
|
|
3866
|
+
*/
|
|
3867
|
+
private guestReach;
|
|
3868
|
+
/**
|
|
3869
|
+
* #1920 §3.5: a guest session still admitted — current, with something in scope. A scope that became empty (guest
|
|
3870
|
+
* sign-in off, the account removed from the connection's access, everything narrowed away) ends the session here,
|
|
3871
|
+
* so the next request and the open stream find it gone.
|
|
3872
|
+
*/
|
|
3873
|
+
private guestStillAdmitted;
|
|
3874
|
+
/**
|
|
3875
|
+
* The same, with a third answer (§3.2): "pending" — nothing in scope now, but a room's membership is not read yet
|
|
3876
|
+
* (a restart, a room just created). The request is refused and the session kept; its read starts in the background.
|
|
3877
|
+
*/
|
|
3878
|
+
private guestAdmission;
|
|
3879
|
+
/** #1920 §3.2: the membership answers; the read goes to the room's own connection, never waits past its deadline. */
|
|
3880
|
+
private guestRooms;
|
|
3881
|
+
/** #1920 §3.2: read this guest's rooms that are due (GuestRoomMembership.refresh says when each mode reads). */
|
|
3882
|
+
private refreshGuestRooms;
|
|
3883
|
+
/** Every account with a live guest session, one after another (the guest caps bound them); one pass at a time. */
|
|
3884
|
+
private refreshAllGuestRooms;
|
|
3885
|
+
private guestRoomsPass;
|
|
3886
|
+
/**
|
|
3887
|
+
* #1920 §3.5: guest sign-in turned off ends every guest session — checked when the configuration is read or saved
|
|
3888
|
+
* and when the sessions are opened, so turning it back on never revives one.
|
|
3889
|
+
*/
|
|
3890
|
+
private enforceGuestSwitch;
|
|
3891
|
+
/** #1920 §5.2: whether this instance is the account's own Telegram private ClassicBot room (its chat id is the user id). */
|
|
3892
|
+
private guestOwnRoom;
|
|
3893
|
+
/** A private room's chat id is its one user's id (a group's is negative, so never equal); Telegram only. */
|
|
3894
|
+
private isOwnPrivateRoom;
|
|
3394
3895
|
/** Shared handler dispatcher; gateway admission is enforced by its separate listener. */
|
|
3395
3896
|
private dispatchWebHttp;
|
|
3396
3897
|
private startHealthServer;
|
|
@@ -3412,6 +3913,7 @@ export declare class FleetManager implements FleetContext, LifecycleContext, Arc
|
|
|
3412
3913
|
previewForUi(hostHeader: string | undefined, secure: boolean): PreviewAvailability & {
|
|
3413
3914
|
boot: string | null;
|
|
3414
3915
|
};
|
|
3916
|
+
private previewNotListening;
|
|
3415
3917
|
/**
|
|
3416
3918
|
* #1723: for one page of the public link (exposure `exposureId`, at `dashboardOrigin`): its own preview tunnel's
|
|
3417
3919
|
* origin once up, "starting" until then, why it failed if it did — or a configured web.preview_origin, used instead.
|