@songsid/agend 2.3.5-alpha.5 → 2.3.5-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/README.zh-TW.md +0 -2
- package/THIRD_PARTY_NOTICES.md +0 -68
- package/dist/agent-endpoint.d.ts +1 -5
- package/dist/agent-endpoint.js +2 -12
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/agent-file-read.js +1 -1
- package/dist/agent-file-read.js.map +1 -1
- package/dist/auth-api.d.ts +0 -48
- package/dist/auth-api.js +4 -250
- package/dist/auth-api.js.map +1 -1
- package/dist/authority/session-authorizations.d.ts +2 -0
- package/dist/authority/session-authorizations.js +7 -1
- package/dist/authority/session-authorizations.js.map +1 -1
- package/dist/authority/web-authority.d.ts +2 -12
- package/dist/authority/web-authority.js +4 -25
- package/dist/authority/web-authority.js.map +1 -1
- package/dist/backend/claude-code.d.ts +12 -15
- package/dist/backend/claude-code.js +133 -152
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex-footer-hints.d.ts +0 -3
- package/dist/backend/codex-footer-hints.js +0 -14
- package/dist/backend/codex-footer-hints.js.map +1 -1
- package/dist/backend/codex-package.d.ts +2 -5
- package/dist/backend/codex-package.js +5 -1
- package/dist/backend/codex-package.js.map +1 -1
- package/dist/backend/codex-quota-history.js +19 -4
- package/dist/backend/codex-quota-history.js.map +1 -1
- package/dist/backend/codex.d.ts +115 -142
- package/dist/backend/codex.js +1094 -1187
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/grok.d.ts +0 -2
- package/dist/backend/grok.js +0 -22
- package/dist/backend/grok.js.map +1 -1
- package/dist/backend/types.d.ts +2 -7
- package/dist/backend/types.js.map +1 -1
- package/dist/bundled-tmux-guard.d.ts +21 -0
- package/dist/bundled-tmux-guard.js +96 -0
- package/dist/bundled-tmux-guard.js.map +1 -0
- package/dist/channel/ipc-bridge.d.ts +0 -2
- package/dist/channel/mcp-tools.js +2 -2
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/classic-channel-manager.d.ts +2 -0
- package/dist/classic-channel-manager.js +5 -1
- package/dist/classic-channel-manager.js.map +1 -1
- package/dist/cli.js +30 -127
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +13 -74
- package/dist/config-validator.js.map +1 -1
- package/dist/config.js +3 -17
- package/dist/config.js.map +1 -1
- package/dist/daemon.d.ts +5 -72
- package/dist/daemon.js +275 -869
- package/dist/daemon.js.map +1 -1
- package/dist/delivery-consumed-watch.d.ts +3 -15
- package/dist/delivery-consumed-watch.js +1 -23
- package/dist/delivery-consumed-watch.js.map +1 -1
- package/dist/delivery-outbox.d.ts +0 -5
- package/dist/delivery-outbox.js +4 -32
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/delivery-reconciliation.d.ts +42 -2
- package/dist/delivery-reconciliation.js +164 -2
- package/dist/delivery-reconciliation.js.map +1 -1
- package/dist/doctor.js +9 -20
- package/dist/doctor.js.map +1 -1
- package/dist/fleet-context.d.ts +2 -2
- package/dist/fleet-level-config.d.ts +1 -1
- package/dist/fleet-level-config.js +0 -2
- package/dist/fleet-level-config.js.map +1 -1
- package/dist/fleet-manager.d.ts +9 -498
- package/dist/fleet-manager.js +202 -2849
- package/dist/fleet-manager.js.map +1 -1
- package/dist/general-instance.d.ts +0 -7
- package/dist/general-instance.js +3 -20
- package/dist/general-instance.js.map +1 -1
- package/dist/general-knowledge/skills/concepts/SKILL.md +18 -50
- package/dist/general-knowledge/skills/credential-profiles/SKILL.md +2 -5
- package/dist/general-knowledge/skills/fleet-health/SKILL.md +2 -2
- package/dist/general-knowledge/skills/session-management/SKILL.md +1 -1
- package/dist/general-knowledge/skills/tui-effort/SKILL.md +10 -10
- package/dist/general-knowledge/skills/web-dashboard/SKILL.md +13 -23
- package/dist/instance-config-impact.js +4 -8
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +3 -22
- package/dist/instance-lifecycle.js +176 -393
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/instructions.d.ts +0 -2
- package/dist/instructions.js +0 -6
- package/dist/instructions.js.map +1 -1
- package/dist/locale.js +2 -147
- package/dist/locale.js.map +1 -1
- package/dist/login-flows.d.ts +7 -8
- package/dist/login-flows.js +1 -24
- package/dist/login-flows.js.map +1 -1
- package/dist/ls-rows.js +4 -3
- package/dist/ls-rows.js.map +1 -1
- package/dist/muse-usage-relay.d.ts +2 -0
- package/dist/muse-usage-relay.js +5 -3
- package/dist/muse-usage-relay.js.map +1 -1
- package/dist/needs-you-hub.d.ts +0 -5
- package/dist/needs-you-hub.js +2 -18
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you.d.ts +2 -45
- package/dist/needs-you.js +2 -26
- package/dist/needs-you.js.map +1 -1
- package/dist/office-share-page.js +3 -3
- package/dist/office-share-page.js.map +1 -1
- package/dist/office-share.d.ts +0 -11
- package/dist/office-share.js +0 -14
- package/dist/office-share.js.map +1 -1
- package/dist/outbound-handlers.d.ts +2 -30
- package/dist/outbound-handlers.js +4 -109
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +1 -71
- package/dist/outbound-schemas.js +14 -36
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/pane-quota-history.d.ts +0 -2
- package/dist/pane-quota-history.js +0 -20
- package/dist/pane-quota-history.js.map +1 -1
- package/dist/pause-marker.d.ts +1 -1
- package/dist/pause-marker.js +1 -1
- package/dist/pause-marker.js.map +1 -1
- package/dist/public-web-gateway.js +0 -16
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/public-web-link.d.ts +0 -11
- package/dist/public-web-link.js +0 -13
- package/dist/public-web-link.js.map +1 -1
- package/dist/quickstart-api.js +5 -9
- package/dist/quickstart-api.js.map +1 -1
- package/dist/quickstart.d.ts +0 -6
- package/dist/quickstart.js +6 -44
- package/dist/quickstart.js.map +1 -1
- package/dist/quota-notice-config.d.ts +22 -0
- package/dist/quota-notice-config.js +41 -0
- package/dist/quota-notice-config.js.map +1 -0
- package/dist/scheduler/task-board-text.js +1 -1
- package/dist/scheduler/task-board-text.js.map +1 -1
- package/dist/scheduler/task-board.d.ts +0 -4
- package/dist/scheduler/task-board.js +3 -9
- package/dist/scheduler/task-board.js.map +1 -1
- package/dist/service-installer.d.ts +2 -7
- package/dist/service-installer.js +10 -13
- package/dist/service-installer.js.map +1 -1
- package/dist/settings-api.d.ts +0 -12
- package/dist/settings-api.js +7 -487
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-baseline.d.ts +0 -7
- package/dist/settings-baseline.js +1 -3
- package/dist/settings-baseline.js.map +1 -1
- package/dist/settings-change.js +7 -35
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-confirmation.d.ts +1 -16
- package/dist/settings-confirmation.js +9 -47
- package/dist/settings-confirmation.js.map +1 -1
- package/dist/settings-effect.d.ts +0 -17
- package/dist/settings-effect.js +1 -155
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-http-confirmation.d.ts +0 -4
- package/dist/settings-http-confirmation.js +3 -43
- package/dist/settings-http-confirmation.js.map +1 -1
- package/dist/settings-instance-patch.js +1 -1
- package/dist/settings-instance-patch.js.map +1 -1
- package/dist/settings-request-capability.d.ts +0 -2
- package/dist/settings-request-capability.js +0 -4
- package/dist/settings-request-capability.js.map +1 -1
- package/dist/settings-transaction.d.ts +0 -4
- package/dist/settings-transaction.js +0 -9
- package/dist/settings-transaction.js.map +1 -1
- package/dist/setup-form.js +3 -6
- package/dist/setup-form.js.map +1 -1
- package/dist/setup-i18n.js +0 -3
- package/dist/setup-i18n.js.map +1 -1
- package/dist/setup-wizard.js +2 -6
- package/dist/setup-wizard.js.map +1 -1
- package/dist/task-board-tool.d.ts +1 -2
- package/dist/task-board-tool.js +6 -62
- package/dist/task-board-tool.js.map +1 -1
- package/dist/tmux-control.d.ts +1 -2
- package/dist/tmux-control.js +4 -4
- package/dist/tmux-control.js.map +1 -1
- package/dist/tmux-exec-helper.js +1 -32
- package/dist/tmux-exec-helper.js.map +1 -1
- package/dist/tmux-manager.d.ts +2 -3
- package/dist/tmux-manager.js +36 -45
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tmux-read.js +3 -4
- package/dist/tmux-read.js.map +1 -1
- package/dist/tool-permissions.js +1 -2
- package/dist/tool-permissions.js.map +1 -1
- package/dist/topic-commands.js +5 -9
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-delta-reader.d.ts +1 -1
- package/dist/transcript-delta-reader.js +1 -1
- package/dist/transcript-delta-reader.js.map +1 -1
- package/dist/transcript-monitor.d.ts +0 -3
- package/dist/transcript-monitor.js +51 -27
- package/dist/transcript-monitor.js.map +1 -1
- package/dist/transcript-sources.d.ts +0 -5
- package/dist/transcript-sources.js +79 -8
- package/dist/transcript-sources.js.map +1 -1
- package/dist/types.d.ts +3 -29
- package/dist/ui/app.html +8 -1
- package/dist/ui/backend-signin.js +21 -39
- package/dist/ui/chat-ambient.js +1 -1
- package/dist/ui/chat-md-strings.js +9 -3
- package/dist/ui/chat-render.js +670 -3
- package/dist/ui/chat-store.js +3 -14
- package/dist/ui/chat-strings.js +285 -3
- package/dist/ui/chat-thread.js +969 -3
- package/dist/ui/chat-time.js +80 -3
- package/dist/ui/chat-tour.js +1 -1
- package/dist/ui/fleet-office-pack.d.ts +0 -9
- package/dist/ui/fleet-office-pack.js +4 -76
- package/dist/ui/fleet-office-skin.js +5 -23
- package/dist/ui/fleet-office-store.js +0 -5
- package/dist/ui/fleet-office.js +6 -173
- package/dist/ui/fleet-task-card.js +4 -8
- package/dist/ui/fleet-task-common.js +2 -2
- package/dist/ui/fleet-tasks.js +39 -125
- package/dist/ui/html-attachment.js +40 -3
- package/dist/ui/office-share-page.js +2 -4
- package/dist/ui/panel-chat.js +75 -90
- package/dist/ui/panel-details.js +2 -3
- package/dist/ui/panel-fleet.js +18 -105
- package/dist/ui/panel-log.js +2 -2
- package/dist/ui/panel-needs.js +4 -162
- package/dist/ui/panel-notices.js +4 -3
- package/dist/ui/panel-settings.js +202 -281
- package/dist/ui/preview-pages.js +1 -1
- package/dist/ui/preview-panel.js +13 -21
- package/dist/ui/preview-versions.js +1 -1
- package/dist/ui/preview.js +476 -3
- package/dist/ui/search-dialog.js +3 -4
- package/dist/ui/settings-appearance.js +23 -122
- package/dist/ui/settings-catalog.js +10 -37
- package/dist/ui/settings-confirm.js +1 -3
- package/dist/ui/settings-dialogs.js +20 -48
- package/dist/ui/settings-guests.js +14 -27
- package/dist/ui/settings-model.js +1 -10
- package/dist/ui/settings-quota-notice.js +100 -0
- package/dist/ui/settings-registry.js +5 -15
- package/dist/ui/settings-strings.js +32 -105
- package/dist/ui/settings-web-authority.js +13 -18
- package/dist/ui/shared/app-i18n.js +2 -2
- package/dist/ui/shared/app-route.js +3 -12
- package/dist/ui/shared/app-session.js +2 -6
- package/dist/ui/shared/app-shell.js +26 -87
- package/dist/ui/shared/app-store.js +2 -3
- package/dist/ui/shared/app-stream.js +1 -3
- package/dist/ui/shared/app.css +5 -1368
- package/dist/ui/shared/app.js +5 -17
- package/dist/ui/shared/header-tools.js +9 -9
- package/dist/ui/shared/instance-nav.js +7 -34
- package/dist/ui/shared/instance-switch.js +3 -4
- package/dist/ui/shared/loading.css +37 -0
- package/dist/ui/shared/signin.js +6 -211
- package/dist/ui/shared/tokens.css +0 -1
- package/dist/ui/shared/ui-dialog.js +2 -2
- package/dist/ui/shared/ui-menu.js +10 -30
- package/dist/ui/shared/ui-states.js +14 -3
- package/dist/ui/shared/vendor/vendor.json +2 -19
- package/dist/ui/shared/view-strings.js +0 -8
- package/dist/ui/signin.html +5 -23
- package/dist/unattended-install.js +1 -2
- package/dist/unattended-install.js.map +1 -1
- package/dist/usage/providers.d.ts +5 -0
- package/dist/usage/providers.js +6 -2
- package/dist/usage/providers.js.map +1 -1
- package/dist/usage/quota-notices.d.ts +38 -0
- package/dist/usage/quota-notices.js +160 -0
- package/dist/usage/quota-notices.js.map +1 -0
- package/dist/usage/usage-api.d.ts +1 -0
- package/dist/usage/usage-api.js +16 -0
- package/dist/usage/usage-api.js.map +1 -1
- package/dist/view-api.js +7 -5
- package/dist/view-api.js.map +1 -1
- package/dist/web-api.d.ts +2 -80
- package/dist/web-api.js +10 -513
- package/dist/web-api.js.map +1 -1
- package/dist/web-backend-login.d.ts +1 -23
- package/dist/web-backend-login.js +17 -11
- package/dist/web-backend-login.js.map +1 -1
- package/dist/web-chat-history.d.ts +2 -19
- package/dist/web-chat-history.js +3 -72
- package/dist/web-chat-history.js.map +1 -1
- package/dist/web-office-skins.d.ts +0 -9
- package/dist/web-office-skins.js +1 -16
- package/dist/web-office-skins.js.map +1 -1
- package/dist/web-only-fleet.d.ts +0 -20
- package/dist/web-only-fleet.js +0 -21
- package/dist/web-only-fleet.js.map +1 -1
- package/dist/web-session.d.ts +0 -42
- package/dist/web-session.js +0 -9
- package/dist/web-session.js.map +1 -1
- package/dist/web-settings-patch.d.ts +1 -3
- package/dist/web-settings-patch.js +1 -4
- package/dist/web-settings-patch.js.map +1 -1
- package/dist/web-shell-routes.d.ts +1 -10
- package/dist/web-shell-routes.js +2 -14
- package/dist/web-shell-routes.js.map +1 -1
- package/dist/web-terminal.d.ts +30 -4
- package/dist/web-terminal.js +6 -9
- package/dist/web-terminal.js.map +1 -1
- package/dist/yaml-shared-nodes.js +3 -8
- package/dist/yaml-shared-nodes.js.map +1 -1
- package/launcher/agend-install.cjs +1 -8
- package/launcher/postinstall.cjs +2 -27
- package/package.json +3 -10
- package/templates/launchd.plist.ejs +1 -3
- package/dist/accounts-view.d.ts +0 -97
- package/dist/accounts-view.js +0 -116
- package/dist/accounts-view.js.map +0 -1
- package/dist/agent-runtime-api.d.ts +0 -4
- package/dist/agent-runtime-api.js +0 -59
- package/dist/agent-runtime-api.js.map +0 -1
- package/dist/agent-runtime-change.d.ts +0 -76
- package/dist/agent-runtime-change.js +0 -114
- package/dist/agent-runtime-change.js.map +0 -1
- package/dist/agent-workspace.d.ts +0 -93
- package/dist/agent-workspace.js +0 -353
- package/dist/agent-workspace.js.map +0 -1
- package/dist/backend/grok-model-cache.d.ts +0 -7
- package/dist/backend/grok-model-cache.js +0 -65
- package/dist/backend/grok-model-cache.js.map +0 -1
- package/dist/backend/native-pane.d.ts +0 -11
- package/dist/backend/native-pane.js +0 -59
- package/dist/backend/native-pane.js.map +0 -1
- package/dist/build-provenance-cli.d.ts +0 -3
- package/dist/build-provenance-cli.js +0 -11
- package/dist/build-provenance-cli.js.map +0 -1
- package/dist/build-provenance.d.ts +0 -20
- package/dist/build-provenance.js +0 -67
- package/dist/build-provenance.js.map +0 -1
- package/dist/build-provenance.json +0 -1
- package/dist/claude-auth-status.d.ts +0 -48
- package/dist/claude-auth-status.js +0 -149
- package/dist/claude-auth-status.js.map +0 -1
- package/dist/fleet-windows-runtime.d.ts +0 -98
- package/dist/fleet-windows-runtime.js +0 -467
- package/dist/fleet-windows-runtime.js.map +0 -1
- package/dist/general-binding.d.ts +0 -85
- package/dist/general-binding.js +0 -298
- package/dist/general-binding.js.map +0 -1
- package/dist/general-host-owner.d.ts +0 -8
- package/dist/general-host-owner.js +0 -26
- package/dist/general-host-owner.js.map +0 -1
- package/dist/general-role.d.ts +0 -5
- package/dist/general-role.js +0 -27
- package/dist/general-role.js.map +0 -1
- package/dist/hub/admission.d.ts +0 -28
- package/dist/hub/admission.js +0 -62
- package/dist/hub/admission.js.map +0 -1
- package/dist/hub/attachments/limits.d.ts +0 -20
- package/dist/hub/attachments/limits.js +0 -48
- package/dist/hub/attachments/limits.js.map +0 -1
- package/dist/hub/attachments/store.d.ts +0 -116
- package/dist/hub/attachments/store.js +0 -246
- package/dist/hub/attachments/store.js.map +0 -1
- package/dist/hub/audit/index.d.ts +0 -62
- package/dist/hub/audit/index.js +0 -344
- package/dist/hub/audit/index.js.map +0 -1
- package/dist/hub/browser-certificate.d.ts +0 -38
- package/dist/hub/browser-certificate.js +0 -247
- package/dist/hub/browser-certificate.js.map +0 -1
- package/dist/hub/buttons-model.d.ts +0 -9
- package/dist/hub/buttons-model.js +0 -42
- package/dist/hub/buttons-model.js.map +0 -1
- package/dist/hub/buttons.d.ts +0 -54
- package/dist/hub/buttons.js +0 -346
- package/dist/hub/buttons.js.map +0 -1
- package/dist/hub/catalog.d.ts +0 -74
- package/dist/hub/catalog.js +0 -195
- package/dist/hub/catalog.js.map +0 -1
- package/dist/hub/client.d.ts +0 -69
- package/dist/hub/client.js +0 -300
- package/dist/hub/client.js.map +0 -1
- package/dist/hub/compose/member.d.ts +0 -139
- package/dist/hub/compose/member.js +0 -450
- package/dist/hub/compose/member.js.map +0 -1
- package/dist/hub/compose/server.d.ts +0 -77
- package/dist/hub/compose/server.js +0 -349
- package/dist/hub/compose/server.js.map +0 -1
- package/dist/hub/compose/views.d.ts +0 -12
- package/dist/hub/compose/views.js +0 -4
- package/dist/hub/compose/views.js.map +0 -1
- package/dist/hub/db.d.ts +0 -56
- package/dist/hub/db.js +0 -188
- package/dist/hub/db.js.map +0 -1
- package/dist/hub/directory/config.d.ts +0 -39
- package/dist/hub/directory/config.js +0 -108
- package/dist/hub/directory/config.js.map +0 -1
- package/dist/hub/directory/directory.d.ts +0 -18
- package/dist/hub/directory/directory.js +0 -320
- package/dist/hub/directory/directory.js.map +0 -1
- package/dist/hub/directory/index.d.ts +0 -7
- package/dist/hub/directory/index.js +0 -4
- package/dist/hub/directory/index.js.map +0 -1
- package/dist/hub/directory/profiles.d.ts +0 -41
- package/dist/hub/directory/profiles.js +0 -90
- package/dist/hub/directory/profiles.js.map +0 -1
- package/dist/hub/directory/types.d.ts +0 -71
- package/dist/hub/directory/types.js +0 -14
- package/dist/hub/directory/types.js.map +0 -1
- package/dist/hub/execution/cli-provider.d.ts +0 -23
- package/dist/hub/execution/cli-provider.js +0 -341
- package/dist/hub/execution/cli-provider.js.map +0 -1
- package/dist/hub/execution/index.d.ts +0 -13
- package/dist/hub/execution/index.js +0 -8
- package/dist/hub/execution/index.js.map +0 -1
- package/dist/hub/execution/model-broker.d.ts +0 -24
- package/dist/hub/execution/model-broker.js +0 -208
- package/dist/hub/execution/model-broker.js.map +0 -1
- package/dist/hub/execution/provider-setup.d.ts +0 -11
- package/dist/hub/execution/provider-setup.js +0 -21
- package/dist/hub/execution/provider-setup.js.map +0 -1
- package/dist/hub/execution/sandbox-runner.d.ts +0 -1
- package/dist/hub/execution/sandbox-runner.js +0 -221
- package/dist/hub/execution/sandbox-runner.js.map +0 -1
- package/dist/hub/execution/service.d.ts +0 -136
- package/dist/hub/execution/service.js +0 -459
- package/dist/hub/execution/service.js.map +0 -1
- package/dist/hub/execution/store.d.ts +0 -61
- package/dist/hub/execution/store.js +0 -182
- package/dist/hub/execution/store.js.map +0 -1
- package/dist/hub/execution/views.d.ts +0 -20
- package/dist/hub/execution/views.js +0 -48
- package/dist/hub/execution/views.js.map +0 -1
- package/dist/hub/http/compose.d.ts +0 -20
- package/dist/hub/http/compose.js +0 -518
- package/dist/hub/http/compose.js.map +0 -1
- package/dist/hub/http/core.d.ts +0 -49
- package/dist/hub/http/core.js +0 -124
- package/dist/hub/http/core.js.map +0 -1
- package/dist/hub/http/deps.d.ts +0 -61
- package/dist/hub/http/deps.js +0 -2
- package/dist/hub/http/deps.js.map +0 -1
- package/dist/hub/http/schema.d.ts +0 -14
- package/dist/hub/http/schema.js +0 -80
- package/dist/hub/http/schema.js.map +0 -1
- package/dist/hub/identity.d.ts +0 -32
- package/dist/hub/identity.js +0 -80
- package/dist/hub/identity.js.map +0 -1
- package/dist/hub/init/browser-certificate.d.ts +0 -9
- package/dist/hub/init/browser-certificate.js +0 -78
- package/dist/hub/init/browser-certificate.js.map +0 -1
- package/dist/hub/init/browser-tls.d.ts +0 -18
- package/dist/hub/init/browser-tls.js +0 -62
- package/dist/hub/init/browser-tls.js.map +0 -1
- package/dist/hub/init/cli.d.ts +0 -3
- package/dist/hub/init/cli.js +0 -83
- package/dist/hub/init/cli.js.map +0 -1
- package/dist/hub/init/directory-certificate.d.ts +0 -24
- package/dist/hub/init/directory-certificate.js +0 -222
- package/dist/hub/init/directory-certificate.js.map +0 -1
- package/dist/hub/init/existing-fleet.d.ts +0 -6
- package/dist/hub/init/existing-fleet.js +0 -58
- package/dist/hub/init/existing-fleet.js.map +0 -1
- package/dist/hub/init/handoff.d.ts +0 -8
- package/dist/hub/init/handoff.js +0 -36
- package/dist/hub/init/handoff.js.map +0 -1
- package/dist/hub/init/identity.d.ts +0 -5
- package/dist/hub/init/identity.js +0 -24
- package/dist/hub/init/identity.js.map +0 -1
- package/dist/hub/init/initializer.d.ts +0 -24
- package/dist/hub/init/initializer.js +0 -385
- package/dist/hub/init/initializer.js.map +0 -1
- package/dist/hub/init/inventory.d.ts +0 -17
- package/dist/hub/init/inventory.js +0 -33
- package/dist/hub/init/inventory.js.map +0 -1
- package/dist/hub/init/layout.d.ts +0 -32
- package/dist/hub/init/layout.js +0 -53
- package/dist/hub/init/layout.js.map +0 -1
- package/dist/hub/init/network.d.ts +0 -18
- package/dist/hub/init/network.js +0 -104
- package/dist/hub/init/network.js.map +0 -1
- package/dist/hub/init/plan-digest.d.ts +0 -5
- package/dist/hub/init/plan-digest.js +0 -47
- package/dist/hub/init/plan-digest.js.map +0 -1
- package/dist/hub/init/prompt.d.ts +0 -26
- package/dist/hub/init/prompt.js +0 -110
- package/dist/hub/init/prompt.js.map +0 -1
- package/dist/hub/init/secret-file.d.ts +0 -1
- package/dist/hub/init/secret-file.js +0 -59
- package/dist/hub/init/secret-file.js.map +0 -1
- package/dist/hub/init/text.d.ts +0 -127
- package/dist/hub/init/text.js +0 -247
- package/dist/hub/init/text.js.map +0 -1
- package/dist/hub/init/types.d.ts +0 -114
- package/dist/hub/init/types.js +0 -9
- package/dist/hub/init/types.js.map +0 -1
- package/dist/hub/init/wizard.d.ts +0 -34
- package/dist/hub/init/wizard.js +0 -554
- package/dist/hub/init/wizard.js.map +0 -1
- package/dist/hub/initialization.d.ts +0 -23
- package/dist/hub/initialization.js +0 -28
- package/dist/hub/initialization.js.map +0 -1
- package/dist/hub/member/agent-mode.d.ts +0 -6
- package/dist/hub/member/agent-mode.js +0 -23
- package/dist/hub/member/agent-mode.js.map +0 -1
- package/dist/hub/member/attachments.d.ts +0 -29
- package/dist/hub/member/attachments.js +0 -107
- package/dist/hub/member/attachments.js.map +0 -1
- package/dist/hub/member/exposure-api.d.ts +0 -87
- package/dist/hub/member/exposure-api.js +0 -64
- package/dist/hub/member/exposure-api.js.map +0 -1
- package/dist/hub/member/exposures.d.ts +0 -123
- package/dist/hub/member/exposures.js +0 -282
- package/dist/hub/member/exposures.js.map +0 -1
- package/dist/hub/member/pairing-api.d.ts +0 -85
- package/dist/hub/member/pairing-api.js +0 -385
- package/dist/hub/member/pairing-api.js.map +0 -1
- package/dist/hub/member/quota.d.ts +0 -20
- package/dist/hub/member/quota.js +0 -98
- package/dist/hub/member/quota.js.map +0 -1
- package/dist/hub/member-journal.d.ts +0 -104
- package/dist/hub/member-journal.js +0 -336
- package/dist/hub/member-journal.js.map +0 -1
- package/dist/hub/member-reconciliation.d.ts +0 -14
- package/dist/hub/member-reconciliation.js +0 -97
- package/dist/hub/member-reconciliation.js.map +0 -1
- package/dist/hub/mount.d.ts +0 -39
- package/dist/hub/mount.js +0 -123
- package/dist/hub/mount.js.map +0 -1
- package/dist/hub/pairing-client.d.ts +0 -17
- package/dist/hub/pairing-client.js +0 -108
- package/dist/hub/pairing-client.js.map +0 -1
- package/dist/hub/pairing.d.ts +0 -65
- package/dist/hub/pairing.js +0 -211
- package/dist/hub/pairing.js.map +0 -1
- package/dist/hub/policy.d.ts +0 -63
- package/dist/hub/policy.js +0 -147
- package/dist/hub/policy.js.map +0 -1
- package/dist/hub/preview.d.ts +0 -32
- package/dist/hub/preview.js +0 -64
- package/dist/hub/preview.js.map +0 -1
- package/dist/hub/private-files.d.ts +0 -5
- package/dist/hub/private-files.js +0 -44
- package/dist/hub/private-files.js.map +0 -1
- package/dist/hub/profile.d.ts +0 -59
- package/dist/hub/profile.js +0 -73
- package/dist/hub/profile.js.map +0 -1
- package/dist/hub/protocol.d.ts +0 -779
- package/dist/hub/protocol.js +0 -93
- package/dist/hub/protocol.js.map +0 -1
- package/dist/hub/quota.d.ts +0 -24
- package/dist/hub/quota.js +0 -112
- package/dist/hub/quota.js.map +0 -1
- package/dist/hub/representative.d.ts +0 -141
- package/dist/hub/representative.js +0 -528
- package/dist/hub/representative.js.map +0 -1
- package/dist/hub/retention.d.ts +0 -17
- package/dist/hub/retention.js +0 -45
- package/dist/hub/retention.js.map +0 -1
- package/dist/hub/rooms.d.ts +0 -120
- package/dist/hub/rooms.js +0 -535
- package/dist/hub/rooms.js.map +0 -1
- package/dist/hub/runtime.d.ts +0 -106
- package/dist/hub/runtime.js +0 -298
- package/dist/hub/runtime.js.map +0 -1
- package/dist/hub/server.d.ts +0 -56
- package/dist/hub/server.js +0 -202
- package/dist/hub/server.js.map +0 -1
- package/dist/hub/service-start.d.ts +0 -17
- package/dist/hub/service-start.js +0 -109
- package/dist/hub/service-start.js.map +0 -1
- package/dist/hub/sessions.d.ts +0 -53
- package/dist/hub/sessions.js +0 -196
- package/dist/hub/sessions.js.map +0 -1
- package/dist/hub/socket.d.ts +0 -24
- package/dist/hub/socket.js +0 -79
- package/dist/hub/socket.js.map +0 -1
- package/dist/hub/store.d.ts +0 -77
- package/dist/hub/store.js +0 -88
- package/dist/hub/store.js.map +0 -1
- package/dist/hub/tls.d.ts +0 -31
- package/dist/hub/tls.js +0 -135
- package/dist/hub/tls.js.map +0 -1
- package/dist/hub/types.d.ts +0 -401
- package/dist/hub/types.js +0 -2
- package/dist/hub/types.js.map +0 -1
- package/dist/hub/validation.d.ts +0 -33
- package/dist/hub/validation.js +0 -136
- package/dist/hub/validation.js.map +0 -1
- package/dist/hub/version-floor.d.ts +0 -10
- package/dist/hub/version-floor.js +0 -45
- package/dist/hub/version-floor.js.map +0 -1
- package/dist/hub-browser-certificate-policy.d.ts +0 -31
- package/dist/hub-browser-certificate-policy.js +0 -25
- package/dist/hub-browser-certificate-policy.js.map +0 -1
- package/dist/hub-membership-settings.d.ts +0 -6
- package/dist/hub-membership-settings.js +0 -21
- package/dist/hub-membership-settings.js.map +0 -1
- package/dist/hub-mode.d.ts +0 -15
- package/dist/hub-mode.js +0 -17
- package/dist/hub-mode.js.map +0 -1
- package/dist/hub-pairing-summary.d.ts +0 -48
- package/dist/hub-pairing-summary.js +0 -36
- package/dist/hub-pairing-summary.js.map +0 -1
- package/dist/hub-report-target.d.ts +0 -32
- package/dist/hub-report-target.js +0 -33
- package/dist/hub-report-target.js.map +0 -1
- package/dist/hub-retention-policy.d.ts +0 -14
- package/dist/hub-retention-policy.js +0 -15
- package/dist/hub-retention-policy.js.map +0 -1
- package/dist/launchd-service-domain.d.ts +0 -5
- package/dist/launchd-service-domain.js +0 -21
- package/dist/launchd-service-domain.js.map +0 -1
- package/dist/local-pane-endpoint.d.ts +0 -46
- package/dist/local-pane-endpoint.js +0 -189
- package/dist/local-pane-endpoint.js.map +0 -1
- package/dist/local-pane-launcher.d.ts +0 -2
- package/dist/local-pane-launcher.js +0 -38
- package/dist/local-pane-launcher.js.map +0 -1
- package/dist/local-pane-stage.ps1 +0 -101
- package/dist/model-catalog-defaults.d.ts +0 -14
- package/dist/model-catalog-defaults.js +0 -20
- package/dist/model-catalog-defaults.js.map +0 -1
- package/dist/native-agent-admission.d.ts +0 -7
- package/dist/native-agent-admission.js +0 -26
- package/dist/native-agent-admission.js.map +0 -1
- package/dist/native-daemon-client.d.ts +0 -13
- package/dist/native-daemon-client.js +0 -28
- package/dist/native-daemon-client.js.map +0 -1
- package/dist/native-instance-api.d.ts +0 -13
- package/dist/native-instance-api.js +0 -217
- package/dist/native-instance-api.js.map +0 -1
- package/dist/native-instance-input.d.ts +0 -87
- package/dist/native-instance-input.js +0 -59
- package/dist/native-instance-input.js.map +0 -1
- package/dist/native-instance-registry.d.ts +0 -38
- package/dist/native-instance-registry.js +0 -129
- package/dist/native-instance-registry.js.map +0 -1
- package/dist/native-mcp.d.ts +0 -43
- package/dist/native-mcp.js +0 -291
- package/dist/native-mcp.js.map +0 -1
- package/dist/native-model-catalog.d.ts +0 -5
- package/dist/native-model-catalog.js +0 -76
- package/dist/native-model-catalog.js.map +0 -1
- package/dist/native-pane-crash-budget.d.ts +0 -20
- package/dist/native-pane-crash-budget.js +0 -60
- package/dist/native-pane-crash-budget.js.map +0 -1
- package/dist/native-pane-create.d.ts +0 -26
- package/dist/native-pane-create.js +0 -53
- package/dist/native-pane-create.js.map +0 -1
- package/dist/native-pane-lifecycle.d.ts +0 -73
- package/dist/native-pane-lifecycle.js +0 -239
- package/dist/native-pane-lifecycle.js.map +0 -1
- package/dist/native-pane-manager.d.ts +0 -59
- package/dist/native-pane-manager.js +0 -592
- package/dist/native-pane-manager.js.map +0 -1
- package/dist/native-pane-output-log.d.ts +0 -15
- package/dist/native-pane-output-log.js +0 -108
- package/dist/native-pane-output-log.js.map +0 -1
- package/dist/native-pane-reconciliation.d.ts +0 -4
- package/dist/native-pane-reconciliation.js +0 -40
- package/dist/native-pane-reconciliation.js.map +0 -1
- package/dist/native-pane-recovery.d.ts +0 -12
- package/dist/native-pane-recovery.js +0 -10
- package/dist/native-pane-recovery.js.map +0 -1
- package/dist/native-pane-tools.d.ts +0 -2
- package/dist/native-pane-tools.js +0 -14
- package/dist/native-pane-tools.js.map +0 -1
- package/dist/office-talk.d.ts +0 -26
- package/dist/office-talk.js +0 -50
- package/dist/office-talk.js.map +0 -1
- package/dist/pane-port.d.ts +0 -118
- package/dist/pane-port.js +0 -2
- package/dist/pane-port.js.map +0 -1
- package/dist/runtime-api.d.ts +0 -10
- package/dist/runtime-api.js +0 -189
- package/dist/runtime-api.js.map +0 -1
- package/dist/runtime-assets/@xterm/addon-serialize/LICENSE +0 -21
- package/dist/runtime-assets/@xterm/addon-serialize/lib/addon-serialize.js +0 -2
- package/dist/runtime-assets/@xterm/addon-serialize/lib/addon-serialize.mjs +0 -19
- package/dist/runtime-assets/@xterm/addon-serialize/package.json +0 -29
- package/dist/runtime-assets/@xterm/headless/LICENSE +0 -21
- package/dist/runtime-assets/@xterm/headless/lib-headless/xterm-headless.js +0 -2
- package/dist/runtime-assets/@xterm/headless/lib-headless/xterm-headless.mjs +0 -46
- package/dist/runtime-assets/@xterm/headless/package.json +0 -29
- package/dist/runtime-assets/node-pty/CONPTY-LICENSE +0 -21
- package/dist/runtime-assets/node-pty/CONPTY-NOTICE.md +0 -503
- package/dist/runtime-assets/node-pty/LICENSE +0 -69
- package/dist/runtime-assets/node-pty/lib/conpty_console_list_agent.js +0 -16
- package/dist/runtime-assets/node-pty/lib/eventEmitter2.js +0 -47
- package/dist/runtime-assets/node-pty/lib/index.js +0 -52
- package/dist/runtime-assets/node-pty/lib/interfaces.js +0 -7
- package/dist/runtime-assets/node-pty/lib/shared/conout.js +0 -11
- package/dist/runtime-assets/node-pty/lib/terminal.js +0 -190
- package/dist/runtime-assets/node-pty/lib/types.js +0 -7
- package/dist/runtime-assets/node-pty/lib/unixTerminal.js +0 -346
- package/dist/runtime-assets/node-pty/lib/utils.js +0 -39
- package/dist/runtime-assets/node-pty/lib/windowsConoutConnection.js +0 -125
- package/dist/runtime-assets/node-pty/lib/windowsPtyAgent.js +0 -320
- package/dist/runtime-assets/node-pty/lib/windowsTerminal.js +0 -199
- package/dist/runtime-assets/node-pty/lib/worker/conoutSocketWorker.js +0 -22
- package/dist/runtime-assets/node-pty/package.json +0 -64
- package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty.node +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
- package/dist/runtime-build-info.d.ts +0 -9
- package/dist/runtime-build-info.js +0 -59
- package/dist/runtime-build-info.js.map +0 -1
- package/dist/runtime-bundle.d.ts +0 -22
- package/dist/runtime-bundle.js +0 -158
- package/dist/runtime-bundle.js.map +0 -1
- package/dist/runtime-cli.d.ts +0 -14
- package/dist/runtime-cli.js +0 -271
- package/dist/runtime-cli.js.map +0 -1
- package/dist/runtime-client-store.d.ts +0 -75
- package/dist/runtime-client-store.js +0 -372
- package/dist/runtime-client-store.js.map +0 -1
- package/dist/runtime-client.d.ts +0 -174
- package/dist/runtime-client.js +0 -1010
- package/dist/runtime-client.js.map +0 -1
- package/dist/runtime-connection.d.ts +0 -22
- package/dist/runtime-connection.js +0 -93
- package/dist/runtime-connection.js.map +0 -1
- package/dist/runtime-coordinator.d.ts +0 -98
- package/dist/runtime-coordinator.js +0 -1089
- package/dist/runtime-coordinator.js.map +0 -1
- package/dist/runtime-credential-profiles.d.ts +0 -78
- package/dist/runtime-credential-profiles.js +0 -280
- package/dist/runtime-credential-profiles.js.map +0 -1
- package/dist/runtime-general-protocol.d.ts +0 -22
- package/dist/runtime-general-protocol.js +0 -57
- package/dist/runtime-general-protocol.js.map +0 -1
- package/dist/runtime-general-workspace.d.ts +0 -17
- package/dist/runtime-general-workspace.js +0 -213
- package/dist/runtime-general-workspace.js.map +0 -1
- package/dist/runtime-install.d.ts +0 -50
- package/dist/runtime-install.js +0 -186
- package/dist/runtime-install.js.map +0 -1
- package/dist/runtime-pane-assets.d.ts +0 -17
- package/dist/runtime-pane-assets.js +0 -23
- package/dist/runtime-pane-assets.js.map +0 -1
- package/dist/runtime-pane-boot.d.ts +0 -9
- package/dist/runtime-pane-boot.js +0 -47
- package/dist/runtime-pane-boot.js.map +0 -1
- package/dist/runtime-pane-codex-index.d.ts +0 -10
- package/dist/runtime-pane-codex-index.js +0 -151
- package/dist/runtime-pane-codex-index.js.map +0 -1
- package/dist/runtime-pane-config.d.ts +0 -16
- package/dist/runtime-pane-config.js +0 -54
- package/dist/runtime-pane-config.js.map +0 -1
- package/dist/runtime-pane-host.d.ts +0 -63
- package/dist/runtime-pane-host.js +0 -467
- package/dist/runtime-pane-host.js.map +0 -1
- package/dist/runtime-pane-job-owner.d.ts +0 -1
- package/dist/runtime-pane-job-owner.js +0 -29
- package/dist/runtime-pane-job-owner.js.map +0 -1
- package/dist/runtime-pane-job.ps1 +0 -116
- package/dist/runtime-pane-link.d.ts +0 -47
- package/dist/runtime-pane-link.js +0 -337
- package/dist/runtime-pane-link.js.map +0 -1
- package/dist/runtime-pane-mcp-protocol.d.ts +0 -32
- package/dist/runtime-pane-mcp-protocol.js +0 -39
- package/dist/runtime-pane-mcp-protocol.js.map +0 -1
- package/dist/runtime-pane-mcp-relay.d.ts +0 -18
- package/dist/runtime-pane-mcp-relay.js +0 -80
- package/dist/runtime-pane-mcp-relay.js.map +0 -1
- package/dist/runtime-pane-mcp.d.ts +0 -55
- package/dist/runtime-pane-mcp.js +0 -153
- package/dist/runtime-pane-mcp.js.map +0 -1
- package/dist/runtime-pane-native.d.ts +0 -75
- package/dist/runtime-pane-native.js +0 -114
- package/dist/runtime-pane-native.js.map +0 -1
- package/dist/runtime-pane-output.d.ts +0 -19
- package/dist/runtime-pane-output.js +0 -53
- package/dist/runtime-pane-output.js.map +0 -1
- package/dist/runtime-pane-port.d.ts +0 -144
- package/dist/runtime-pane-port.js +0 -574
- package/dist/runtime-pane-port.js.map +0 -1
- package/dist/runtime-pane-private.d.ts +0 -14
- package/dist/runtime-pane-private.js +0 -51
- package/dist/runtime-pane-private.js.map +0 -1
- package/dist/runtime-pane-private.ps1 +0 -14
- package/dist/runtime-pane-process.d.ts +0 -4
- package/dist/runtime-pane-process.js +0 -117
- package/dist/runtime-pane-process.js.map +0 -1
- package/dist/runtime-pane-protocol.d.ts +0 -182
- package/dist/runtime-pane-protocol.js +0 -217
- package/dist/runtime-pane-protocol.js.map +0 -1
- package/dist/runtime-pane-quota-history.d.ts +0 -6
- package/dist/runtime-pane-quota-history.js +0 -44
- package/dist/runtime-pane-quota-history.js.map +0 -1
- package/dist/runtime-pane-screen.d.ts +0 -19
- package/dist/runtime-pane-screen.js +0 -76
- package/dist/runtime-pane-screen.js.map +0 -1
- package/dist/runtime-pane-service.d.ts +0 -16
- package/dist/runtime-pane-service.js +0 -256
- package/dist/runtime-pane-service.js.map +0 -1
- package/dist/runtime-pane-stdio-protocol.d.ts +0 -54
- package/dist/runtime-pane-stdio-protocol.js +0 -94
- package/dist/runtime-pane-stdio-protocol.js.map +0 -1
- package/dist/runtime-pane-stdio.d.ts +0 -3
- package/dist/runtime-pane-stdio.js +0 -123
- package/dist/runtime-pane-stdio.js.map +0 -1
- package/dist/runtime-pane-store.d.ts +0 -33
- package/dist/runtime-pane-store.js +0 -164
- package/dist/runtime-pane-store.js.map +0 -1
- package/dist/runtime-pane-transcript-protocol.d.ts +0 -43
- package/dist/runtime-pane-transcript-protocol.js +0 -58
- package/dist/runtime-pane-transcript-protocol.js.map +0 -1
- package/dist/runtime-pane-transcript.d.ts +0 -50
- package/dist/runtime-pane-transcript.js +0 -666
- package/dist/runtime-pane-transcript.js.map +0 -1
- package/dist/runtime-pane-worker.d.ts +0 -1
- package/dist/runtime-pane-worker.js +0 -167
- package/dist/runtime-pane-worker.js.map +0 -1
- package/dist/runtime-protocol.d.ts +0 -177
- package/dist/runtime-protocol.js +0 -49
- package/dist/runtime-protocol.js.map +0 -1
- package/dist/runtime-switches.d.ts +0 -79
- package/dist/runtime-switches.js +0 -90
- package/dist/runtime-switches.js.map +0 -1
- package/dist/runtime-transcript-delta-reader.d.ts +0 -23
- package/dist/runtime-transcript-delta-reader.js +0 -74
- package/dist/runtime-transcript-delta-reader.js.map +0 -1
- package/dist/runtime-transcript-source.d.ts +0 -36
- package/dist/runtime-transcript-source.js +0 -189
- package/dist/runtime-transcript-source.js.map +0 -1
- package/dist/runtime-update-activity.d.ts +0 -21
- package/dist/runtime-update-activity.js +0 -51
- package/dist/runtime-update-activity.js.map +0 -1
- package/dist/runtime-update-artifact.d.ts +0 -31
- package/dist/runtime-update-artifact.js +0 -252
- package/dist/runtime-update-artifact.js.map +0 -1
- package/dist/runtime-update-install.d.ts +0 -31
- package/dist/runtime-update-install.js +0 -205
- package/dist/runtime-update-install.js.map +0 -1
- package/dist/runtime-update-journal.d.ts +0 -44
- package/dist/runtime-update-journal.js +0 -121
- package/dist/runtime-update-journal.js.map +0 -1
- package/dist/runtime-update-lock.d.ts +0 -48
- package/dist/runtime-update-lock.js +0 -217
- package/dist/runtime-update-lock.js.map +0 -1
- package/dist/runtime-update-owners.d.ts +0 -29
- package/dist/runtime-update-owners.js +0 -240
- package/dist/runtime-update-owners.js.map +0 -1
- package/dist/runtime-update-protocol.d.ts +0 -15
- package/dist/runtime-update-protocol.js +0 -13
- package/dist/runtime-update-protocol.js.map +0 -1
- package/dist/runtime-windows-bridge.d.ts +0 -42
- package/dist/runtime-windows-bridge.js +0 -167
- package/dist/runtime-windows-bridge.js.map +0 -1
- package/dist/service-drain.d.ts +0 -19
- package/dist/service-drain.js +0 -64
- package/dist/service-drain.js.map +0 -1
- package/dist/settings-route-lifetime.d.ts +0 -14
- package/dist/settings-route-lifetime.js +0 -48
- package/dist/settings-route-lifetime.js.map +0 -1
- package/dist/tmux-binary.d.ts +0 -59
- package/dist/tmux-binary.js +0 -200
- package/dist/tmux-binary.js.map +0 -1
- package/dist/tmux-pane-host.d.ts +0 -26
- package/dist/tmux-pane-host.js +0 -25
- package/dist/tmux-pane-host.js.map +0 -1
- package/dist/transcript-needles.d.ts +0 -42
- package/dist/transcript-needles.js +0 -166
- package/dist/transcript-needles.js.map +0 -1
- package/dist/transcript-records.d.ts +0 -21
- package/dist/transcript-records.js +0 -141
- package/dist/transcript-records.js.map +0 -1
- package/dist/ui/account-identity.js +0 -27
- package/dist/ui/accounts-view.js +0 -214
- package/dist/ui/agent-proposals.js +0 -90
- package/dist/ui/agent-runtime-settings.js +0 -68
- package/dist/ui/agent-runtime.js +0 -124
- package/dist/ui/cli-picker.js +0 -42
- package/dist/ui/credential-profile-select.js +0 -54
- package/dist/ui/fleet-office-dialogue.d.ts +0 -30
- package/dist/ui/fleet-office-dialogue.js +0 -382
- package/dist/ui/fleet-task-menu.js +0 -188
- package/dist/ui/fleet-task-stats.js +0 -124
- package/dist/ui/fleet-task-view.js +0 -340
- package/dist/ui/general-location.js +0 -71
- package/dist/ui/hub-agent-copy.js +0 -23
- package/dist/ui/hub-button-actions.js +0 -65
- package/dist/ui/hub-chat-store.js +0 -158
- package/dist/ui/hub-chat-strings.js +0 -77
- package/dist/ui/hub-client.js +0 -329
- package/dist/ui/hub-owner-strings.js +0 -51
- package/dist/ui/hub-provider-guidance.js +0 -31
- package/dist/ui/hub-quota.js +0 -85
- package/dist/ui/hub-strings.js +0 -162
- package/dist/ui/hub-switcher.js +0 -27
- package/dist/ui/native-instance-settings.js +0 -44
- package/dist/ui/native-pane-recovery.js +0 -45
- package/dist/ui/panel-hub.js +0 -619
- package/dist/ui/panel-runtimes.js +0 -425
- package/dist/ui/panel-windows-agent.js +0 -86
- package/dist/ui/panel-windows-cli.js +0 -189
- package/dist/ui/provider-marks.js +0 -83
- package/dist/ui/runtime-catalog.js +0 -55
- package/dist/ui/runtime-commands.d.ts +0 -4
- package/dist/ui/runtime-commands.js +0 -59
- package/dist/ui/settings-access-strings.js +0 -42
- package/dist/ui/settings-agent-filters.js +0 -94
- package/dist/ui/settings-build-version.js +0 -35
- package/dist/ui/settings-devices.js +0 -253
- package/dist/ui/settings-hub-browser-certificate.js +0 -74
- package/dist/ui/settings-hub-membership.js +0 -72
- package/dist/ui/settings-hub-retention.js +0 -52
- package/dist/ui/settings-hub.js +0 -196
- package/dist/ui/settings-layout.js +0 -242
- package/dist/ui/settings-outside.js +0 -242
- package/dist/ui/settings-shared-strings.js +0 -143
- package/dist/ui/settings-shared.js +0 -345
- package/dist/ui/settings-shortcuts.js +0 -65
- package/dist/ui/shared/accounts.css +0 -15
- package/dist/ui/shared/chat-composer.js +0 -68
- package/dist/ui/shared/chat-md-strings.js +0 -9
- package/dist/ui/shared/chat-render.js +0 -682
- package/dist/ui/shared/chat-strings.js +0 -333
- package/dist/ui/shared/chat-thread.js +0 -969
- package/dist/ui/shared/chat-time.js +0 -80
- package/dist/ui/shared/html-attachment.js +0 -42
- package/dist/ui/shared/hub-chat.css +0 -85
- package/dist/ui/shared/hub-owner.css +0 -33
- package/dist/ui/shared/hub-quota.css +0 -8
- package/dist/ui/shared/hub.css +0 -71
- package/dist/ui/shared/machine-name.js +0 -13
- package/dist/ui/shared/page-head.js +0 -8
- package/dist/ui/shared/preview.js +0 -476
- package/dist/ui/shared/qrcode.module.js +0 -2237
- package/dist/ui/shared/runtime-install.css +0 -26
- package/dist/ui/shared/settings-width.js +0 -31
- package/dist/ui/shared/side-rail.js +0 -15
- package/dist/ui/shared/task-board.css +0 -95
- package/dist/ui/shared/vendor/qrcode-generator.LICENSE +0 -27
- package/dist/ui/shared/workspace.css +0 -20
- package/dist/ui/windows-agents-nav.js +0 -2
- package/dist/ui/windows-cli-catalog.js +0 -108
- package/dist/ui/workspace-panel.js +0 -189
- package/dist/ui/workspace-strings.js +0 -35
- package/dist/web-device-login.d.ts +0 -153
- package/dist/web-device-login.js +0 -278
- package/dist/web-device-login.js.map +0 -1
- package/dist/web-remote-access.d.ts +0 -152
- package/dist/web-remote-access.js +0 -368
- package/dist/web-remote-access.js.map +0 -1
- package/dist/windows-agents.d.ts +0 -127
- package/dist/windows-agents.js +0 -491
- package/dist/windows-agents.js.map +0 -1
- package/dist/windows-cli-api.d.ts +0 -34
- package/dist/windows-cli-api.js +0 -185
- package/dist/windows-cli-api.js.map +0 -1
- package/dist/windows-cli-providers.d.ts +0 -106
- package/dist/windows-cli-providers.js +0 -424
- package/dist/windows-cli-providers.js.map +0 -1
- package/dist/windows-cli-worker.d.ts +0 -83
- package/dist/windows-cli-worker.js +0 -570
- package/dist/windows-cli-worker.js.map +0 -1
- package/dist/windows-cli.d.ts +0 -126
- package/dist/windows-cli.js +0 -416
- package/dist/windows-cli.js.map +0 -1
- package/dist/windows-native-mcp.d.ts +0 -19
- package/dist/windows-native-mcp.js +0 -143
- package/dist/windows-native-mcp.js.map +0 -1
- package/dist/windows-pane-mcp.d.ts +0 -26
- package/dist/windows-pane-mcp.js +0 -187
- package/dist/windows-pane-mcp.js.map +0 -1
- package/launcher/launchd-session-type.cjs +0 -14
- package/launcher/tmux-bundle.cjs +0 -247
- package/templates/runtime-assets/conpty-LICENSE +0 -21
- package/templates/runtime-assets/conpty-NOTICE.md +0 -503
- package/templates/runtime-assets/local-pane-stage.ps1 +0 -101
- package/templates/runtime-assets/runtime-pane-job.ps1 +0 -116
- package/templates/runtime-assets/runtime-pane-private.ps1 +0 -14
- package/templates/runtime-assets/xterm-LICENSE +0 -21
- package/templates/runtime-install/install.ps1 +0 -270
package/dist/web-api.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { hubModeOf, hubNameOf } from "./hub-mode.js";
|
|
2
1
|
import { CANVAS_WORKER_EXPERIMENTAL_MESSAGE } from "./web-experimental.js";
|
|
3
|
-
import { MachineSlotLimitError } from "./windows-agents.js";
|
|
4
2
|
import { daemonTopicMode } from "./web-only-fleet.js";
|
|
5
3
|
import { webHumanOrigin } from "./human-delivery-receipts.js";
|
|
6
4
|
import { classifyWebPeer, confirmAfterBody, noAuthority } from "./authority/web-authority.js";
|
|
@@ -34,7 +32,6 @@ import { shellRoute } from "./web-shell-routes.js";
|
|
|
34
32
|
import { createReadStream, createWriteStream, readFileSync } from "node:fs";
|
|
35
33
|
import { join, dirname } from "node:path";
|
|
36
34
|
import { fileURLToPath } from "node:url";
|
|
37
|
-
import { createHash, randomUUID } from "node:crypto";
|
|
38
35
|
import { CreateInstanceArgs, CreateScheduleArgs, UpdateScheduleArgs, validateArgs } from "./outbound-schemas.js";
|
|
39
36
|
import { scheduleView } from "./web-schedules.js";
|
|
40
37
|
import { DEFAULT_SCHEDULER_CONFIG } from "./scheduler/index.js";
|
|
@@ -47,9 +44,6 @@ import { WEB_CHAT_CARDS_OVERFLOW, catchUpWindow, newWebMessageId, parseLastEvent
|
|
|
47
44
|
import { PAGE_SHARE_LIMITS, htmlFences, htmlTitle } from "./page-share.js";
|
|
48
45
|
import { attachmentDelivery, createPartFile, displayName, fileTooLargeText, INLINE_MIME, isFileId, MEDIA_RANGE_MAX, publicAttachment, UPLOAD_LIMITS, UPLOAD_MAX_MS, UPLOAD_STALL_MS, UploadSniffer, uploadLimits, wellFormed } from "./web-upload.js";
|
|
49
46
|
import { getAgendHome } from "./paths.js";
|
|
50
|
-
import { workspaceChanges, workspaceFile, workspaceImage, workspaceList, workspaceRoot, WorkspaceError } from "./agent-workspace.js";
|
|
51
|
-
import { isGeneralInstance } from "./general-instance.js";
|
|
52
|
-
import { resolveToolSet } from "./tool-permissions.js";
|
|
53
47
|
import { OPERATOR, isOwnerEffectKey } from "./web-prefs.js";
|
|
54
48
|
import { WEB_NAME_FALLBACK, webPersonKey } from "./web-profile.js";
|
|
55
49
|
import { commitTeamCreate, commitTeamUpdate } from "./outbound-handlers.js";
|
|
@@ -60,13 +54,6 @@ import { resolveTz } from "./tz-utils.js";
|
|
|
60
54
|
import { QUERY_MAX_CHARS, RESULT_MAX, SEARCH_SOURCES } from "./search/search-store.js";
|
|
61
55
|
import { xmsgShown } from "./search/search-docs.js";
|
|
62
56
|
import { WebSendDedupe } from "./web-send-dedupe.js";
|
|
63
|
-
import { handleWindowsCliRequest, nativeCliAuthorization } from "./windows-cli-api.js";
|
|
64
|
-
import { createNativeInstance, handleNativeInstanceRequest } from "./native-instance-api.js";
|
|
65
|
-
import { handleAgentRuntimeChange } from "./agent-runtime-api.js";
|
|
66
|
-
import { isWindowsInstance, isNativePaneInstance, isNativeExecInstance } from "./native-instance-registry.js";
|
|
67
|
-
import { handleNativeModelCatalog } from "./native-model-catalog.js";
|
|
68
|
-
import { claudeDocumentedModels } from "./model-catalog-defaults.js";
|
|
69
|
-
import { handleRuntimeRequest } from "./runtime-api.js";
|
|
70
57
|
import { taskBoardOffNames } from "./dashboard-permissions.js";
|
|
71
58
|
import { topicFields } from "./instance-topic-delete.js";
|
|
72
59
|
// ── Strict public-facing schemas ────────────────────────────────────────────
|
|
@@ -247,8 +234,8 @@ function visibleNeeds(ctx, gateway, items) {
|
|
|
247
234
|
const { hidden } = boardHiding(ctx, true);
|
|
248
235
|
return items.filter((i) => {
|
|
249
236
|
const item = i;
|
|
250
|
-
if (item.type === "config"
|
|
251
|
-
return false; //
|
|
237
|
+
if (item.type === "config")
|
|
238
|
+
return false; // private operator configuration diagnostics never cross a public link
|
|
252
239
|
if (item.type !== "task")
|
|
253
240
|
return true;
|
|
254
241
|
const code = item.card?.code;
|
|
@@ -1223,18 +1210,7 @@ function handleBackendLogin(req, res, url, ctx, path, method) {
|
|
|
1223
1210
|
}
|
|
1224
1211
|
const action = /^\/ui\/backend-login\/(check|start|cancel)$/.exec(path)?.[1];
|
|
1225
1212
|
if (reading && path === "/ui/backend-login" && [...url.searchParams.keys()].length === 0) {
|
|
1226
|
-
|
|
1227
|
-
// and the page is told to read again when something new is known.
|
|
1228
|
-
try {
|
|
1229
|
-
ctx.refreshSignInIdentities?.();
|
|
1230
|
-
}
|
|
1231
|
-
catch { /* the list is served with what is known */ }
|
|
1232
|
-
try {
|
|
1233
|
-
json(res, 200, { login: logins.view(first.handle), targets: ctx.backendSignInTargets?.() ?? [] });
|
|
1234
|
-
}
|
|
1235
|
-
catch {
|
|
1236
|
-
json(res, 503, { error: "sign_in_unavailable" });
|
|
1237
|
-
}
|
|
1213
|
+
json(res, 200, { login: logins.view(first.handle), targets: ctx.backendSignInTargets?.() ?? [] });
|
|
1238
1214
|
return true;
|
|
1239
1215
|
}
|
|
1240
1216
|
if (method !== "POST" || !action) {
|
|
@@ -1897,29 +1873,6 @@ export function handleWebRequest(req, res, url, ctx) {
|
|
|
1897
1873
|
return false;
|
|
1898
1874
|
}
|
|
1899
1875
|
// ── Static files ───────────────────────────────────────
|
|
1900
|
-
// Native local tools retain their administrator boundary on the shared chat/read/action routes.
|
|
1901
|
-
const nativePath = /^\/ui\/(?:chat|instance|cancel|stop|start|restart)\/([^/]+)$/.exec(path);
|
|
1902
|
-
let nativeTarget = url.searchParams.get("instance") ?? "";
|
|
1903
|
-
if (nativePath) {
|
|
1904
|
-
try {
|
|
1905
|
-
nativeTarget = decodeURIComponent(nativePath[1]);
|
|
1906
|
-
}
|
|
1907
|
-
catch {
|
|
1908
|
-
nativeTarget = "";
|
|
1909
|
-
}
|
|
1910
|
-
}
|
|
1911
|
-
if (isWindowsInstance(ctx.fleetConfig?.instances?.[nativeTarget]) && !nativeCliAuthorization(req, url, ctx)) {
|
|
1912
|
-
json(res, 403, { error: "Windows runtime requires an administrator on the local dashboard" });
|
|
1913
|
-
return true;
|
|
1914
|
-
}
|
|
1915
|
-
if (handleAgentRuntimeChange(req, res, url, ctx))
|
|
1916
|
-
return true;
|
|
1917
|
-
if (handleNativeInstanceRequest(req, res, url, ctx))
|
|
1918
|
-
return true;
|
|
1919
|
-
if (handleWindowsCliRequest(req, res, url, ctx))
|
|
1920
|
-
return true;
|
|
1921
|
-
if (handleRuntimeRequest(req, res, url, ctx))
|
|
1922
|
-
return true;
|
|
1923
1876
|
// #1408: the app shell, for exactly the paths the classifier names (src/web-shell-routes.ts). One page for every
|
|
1924
1877
|
// route; the client router mounts the panel. A malformed instance name is a 400, an unknown one is the shell (the
|
|
1925
1878
|
// panel says "not found"), so the response never tells which names exist.
|
|
@@ -1928,11 +1881,6 @@ export function handleWebRequest(req, res, url, ctx) {
|
|
|
1928
1881
|
json(res, 400, { error: "invalid instance name" });
|
|
1929
1882
|
return true;
|
|
1930
1883
|
}
|
|
1931
|
-
// AgEnD Hub P1: the Hub's pages live on a Hub's own listener (slice 1), never on this fleet's: the ordinary not-found.
|
|
1932
|
-
if (shell?.kind === "shell" && shell.route.panel === "hub") {
|
|
1933
|
-
json(res, 404, { error: "not found" });
|
|
1934
|
-
return true;
|
|
1935
|
-
}
|
|
1936
1884
|
if (shell?.kind === "shell") {
|
|
1937
1885
|
serveAppShell(req, res, ctx, "full");
|
|
1938
1886
|
return true;
|
|
@@ -1980,45 +1928,7 @@ export function handleWebRequest(req, res, url, ctx) {
|
|
|
1980
1928
|
json(res, 400, { error: "backend (and optional instance) required" });
|
|
1981
1929
|
return true;
|
|
1982
1930
|
}
|
|
1983
|
-
|
|
1984
|
-
const machineId = url.searchParams.get("machineId");
|
|
1985
|
-
if (machineId !== null && (!/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i.test(machineId) || runtime === "wsl")) {
|
|
1986
|
-
json(res, 400, { error: "Invalid model runtime machine" });
|
|
1987
|
-
return true;
|
|
1988
|
-
}
|
|
1989
|
-
if ((runtime !== null && runtime !== "wsl" && runtime !== "windows") || (refresh !== null && refresh !== "1")) {
|
|
1990
|
-
json(res, 400, { error: "Invalid model catalog options" });
|
|
1991
|
-
return true;
|
|
1992
|
-
}
|
|
1993
|
-
if (handleNativeModelCatalog(req, res, url, ctx))
|
|
1994
|
-
return true;
|
|
1995
|
-
const models = ctx.modelCatalogFor?.(backend, instance) ?? [];
|
|
1996
|
-
const answerCatalog = () => {
|
|
1997
|
-
if (backend === "claude-code" && !models.length) {
|
|
1998
|
-
const version = ctx.backendAvailabilityRows?.().find(row => row.backend === backend)?.version;
|
|
1999
|
-
json(res, 200, { backend, models: claudeDocumentedModels(version), source: "official-catalog" });
|
|
2000
|
-
}
|
|
2001
|
-
else
|
|
2002
|
-
json(res, 200, { backend, models });
|
|
2003
|
-
};
|
|
2004
|
-
// The existing catalog belongs to this instance/account and always wins.
|
|
2005
|
-
if (models.length || !ctx.cliModelCatalogFor) {
|
|
2006
|
-
answerCatalog();
|
|
2007
|
-
return true;
|
|
2008
|
-
}
|
|
2009
|
-
const canAnswer = () => !res.headersSent && !res.destroyed && !res.writableEnded && stillAuthorized(req, res, url, ctx);
|
|
2010
|
-
void (async () => {
|
|
2011
|
-
const cliModels = await ctx.cliModelCatalogFor?.(backend, instance) ?? [];
|
|
2012
|
-
if (!canAnswer())
|
|
2013
|
-
return;
|
|
2014
|
-
if (cliModels.length)
|
|
2015
|
-
json(res, 200, { backend, models: cliModels, source: "cli-cache" });
|
|
2016
|
-
else
|
|
2017
|
-
answerCatalog();
|
|
2018
|
-
})().catch(() => {
|
|
2019
|
-
if (canAnswer())
|
|
2020
|
-
json(res, 503, { error: "CLI model cache unavailable" });
|
|
2021
|
-
});
|
|
1931
|
+
json(res, 200, { backend, models: ctx.modelCatalogFor?.(backend, instance) ?? [] });
|
|
2022
1932
|
return true;
|
|
2023
1933
|
}
|
|
2024
1934
|
if (method === "GET" && path === "/ui/backends") {
|
|
@@ -2224,112 +2134,6 @@ export function handleWebRequest(req, res, url, ctx) {
|
|
|
2224
2134
|
json(res, 200, { messages, boot: ctx.webChatHistory?.boot ?? null, lastId: ctx.webChatHistory?.lastId ?? 0, ...(allHidden ? { allHidden: true } : {}) });
|
|
2225
2135
|
return true;
|
|
2226
2136
|
}
|
|
2227
|
-
// ── #3212 PR 1: Settings → Agents → Accounts (read-only) ─────────────────────────────────
|
|
2228
|
-
// Each CLI's default sign-in and credential profiles, who uses them and their weekly usage. Names, states, the masked
|
|
2229
|
-
// identity and the host login command (which, as in the sign-in list, names the profile's folder) — no credential or
|
|
2230
|
-
// full e-mail: only for the fleet's local admin session — never the public link, a guest, a token or the gateway (the
|
|
2231
|
-
// same rule as the sign-in list it extends).
|
|
2232
|
-
if (method === "GET" && path === "/ui/accounts") {
|
|
2233
|
-
res.setHeader("Cache-Control", "private, no-store");
|
|
2234
|
-
if (gatewayRequestContext(req)) {
|
|
2235
|
-
json(res, 404, { error: "not_found" });
|
|
2236
|
-
return true;
|
|
2237
|
-
}
|
|
2238
|
-
const localAdmin = () => {
|
|
2239
|
-
const v = evaluateWebRequest(req, url, ctx.webToken ?? null, ctx.webSessions, { touch: false });
|
|
2240
|
-
return v.kind === "allow" && v.via === "session" && v.session.tier === "admin" && v.session.surface === "local" ? v.session : null;
|
|
2241
|
-
};
|
|
2242
|
-
const who = localAdmin();
|
|
2243
|
-
if (!who) {
|
|
2244
|
-
json(res, 403, { error: "accounts_need_a_local_admin" });
|
|
2245
|
-
return true;
|
|
2246
|
-
}
|
|
2247
|
-
if (typeof ctx.accountsView !== "function") {
|
|
2248
|
-
json(res, 404, { error: "not_found" });
|
|
2249
|
-
return true;
|
|
2250
|
-
}
|
|
2251
|
-
void ctx.accountsView().then(view => {
|
|
2252
|
-
if (localAdmin()?.handle !== who.handle) {
|
|
2253
|
-
json(res, 403, { error: "accounts_need_a_local_admin" });
|
|
2254
|
-
return;
|
|
2255
|
-
}
|
|
2256
|
-
json(res, 200, view);
|
|
2257
|
-
}, err => { ctx.logger.error({ err: err.message }, "Accounts view failed"); json(res, 500, { error: "could not read the accounts" }); });
|
|
2258
|
-
return true;
|
|
2259
|
-
}
|
|
2260
|
-
// ── #3153 P1: an agent's Files / Changes (read-only) ─────────────────────────────────
|
|
2261
|
-
// The fleet's local admin session only: never the public link, a guest, a token or a connection from outside. One
|
|
2262
|
-
// agent's own working directory (agent-workspace.ts confines and filters every path); not General or a coordinator
|
|
2263
|
-
// (they work in the fleet's own directory), not an agent on another machine.
|
|
2264
|
-
if (method === "GET" && path === "/ui/workspace") {
|
|
2265
|
-
res.setHeader("Cache-Control", "private, no-store");
|
|
2266
|
-
res.setHeader("X-Content-Type-Options", "nosniff");
|
|
2267
|
-
if (gatewayRequestContext(req)) {
|
|
2268
|
-
json(res, 404, { error: "not_found" });
|
|
2269
|
-
return true;
|
|
2270
|
-
}
|
|
2271
|
-
const localAdmin = () => {
|
|
2272
|
-
const v = evaluateWebRequest(req, url, ctx.webToken ?? null, ctx.webSessions, { touch: false });
|
|
2273
|
-
return v.kind === "allow" && v.via === "session" && v.session.tier === "admin" && v.session.surface === "local" ? v.session : null;
|
|
2274
|
-
};
|
|
2275
|
-
const who = localAdmin();
|
|
2276
|
-
if (!who) {
|
|
2277
|
-
json(res, 403, { error: "workspace_needs_a_local_admin" });
|
|
2278
|
-
return true;
|
|
2279
|
-
}
|
|
2280
|
-
const p = url.searchParams, instance = p.get("instance") ?? "", op = p.get("op") ?? "";
|
|
2281
|
-
const cfg = ctx.fleetConfig?.instances && Object.hasOwn(ctx.fleetConfig.instances, instance) ? ctx.fleetConfig.instances[instance] : undefined;
|
|
2282
|
-
if (!cfg) {
|
|
2283
|
-
json(res, 404, { error: "not_found" });
|
|
2284
|
-
return true;
|
|
2285
|
-
}
|
|
2286
|
-
const offered = !isGeneralInstance(ctx.fleetConfig, instance) && resolveToolSet(cfg, instance) !== "coordinator"
|
|
2287
|
-
&& cfg.runtime !== "windows" && !cfg.machine_id;
|
|
2288
|
-
if (!offered) {
|
|
2289
|
-
json(res, 404, { error: "workspace_not_offered" });
|
|
2290
|
-
return true;
|
|
2291
|
-
}
|
|
2292
|
-
if (!["changes", "list", "file", "image"].includes(op)) {
|
|
2293
|
-
json(res, 400, { error: "op: changes | list | file | image" });
|
|
2294
|
-
return true;
|
|
2295
|
-
}
|
|
2296
|
-
const workDir = String(cfg.working_directory ?? "").replace(/^~(?=$|\/)/, process.env.HOME ?? "~");
|
|
2297
|
-
void (async () => {
|
|
2298
|
-
try {
|
|
2299
|
-
const ws = await workspaceRoot(workDir, getAgendHome());
|
|
2300
|
-
// The session must still be the same one when the answer goes out (it may have ended while git ran).
|
|
2301
|
-
const answer = async () => {
|
|
2302
|
-
if (op === "changes")
|
|
2303
|
-
return { kind: "json", body: await workspaceChanges(ws) };
|
|
2304
|
-
if (op === "list")
|
|
2305
|
-
return { kind: "json", body: await workspaceList(ws, p.get("path") ?? "") };
|
|
2306
|
-
if (op === "file")
|
|
2307
|
-
return { kind: "json", body: await workspaceFile(ws, p.get("path")) };
|
|
2308
|
-
return { kind: "image", body: await workspaceImage(ws, p.get("path")) };
|
|
2309
|
-
};
|
|
2310
|
-
const out = await answer();
|
|
2311
|
-
if (localAdmin()?.handle !== who.handle) {
|
|
2312
|
-
json(res, 403, { error: "workspace_needs_a_local_admin" });
|
|
2313
|
-
return;
|
|
2314
|
-
}
|
|
2315
|
-
if (out.kind === "image") {
|
|
2316
|
-
res.writeHead(200, { "Content-Type": out.body.mime, "Content-Length": String(out.body.bytes.length), "Content-Security-Policy": "default-src 'none'; sandbox" });
|
|
2317
|
-
res.end(out.body.bytes);
|
|
2318
|
-
return;
|
|
2319
|
-
}
|
|
2320
|
-
json(res, 200, out.body);
|
|
2321
|
-
}
|
|
2322
|
-
catch (err) {
|
|
2323
|
-
if (err instanceof WorkspaceError) {
|
|
2324
|
-
json(res, err.code === "not_found" || err.code === "not_a_directory" ? 404 : 403, { error: err.code });
|
|
2325
|
-
return;
|
|
2326
|
-
}
|
|
2327
|
-
ctx.logger.error({ err: err.message, instance }, "Workspace read failed");
|
|
2328
|
-
json(res, 500, { error: "could not read the folder" });
|
|
2329
|
-
}
|
|
2330
|
-
})();
|
|
2331
|
-
return true;
|
|
2332
|
-
}
|
|
2333
2137
|
// ── #1218: the Log tab ─────────────────────────────────
|
|
2334
2138
|
// An instance's steps, read on demand from its own transcript (log-service.ts). Read-only, and offered on the public
|
|
2335
2139
|
// link on purpose (the user's decision): the same masking applies to every viewer. Passive (web-auth.ts).
|
|
@@ -3123,203 +2927,6 @@ export function handleWebRequest(req, res, url, ctx) {
|
|
|
3123
2927
|
});
|
|
3124
2928
|
return true;
|
|
3125
2929
|
}
|
|
3126
|
-
// ── #3008: connections from outside (a web-only fleet) ──
|
|
3127
|
-
// GET /ui/outside: the state (any admin; over the outside link too, read-only). Everything that changes it is this
|
|
3128
|
-
// computer's admin's, on this computer (the fleet asks the live session each time; the public link refuses these
|
|
3129
|
-
// routes outright): POST /ui/outside/enroll (a new secret, shown once), POST /ui/outside/enroll/confirm {code},
|
|
3130
|
-
// POST /ui/outside/remove, POST /ui/outside/switch {on}. Never a guest (not in GUEST_ROUTES).
|
|
3131
|
-
if (method === "GET" && path === "/ui/outside") {
|
|
3132
|
-
res.setHeader("Cache-Control", "no-store");
|
|
3133
|
-
json(res, 200, ctx.webOutsideStatus?.(req) ?? { webOnly: false, here: false, enrolled: false, enrolledAt: null, outside: false, pausedForMs: 0, link: null });
|
|
3134
|
-
return true;
|
|
3135
|
-
}
|
|
3136
|
-
if (method === "POST" && (path === "/ui/outside/enroll" || path === "/ui/outside/enroll/confirm" || path === "/ui/outside/remove" || path === "/ui/outside/switch")) {
|
|
3137
|
-
if (gatewayRequestContext(req)) {
|
|
3138
|
-
json(res, 403, { error: "outside_not_here" });
|
|
3139
|
-
return true;
|
|
3140
|
-
}
|
|
3141
|
-
(async () => {
|
|
3142
|
-
let body;
|
|
3143
|
-
try {
|
|
3144
|
-
body = await parseBody(req);
|
|
3145
|
-
}
|
|
3146
|
-
catch {
|
|
3147
|
-
json(res, 400, { error: "Invalid JSON" });
|
|
3148
|
-
return;
|
|
3149
|
-
}
|
|
3150
|
-
if (!permitWebContinuation(req, res, ctx))
|
|
3151
|
-
return;
|
|
3152
|
-
res.setHeader("Cache-Control", "no-store");
|
|
3153
|
-
if (path === "/ui/outside/enroll") {
|
|
3154
|
-
const r = ctx.webOutsideBeginEnrollment?.(req) ?? null;
|
|
3155
|
-
if (!r) {
|
|
3156
|
-
json(res, 403, { error: "outside_not_here" });
|
|
3157
|
-
return;
|
|
3158
|
-
}
|
|
3159
|
-
json(res, 200, r);
|
|
3160
|
-
return;
|
|
3161
|
-
}
|
|
3162
|
-
if (path === "/ui/outside/enroll/confirm") {
|
|
3163
|
-
const code = body && typeof body === "object" ? body.code : undefined;
|
|
3164
|
-
if (typeof code !== "string" || code.length > 32) {
|
|
3165
|
-
json(res, 400, { error: "code required" });
|
|
3166
|
-
return;
|
|
3167
|
-
}
|
|
3168
|
-
const r = ctx.webOutsideConfirmEnrollment?.(req, code) ?? "not_here";
|
|
3169
|
-
json(res, r === "ok" ? 200 : r === "not_here" ? 403 : r === "unsaved" ? 503 : 400, r === "ok" ? { ok: true } : { error: r === "not_here" ? "outside_not_here" : r });
|
|
3170
|
-
return;
|
|
3171
|
-
}
|
|
3172
|
-
if (path === "/ui/outside/remove") {
|
|
3173
|
-
const r = ctx.webOutsideRemove?.(req) ?? "not_here";
|
|
3174
|
-
json(res, r === "ok" ? 200 : r === "unsaved" ? 503 : 403, r === "ok" ? { ok: true } : { error: r === "unsaved" ? "unsaved" : "outside_not_here" });
|
|
3175
|
-
return;
|
|
3176
|
-
}
|
|
3177
|
-
const on = body && typeof body === "object" ? body.on : undefined;
|
|
3178
|
-
if (typeof on !== "boolean") {
|
|
3179
|
-
json(res, 400, { error: "on must be true or false" });
|
|
3180
|
-
return;
|
|
3181
|
-
}
|
|
3182
|
-
const r = ctx.webOutsideSwitch?.(req, on) ?? "not_here";
|
|
3183
|
-
json(res, r === "ok" ? 200 : r === "not_here" ? 403 : r === "unsaved" ? 503 : 409, r === "ok" ? { ok: true } : { error: r === "not_here" ? "outside_not_here" : r });
|
|
3184
|
-
})().catch(err => {
|
|
3185
|
-
ctx.logger.error({ err: err.message }, "Outside connections change failed");
|
|
3186
|
-
try {
|
|
3187
|
-
json(res, 500, { error: "outside_failed" });
|
|
3188
|
-
}
|
|
3189
|
-
catch { /* already answered */ }
|
|
3190
|
-
});
|
|
3191
|
-
return true;
|
|
3192
|
-
}
|
|
3193
|
-
// ── Refs #3061 (P2a): signing a new device in with its 8-character code (a web-only fleet) ──
|
|
3194
|
-
// GET /ui/devices: whether this is such a fleet and whether THIS session may approve (it is the verified owner — this
|
|
3195
|
-
// computer's admin here, or signed in from outside with the authenticator's code). POST /ui/devices/lookup {code}: the
|
|
3196
|
-
// request that code names, for the confirm screen; POST /ui/devices/approve {code} and /ui/devices/deny {code}. Every
|
|
3197
|
-
// one asks the live session again in the fleet (webDeviceLoginAct) and answers 403 `owner_required` to anyone else —
|
|
3198
|
-
// a guest, a LAN or device-approved session, the CLI's header token. Over the public link only for the owner who
|
|
3199
|
-
// signed in from outside. A decision hands the new device nothing: its session is made by its own next poll.
|
|
3200
|
-
if (method === "GET" && path === "/ui/devices") {
|
|
3201
|
-
res.setHeader("Cache-Control", "no-store");
|
|
3202
|
-
json(res, 200, ctx.webDevicesStatus?.(req) ?? { webOnly: false, owner: false, devices: [] });
|
|
3203
|
-
return true;
|
|
3204
|
-
}
|
|
3205
|
-
// Refs #3061 (P2b): POST /ui/devices/signout {handle} — the verified owner ends another signed-in device. The same
|
|
3206
|
-
// authority as approving one, asked of the live session in the fleet after the body is in (webDeviceSignOut answers
|
|
3207
|
-
// 403 `owner_required` to anyone else before it looks the handle up). Over the public link only for the owner signed in
|
|
3208
|
-
// from outside, like approving.
|
|
3209
|
-
if (method === "POST" && path === "/ui/devices/signout") {
|
|
3210
|
-
const act = ctx.webDeviceSignOut?.bind(ctx);
|
|
3211
|
-
if (!act) {
|
|
3212
|
-
json(res, 404, { error: "not_found" });
|
|
3213
|
-
return true;
|
|
3214
|
-
}
|
|
3215
|
-
(async () => {
|
|
3216
|
-
let body;
|
|
3217
|
-
try {
|
|
3218
|
-
body = await parseBody(req);
|
|
3219
|
-
}
|
|
3220
|
-
catch {
|
|
3221
|
-
json(res, 400, { error: "Invalid JSON" });
|
|
3222
|
-
return;
|
|
3223
|
-
}
|
|
3224
|
-
if (!permitWebContinuation(req, res, ctx))
|
|
3225
|
-
return;
|
|
3226
|
-
const handle = body && typeof body === "object" ? body.handle : undefined;
|
|
3227
|
-
if (typeof handle !== "string" || !/^[0-9a-f]{16}$/.test(handle)) {
|
|
3228
|
-
json(res, 400, { error: "handle required" });
|
|
3229
|
-
return;
|
|
3230
|
-
}
|
|
3231
|
-
res.setHeader("Cache-Control", "no-store");
|
|
3232
|
-
const r = act(req, handle);
|
|
3233
|
-
json(res, r.status, r.body);
|
|
3234
|
-
})().catch(err => {
|
|
3235
|
-
ctx.logger.error({ err: err.message }, "Device sign-out failed");
|
|
3236
|
-
try {
|
|
3237
|
-
json(res, 500, { error: "devices_failed" });
|
|
3238
|
-
}
|
|
3239
|
-
catch { /* already answered */ }
|
|
3240
|
-
});
|
|
3241
|
-
return true;
|
|
3242
|
-
}
|
|
3243
|
-
if (method === "POST" && (path === "/ui/devices/lookup" || path === "/ui/devices/approve" || path === "/ui/devices/deny")) {
|
|
3244
|
-
const act = ctx.webDeviceLoginAct?.bind(ctx);
|
|
3245
|
-
if (!act) {
|
|
3246
|
-
json(res, 404, { error: "not_found" });
|
|
3247
|
-
return true;
|
|
3248
|
-
}
|
|
3249
|
-
const op = path === "/ui/devices/lookup" ? "lookup" : path === "/ui/devices/approve" ? "approve" : "deny";
|
|
3250
|
-
(async () => {
|
|
3251
|
-
let body;
|
|
3252
|
-
try {
|
|
3253
|
-
body = await parseBody(req);
|
|
3254
|
-
}
|
|
3255
|
-
catch {
|
|
3256
|
-
json(res, 400, { error: "Invalid JSON" });
|
|
3257
|
-
return;
|
|
3258
|
-
}
|
|
3259
|
-
if (!permitWebContinuation(req, res, ctx))
|
|
3260
|
-
return;
|
|
3261
|
-
const code = body && typeof body === "object" ? body.code : undefined;
|
|
3262
|
-
if (typeof code !== "string" || code.length > 32) {
|
|
3263
|
-
json(res, 400, { error: "code required" });
|
|
3264
|
-
return;
|
|
3265
|
-
}
|
|
3266
|
-
res.setHeader("Cache-Control", "no-store");
|
|
3267
|
-
const r = act(req, op, code);
|
|
3268
|
-
if (typeof r.body.retryAfterMs === "number")
|
|
3269
|
-
res.setHeader("Retry-After", String(Math.ceil(r.body.retryAfterMs / 1000)));
|
|
3270
|
-
json(res, r.status, r.body);
|
|
3271
|
-
})().catch(err => {
|
|
3272
|
-
ctx.logger.error({ err: err.message }, "New device approval failed");
|
|
3273
|
-
try {
|
|
3274
|
-
json(res, 500, { error: "devices_failed" });
|
|
3275
|
-
}
|
|
3276
|
-
catch { /* already answered */ }
|
|
3277
|
-
});
|
|
3278
|
-
return true;
|
|
3279
|
-
}
|
|
3280
|
-
// ── alpha.2 (M-2300): an agent's Windows request, decided by a web-only fleet's owner in Needs you ──
|
|
3281
|
-
// The list is the owner's only: anyone else (a guest, a LAN or public-link session, a chat fleet's admin) reads an
|
|
3282
|
-
// empty one, so nothing actionable ever reaches them. The stream's `agent_proposals` event carries nothing.
|
|
3283
|
-
if (method === "GET" && path === "/ui/agent-proposals") {
|
|
3284
|
-
const list = ctx.webAgentProposals?.(req) ?? null;
|
|
3285
|
-
json(res, 200, { owner: list !== null, proposals: list ?? [] });
|
|
3286
|
-
return true;
|
|
3287
|
-
}
|
|
3288
|
-
const proposalMatch = method === "POST" ? /^\/ui\/agent-proposals\/([0-9a-f]{32})$/.exec(path) : null;
|
|
3289
|
-
if (proposalMatch) {
|
|
3290
|
-
if (!ctx.webDecideAgentProposal) {
|
|
3291
|
-
json(res, 404, { error: "not_found" });
|
|
3292
|
-
return true;
|
|
3293
|
-
}
|
|
3294
|
-
const decide = ctx.webDecideAgentProposal.bind(ctx), id = proposalMatch[1];
|
|
3295
|
-
(async () => {
|
|
3296
|
-
let body;
|
|
3297
|
-
try {
|
|
3298
|
-
body = await parseBody(req);
|
|
3299
|
-
}
|
|
3300
|
-
catch {
|
|
3301
|
-
json(res, 400, { error: "Invalid JSON" });
|
|
3302
|
-
return;
|
|
3303
|
-
}
|
|
3304
|
-
if (!permitWebContinuation(req, res, ctx))
|
|
3305
|
-
return;
|
|
3306
|
-
const decision = body && typeof body === "object" ? body.decision : undefined;
|
|
3307
|
-
if (decision !== "confirm" && decision !== "reject") {
|
|
3308
|
-
json(res, 400, { error: "decision must be confirm or reject" });
|
|
3309
|
-
return;
|
|
3310
|
-
}
|
|
3311
|
-
const r = await decide(req, id, decision);
|
|
3312
|
-
if (!res.headersSent && !res.destroyed)
|
|
3313
|
-
json(res, r.status, r.body);
|
|
3314
|
-
})().catch(err => {
|
|
3315
|
-
ctx.logger.error({ err: err.message }, "Agent request decision failed");
|
|
3316
|
-
try {
|
|
3317
|
-
json(res, 500, { error: "decide_failed" });
|
|
3318
|
-
}
|
|
3319
|
-
catch { /* already answered */ }
|
|
3320
|
-
});
|
|
3321
|
-
return true;
|
|
3322
|
-
}
|
|
3323
2930
|
if (method === "POST" && path === "/ui/needs/ack") {
|
|
3324
2931
|
if (!ctx.acknowledgeNeedsItem) {
|
|
3325
2932
|
json(res, 404, { error: "Nothing to acknowledge here" });
|
|
@@ -3445,20 +3052,6 @@ export function handleWebRequest(req, res, url, ctx) {
|
|
|
3445
3052
|
json(res, 400, { error: "instance and command required" });
|
|
3446
3053
|
return;
|
|
3447
3054
|
}
|
|
3448
|
-
if (isNativeExecInstance(ctx.fleetConfig?.instances[instance])) {
|
|
3449
|
-
json(res, 400, { error: "This runtime does not support CLI control commands; use Agent settings or Cancel" });
|
|
3450
|
-
return;
|
|
3451
|
-
}
|
|
3452
|
-
if (isNativePaneInstance(ctx.fleetConfig?.instances[instance])) {
|
|
3453
|
-
if (!nativeCliAuthorization(req, url, ctx)) {
|
|
3454
|
-
json(res, 403, { error: "Windows runtime requires an administrator on the local dashboard" });
|
|
3455
|
-
return;
|
|
3456
|
-
}
|
|
3457
|
-
if (command !== "model") {
|
|
3458
|
-
json(res, 400, { error: "This persistent Windows runtime supports the model command; use its shared controls for other actions" });
|
|
3459
|
-
return;
|
|
3460
|
-
}
|
|
3461
|
-
}
|
|
3462
3055
|
if (body.args !== undefined && str(body.args, MAX_COMMAND_ARGS) === undefined) {
|
|
3463
3056
|
json(res, 400, { error: "args too long" });
|
|
3464
3057
|
return;
|
|
@@ -3727,10 +3320,6 @@ export function handleWebRequest(req, res, url, ctx) {
|
|
|
3727
3320
|
const body = await parseBody(req);
|
|
3728
3321
|
if (!permitWebContinuation(req, res, ctx))
|
|
3729
3322
|
return;
|
|
3730
|
-
if (body?.runtime === "windows") {
|
|
3731
|
-
await createNativeInstance(req, res, url, ctx, body);
|
|
3732
|
-
return;
|
|
3733
|
-
}
|
|
3734
3323
|
const v = validateArgs(CreateInstanceArgs, body, "create_instance");
|
|
3735
3324
|
if (!v.ok) {
|
|
3736
3325
|
json(res, 400, { error: v.error });
|
|
@@ -4495,9 +4084,6 @@ function uploadRecipient(ctx, name) {
|
|
|
4495
4084
|
/** Closed, path-free explanations; arbitrary launch errors stay in the host log. */
|
|
4496
4085
|
function webDeliveryFailure(err) {
|
|
4497
4086
|
const message = err instanceof Error ? err.message : "";
|
|
4498
|
-
// M-2297: the per-PC agent limit — say so, with the agents holding its slots (names only: no path, no id).
|
|
4499
|
-
if (err instanceof MachineSlotLimitError)
|
|
4500
|
-
return { reason: "machine_limit", error: message, limit: err.limit, holders: err.holders.map(h => ({ name: h.name, unknown: h.unknown })) };
|
|
4501
4087
|
if (/No warm slot is free/.test(message))
|
|
4502
4088
|
return { reason: "wake_capacity", error: "No slot is free to wake this instance. Retry when another instance is idle." };
|
|
4503
4089
|
if (/login|log in|sign in|\bauth(?:entication|orization)?\b|credential|api.?key/i.test(message))
|
|
@@ -4545,15 +4131,6 @@ function handleSendMessage(req, res, ctx) {
|
|
|
4545
4131
|
return;
|
|
4546
4132
|
}
|
|
4547
4133
|
const { instance, message: typed, attachments = [], replyTo, clientId } = parsed.data;
|
|
4548
|
-
const native = isWindowsInstance(ctx.fleetConfig?.instances[instance]);
|
|
4549
|
-
if (native && !nativeCliAuthorization(req, new URL(req.url ?? "/", "http://localhost"), ctx)) {
|
|
4550
|
-
json(res, 403, { error: "Windows runtime requires an administrator on the local dashboard" });
|
|
4551
|
-
return;
|
|
4552
|
-
}
|
|
4553
|
-
if (native && attachments.length) {
|
|
4554
|
-
json(res, 400, { error: "Attachments are not supported by this runtime yet" });
|
|
4555
|
-
return;
|
|
4556
|
-
}
|
|
4557
4134
|
// #1920 step 2b: a guest writes only to an in-scope instance, while guests may chat, and never a command.
|
|
4558
4135
|
const guest = guestRequestOf(req);
|
|
4559
4136
|
const refused = guestChatRefusal(guest, instance);
|
|
@@ -4607,16 +4184,6 @@ function handleSendMessage(req, res, ctx) {
|
|
|
4607
4184
|
break;
|
|
4608
4185
|
}
|
|
4609
4186
|
}
|
|
4610
|
-
const locationHold = ctx.generalLocationDeliveryHold?.(instance);
|
|
4611
|
-
if (locationHold) {
|
|
4612
|
-
const messageId = newWebMessageId(), ts = new Date().toISOString();
|
|
4613
|
-
// Settle this client ID as answered. A Retry after reconnect must never queue its old input.
|
|
4614
|
-
acceptedId = messageId;
|
|
4615
|
-
ctx.emitSseEvent("message", { instance, sender: person.name, role: "user", text: typed, ts, messageId, ...(person.bound ? { from: person.voterKey } : {}), ...(clientId ? { clientId } : {}) });
|
|
4616
|
-
ctx.emitSseEvent("message", { instance, role: "status", sender: "AgEnD", text: locationHold, ts, messageId: newWebMessageId() });
|
|
4617
|
-
json(res, 200, { sent: true, messageId, serviceResponse: true });
|
|
4618
|
-
return;
|
|
4619
|
-
}
|
|
4620
4187
|
let files = [];
|
|
4621
4188
|
if (attachments.length > 0) {
|
|
4622
4189
|
const taken = ctx.webFiles?.takeForMessage(instance, attachments);
|
|
@@ -4639,39 +4206,15 @@ function handleSendMessage(req, res, ctx) {
|
|
|
4639
4206
|
// Recheck the same admission all the way through a wake, before the facade's actual IPC handoff.
|
|
4640
4207
|
const requestUrl = new URL(req.url ?? "/", "http://localhost");
|
|
4641
4208
|
const admission = admissionOf(req, requestUrl, ctx);
|
|
4642
|
-
|
|
4643
|
-
// instance still registered (a Windows one still Windows). A Windows turn is journaled before /ui/send answers and its
|
|
4644
|
-
// process starts after, so the bridge rechecks this one (a revoke in between still stops it); never res, which a
|
|
4645
|
-
// finished response marks destroyed (S-30: every web-chat turn to a Windows agent was refused).
|
|
4646
|
-
const authorityCurrent = () => admission !== null && admissionOf(req, requestUrl, ctx) === admission
|
|
4209
|
+
const stillCurrent = () => !res.destroyed && admission !== null && admissionOf(req, requestUrl, ctx) === admission
|
|
4647
4210
|
&& (!guest || (guest.current() && !guestChatRefusal(guest, instance)))
|
|
4648
|
-
&& (
|
|
4649
|
-
: registered ? registeredChatInstance(ctx, instance) : ctx.instanceIpcClients.has(instance));
|
|
4650
|
-
const stillCurrent = () => !res.destroyed && authorityCurrent();
|
|
4211
|
+
&& (registered ? registeredChatInstance(ctx, instance) : ctx.instanceIpcClients.has(instance));
|
|
4651
4212
|
const message = typed;
|
|
4652
4213
|
// #1939 S1: what the receipt records about who authorized it (observe only: agents still read web as recognition).
|
|
4653
4214
|
const { authority } = confirmAfterBody(arrival, webAuthorityOf(req, new URL(req.url ?? "/", "http://localhost"), ctx, instance));
|
|
4654
4215
|
const ts = new Date().toISOString();
|
|
4655
4216
|
// The id the agent is given, and the one its delivery reports come back under: the page's ticks.
|
|
4656
|
-
const
|
|
4657
|
-
if (!clientId)
|
|
4658
|
-
return randomUUID();
|
|
4659
|
-
const hash = createHash("sha256").update(`agend-native-web\0${WebSendDedupe.key(person.key, instance, clientId)}`).digest("hex");
|
|
4660
|
-
return `${hash.slice(0, 8)}-${hash.slice(8, 12)}-4${hash.slice(13, 16)}-8${hash.slice(17, 20)}-${hash.slice(20, 32)}`;
|
|
4661
|
-
})() : undefined;
|
|
4662
|
-
const messageId = nativeRequestId ? `native:${nativeRequestId}:user` : newWebMessageId();
|
|
4663
|
-
if (nativeRequestId && ctx.nativeInstanceRuntime) {
|
|
4664
|
-
const previous = ctx.nativeInstanceRuntime().get(instance)?.turns.find(turn => turn.id === nativeRequestId);
|
|
4665
|
-
if (previous) {
|
|
4666
|
-
if (previous.prompt !== delivery.text) {
|
|
4667
|
-
json(res, 409, { error: "clientId belongs to a different message" });
|
|
4668
|
-
return;
|
|
4669
|
-
}
|
|
4670
|
-
acceptedId = messageId;
|
|
4671
|
-
json(res, 200, { sent: true, messageId, repeated: true });
|
|
4672
|
-
return;
|
|
4673
|
-
}
|
|
4674
|
-
}
|
|
4217
|
+
const messageId = newWebMessageId();
|
|
4675
4218
|
// Use real Telegram context so daemon's lastChatId/lastThreadId are set,
|
|
4676
4219
|
// enabling reply tool even when first message comes from Web UI.
|
|
4677
4220
|
// Pure Web UI mode (no channel config) leaves these empty; the agent's reply then comes back to the
|
|
@@ -4717,12 +4260,11 @@ function handleSendMessage(req, res, ctx) {
|
|
|
4717
4260
|
let delivered;
|
|
4718
4261
|
try {
|
|
4719
4262
|
const deliver = (name, payload) => ctx.deliverHumanToInstance
|
|
4720
|
-
? ctx.deliverHumanToInstance(name, payload, webHumanOrigin(false, authority), typed, { stillCurrent
|
|
4721
|
-
: ctx.deliverToInstance(name, payload, { stillCurrent
|
|
4263
|
+
? ctx.deliverHumanToInstance(name, payload, webHumanOrigin(false, authority), typed, { stillCurrent })
|
|
4264
|
+
: ctx.deliverToInstance(name, payload, { stillCurrent });
|
|
4722
4265
|
delivered = await deliver(instance, {
|
|
4723
4266
|
type: "fleet_inbound",
|
|
4724
4267
|
content: delivery.text,
|
|
4725
|
-
...(nativeRequestId ? { requestId: nativeRequestId } : {}),
|
|
4726
4268
|
targetSession: instance,
|
|
4727
4269
|
meta: {
|
|
4728
4270
|
chat_id: groupId ? String(groupId) : "",
|
|
@@ -5119,16 +4661,6 @@ function shellHtmlTag(ctx, mode, viewer) {
|
|
|
5119
4661
|
function shellOwnerCss(ctx, mode, viewer) {
|
|
5120
4662
|
return mode === "full" && !viewer?.guest && viewer?.person !== null && viewer?.person !== undefined && ctx.ownerCss ? ctx.ownerCss.active(viewer.person) : null;
|
|
5121
4663
|
}
|
|
5122
|
-
/**
|
|
5123
|
-
* AgEnD Hub P1 (docs/design/hub.md, docs/design/hub-ui-client.md): the page's Hub mark — presentation only, never
|
|
5124
|
-
* authority, set by the listener that serves the page (never a client's choice): `member` on this fleet's listener when
|
|
5125
|
-
* `hub_member.enabled`, never over the public link. `hub` is only the Hub listener's own workspace page
|
|
5126
|
-
* (serveHubWorkspaceShell). Nothing otherwise: no Hub UI is drawn and no Hub module loads.
|
|
5127
|
-
*/
|
|
5128
|
-
function hubBodyAttrs(req, config) {
|
|
5129
|
-
// hub.md §1: member handlers are local-owner-only and unavailable through the public gateway — no member mark there.
|
|
5130
|
-
return hubModeOf(config).member && !gatewayRequestContext(req) ? ' data-hub="member"' : "";
|
|
5131
|
-
}
|
|
5132
4664
|
function guestBodyAttrs(ctx, owner, attr) {
|
|
5133
4665
|
const badge = ctx.guestBadge?.(owner);
|
|
5134
4666
|
const trusted = ctx.guestTrusted?.(owner) ? ' data-guest-level="trusted"' : "";
|
|
@@ -5165,47 +4697,12 @@ function shellBodyTag(req, ctx, mode, viewer) {
|
|
|
5165
4697
|
+ `${gatewayRequestContext(req) ? ' data-public-link="1"' : ""}`
|
|
5166
4698
|
// #2478: search is offered over the public link unless web.search.public_link is false (the page then shows no entry).
|
|
5167
4699
|
+ `${gatewayRequestContext(req) && ctx.fleetConfig?.web?.search?.public_link === false ? ' data-search-link="0"' : ""}`
|
|
5168
|
-
// AgEnD Hub P1 (docs/design/hub-ui-client.md): the Hub's marks — only when a switch is on, never on a guest's page.
|
|
5169
|
-
+ `${mode === "full" && !viewer?.guest ? hubBodyAttrs(req, ctx.fleetConfig) : ""}`
|
|
5170
4700
|
// #1920 phase 3: a guest's page — the shell shows only what a guest may use, and who it is signed in as.
|
|
5171
4701
|
+ `${mode === "full" && viewer?.guest && viewer.owner ? guestBodyAttrs(ctx, viewer.owner, attr) : ""}>`;
|
|
5172
4702
|
}
|
|
5173
|
-
/**
|
|
5174
|
-
* AgEnD Hub P1, slice 3: the app shell as a Hub's own workspace (served only by the Hub's listener, at its own origin).
|
|
5175
|
-
* It boots Hub-only (app.js: no fleet stream, chat, Needs you, preferences or themes). Nothing of the request is read
|
|
5176
|
-
* — no cookie (the fleet's or the Hub's), no session, no Host: who is signed in is the page's own /hub/v1/session.
|
|
5177
|
-
*/
|
|
5178
|
-
export const HUB_SHELL_DROPS = '<script src="/assets/agend-auth.js"></script>';
|
|
5179
|
-
export function serveHubWorkspaceShell(res, hub) {
|
|
5180
|
-
try {
|
|
5181
|
-
// Without the fleet's fetch wrapper (agend-auth.js): it reads the fleet's /auth/session for a CSRF value and answers
|
|
5182
|
-
// a 401 with the fleet's "session ended" banner. The Hub's pages carry the Hub's own CSRF (hub-client.js).
|
|
5183
|
-
const html = readFileSync(join(__dirname, "ui", "app.html"), "utf-8").replace(HUB_SHELL_DROPS, "");
|
|
5184
|
-
const attr = (v) => v.replace(/[&<>"']/g, c => `&#${c.charCodeAt(0)};`);
|
|
5185
|
-
const name = hubNameOf(hub.name);
|
|
5186
|
-
const preview = hub.preview;
|
|
5187
|
-
const previewAttrs = preview ? ` data-dashboard-origin="${attr(preview.dashboardOrigin)}"`
|
|
5188
|
-
+ (preview.previewOrigin && preview.bootId ? ` data-preview-origin="${attr(preview.previewOrigin)}" data-preview-boot="${attr(preview.bootId)}"`
|
|
5189
|
-
: ` data-preview-reason-code="${attr(preview.reasonCode ?? "notOffered")}" data-preview-reason="${attr(preview.reason ?? "")}"`) : "";
|
|
5190
|
-
const body = `<body data-mode="full" data-web-transport="none" data-usage-panel="0" data-log-tab="0" data-hub="hub"${name ? ` data-hub-name="${attr(name)}"` : ""}${previewAttrs}>`;
|
|
5191
|
-
sendPanelHtml(res, withAppIconLinks(html).replace("<body>", body), 200, { "Cache-Control": "no-store" }, { mediaSrc: "'none'", ...(preview?.previewOrigin ? { frameSrc: `${preview.previewOrigin}/frame` } : {}) });
|
|
5192
|
-
}
|
|
5193
|
-
catch {
|
|
5194
|
-
json(res, 500, { error: "app.html not found" });
|
|
5195
|
-
}
|
|
5196
|
-
}
|
|
5197
4703
|
/** The app shell page for one entry, under the panels' CSP; it may frame exactly <preview origin>/frame, and only
|
|
5198
4704
|
* when this load chose one. */
|
|
5199
|
-
|
|
5200
|
-
* The app shell page. `opts.hubWorkspace`: the page is a Hub's own workspace (slice 1's Hub listener only — the fleet's
|
|
5201
|
-
* listener never passes it), so it is drawn as the Hub shell.
|
|
5202
|
-
*/
|
|
5203
|
-
export function serveAppShell(req, res, ctx, mode, opts = {}) {
|
|
5204
|
-
// A Hub workspace is drawn from nothing of this fleet's: no fleet cookie, session, preference or preview is read.
|
|
5205
|
-
if (opts.hubWorkspace) {
|
|
5206
|
-
serveHubWorkspaceShell(res, opts.hubWorkspace);
|
|
5207
|
-
return;
|
|
5208
|
-
}
|
|
4705
|
+
export function serveAppShell(req, res, ctx, mode) {
|
|
5209
4706
|
try {
|
|
5210
4707
|
const html = readFileSync(join(__dirname, "ui", "app.html"), "utf-8");
|
|
5211
4708
|
const viewer = mode === "full" ? prefsViewer(req, new URL(req.url ?? "/", "http://localhost"), ctx) : null;
|