@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
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/** Provider record grammar only. No filesystem, SQLite, backend construction or account access. */
|
|
2
|
-
import type { TranscriptEvents } from "./transcript-sources.js";
|
|
3
|
-
import type { TranscriptTurnEvent } from "./transcript-turns.js";
|
|
4
|
-
export type TranscriptRecordEvent = ["tool_use", string, unknown] | ["tool_result", string, unknown] | ["assistant_text", string] | ["system_informational", string, number | null] | ["api_error", string, number | null, number | null, string | null] | ["user_prompt"];
|
|
5
|
-
export interface CodexRecordState {
|
|
6
|
-
openTurnId: string;
|
|
7
|
-
openTurn: string | null;
|
|
8
|
-
turnKnown: boolean;
|
|
9
|
-
}
|
|
10
|
-
/** The package root a rollout tool output reports a missing code-mode host under, or null. */
|
|
11
|
-
export declare function codexCodeModeHostMissingRoot(output: unknown): string | null;
|
|
12
|
-
export declare function codexTurnRecord(entry: Record<string, unknown>, state: CodexRecordState, turns: TranscriptTurnEvent[]): boolean;
|
|
13
|
-
export declare function codexToolRecord(entry: Record<string, unknown>, events: TranscriptEvents): void;
|
|
14
|
-
export declare function codexWholeLine(head: string): boolean;
|
|
15
|
-
/**
|
|
16
|
-
* #1218 P0: a rollout line too long to parse (an output of MBs, a huge call input) — what its head still says, so the
|
|
17
|
-
* bubble keeps the step: a call by its name, or an output. Turn records and messages are read whole (codexWholeLine).
|
|
18
|
-
*/
|
|
19
|
-
export declare function codexLongHead(head: string, events: TranscriptEvents): void;
|
|
20
|
-
export declare function claudeTranscriptRecord(entry: any, emit: (...event: TranscriptRecordEvent) => void): void;
|
|
21
|
-
export declare function claudeTranscriptLongHead(head: string, emit: (...event: TranscriptRecordEvent) => void): void;
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
const CODE_MODE_HOST_SPAWN_FAILED = /^failed to spawn code-mode host (\/[^\n]*)\/bin\/codex-code-mode-host: No such file or directory \(os error 2\)$/;
|
|
2
|
-
/** The package root a rollout tool output reports a missing code-mode host under, or null. */
|
|
3
|
-
export function codexCodeModeHostMissingRoot(output) {
|
|
4
|
-
return typeof output === "string" ? CODE_MODE_HOST_SPAWN_FAILED.exec(output)?.[1] ?? null : null;
|
|
5
|
-
}
|
|
6
|
-
export function codexTurnRecord(entry, state, turns) {
|
|
7
|
-
const p = entry.payload;
|
|
8
|
-
if (!p)
|
|
9
|
-
return false;
|
|
10
|
-
if (entry.type === "event_msg") {
|
|
11
|
-
if (p.type === "task_started" && typeof p.turn_id === "string") {
|
|
12
|
-
state.openTurnId = p.turn_id;
|
|
13
|
-
state.openTurn = p.turn_id;
|
|
14
|
-
state.turnKnown = true;
|
|
15
|
-
turns.push({ kind: "start", turnId: p.turn_id });
|
|
16
|
-
}
|
|
17
|
-
else if ((p.type === "task_complete" || p.type === "turn_aborted") && typeof p.turn_id === "string") {
|
|
18
|
-
const end = p.type === "turn_aborted" ? "aborted" : p.last_agent_message == null ? "error" : "complete";
|
|
19
|
-
if (state.openTurn === p.turn_id)
|
|
20
|
-
state.openTurn = null;
|
|
21
|
-
state.turnKnown = true;
|
|
22
|
-
turns.push({ kind: "end", turnId: p.turn_id, end });
|
|
23
|
-
}
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
if (entry.type === "response_item" && p.type === "message" && p.role === "user") {
|
|
27
|
-
const text = (p.content ?? [])
|
|
28
|
-
.map(block => typeof block.text === "string" ? block.text : "").join("\n");
|
|
29
|
-
const at = Date.parse(String(entry.timestamp ?? ""));
|
|
30
|
-
if (text.trim() && Number.isFinite(at))
|
|
31
|
-
turns.push({ kind: "user", turnId: state.openTurnId, text, at });
|
|
32
|
-
return true;
|
|
33
|
-
}
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
export function codexToolRecord(entry, events) {
|
|
37
|
-
const p = entry.payload;
|
|
38
|
-
if (!p || entry.type !== "response_item")
|
|
39
|
-
return;
|
|
40
|
-
if (p.type === "function_call") {
|
|
41
|
-
let input = p.arguments;
|
|
42
|
-
if (typeof input === "string") {
|
|
43
|
-
try {
|
|
44
|
-
input = JSON.parse(input);
|
|
45
|
-
}
|
|
46
|
-
catch { /* keep raw */ }
|
|
47
|
-
}
|
|
48
|
-
events.toolUses.push({ name: String(p.name ?? "unknown"), input });
|
|
49
|
-
}
|
|
50
|
-
else if (p.type === "custom_tool_call") {
|
|
51
|
-
events.toolUses.push({ name: String(p.name ?? "unknown"), input: p.input });
|
|
52
|
-
}
|
|
53
|
-
else if (p.type === "local_shell_call") {
|
|
54
|
-
const action = p.action;
|
|
55
|
-
events.toolUses.push({ name: "shell", input: { command: action?.command } });
|
|
56
|
-
}
|
|
57
|
-
else if (p.type === "function_call_output" || p.type === "custom_tool_call_output") {
|
|
58
|
-
events.toolResults.push({ name: String(p.name ?? "unknown") });
|
|
59
|
-
const root = codexCodeModeHostMissingRoot(p.output);
|
|
60
|
-
if (root)
|
|
61
|
-
(events.codexPackageMissingHost ??= []).push(root);
|
|
62
|
-
}
|
|
63
|
-
else if (p.type === "message" && p.role === "assistant") {
|
|
64
|
-
const content = p.content;
|
|
65
|
-
for (const block of content ?? []) {
|
|
66
|
-
const text = block.text;
|
|
67
|
-
if (typeof text === "string" && text.trim())
|
|
68
|
-
events.assistantTexts.push(text);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
export function codexWholeLine(head) {
|
|
73
|
-
return head.includes('"type":"event_msg"') || (head.includes('"type":"response_item"') && /"payload":\{"type":"message"/.test(head));
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* #1218 P0: a rollout line too long to parse (an output of MBs, a huge call input) — what its head still says, so the
|
|
77
|
-
* bubble keeps the step: a call by its name, or an output. Turn records and messages are read whole (codexWholeLine).
|
|
78
|
-
*/
|
|
79
|
-
export function codexLongHead(head, events) {
|
|
80
|
-
if (!head.includes('"type":"response_item"'))
|
|
81
|
-
return;
|
|
82
|
-
const type = /"payload":\{[^{}]{0,400}?"type":"(function_call|custom_tool_call|function_call_output|custom_tool_call_output)"/.exec(head)?.[1];
|
|
83
|
-
if (type === "function_call" || type === "custom_tool_call") {
|
|
84
|
-
const name = /"name":"([^"]{1,200})"/.exec(head)?.[1];
|
|
85
|
-
events.toolUses.push({ name: name ?? "unknown", input: undefined });
|
|
86
|
-
}
|
|
87
|
-
else if (type)
|
|
88
|
-
events.toolResults.push({ name: "unknown" });
|
|
89
|
-
}
|
|
90
|
-
export function claudeTranscriptRecord(entry, emit) {
|
|
91
|
-
// #2834: Claude's own status notes (e.g. its usage-limit auto-continue) — a system record, not model output.
|
|
92
|
-
if (entry.type === "system" && entry.subtype === "informational" && typeof entry.content === "string") {
|
|
93
|
-
const at = typeof entry.timestamp === "string" ? Date.parse(entry.timestamp) : NaN;
|
|
94
|
-
emit("system_informational", entry.content, Number.isFinite(at) ? at : null); // when Claude wrote it: a reset already past is old
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
const msg = entry.message;
|
|
98
|
-
if (!msg?.role || !msg?.content)
|
|
99
|
-
return;
|
|
100
|
-
// #2822: Claude records a failed API call as an assistant record of its own (`isApiErrorMessage`) — the CLI's own
|
|
101
|
-
// error, not model output: told as "api_error", never as "assistant_text".
|
|
102
|
-
if (entry.type === "assistant" && entry.isApiErrorMessage === true) {
|
|
103
|
-
const text = Array.isArray(msg.content)
|
|
104
|
-
? msg.content.map((b) => (b?.type === "text" && typeof b.text === "string" ? b.text : "")).join("")
|
|
105
|
-
: String(msg.content);
|
|
106
|
-
const at = typeof entry.timestamp === "string" ? Date.parse(entry.timestamp) : NaN;
|
|
107
|
-
emit("api_error", text, typeof entry.apiErrorStatus === "number" ? entry.apiErrorStatus : null, Number.isFinite(at) ? at : null, typeof entry.error === "string" ? entry.error : null);
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
// #2822: a prompt (a person's message, a system notice; a string, or text/image blocks) — never a meta record or a
|
|
111
|
-
// tool result. The point a later API error is judged against.
|
|
112
|
-
if (entry.type === "user" && entry.isMeta !== true && (typeof msg.content === "string"
|
|
113
|
-
? msg.content.trim() !== ""
|
|
114
|
-
: Array.isArray(msg.content) && msg.content.length > 0 && msg.content.every((b) => b?.type === "text" || b?.type === "image"))) {
|
|
115
|
-
emit("user_prompt");
|
|
116
|
-
}
|
|
117
|
-
const contents = Array.isArray(msg.content) ? msg.content : [{ type: "text", text: msg.content }];
|
|
118
|
-
for (const block of contents) {
|
|
119
|
-
if (block.type === "tool_use") {
|
|
120
|
-
emit("tool_use", block.name ?? "unknown", block.input ?? {});
|
|
121
|
-
}
|
|
122
|
-
else if (block.type === "tool_result") {
|
|
123
|
-
emit("tool_result", block.tool_use_id ?? "unknown", block.content);
|
|
124
|
-
}
|
|
125
|
-
else if (block.type === "text" && msg.role === "assistant" && block.text?.trim()) {
|
|
126
|
-
emit("assistant_text", block.text);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
export function claudeTranscriptLongHead(head, emit) {
|
|
131
|
-
if (head.includes('"type":"tool_result"')) {
|
|
132
|
-
for (const m of head.matchAll(/"tool_use_id":"([^"]{1,200})"/g))
|
|
133
|
-
emit("tool_result", m[1], undefined);
|
|
134
|
-
}
|
|
135
|
-
for (const m of head.matchAll(/"type":"tool_use"/g)) {
|
|
136
|
-
const name = /"name":"([^"]{1,200})"/.exec(head.slice(m.index, m.index + 400));
|
|
137
|
-
if (name)
|
|
138
|
-
emit("tool_use", name[1], {});
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
//# sourceMappingURL=transcript-records.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transcript-records.js","sourceRoot":"","sources":["../src/transcript-records.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { register, t } from "/assets/app-i18n.js";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Which account is a sign-in? A masked e-mail and a plan, as the AgEnD host or a Windows Runtime reported them; nothing else is shown and nothing
|
|
5
|
-
* is ever unmasked here. Strings are registered by this module itself (not a shell-held strings file), so a browser tab that holds an older
|
|
6
|
-
* copy of another module never renders a raw key; and an old server that does not send an identity simply shows nothing.
|
|
7
|
-
*/
|
|
8
|
-
register("accountIdentity", {
|
|
9
|
-
en: { sep: " · ", unknownPlan: "Unknown plan", apiKey: "No account email (API key)" },
|
|
10
|
-
"zh-TW": { sep: " · ", unknownPlan: "未知方案", apiKey: "沒有帳號 email(API key)" },
|
|
11
|
-
});
|
|
12
|
-
const text = key => t(`accountIdentity.${key}`);
|
|
13
|
-
/** The same contract as MASKED_EMAIL in src/claude-auth-status.ts (a test pins them equal); a value that does not match is not displayed. */
|
|
14
|
-
export const MASKED_EMAIL = /^[A-Za-z0-9._%+-]{1,2}\*\*\*@(?=.{1,253}$)[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)+$/;
|
|
15
|
-
/** Plan names are product names: shown as they are, not translated. Anything not listed (including `unknown`) is the generic label. */
|
|
16
|
-
const PLAN_NAMES = new Map([["free", "Free"], ["pro", "Pro"], ["max", "Max"], ["team", "Team"], ["enterprise", "Enterprise"]]);
|
|
17
|
-
|
|
18
|
-
/** The parts to show, in order: `[ab***@example.com, Team]`, `[No account email (API key)]`, or `[]` when nothing usable was reported. */
|
|
19
|
-
export function identityParts(identity) {
|
|
20
|
-
if (!identity || typeof identity !== "object" || Array.isArray(identity)) return [];
|
|
21
|
-
if (identity.apiKey === true) return [text("apiKey")];
|
|
22
|
-
const parts = [];
|
|
23
|
-
if (typeof identity.maskedEmail === "string" && identity.maskedEmail.length <= 260 && MASKED_EMAIL.test(identity.maskedEmail)) parts.push(identity.maskedEmail);
|
|
24
|
-
if (typeof identity.plan === "string") parts.push(PLAN_NAMES.get(identity.plan) ?? text("unknownPlan"));
|
|
25
|
-
return parts;
|
|
26
|
-
}
|
|
27
|
-
export const identityText = identity => identityParts(identity).join(text("sep"));
|
package/dist/ui/accounts-view.js
DELETED
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
// #3212 PR 1: Settings → Agents → Accounts — one card per CLI: its default sign-in and its named credential profiles
|
|
2
|
-
// (the ones agents use, and the ones only on this host), which account each is (masked, #3190), who uses it and its
|
|
3
|
-
// weekly usage. From GET /ui/accounts (the local admin session only; nothing about a credential reaches this page).
|
|
4
|
-
// - Sign in / Sign in again: the existing dialogs (backend-signin.js: one implementation, the same login flows).
|
|
5
|
-
// - Move agents here…: stages each chosen agent's `backend_options.<cli>.credential_profile`, through Settings' own
|
|
6
|
-
// staging and Save (a change of account waits for the same confirmation as any credential setting, and restarts).
|
|
7
|
-
// - Fleet default: the same, for `defaults.backend_options.<cli>.credential_profile`.
|
|
8
|
-
// - AccountSelect: the Agent dialog's Account field (settings-dialogs.js), from the same view.
|
|
9
|
-
// Rows carry a `scope`: only `host` today; a paired computer's rows (`machine`) are drawn read-only under its name.
|
|
10
|
-
// Words are registered here (a new module: an older cached strings file never leaves a raw key).
|
|
11
|
-
import { html, useEffect, useState } from "/assets/app-html.js";
|
|
12
|
-
import { register, t } from "/assets/app-i18n.js";
|
|
13
|
-
import { createStore, useStore } from "/assets/app-store.js";
|
|
14
|
-
import { Dialog } from "/assets/ui-dialog.js";
|
|
15
|
-
import { CliProductMark, cliLabel } from "./cli-picker.js";
|
|
16
|
-
import { identityText } from "./account-identity.js";
|
|
17
|
-
import { openSignIn, refreshSignIn, signInStore } from "./backend-signin.js";
|
|
18
|
-
|
|
19
|
-
register("accounts", {
|
|
20
|
-
en: {
|
|
21
|
-
title: "Accounts", hint: "Each CLI's sign-ins on this host: the default one and named accounts (credential profiles), who uses them and their weekly usage.",
|
|
22
|
-
loading: "Reading accounts…", failed: "Could not read the accounts.", empty: "No CLI is installed or used by an agent on this host.",
|
|
23
|
-
def: "Default sign-in", profile: "Account “{0}”", state_usable: "signed in", state_not_signed_in: "not signed in", state_unknown: "not checked",
|
|
24
|
-
state_not_installed: "not installed", state_too_old: "too old",
|
|
25
|
-
usedBy: "used by {0}", usedByNone: "used by no agent", agents: "{0} agents", agent: "1 agent", channels: "{0} ClassicBot rooms", channel: "1 ClassicBot room",
|
|
26
|
-
fleetDefaultTag: "fleet default", weekly: "{0}% of the week", resets: "resets {0}", stale: "last known",
|
|
27
|
-
signIn: "Sign in", signInAgain: "Sign in again", hostCommand: "Sign in on the host", hostCommandHint: "Run this in a terminal on the host running AgEnD.",
|
|
28
|
-
moveHere: "Move agents here…", moveTitle: "Move agents to {0}", moveLead: "Choose the {0} agents that should use {1}. Each restarts on it when you Save:",
|
|
29
|
-
carry_claude: "Claude Code carries its conversation over.", carry_codex: "Codex keeps its conversation.", carry_kiro: "Kiro starts a new conversation, with a handover.",
|
|
30
|
-
moveNone: "Every {0} agent already uses this account.", moveStage: "Stage", cancel: "Cancel", current: "now: {0}",
|
|
31
|
-
fleetDefault: "Fleet default for {0} agents", fleetDefaultHint: "Agents that don't choose an account use this one.",
|
|
32
|
-
machine: "On {0}", machineReadOnly: "Read-only here",
|
|
33
|
-
acctLabel: "Account", acctInherit: "Fleet default ({0})", acctInheritDefault: "Fleet default (default sign-in)", acctNotSignedIn: "{0} — not signed in",
|
|
34
|
-
acctHint: "Changing the account restarts the agent. A signed-out account can't be chosen: sign it in under Accounts first.",
|
|
35
|
-
acctDefaultBlocked: "This fleet's default for {0} is “{1}”, so an agent follows it unless it names another account.",
|
|
36
|
-
},
|
|
37
|
-
"zh-TW": {
|
|
38
|
-
title: "帳號", hint: "這台主機上各 CLI 的登入:預設登入與具名帳號(憑證設定檔)、誰在使用,以及每週用量。",
|
|
39
|
-
loading: "正在讀取帳號…", failed: "無法讀取帳號。", empty: "這台主機上沒有安裝或被 Agent 使用的 CLI。",
|
|
40
|
-
def: "預設登入", profile: "帳號「{0}」", state_usable: "已登入", state_not_signed_in: "尚未登入", state_unknown: "未確認",
|
|
41
|
-
state_not_installed: "未安裝", state_too_old: "版本太舊",
|
|
42
|
-
usedBy: "使用者:{0}", usedByNone: "沒有 Agent 使用", agents: "{0} 個 Agent", agent: "1 個 Agent", channels: "{0} 個 ClassicBot 房間", channel: "1 個 ClassicBot 房間",
|
|
43
|
-
fleetDefaultTag: "Fleet 預設", weekly: "本週已用 {0}%", resets: "{0} 重置", stale: "最後已知",
|
|
44
|
-
signIn: "登入", signInAgain: "重新登入", hostCommand: "在主機上登入", hostCommandHint: "請在執行 AgEnD 的主機終端機執行。",
|
|
45
|
-
moveHere: "把 Agent 移到這裡…", moveTitle: "把 Agent 移到 {0}", moveLead: "選擇要改用 {1} 的 {0} Agent。按「儲存」後,各自會以它重新啟動:",
|
|
46
|
-
carry_claude: "Claude Code 會帶著對話過去。", carry_codex: "Codex 保留原本的對話。", carry_kiro: "Kiro 會開新對話並附上交接。",
|
|
47
|
-
moveNone: "所有 {0} Agent 都已經使用這個帳號。", moveStage: "加入待儲存", cancel: "取消", current: "目前:{0}",
|
|
48
|
-
fleetDefault: "{0} Agent 的 Fleet 預設帳號", fleetDefaultHint: "沒有指定帳號的 Agent 會使用這個。",
|
|
49
|
-
machine: "在 {0}", machineReadOnly: "這裡只能檢視",
|
|
50
|
-
acctLabel: "帳號", acctInherit: "Fleet 預設({0})", acctInheritDefault: "Fleet 預設(預設登入)", acctNotSignedIn: "{0}——尚未登入",
|
|
51
|
-
acctHint: "更換帳號會重新啟動 Agent。尚未登入的帳號不能選,請先在「帳號」登入。",
|
|
52
|
-
acctDefaultBlocked: "這個 Fleet 的 {0} 預設帳號是「{1}」,Agent 除非指定其他帳號,否則會使用它。",
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
const tx = (k, ...v) => t(`accounts.${k}`, ...v);
|
|
56
|
-
/** This view's stylesheet, linked once (a tab opened before an upgrade has an app.css without these rules). */
|
|
57
|
-
function linkAccountsCss(doc = typeof document !== "undefined" ? document : null) {
|
|
58
|
-
try {
|
|
59
|
-
if (!doc || !doc.head || doc.querySelector('link[data-accounts-css="1"]')) return;
|
|
60
|
-
const link = doc.createElement("link");
|
|
61
|
-
link.setAttribute("rel", "stylesheet"); link.setAttribute("href", "/assets/accounts.css"); link.setAttribute("data-accounts-css", "1");
|
|
62
|
-
doc.head.appendChild(link);
|
|
63
|
-
} catch { /* the view still works without it */ }
|
|
64
|
-
}
|
|
65
|
-
const CARRY = { "claude-code": "carry_claude", codex: "carry_codex", "kiro-cli": "carry_kiro" };
|
|
66
|
-
|
|
67
|
-
export const accountsStore = createStore({ loaded: false, failed: false, view: null });
|
|
68
|
-
let reading = null;
|
|
69
|
-
/** Read GET /ui/accounts (one read at a time). */
|
|
70
|
-
export function refreshAccounts() {
|
|
71
|
-
if (reading) return reading;
|
|
72
|
-
reading = fetch("/ui/accounts", { credentials: "same-origin", cache: "no-store" })
|
|
73
|
-
.then(async (r) => { const v = r.ok ? await r.json() : null; accountsStore.set({ loaded: true, failed: !v, view: v }); })
|
|
74
|
-
.catch(() => accountsStore.set({ loaded: true, failed: true, view: accountsStore.get().view }))
|
|
75
|
-
.finally(() => { reading = null; });
|
|
76
|
-
return reading;
|
|
77
|
-
}
|
|
78
|
-
const rowName = (row) => (row.profile ? tx("profile", row.profile) : tx("def"));
|
|
79
|
-
const usedText = (row) => {
|
|
80
|
-
const parts = [];
|
|
81
|
-
const n = row.usedBy.agents.length, c = row.usedBy.classic.length;
|
|
82
|
-
if (n) parts.push(n === 1 ? tx("agent") : tx("agents", n));
|
|
83
|
-
if (c) parts.push(c === 1 ? tx("channel") : tx("channels", c));
|
|
84
|
-
return parts.length ? tx("usedBy", parts.join(" · ")) : tx("usedByNone");
|
|
85
|
-
};
|
|
86
|
-
const when = (iso) => { try { const d = new Date(iso); return Number.isFinite(d.getTime()) ? d.toLocaleString(undefined, { weekday: "short", hour: "numeric", minute: "2-digit" }) : ""; } catch { return ""; } };
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* The fleet default's `backend_options` after choosing `profile` (null: none) for `backend`: the whole map, because the
|
|
90
|
-
* defaults write replaces a nested map whole (the Advanced editor relies on that to remove a key). Built on what is
|
|
91
|
-
* already staged, so two CLIs' choices add up in one change; null when it comes back to what is saved.
|
|
92
|
-
*/
|
|
93
|
-
export function defaultsBackendOptions(saved, staged, backend, profile) {
|
|
94
|
-
const copy = (m) => Object.fromEntries(Object.entries(m && typeof m === "object" ? m : {}).filter(([, o]) => o && typeof o === "object" && !Array.isArray(o)).map(([b, o]) => [b, { ...o }]));
|
|
95
|
-
const out = copy(staged || saved);
|
|
96
|
-
const next = { ...(out[backend] || {}) };
|
|
97
|
-
if (profile) next.credential_profile = profile; else delete next.credential_profile;
|
|
98
|
-
if (Object.keys(next).length) out[backend] = next; else delete out[backend];
|
|
99
|
-
const same = (a, b) => JSON.stringify(Object.keys(a).sort().map((k) => [k, Object.keys(a[k]).sort().map((j) => [j, a[k][j]])]))
|
|
100
|
-
=== JSON.stringify(Object.keys(b).sort().map((k) => [k, Object.keys(b[k]).sort().map((j) => [j, b[k][j]])]));
|
|
101
|
-
return same(out, copy(saved)) ? null : out;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/** The choices for an agent's Account field: its CLI's named, host profiles (signed-out ones listed, not choosable). */
|
|
105
|
-
export function accountChoices(view, backend) {
|
|
106
|
-
const cli = view && Array.isArray(view.clis) ? view.clis.find((c) => c.backend === backend) : null;
|
|
107
|
-
if (!cli || !cli.profiles) return null;
|
|
108
|
-
return { fleetDefault: cli.fleetDefault, rows: cli.rows.filter((r) => r.scope && r.scope.kind === "host" && r.profile) };
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/** Settings → Agents → Accounts. `stageAgent(name, inst, patch)` and `stageDefault(backend, profile | null)` stage changes. */
|
|
112
|
-
export function AccountsView({ instances, stageAgent, stageDefault }) {
|
|
113
|
-
const { loaded, failed, view } = useStore(accountsStore);
|
|
114
|
-
// Settings read its data again (after a Save): so does this view.
|
|
115
|
-
useEffect(() => { if (loaded) void refreshAccounts(); }, [instances]);
|
|
116
|
-
const { structured, login } = useStore(signInStore);
|
|
117
|
-
const [move, setMove] = useState(null); // { cli, row }
|
|
118
|
-
// The sign-in controllers' state too (a sign-in already running disables Sign in, as the old list did).
|
|
119
|
-
useEffect(() => { linkAccountsCss(); void refreshAccounts(); void refreshSignIn(); }, []);
|
|
120
|
-
// A sign-in that ends may be another account now: read again.
|
|
121
|
-
const phase = `${(login && login.phase) || ""}:${(structured && structured.login && structured.login.phase) || ""}`;
|
|
122
|
-
useEffect(() => { if (loaded) void refreshAccounts(); }, [phase]);
|
|
123
|
-
const active = structured && structured.login;
|
|
124
|
-
const running = !!((login && login.phase === "running") || (active && active.phase !== "done" && !(active.phase === "failed" && active.reason)));
|
|
125
|
-
if (!loaded) return html`<p class="note" role="status">${tx("loading")}</p>`;
|
|
126
|
-
if (failed && !view) return html`<p class="note" role="alert">${tx("failed")}</p>`;
|
|
127
|
-
const clis = (view && view.clis) || [];
|
|
128
|
-
return html`<section class="s-group s-accounts" aria-label=${tx("title")}>
|
|
129
|
-
<header class="s-auth-section-head"><div><h3>${tx("title")}</h3><p>${tx("hint")}</p></div></header>
|
|
130
|
-
${!clis.length ? html`<p class="note">${tx("empty")}</p>` : clis.map((cli) => html`<${Card} key=${cli.backend} cli=${cli} running=${running} onMove=${(row) => setMove({ cli, row })} stageDefault=${stageDefault} />`)}
|
|
131
|
-
${move ? html`<${MoveDialog} cli=${move.cli} row=${move.row} instances=${instances} stageAgent=${stageAgent} onClose=${() => setMove(null)} />` : null}
|
|
132
|
-
</section>`;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
function Card({ cli, running, onMove, stageDefault }) {
|
|
136
|
-
const [picked, setPicked] = useState(undefined); // a staged fleet default, shown until Save reads it back
|
|
137
|
-
useEffect(() => setPicked(undefined), [cli.fleetDefault]);
|
|
138
|
-
const host = cli.rows.filter((r) => r.scope && r.scope.kind === "host");
|
|
139
|
-
const machines = new Map();
|
|
140
|
-
for (const r of cli.rows) if (r.scope && r.scope.kind === "machine") { const k = r.scope.id; if (!machines.has(k)) machines.set(k, { scope: r.scope, rows: [] }); machines.get(k).rows.push(r); }
|
|
141
|
-
const signedIn = host.filter((r) => r.profile && r.state !== "not_signed_in");
|
|
142
|
-
return html`<div class="s-account-card" data-backend=${cli.backend}>
|
|
143
|
-
<div class="s-account-head"><${CliProductMark} id=${cli.backend} size=${24} /><strong>${cliLabel(cli.backend)}</strong></div>
|
|
144
|
-
<div class="s-account-rows">${host.map((row) => html`<${Row} key=${row.profile || ""} cli=${cli} row=${row} running=${running} onMove=${onMove} />`)}</div>
|
|
145
|
-
${[...machines.values()].map((m) => html`<div class="s-account-machine"><p class="note">${tx("machine", m.scope.name)}${m.scope.readOnlyReason ? ` — ${m.scope.readOnlyReason}` : ` — ${tx("machineReadOnly")}`}</p>
|
|
146
|
-
${m.rows.map((row) => html`<${Row} key=${`m:${m.scope.id}:${row.profile || ""}`} cli=${cli} row=${row} readOnly=${true} />`)}</div>`)}
|
|
147
|
-
${cli.profiles && typeof stageDefault === "function" ? html`<label class="field s-account-default"><span>${tx("fleetDefault", cliLabel(cli.backend))}</span>
|
|
148
|
-
<select value=${(picked !== undefined ? picked : cli.fleetDefault) || ""} onChange=${(e) => { setPicked(e.target.value || null); stageDefault(cli.backend, e.target.value || null); }}>
|
|
149
|
-
<option value="">${tx("def")}</option>
|
|
150
|
-
${signedIn.map((r) => html`<option value=${r.profile}>${r.profile}</option>`)}
|
|
151
|
-
${cli.fleetDefault && !signedIn.some((r) => r.profile === cli.fleetDefault) ? html`<option value=${cli.fleetDefault}>${cli.fleetDefault}</option>` : null}
|
|
152
|
-
</select><small class="note">${tx("fleetDefaultHint")}</small></label>` : null}
|
|
153
|
-
</div>`;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
function Row({ cli, row, onMove, running = false, readOnly = false }) {
|
|
157
|
-
const who = identityText(row.identity);
|
|
158
|
-
const u = row.usage;
|
|
159
|
-
return html`<div class="s-row s-account-row" data-account=${row.profile || "default"}>
|
|
160
|
-
<div class="s-account-who"><strong>${rowName(row)}</strong>
|
|
161
|
-
${who ? html`<small class="s-account-identity">${who}</small>` : null}
|
|
162
|
-
<small class="s-account-used">${usedText(row)}${row.usedBy.fleetDefault && cli.profiles ? html` · <span class="tag">${tx("fleetDefaultTag")}</span>` : null}</small>
|
|
163
|
-
${u ? html`<small class=${`s-account-usage${u.stale ? " is-stale" : ""}`}>${tx("weekly", u.percent)}${u.resetsAt ? ` · ${tx("resets", when(u.resetsAt))}` : ""}${u.stale ? ` · ${tx("stale")}` : ""}</small>` : null}
|
|
164
|
-
</div>
|
|
165
|
-
<span class=${`tag s-auth-state is-${row.state || "unknown"}`}>${tx(`state_${row.state || "unknown"}`)}</span>
|
|
166
|
-
${readOnly ? null : html`<span class="s-actions">
|
|
167
|
-
${row.signIn ? html`<button type="button" class=${row.state === "not_signed_in" ? "btn btn-sm btn-primary" : "btn btn-sm"} disabled=${running} onClick=${() => openSignIn({ backend: row.backend, ...(row.profile ? { profile: row.profile } : {}) })}>${row.state === "usable" ? tx("signInAgain") : tx("signIn")}</button>` : null}
|
|
168
|
-
${cli.profiles && row.state !== "not_signed_in" && typeof onMove === "function" ? html`<button type="button" class="btn btn-sm" onClick=${() => onMove(row)}>${tx("moveHere")}</button>` : null}
|
|
169
|
-
</span>`}
|
|
170
|
-
${!readOnly && !row.signIn && row.hostCommand ? html`<details class="s-host-cli-help"><summary>${tx("hostCommand")}</summary><p class="note">${tx("hostCommandHint")}</p><p class="s-host-cli-command"><code>${row.hostCommand}</code></p></details>` : null}
|
|
171
|
-
</div>`;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/** The CLI's agents not on this account; the chosen ones are staged onto it (Settings' Save applies them). */
|
|
175
|
-
function MoveDialog({ cli, row, instances, stageAgent, onClose }) {
|
|
176
|
-
const others = cli.agents.filter((a) => a.profile !== row.profile && instances && Object.hasOwn(instances, a.name));
|
|
177
|
-
const [chosen, setChosen] = useState(() => new Set());
|
|
178
|
-
const label = rowName(row);
|
|
179
|
-
const stage = () => {
|
|
180
|
-
for (const name of chosen) {
|
|
181
|
-
const inst = instances[name];
|
|
182
|
-
const opts = { ...(inst.backend_options || {}) };
|
|
183
|
-
opts[cli.backend] = { ...(opts[cli.backend] || {}), credential_profile: row.profile };
|
|
184
|
-
stageAgent(name, inst, { backend_options: opts });
|
|
185
|
-
}
|
|
186
|
-
onClose();
|
|
187
|
-
};
|
|
188
|
-
return html`<${Dialog} title=${tx("moveTitle", label)} onClose=${onClose} actions=${html`<button type="button" class="btn" onClick=${onClose}>${tx("cancel")}</button>
|
|
189
|
-
<button type="button" class="btn btn-primary" disabled=${!chosen.size} onClick=${stage}>${tx("moveStage")}</button>`}>
|
|
190
|
-
${!others.length ? html`<p class="note">${tx("moveNone", cliLabel(cli.backend))}</p>` : html`<p>${tx("moveLead", cliLabel(cli.backend), label)}</p>
|
|
191
|
-
<p class="note">${tx(CARRY[cli.backend] || "carry_claude")}</p>
|
|
192
|
-
<ul class="s-account-move">${others.map((a) => html`<li><label class="check"><input type="checkbox" checked=${chosen.has(a.name)}
|
|
193
|
-
onChange=${(e) => setChosen((s) => { const n = new Set(s); if (e.target.checked) n.add(a.name); else n.delete(a.name); return n; })} />
|
|
194
|
-
<span>${a.name}</span><small class="note">${tx("current", a.profile || tx("def"))}</small></label></li>`)}</ul>`}
|
|
195
|
-
</${Dialog}>`;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* The Agent dialog's Account field (host agents of a CLI with credential profiles). `value`: the agent's own profile
|
|
200
|
-
* ("" = it names none and follows the fleet default). A signed-out account is listed but disabled.
|
|
201
|
-
*/
|
|
202
|
-
export function AccountSelect({ id, backend, value, onChange }) {
|
|
203
|
-
const { loaded, view } = useStore(accountsStore);
|
|
204
|
-
useEffect(() => { if (!loaded) void refreshAccounts(); }, []);
|
|
205
|
-
const choices = accountChoices(view, backend);
|
|
206
|
-
if (!choices) return null;
|
|
207
|
-
const inherit = choices.fleetDefault ? tx("acctInherit", choices.fleetDefault) : tx("acctInheritDefault");
|
|
208
|
-
return html`<div class="field s-account-select"><label for=${id}>${tx("acctLabel")}</label>
|
|
209
|
-
<select id=${id} value=${value || ""} onChange=${(e) => onChange(e.target.value)}>
|
|
210
|
-
<option value="">${inherit}</option>
|
|
211
|
-
${choices.rows.map((r) => html`<option value=${r.profile} disabled=${r.state === "not_signed_in" && r.profile !== value}>${r.state === "not_signed_in" ? tx("acctNotSignedIn", r.profile) : r.profile}</option>`)}
|
|
212
|
-
</select>
|
|
213
|
-
<p class="note">${tx("acctHint")}${choices.fleetDefault ? ` ${tx("acctDefaultBlocked", cliLabel(backend), choices.fleetDefault)}` : ""}</p></div>`;
|
|
214
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
// alpha.2 (M-2300; #2973's agent requests, junsion's §6): an agent asked for a Windows agent (create_instance with
|
|
2
|
-
// runtime "windows", or update_instance_config on one). On a fleet with no chat connection there is no General card to
|
|
3
|
-
// confirm it in, so its owner — the `agend web --code` session on the AgEnD computer, web-verified (decision 28c2d3a3) —
|
|
4
|
-
// decides it here, in Needs you.
|
|
5
|
-
// - The list is read from GET /ui/agent-proposals, which answers the owner only (anyone else reads an empty list): on
|
|
6
|
-
// install, and each time the stream's `agent_proposals` event (it carries nothing) says it changed.
|
|
7
|
-
// - It lives in the app store (`proposals`), so the Needs you count includes it on every page.
|
|
8
|
-
// - A decision is POST /ui/agent-proposals/<id> {decision}; the server asks the owner, the request and the target machine
|
|
9
|
-
// again, and answers with the request as it now stands (applied, rejected, expired, already decided, failed…).
|
|
10
|
-
// Installed once per admin page (app.js), and by the Needs you panel itself (a tab opened before an upgrade has the new
|
|
11
|
-
// panel but not the new app.js: it installs it when it is first shown).
|
|
12
|
-
import { appStore } from "/assets/app-store.js";
|
|
13
|
-
|
|
14
|
-
let installed = false, reading = null, again = false;
|
|
15
|
-
// #2997 review r2 (Prism P2): the newest revision a status frame showed, and the one the list was last READ at — a read
|
|
16
|
-
// that failed (the network, a 5xx, an answer that is not a list) leaves `loaded` behind, so the next status frame (the
|
|
17
|
-
// same revision included) or the bounded retry reads again; never a revision taken as read before a read succeeded.
|
|
18
|
-
let observed = null, loaded = null, retries = 0, retryTimer = null;
|
|
19
|
-
const RETRY_MS = 5000, RETRY_MAX = 5;
|
|
20
|
-
|
|
21
|
-
/** Read the list again (one read at a time; a change meanwhile reads once more). Resolves true when it was read. */
|
|
22
|
-
export function refreshProposals() {
|
|
23
|
-
if (reading) { again = true; return reading; }
|
|
24
|
-
const want = observed;
|
|
25
|
-
if (retryTimer) { clearTimeout(retryTimer); retryTimer = null; }
|
|
26
|
-
reading = fetch("/ui/agent-proposals", { headers: { Accept: "application/json" } })
|
|
27
|
-
.then((r) => { if (!r.ok) throw new Error(`agent proposals: ${r.status}`); return r.json(); })
|
|
28
|
-
.then((d) => {
|
|
29
|
-
if (!d || !Array.isArray(d.proposals)) throw new Error("agent proposals: not a list");
|
|
30
|
-
appStore.set({ proposals: d.proposals, proposalsOwner: !!d.owner });
|
|
31
|
-
loaded = want; retries = 0;
|
|
32
|
-
return true;
|
|
33
|
-
})
|
|
34
|
-
.catch(() => {
|
|
35
|
-
// Not read: try again a few times on its own (a page whose stream sends no more status frames), and at any status
|
|
36
|
-
// frame meanwhile (its revision is still ahead of `loaded`).
|
|
37
|
-
if (retries < RETRY_MAX && !retryTimer) { retries++; retryTimer = setTimeout(() => { retryTimer = null; void refreshProposals(); }, RETRY_MS); }
|
|
38
|
-
return false;
|
|
39
|
-
})
|
|
40
|
-
.finally(() => {
|
|
41
|
-
reading = null;
|
|
42
|
-
// A change while it was out (a ping, a newer revision): read once more.
|
|
43
|
-
if (again) { again = false; void refreshProposals(); }
|
|
44
|
-
});
|
|
45
|
-
return reading;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Once per page: read once, then again on the stream's `agent_proposals` ping (live) and whenever a status frame shows a
|
|
50
|
-
* revision the list was not read at yet (#2997 review: a page that polls /ui/poll, one that reconnected, and a tab from
|
|
51
|
-
* before the upgrade — whose stream knows no `agent_proposals` event — all still apply status frames; r2: until a read
|
|
52
|
-
* at that revision succeeds). #3008: on the public link too — this computer's admin signed in from outside decides there;
|
|
53
|
-
* anyone else over it reads an empty list (the server answers the owner only).
|
|
54
|
-
*/
|
|
55
|
-
export function installProposals() {
|
|
56
|
-
if (installed) return;
|
|
57
|
-
installed = true;
|
|
58
|
-
const on = appStore.get().streamOn;
|
|
59
|
-
if (typeof on === "function") {
|
|
60
|
-
on("agent_proposals", () => { void refreshProposals(); });
|
|
61
|
-
on("status", (d) => {
|
|
62
|
-
const next = d && Number.isSafeInteger(d.agent_proposals_rev) ? d.agent_proposals_rev : null;
|
|
63
|
-
if (next === null) return;
|
|
64
|
-
observed = next;
|
|
65
|
-
if (observed !== loaded) void refreshProposals(); // a newer revision, or one not yet read successfully
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
void refreshProposals();
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* The owner's Approve ("confirm") or Reject. Resolves to { ok, view, agent, message }: the request as the server says
|
|
73
|
-
* it now stands (its outcome), the new agent's name when it was created, or why nothing happened.
|
|
74
|
-
*/
|
|
75
|
-
export async function decideProposal(id, decision) {
|
|
76
|
-
let res, body = null;
|
|
77
|
-
try {
|
|
78
|
-
res = await fetch(`/ui/agent-proposals/${encodeURIComponent(id)}`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ decision }) });
|
|
79
|
-
try { body = await res.json(); } catch { body = null; }
|
|
80
|
-
} catch { return { ok: false, view: null, agent: null, message: null }; }
|
|
81
|
-
void refreshProposals();
|
|
82
|
-
return { ok: !!res.ok, view: (body && body.view) || null, agent: (body && body.agent) || null, message: (body && body.message) || null,
|
|
83
|
-
error: (body && typeof body.error === "string" && body.error) || (res.ok ? null : `http_${res.status}`) };
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/** For tests: as on a fresh page. */
|
|
87
|
-
export function resetProposals() {
|
|
88
|
-
installed = false; reading = null; again = false; observed = null; loaded = null; retries = 0;
|
|
89
|
-
if (retryTimer) { clearTimeout(retryTimer); retryTimer = null; }
|
|
90
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import {html,useEffect,useRef,useState} from "/assets/app-html.js";
|
|
2
|
-
import {useLease} from "/assets/app-ctx.js";
|
|
3
|
-
import {appStore,useStore} from "/assets/app-store.js";
|
|
4
|
-
import {register,t} from "/assets/app-i18n.js";
|
|
5
|
-
import {sectionPath} from "/assets/app-route.js";
|
|
6
|
-
import {Dialog} from "/assets/ui-dialog.js";
|
|
7
|
-
import {CliPicker,CliProductMark,cliLabel} from "./cli-picker.js";
|
|
8
|
-
import {RuntimePicker,tr} from "./agent-runtime.js";
|
|
9
|
-
import {ClaudeAccountSelect} from "./credential-profile-select.js";
|
|
10
|
-
import {useRuntimeCatalog,runtimeCliChoices} from "./runtime-catalog.js";
|
|
11
|
-
import {useWindowsCliCatalog} from "./windows-cli-catalog.js";
|
|
12
|
-
import {useBackendRows} from "./settings-catalog.js";
|
|
13
|
-
import {ModelSelect} from "./settings-dialogs.js";
|
|
14
|
-
import {machineLabel} from "./settings-agent-filters.js";
|
|
15
|
-
import {removedBackendReplacement} from "./settings-model.js";
|
|
16
|
-
register("runtimeChange",{
|
|
17
|
-
"zh-TW":{removed:"{0} 已從 AgEnD 移除,無法繼續使用。請改選其他 CLI,建議使用 {1}。",title:"切換 Runtime 與 CLI",change:"切換 Runtime/CLI",current:"執行環境與 CLI",lead:"保留同一個 Agent 與 AgEnD 聊天歷史,在選擇的電腦開始新的 CLI 對話。",configure:"設定新環境",next:"下一步",back:"上一步",cancel:"取消",apply:"儲存切換",loading:"正在讀取 Agent 與 Runtime 狀態…",busy:"正在準備新工作區並關閉舊 CLI…",fresh:"我了解切換後會開始新的 CLI 對話",freshHint:"原有 CLI 對話與檔案會留在原電腦;不會自動複製到新環境。",stopped:"切換後 Agent 會暫停,請從 Agent 列表啟動。",directoryHint:"更換電腦時請填目標電腦的路徑;留空會建立獨立工作區。",dirty:"請先儲存或取消其他編輯,再切換 Runtime。",unknown:"請重新讀取 Agent 狀態再操作,避免重複切換。",reload:"重新讀取狀態",failed:"無法切換 Runtime",noCli:"這台電腦尚無可用的 CLI。請先到 Runtime 偵測或更新清單。",generalMove:"General 的位置不在這裡切換。請到「Agent 共用設定 → General 位置」,那裡會暫停投遞並確認舊程式已結束。",generalGo:"前往 General 位置"},
|
|
18
|
-
en:{removed:"{0} was removed from AgEnD and can no longer run. Choose another CLI; {1} is its replacement.",title:"Change runtime and CLI",change:"Change runtime / CLI",current:"Runtime and CLI",lead:"Keep this Agent and its AgEnD chat history. Start a fresh CLI conversation on the selected computer.",configure:"Configure the new environment",next:"Next",back:"Back",cancel:"Cancel",apply:"Save runtime change",loading:"Loading Agent and runtime state…",busy:"Preparing the new workspace and closing the old CLI…",fresh:"I understand this starts a new CLI conversation",freshHint:"Existing CLI conversations and files stay on the original computer. They are not copied to the new environment.",stopped:"The Agent will be paused after switching. Start it from the Agent list.",directoryHint:"Use a path on the target computer. Leave empty for a separate managed workspace.",dirty:"Save or cancel other edits before changing runtime.",unknown:"Read the Agent state again before another operation to avoid switching twice.",reload:"Read state again",failed:"Could not change runtime",noCli:"No runnable CLI is available on this computer. Detect or refresh its inventory in Runtime settings.",generalMove:"General is not moved from here. Use Shared agent settings → General location, which holds deliveries and confirms the old process has exited.",generalGo:"Go to General location"}
|
|
19
|
-
});
|
|
20
|
-
const text=(key,...values)=>t(`runtimeChange.${key}`,...values);
|
|
21
|
-
export function AgentRuntimeSettings({name,inst,disabled=false,inherited=null,onChanged}){
|
|
22
|
-
const [open,setOpen]=useState(false),general=inst.general_topic===true||name==="general";
|
|
23
|
-
// The computer's name as the Runtime page shows it; a computer that is revoked or gone says so (with the start of its id), never the whole id.
|
|
24
|
-
const where=inst.runtime==="windows"?(inst.machine_id?machineLabel(inst.machine_id,inst.machine_name,inst.machine_status,inst.machine_missing!==true):null):null;
|
|
25
|
-
const place=inst.runtime==="windows"?(where?where.label:tr("windows")):tr("wsl");
|
|
26
|
-
return html`<section class="agent-runtime-settings"><div><span class="note">${text("current")}</span><p><${CliProductMark} id=${inst.backend} size=${20}/><strong class="agent-runtime-place" title=${where?.title||place}>${place}</strong><span class=${removedBackendReplacement(inst.backend)?"agent-runtime-removed":undefined}>· ${removedBackendReplacement(inst.backend)?t("settings.backendUnavailable",inst.backend):cliLabel(inst.backend)}</span></p>${inherited}</div>${general?html`<p class="note agent-runtime-general">${text("generalMove")} <a href=${`${sectionPath("agent-defaults")}#general-location`}>${text("generalGo")}</a></p>`:html`<button type="button" class="btn btn-sm" disabled=${disabled} title=${disabled?text("dirty"):undefined} onClick=${()=>setOpen(true)}>${text("change")}</button>`}${open&&!general?html`<${AgentRuntimeChangeDialog} name=${name} inst=${inst} onClose=${()=>setOpen(false)} onChanged=${onChanged}/>`:null}</section>`;
|
|
27
|
-
}
|
|
28
|
-
export function AgentRuntimeChangeDialog({name,inst,onClose,onChanged}){
|
|
29
|
-
const lease=useLease(`runtime-change:${name}`),claim=useRef(false);
|
|
30
|
-
const {windowsCli}=useStore(appStore),machinesState=useRuntimeCatalog(),rows=useBackendRows();
|
|
31
|
-
const [source,setSource]=useState(null),[step,setStep]=useState(1),[error,setError]=useState(""),[busy,setBusy]=useState(false),[uncertain,setUncertain]=useState(false);
|
|
32
|
-
const [f,setForm]=useState({runtime:inst.runtime==="windows"?"windows":"wsl",machineId:inst.machine_id||"",backend:inst.backend||"",directory:inst.working_directory||"",model:inst.model||"",access:inst.native_sandbox||"read-only",adapter:inst.native_adapter||"exec",credentialProfile:"",fresh:false});
|
|
33
|
-
const local=useWindowsCliCatalog(windowsCli===true&&f.runtime==="windows"&&!f.machineId),machines=machinesState.data?.machines||[],machine=machines.find(row=>row.id===f.machineId);
|
|
34
|
-
const windows=f.runtime==="windows",inventory=f.machineId?machine?.inventory:local.data;
|
|
35
|
-
const native=windows?(f.machineId?runtimeCliChoices(machine):inventory?.clis||[]).filter(cli=>cli.path&&cli.supports?.execution!==false&&cli.supports?.resume!==false):[];
|
|
36
|
-
const choices=windows?native.map(cli=>({value:cli.id,label:cliLabel(cli.id),disabled:!cli.runnable})): (rows||[]).filter(row=>row.installed!==false).map(row=>({value:row.name,label:cliLabel(row.name),disabled:["not_installed","not_signed_in","too_old"].includes(source?.runtime==="wsl"&&source.backend===row.name?(source.backendState||row.state):row.state)}));
|
|
37
|
-
const selected=native.find(cli=>cli.id===f.backend),targetReady=!!choices.find(choice=>choice.value===f.backend&&!choice.disabled)&&(!f.machineId||machine?.status==="online");
|
|
38
|
-
const allowedRead=!windows||selected?.readOnlySupport!==false;
|
|
39
|
-
const set=(key,value)=>setForm(old=>({...old,[key]:value}));
|
|
40
|
-
const load=async()=>{
|
|
41
|
-
if(claim.current)return;setSource(null);setError("");
|
|
42
|
-
try{const response=await lease.fetch(`/ui/instances/${encodeURIComponent(name)}/runtime`),value=await response.json();if(!lease.current())return;if(!response.ok)throw Error(value.error||text("failed"));
|
|
43
|
-
const {sandbox:access}=value;setSource(value);setUncertain(false);setStep(1);setForm({runtime:value.runtime,machineId:value.machineId||"",backend:value.backend||inst.backend||"",directory:value.directory||"",model:value.model||"",access,adapter:value.adapter,credentialProfile:typeof value.credentialProfile==="string"?value.credentialProfile:"",fresh:false});
|
|
44
|
-
}catch(e){if(lease.current())setError(e.message);}
|
|
45
|
-
};
|
|
46
|
-
useEffect(()=>{void load();},[lease]);
|
|
47
|
-
useEffect(()=>{void machinesState.refresh();},[]);
|
|
48
|
-
const choose=(runtime,machineId="")=>setForm(old=>({...old,runtime,machineId,backend:"",model:"",directory:runtime===source?.runtime&&machineId===(source?.machineId||"")?source.directory:"",access:"read-only",adapter:"exec",credentialProfile:runtime==="windows"&&machineId&&machineId===(source?.machineId||"")?source?.credentialProfile||"":"",fresh:false}));
|
|
49
|
-
useEffect(()=>{if(!f.backend&&choices.some(choice=>!choice.disabled))set("backend",choices.find(choice=>!choice.disabled).value);},[f.runtime,f.machineId,f.backend,choices.map(choice=>`${choice.value}:${choice.disabled}`).join(",")]);
|
|
50
|
-
const submit=async()=>{
|
|
51
|
-
if(claim.current||uncertain||!source||!f.fresh||!targetReady||(!allowedRead&&f.access==="read-only"))return;
|
|
52
|
-
claim.current=true;setBusy(true);setError("");
|
|
53
|
-
const body={requestId:crypto.randomUUID(),expectedRevision:source.revision,runtime:f.runtime,...(f.machineId?{machineId:f.machineId}:{}),backend:f.backend,model:f.model.trim(),directory:f.directory.trim(),sandbox:f.access,adapter:windows?f.adapter:"exec",startNewConversation:true,...(windows&&f.machineId&&f.backend==="claude-code"&&f.credentialProfile?{credentialProfile:f.credentialProfile}:{})};
|
|
54
|
-
try{const response=await lease.fetch(`/ui/instances/${encodeURIComponent(name)}/runtime`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(body)}),value=await response.json();if(!lease.current())return;
|
|
55
|
-
if(!response.ok||value?.ok!==true)throw Error(value.error||text("failed"));onChanged?.();onClose();
|
|
56
|
-
}catch(e){if(lease.current()){setError(e.message);setUncertain(true);}}
|
|
57
|
-
finally{claim.current=false;if(lease.current())setBusy(false);}
|
|
58
|
-
};
|
|
59
|
-
const close=()=>{if(!claim.current)onClose();};
|
|
60
|
-
return html`<${Dialog} title=${text("title")} cls="agent-runtime-change-dialog" busy=${busy} onClose=${close} wide=${true} actions=${html`<button type="button" class="btn" disabled=${busy} onClick=${close}>${text("cancel")}</button>${step===2?html`<button type="button" class="btn" disabled=${busy||uncertain} onClick=${()=>setStep(1)}>${text("back")}</button>`:null}<button type="button" class="btn btn-primary" disabled=${busy||uncertain||!source||!targetReady||(step===2&&(!f.fresh||!allowedRead&&f.access==="read-only"))} onClick=${step===1?()=>setStep(2):submit}>${text(step===1?"next":"apply")}</button>`}>
|
|
61
|
-
<div class="form agent-runtime-change" aria-busy=${busy}><p>${text("lead")}</p>${!source?html`<p role="status">${text("loading")}</p>`:null}
|
|
62
|
-
${source&&step===1?html`<${RuntimePicker} value=${f.runtime} onChange=${runtime=>choose(runtime)} windowsEnabled=${windowsCli===true} machineId=${f.machineId} machines=${machines} onMachineChange=${id=>choose("windows",id)} onRefresh=${machinesState.refresh} loaded=${!!machinesState.data && !machinesState.error}/><div class="field"><label>${tr("backend")}</label><${CliPicker} value=${f.backend} choices=${choices} label=${tr("backend")} onChange=${backend=>setForm(old=>({...old,backend,model:"",credentialProfile:backend==="claude-code"?old.credentialProfile:"",fresh:false}))}/></div>${removedBackendReplacement(f.backend)?html`<p class="note" role="status">${text("removed",f.backend,removedBackendReplacement(f.backend))}</p>`:null}${!choices.length?html`<p class="note">${text("noCli")}</p>`:null}`:null}
|
|
63
|
-
${source&&step===2?html`<h3>${text("configure")}</h3><p><strong>${machine?.name||(windows?tr("windows"):tr("wsl"))}</strong> · ${cliLabel(f.backend)}</p><label class="field"><span>${tr("directory")}</span><input value=${f.directory} disabled=${busy||uncertain} onInput=${event=>set("directory",event.target.value)}/></label><p class="note">${text("directoryHint")}</p><div class="field"><label for="runtime-change-model">${t("settings.model")}</label><${ModelSelect} id="runtime-change-model" disabled=${busy||uncertain} value=${f.model} onChange=${value=>set("model",value)} backend=${f.backend} instance=${!windows&&source.runtime==="wsl"&&source.backend===f.backend?name:undefined} runtime=${f.runtime} machineId=${f.machineId} inherit=${t("settings.modelCliDefault")}/></div>
|
|
64
|
-
${windows?html`<label class="field"><span>${tr("access")}</span><select value=${f.access} disabled=${busy||uncertain} onChange=${event=>set("access",event.target.value)}><option value="read-only" disabled=${!allowedRead}>${tr("read")}</option><option value="workspace-write">${tr("write")}</option></select></label>${!allowedRead?html`<p class="note" role="status">${tr("noReadOnly")}</p>`:null}<label class="field"><span>${tr("adapter")}</span><select value=${f.adapter} disabled=${busy||uncertain} onChange=${event=>set("adapter",event.target.value)}><option value="exec">${tr("adapterExec")}</option><option value="pane" disabled=${!["codex","claude-code"].includes(f.backend)}>${tr("adapterPane")}</option></select></label>${f.machineId?html`<${ClaudeAccountSelect} id="runtime-change-claude-account" machine=${machine} backend=${f.backend} value=${f.credentialProfile} onChange=${value=>set("credentialProfile",value)} disabled=${busy||uncertain||machine?.status!=="online"} changeNote=${true}/>`:null}`:null}
|
|
65
|
-
<p class="note">${text("freshHint")}</p><p class="note">${text("stopped")}</p><label class="check"><input type="checkbox" checked=${f.fresh} disabled=${busy||uncertain} onChange=${event=>set("fresh",event.target.checked)}/><span>${text("fresh")}</span></label>`:null}
|
|
66
|
-
${busy?html`<p role="status"><span class="out-spin" aria-hidden="true"></span> ${text("busy")}</p>`:null}${error?html`<p class="feedback error" role="alert">${error}</p>`:null}${uncertain?html`<p class="note">${text("unknown")}</p><button type="button" class="btn" onClick=${load}>${text("reload")}</button>`:null}</div>
|
|
67
|
-
</${Dialog}>`;
|
|
68
|
-
}
|