@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,7 +1,3 @@
|
|
|
1
|
-
import { NativePaneRecoveryError } from "./native-pane-recovery.js";
|
|
2
|
-
import { addsSecondGeneral } from "./web-only-fleet.js";
|
|
3
|
-
import { NativePaneCrashBudget } from "./native-pane-crash-budget.js";
|
|
4
|
-
import { localWindowsCliEnabled, remoteRuntimeEnabled } from "./runtime-switches.js";
|
|
5
1
|
import { settingsUndo, undoSettingsPaths } from "./settings-transaction.js";
|
|
6
2
|
import { measureSyncWork } from "./sync-work-attribution.js";
|
|
7
3
|
import { REMOVED_BACKENDS, isRemovedBackend, removedBackendMessage } from "./backend/removed.js";
|
|
@@ -29,7 +25,6 @@ import { BACKEND_AUTH_CHECKS, checkAuthStatus, LOGIN_FLOWS } from "./login-flows
|
|
|
29
25
|
import { CHAT_PROFILE_LOGIN_BACKENDS, credentialProfileEnv, credentialProfileLoginCommand } from "./backend/credential-profile.js";
|
|
30
26
|
import { fetchClaudeUsage, fetchCodexUsage } from "./usage/providers.js";
|
|
31
27
|
import { assertExplicitInstanceRemoval, authorizeExplicitInstanceRemoval } from "./instance-removal.js";
|
|
32
|
-
import { WINDOWS_CREATE_REFUSED, isNativePaneInstance } from "./native-instance-registry.js";
|
|
33
28
|
import { capturePendingTargetReconciliation, finishTargetReconciliation, reconcileTargetBeforeStart, RECONCILIATION_WRITE_DRAIN_TIMEOUT_MS, retireCapturedTargetWindows, } from "./delivery-reconciliation.js";
|
|
34
29
|
import { noPlaceMarkers, placeRef } from "./topic-link.js";
|
|
35
30
|
export { isFleetStartCommandLine } from "./fleet-lock.js";
|
|
@@ -290,7 +285,6 @@ export class InstanceLifecycle {
|
|
|
290
285
|
activeTransition = new Map();
|
|
291
286
|
/** Bumped synchronously by stop/restart: a start begun under an older epoch must not publish. */
|
|
292
287
|
lifecycleEpochs = new Map();
|
|
293
|
-
nativeExitOwners = new Map();
|
|
294
288
|
/** Single wake flight per instance: concurrent wakes share it. */
|
|
295
289
|
wakeFlights = new Map();
|
|
296
290
|
/** Starts that begin their idle window now instead of at the persisted last inbound. */
|
|
@@ -706,108 +700,7 @@ export class InstanceLifecycle {
|
|
|
706
700
|
this.ctx.notifyInstanceTopic(name, t(reason === "unverifiable" ? "delivery.handoff_unverified_after_restart" : "delivery.handoff_not_taken", messages.length, name));
|
|
707
701
|
}, this.ctx.logger, `daemon.human_handoffs_unsettled[${name}]`));
|
|
708
702
|
}
|
|
709
|
-
nativeRecoveryPending(name) { return this.nativeExitOwners.has(name); }
|
|
710
|
-
cancelNativeRecovery(name, owner) {
|
|
711
|
-
for (const [target, run] of this.nativeExitOwners) {
|
|
712
|
-
if (name !== undefined && target !== name || owner !== undefined && run.token !== owner)
|
|
713
|
-
continue;
|
|
714
|
-
clearTimeout(run.timer);
|
|
715
|
-
this.nativeExitOwners.delete(target);
|
|
716
|
-
}
|
|
717
|
-
}
|
|
718
|
-
resetNativeCrashBudget(name) {
|
|
719
|
-
this.cancelNativeRecovery(name);
|
|
720
|
-
const pin = this.ctx.nativePanePinnedSession?.(name);
|
|
721
|
-
if (pin) {
|
|
722
|
-
ensureInstanceDir(this.ctx.getInstanceDir(name));
|
|
723
|
-
new NativePaneCrashBudget(join(this.ctx.getInstanceDir(name), "native-crash-state.json")).reset(pin);
|
|
724
|
-
}
|
|
725
|
-
}
|
|
726
|
-
async nativePaneExited(name, daemon, data) {
|
|
727
|
-
const config = this.ctx.fleetConfig?.instances[name], epoch = this.epochOf(name), pin = data.snapshot.sessionId, profilePin = this.ctx.nativePanePinnedSession?.(name) ?? undefined;
|
|
728
|
-
if (!isNativePaneInstance(config) || data.name !== name || this.daemons.get(name) !== daemon || !daemon.nativePaneExitCurrent(data.snapshot, data.owner)
|
|
729
|
-
|| pin !== undefined && profilePin !== undefined && profilePin !== pin || this.nativeExitOwners.has(name) || this.ctx.isPlannedRestart())
|
|
730
|
-
return;
|
|
731
|
-
const token = Symbol(name), run = { token, daemon, timer: undefined };
|
|
732
|
-
this.nativeExitOwners.set(name, run);
|
|
733
|
-
const current = () => this.nativeExitOwners.get(name) === run && this.daemons.get(name) === daemon && this.epochOf(name) === epoch
|
|
734
|
-
&& this.ctx.fleetConfig?.instances[name] === config && ((this.ctx.nativePanePinnedSession?.(name) ?? undefined) === profilePin || profilePin === undefined && pin !== undefined && this.ctx.nativePanePinnedSession?.(name) === pin) && !this.isPaused(name) && !this.ctx.isPlannedRestart()
|
|
735
|
-
&& (config.machine_id ? remoteRuntimeEnabled() : localWindowsCliEnabled());
|
|
736
|
-
daemon.fenceDeliveryWritesForStop();
|
|
737
|
-
try {
|
|
738
|
-
const decision = pin && profilePin ? new NativePaneCrashBudget(join(this.ctx.getInstanceDir(name), "native-crash-state.json")).observe(pin, data.snapshot.exitCode, config.restart_policy) : null;
|
|
739
|
-
await this.runTransition(name, async () => {
|
|
740
|
-
if (!current())
|
|
741
|
-
return;
|
|
742
|
-
if (!await daemon.waitForDeliveryWritesToDrain(RECONCILIATION_WRITE_DRAIN_TIMEOUT_MS) || !current())
|
|
743
|
-
throw Error("Native input writes have not drained");
|
|
744
|
-
if (this.ctx.deliveryOutbox) {
|
|
745
|
-
this.ctx.deliveryOutbox.markTargetReconciliationPending(name, daemon.bootId);
|
|
746
|
-
if (!await daemon.reconcileNativeDeliveries(this.ctx.deliveryOutbox, current) || !current())
|
|
747
|
-
throw Error("Native delivery reconciliation is unconfirmed");
|
|
748
|
-
}
|
|
749
|
-
// Close finalizes the exact positive exit; no PID lookup or signal exists on this path.
|
|
750
|
-
await daemon.stop({ nativePane: "close" });
|
|
751
|
-
if (!current())
|
|
752
|
-
return;
|
|
753
|
-
this.ctx.eventLog?.insert(name, "native_pane_exited", { exitCode: data.snapshot.exitCode ?? null, sessionId: pin, decision: decision?.kind ?? "no-conversation", count: decision?.count ?? 0 });
|
|
754
|
-
if (!decision) {
|
|
755
|
-
this.ctx.holdNativePaneRecovery?.(name, new NativePaneRecoveryError({ kind: "session-unconfirmed", launchId: data.snapshot.launchId, sessionId: this.ctx.nativePanePinnedSession?.(name) ?? undefined, ...(config.backend === "codex" ? { provider: "codex" } : {}) }));
|
|
756
|
-
this.ctx.setTopicIcon(name, "red");
|
|
757
|
-
return;
|
|
758
|
-
}
|
|
759
|
-
if (decision.kind !== "retry") {
|
|
760
|
-
if (decision.kind === "normal")
|
|
761
|
-
await this.ctx.notifyNormalExit(name);
|
|
762
|
-
else
|
|
763
|
-
this.notifyIncident(name, decision.kind === "loop" ? "crash_loop" : "supervision_ended", t("inst.respawn_paused", name));
|
|
764
|
-
this.ctx.setTopicIcon(name, "red");
|
|
765
|
-
return;
|
|
766
|
-
}
|
|
767
|
-
const timer = setTimeout(() => {
|
|
768
|
-
run.timer = undefined;
|
|
769
|
-
void this.runTransition(name, async () => {
|
|
770
|
-
if (!current())
|
|
771
|
-
return;
|
|
772
|
-
await this.stopInTransition(name, token);
|
|
773
|
-
// Our own stop advances once. An operator's concurrent stop/config change prevents publication.
|
|
774
|
-
if (this.nativeExitOwners.get(name) !== run || this.epochOf(name) !== epoch + 1 || this.daemons.has(name)
|
|
775
|
-
|| this.ctx.fleetConfig?.instances[name] !== config || this.ctx.nativePanePinnedSession?.(name) !== pin || this.isPaused(name) || this.ctx.isPlannedRestart()
|
|
776
|
-
|| !(config.machine_id ? remoteRuntimeEnabled() : localWindowsCliEnabled()))
|
|
777
|
-
return;
|
|
778
|
-
await this.startInTransition(name, config, true, { kind: "fleet-topic", backend: config.backend ?? "codex", model: config.model || "default" });
|
|
779
|
-
if (this.nativeExitOwners.get(name) !== run || this.epochOf(name) !== epoch + 1 || this.ctx.isPlannedRestart())
|
|
780
|
-
return;
|
|
781
|
-
await this.ctx.connectIpcToInstance(name);
|
|
782
|
-
}).catch(error => { if (this.nativeExitOwners.get(name) === run && !this.ctx.isPlannedRestart()) {
|
|
783
|
-
if (this.ctx.holdNativePaneRecovery?.(name, error))
|
|
784
|
-
return;
|
|
785
|
-
this.ctx.logger.error({ name, err: error }, "Native conversation resume failed; its pin was retained");
|
|
786
|
-
this.notifyIncident(name, "supervision_ended", t("inst.respawn_paused", name));
|
|
787
|
-
} })
|
|
788
|
-
.finally(() => { this.cancelNativeRecovery(name, token); this.ctx.onNativePaneRecoverySettled?.(name); });
|
|
789
|
-
}, decision.delay);
|
|
790
|
-
timer.unref?.();
|
|
791
|
-
run.timer = timer;
|
|
792
|
-
});
|
|
793
|
-
if (!run.timer)
|
|
794
|
-
this.cancelNativeRecovery(name, token);
|
|
795
|
-
}
|
|
796
|
-
catch (error) {
|
|
797
|
-
if (this.nativeExitOwners.get(name) === run && !this.ctx.isPlannedRestart()) {
|
|
798
|
-
this.ctx.logger.error({ name, err: error }, "Native crash recovery held without a fresh fallback");
|
|
799
|
-
this.notifyIncident(name, "supervision_ended", t("inst.respawn_paused", name));
|
|
800
|
-
}
|
|
801
|
-
this.cancelNativeRecovery(name, token);
|
|
802
|
-
}
|
|
803
|
-
finally {
|
|
804
|
-
if (!run.timer)
|
|
805
|
-
this.ctx.onNativePaneRecoverySettled?.(name);
|
|
806
|
-
}
|
|
807
|
-
}
|
|
808
703
|
attachIncidentHandlers(name, daemon) {
|
|
809
|
-
if (daemon.usesNativePane?.())
|
|
810
|
-
daemon.on("native_pane_exited", safeHandler((data) => this.nativePaneExited(name, daemon, data), this.ctx.logger, `daemon.native_pane_exited[${name}]`));
|
|
811
704
|
daemon.on("capacity_nudge_cancelled", safeHandler((data) => {
|
|
812
705
|
const reason = data.reason === "the user cancelled" ? t("inst.codex_retry_cancel_reason_user")
|
|
813
706
|
: data.reason === "the instance was stopped, paused or respawned" || data.reason === "the instance is not running" ? t("inst.codex_retry_cancel_reason_stopped")
|
|
@@ -1106,22 +999,19 @@ export class InstanceLifecycle {
|
|
|
1106
999
|
// labels, summaries and every exhaustive match for one picker's text.)
|
|
1107
1000
|
// #1691: a prompt no table knows — what it asks (one sanitised, bounded line from the daemon, never the pane), and
|
|
1108
1001
|
// that AgEnD will not press anything.
|
|
1109
|
-
// S-35: a Windows agent's instance name is windows-<uuid>; people know it by its display name.
|
|
1110
|
-
const label = this.ctx.fleetConfig?.instances[name]?.display_name?.trim() || name;
|
|
1111
|
-
const place = placeRef({ kind: "instance", name }, label);
|
|
1112
1002
|
if (data.unrecognised) {
|
|
1113
1003
|
// #1990: the question is a pane line — it may not name a place of its own.
|
|
1114
1004
|
const asked = data.question ? t("inst.unrecognised_prompt_question", noPlaceMarkers(data.question)) : "";
|
|
1115
|
-
this.notifyParked(name, "dialog_parked", t("inst.unrecognised_prompt",
|
|
1005
|
+
this.notifyParked(name, "dialog_parked", t("inst.unrecognised_prompt", name, asked), t("fleet.unrecognised_prompt", instancePlace(name), asked));
|
|
1116
1006
|
return;
|
|
1117
1007
|
}
|
|
1118
1008
|
const category = data.kind && data.kind !== "dialog" ? interactionCategory(data.kind, data.backend) : null;
|
|
1119
|
-
const text = category ? t("inst.interaction_parked",
|
|
1009
|
+
const text = category ? t("inst.interaction_parked", name, category) : data.holdOnly
|
|
1120
1010
|
// #2872: the Claude session-resume advice only for that prompt (it read as nonsense under a grok or kiro dialog).
|
|
1121
|
-
? t("inst.dialog_parked_hold",
|
|
1122
|
-
: t("inst.dialog_parked_stuck",
|
|
1011
|
+
? t("inst.dialog_parked_hold", name, data.description) + (data.advice === "claude-resume" ? " " + t("inst.dialog_parked_hold_claude_resume") : "")
|
|
1012
|
+
: t("inst.dialog_parked_stuck", name, data.description) + (data.advice === "claude-resume" ? " " + t("inst.dialog_parked_stuck_claude_resume") : "");
|
|
1123
1013
|
// #1990: in General, the instance's name links to its topic.
|
|
1124
|
-
this.notifyParked(name, "dialog_parked", text, category ? t("fleet.interaction_parked",
|
|
1014
|
+
this.notifyParked(name, "dialog_parked", text, category ? t("fleet.interaction_parked", instancePlace(name), category) : t("fleet.dialog_parked", instancePlace(name), data.description));
|
|
1125
1015
|
}, this.ctx.logger, `daemon.dialog_parked[${name}]`));
|
|
1126
1016
|
// #2897: the held dialog is gone (closed, answered, auto-answered) — its notices go with it.
|
|
1127
1017
|
daemon.on("dialog_unparked", safeHandler(() => this.ctx.resolveParkedNotice?.(name), this.ctx.logger, `daemon.dialog_unparked[${name}]`));
|
|
@@ -1158,21 +1048,6 @@ export class InstanceLifecycle {
|
|
|
1158
1048
|
daemon.on("pty_error", safeHandler(async (data) => {
|
|
1159
1049
|
this.ctx.eventLog?.insert(name, "pty_error", { type: data.type, action: data.action });
|
|
1160
1050
|
this.ctx.logger.warn({ name, errorType: data.type, action: data.action }, `PTY error: ${data.message}`);
|
|
1161
|
-
if (daemon.usesNativePane?.()) {
|
|
1162
|
-
// Native credentials and quotas belong to its runner. Never probe a Linux login or group its peers with it.
|
|
1163
|
-
if (this.daemons.get(name) !== daemon)
|
|
1164
|
-
return;
|
|
1165
|
-
this.notifyIncident(name, data.type, data.notice ?? data.message);
|
|
1166
|
-
if (data.action === "pause") {
|
|
1167
|
-
if (data.type === "auth_error") {
|
|
1168
|
-
daemon.confirmAuthFailure?.();
|
|
1169
|
-
daemon.requestPauseWhenIdle({ reconfirmAuth: true, reason: "auth" });
|
|
1170
|
-
}
|
|
1171
|
-
else
|
|
1172
|
-
daemon.requestPauseWhenIdle({ reason: data.type === "quota" ? "quota" : "error" });
|
|
1173
|
-
}
|
|
1174
|
-
return;
|
|
1175
|
-
}
|
|
1176
1051
|
// Antigravity's account-level cap is visible ONLY here: the quota summary
|
|
1177
1052
|
// API keeps reporting its buckets as barely used while the CLI is blocked
|
|
1178
1053
|
// (verified live — 0% used and "Individual quota reached" in the same
|
|
@@ -1282,7 +1157,7 @@ export class InstanceLifecycle {
|
|
|
1282
1157
|
if (notificationTarget)
|
|
1283
1158
|
this.notifyAuthErrorOnce(name, data.message, notificationTarget);
|
|
1284
1159
|
}
|
|
1285
|
-
else if (notificationTarget && data.action !== "backoff_restart" && data.action !== "nudge_continue") {
|
|
1160
|
+
else if (notificationTarget && !data.quotaAdvisory && data.action !== "backoff_restart" && data.action !== "nudge_continue") {
|
|
1286
1161
|
// backoff_restart / nudge_continue notifications are handled in the action branch below
|
|
1287
1162
|
// with per-attempt context (attempt N/max, delay).
|
|
1288
1163
|
// #2872: a notice the user asked to be one line (grok's weekly limit) is posted as it is: no "(action: …)", and no
|
|
@@ -1411,7 +1286,7 @@ export class InstanceLifecycle {
|
|
|
1411
1286
|
else {
|
|
1412
1287
|
// The marker must say auth (2b never auto-wakes a login failure); any
|
|
1413
1288
|
// other pause-action error is an error pause, not an operator one.
|
|
1414
|
-
const reason = data.type === "auth_error" ? "auth" :
|
|
1289
|
+
const reason = data.type === "auth_error" ? "auth" : "error";
|
|
1415
1290
|
void this.pause(name, reason)
|
|
1416
1291
|
.catch(err => this.ctx.logger.warn({ err, name }, "auth-error pause failed"))
|
|
1417
1292
|
.finally(() => { if (!this.isPaused(name))
|
|
@@ -1513,12 +1388,8 @@ export class InstanceLifecycle {
|
|
|
1513
1388
|
return this.lifecycleEpochs.get(name) ?? 0;
|
|
1514
1389
|
}
|
|
1515
1390
|
/** Invalidate every start/wake already running for `name` (they will not publish). */
|
|
1516
|
-
invalidate(name
|
|
1517
|
-
this.ctx.invalidateNativeMcp?.(name);
|
|
1391
|
+
invalidate(name) {
|
|
1518
1392
|
this.ctx.agentCredentials?.invalidate(name);
|
|
1519
|
-
const native = this.nativeExitOwners.get(name);
|
|
1520
|
-
if (native && native.token !== nativeOwner)
|
|
1521
|
-
this.cancelNativeRecovery(name);
|
|
1522
1393
|
this.lifecycleEpochs.set(name, this.epochOf(name) + 1);
|
|
1523
1394
|
}
|
|
1524
1395
|
/** Whether `transition` is `name`'s transition and is the one running now. */
|
|
@@ -1586,207 +1457,183 @@ export class InstanceLifecycle {
|
|
|
1586
1457
|
const check = () => { execution?.assert(); if (this.epochOf(name) !== epoch)
|
|
1587
1458
|
throw new SupersededStartError(name); };
|
|
1588
1459
|
check();
|
|
1589
|
-
this.ctx.assertGeneralBindingStart?.(name, config);
|
|
1590
1460
|
assertNoSessionOomStop(this.ctx.getInstanceDir(name));
|
|
1591
1461
|
const seedNow = this.activitySeedNow.delete(name);
|
|
1592
1462
|
if (this.daemons.has(name)) {
|
|
1593
1463
|
this.ctx.logger.info({ name }, "Instance already running, skipping");
|
|
1594
1464
|
return;
|
|
1595
1465
|
}
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1466
|
+
if (!existsSync(config.working_directory)) {
|
|
1467
|
+
this.ctx.logger.info({ name, working_directory: config.working_directory }, "Working directory does not exist — creating it");
|
|
1468
|
+
mkdirSync(config.working_directory, { recursive: true });
|
|
1469
|
+
}
|
|
1470
|
+
const instanceDir = this.ctx.getInstanceDir(name);
|
|
1471
|
+
ensureInstanceDir(instanceDir);
|
|
1472
|
+
// Daemon.start consumes the recovery marker after reading it. A start
|
|
1473
|
+
// that fails before reaching the daemon must leave that intent intact.
|
|
1474
|
+
const { Daemon } = await import("./daemon.js");
|
|
1475
|
+
const { createBackend } = await import("./backend/factory.js");
|
|
1476
|
+
check();
|
|
1477
|
+
const backendName = config.backend ?? this.ctx.fleetConfig?.defaults?.backend ?? "claude-code";
|
|
1478
|
+
// A removed backend (#1280): this instance refuses to start, says why and what to use instead, and the rest of
|
|
1479
|
+
// the fleet is unaffected. Never a fallback to another backend.
|
|
1480
|
+
if (isRemovedBackend(backendName)) {
|
|
1481
|
+
const message = removedBackendMessage(backendName, name);
|
|
1482
|
+
this.ctx.logger.error({ name, backend: backendName }, `Not starting: ${message}`);
|
|
1483
|
+
this.ctx.notifyInstanceTopic(name, t("inst.backend_removed", name, backendName, REMOVED_BACKENDS[backendName].replacement));
|
|
1484
|
+
return;
|
|
1485
|
+
}
|
|
1486
|
+
// Verify backend binary is in PATH before spawning. Off-loop resolve pins a
|
|
1487
|
+
// hint so createBackend's resolveBinary does not run synchronous `which`
|
|
1488
|
+
// (#1490 row 67). Missing still only logs; start continues.
|
|
1489
|
+
const installation = BACKEND_INSTALLATION_INFO[backendName];
|
|
1490
|
+
if (installation) {
|
|
1491
|
+
const { resolveBackendBinary } = await import("./backend-availability.js");
|
|
1492
|
+
const path = await resolveBackendBinary(backendName);
|
|
1493
|
+
noteResolvedBinary(installation.binary, path ?? installation.binary);
|
|
1614
1494
|
check();
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
// the fleet is unaffected. Never a fallback to another backend.
|
|
1618
|
-
if (isRemovedBackend(backendName)) {
|
|
1619
|
-
const message = removedBackendMessage(backendName, name);
|
|
1620
|
-
this.ctx.logger.error({ name, backend: backendName }, `Not starting: ${message}`);
|
|
1621
|
-
this.ctx.notifyInstanceTopic(name, t("inst.backend_removed", name, backendName, REMOVED_BACKENDS[backendName].replacement));
|
|
1622
|
-
return;
|
|
1495
|
+
if (!path) {
|
|
1496
|
+
this.ctx.logger.error({ binary: installation.binary, backend: backendName, instance: name }, `Backend binary "${installation.binary}" not found in PATH`);
|
|
1623
1497
|
}
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
this.ctx.notifyInstanceTopic(name, t("inst.root_skip_perms"));
|
|
1498
|
+
}
|
|
1499
|
+
// claude-code refuses --dangerously-skip-permissions as root — fail fast
|
|
1500
|
+
// Unless IS_SANDBOX=1 is set (recognized sandbox environment)
|
|
1501
|
+
if (process.getuid?.() === 0 && backendName === "claude-code" && !process.env.IS_SANDBOX) {
|
|
1502
|
+
const msg = `⚠️ claude-code cannot run with --dangerously-skip-permissions as root. Set IS_SANDBOX=1 or use a non-root user.`;
|
|
1503
|
+
this.ctx.logger.error({ name, backend: backendName }, msg);
|
|
1504
|
+
this.ctx.notifyInstanceTopic(name, t("inst.root_skip_perms"));
|
|
1505
|
+
return;
|
|
1506
|
+
}
|
|
1507
|
+
const backend = createBackend(backendName, instanceDir);
|
|
1508
|
+
const daemon = new Daemon(name, config, instanceDir, topicMode, backend, this.ctx.controlClient ?? undefined, this.ctx.logger, runtimeIdentity ?? {
|
|
1509
|
+
kind: "fleet-topic",
|
|
1510
|
+
backend: backendName,
|
|
1511
|
+
model: config.model ?? "default",
|
|
1512
|
+
}, this.ctx.spawnGate, this.ctx.stormWindow, this.ctx.backendOutage);
|
|
1513
|
+
// Register before start: a pre-launch refusal has no published daemon or later incident handlers.
|
|
1514
|
+
daemon.on("kiro_compatibility_hold", (message) => {
|
|
1515
|
+
const owner = this.daemons.get(name);
|
|
1516
|
+
if (owner ? owner !== daemon : this.epochOf(name) !== epoch)
|
|
1644
1517
|
return;
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
backend: backendName,
|
|
1650
|
-
model: config.model ?? "default",
|
|
1651
|
-
}, this.ctx.spawnGate, this.ctx.stormWindow, this.ctx.backendOutage);
|
|
1652
|
-
if (native) {
|
|
1653
|
-
daemon.setNativePaneLifecycle(native);
|
|
1654
|
-
native.bindDaemon?.(daemon);
|
|
1655
|
-
}
|
|
1656
|
-
// Register before start: a pre-launch refusal has no published daemon or later incident handlers.
|
|
1657
|
-
daemon.on("kiro_compatibility_hold", (message) => {
|
|
1658
|
-
const owner = this.daemons.get(name);
|
|
1659
|
-
if (owner ? owner !== daemon : this.epochOf(name) !== epoch)
|
|
1660
|
-
return;
|
|
1661
|
-
this.ctx.setKiroCompatibilityHold?.(name, message);
|
|
1662
|
-
});
|
|
1663
|
-
daemon.setAgentCredentialIssuer?.(token => {
|
|
1664
|
-
if (this.epochOf(name) !== epoch)
|
|
1665
|
-
throw new SupersededStartError(name);
|
|
1666
|
-
this.ctx.agentCredentials?.issue(name, token);
|
|
1667
|
-
});
|
|
1668
|
-
daemon.setDeliveryOutboxPort(this.ctx.deliveryOutbox ?? undefined);
|
|
1669
|
-
daemon.setWorkLeaseCheck(() => this.hasWorkLease(name));
|
|
1670
|
-
if (seedNow)
|
|
1671
|
-
daemon.seedActivityNow();
|
|
1672
|
-
// Read at each spawn so a fleet.yaml reload is honoured (#984).
|
|
1673
|
-
daemon.setPeerWorkingDirectories(backendName === "kiro-cli"
|
|
1674
|
-
? this.ctx.kiroPeerWorkingDirectories ? () => this.ctx.kiroPeerWorkingDirectories(name) : undefined
|
|
1675
|
-
: () => peerWorkingDirectories(this.ctx.fleetConfig, name, backendName));
|
|
1676
|
-
daemon.setStatusEmojiAvoidList(() => this.ctx.statusEmojiAvoidList?.(name));
|
|
1677
|
-
// Before start: the first spawn builds the command and emits its launch
|
|
1678
|
-
// warning synchronously inside Daemon.start, long before
|
|
1679
|
-
// attachIncidentHandlers runs (#984).
|
|
1680
|
-
this.attachLaunchWarningHandler(name, daemon);
|
|
1681
|
-
this.attachContextLostHandler(name, daemon);
|
|
1682
|
-
daemon.on("durable_delivery_deferred", (data) => {
|
|
1683
|
-
// A daemon without its outbox port cannot update the row directly. The
|
|
1684
|
-
// lifecycle owns the same-process store and records a bounded pre-write
|
|
1685
|
-
// retry instead of leaving the lane in delivering forever.
|
|
1686
|
-
this.ctx.deliveryOutbox?.retryBeforeBegin(data.deliveryId, data.targetBootId, data.attemptNo, data.reason, 5_000);
|
|
1687
|
-
});
|
|
1688
|
-
daemon.on("mcp_tool_response_written", (data) => {
|
|
1689
|
-
if (!data.operationId || data.daemonBootId !== daemon.bootId)
|
|
1690
|
-
return;
|
|
1691
|
-
try {
|
|
1692
|
-
this.ctx.deliveryOutbox?.markResponseDelivered(name, data.operationId);
|
|
1693
|
-
}
|
|
1694
|
-
catch (err) {
|
|
1695
|
-
this.ctx.logger.error({ name, operationId: data.operationId, err }, "Could not persist MCP response-delivered marker");
|
|
1696
|
-
}
|
|
1697
|
-
});
|
|
1698
|
-
this.applyCapacityBackoffBaseline(name, backendName, daemon);
|
|
1699
|
-
// Catch errors from daemon internals (e.g. IPC server) to prevent crashing the fleet process
|
|
1700
|
-
daemon.on("error", (err) => {
|
|
1701
|
-
this.ctx.logger.error({ err, name }, "Daemon emitted error — instance isolated");
|
|
1702
|
-
});
|
|
1703
|
-
if (this.ctx.deliveryOutbox) {
|
|
1704
|
-
// Fence older-generation submissions and reconcile them before Daemon.start
|
|
1705
|
-
// reaches Strategy A's unconditional old-window kill.
|
|
1706
|
-
const recovered = this.ctx.deliveryOutbox.recoverTargetGeneration(name, daemon.bootId);
|
|
1707
|
-
if (recovered.queued || recovered.reconciliationPending) {
|
|
1708
|
-
this.ctx.logger.warn({ name, ...recovered }, "Preparing durable outbox rows before target generation start");
|
|
1709
|
-
}
|
|
1710
|
-
const reconciled = native
|
|
1711
|
-
? { uncertain: 0, safeToStart: await this.ctx.reconcileNativePaneBeforeStart?.(name, daemon) === true }
|
|
1712
|
-
: await reconcileTargetBeforeStart(this.ctx.deliveryOutbox, name, instanceDir, this.ctx.logger);
|
|
1713
|
-
if (reconciled.uncertain > 0) {
|
|
1714
|
-
this.ctx.logger.warn({ name, ...reconciled }, "Some durable submissions need operator reconciliation");
|
|
1715
|
-
}
|
|
1716
|
-
if (!reconciled.safeToStart) {
|
|
1717
|
-
const message = t("delivery.restart_blocked", name);
|
|
1718
|
-
this.ctx.logger.error({ name, ...reconciled }, message);
|
|
1719
|
-
this.ctx.notifyFleetError?.(message);
|
|
1720
|
-
await daemon.abortStartup().catch(err => this.ctx.logger.warn({ err, name }, "Failed to dispose daemon after reconciliation could not verify old CLI exit"));
|
|
1721
|
-
throw new Error(message);
|
|
1722
|
-
}
|
|
1723
|
-
}
|
|
1724
|
-
if (this.epochOf(name) !== epoch || execution && !execution.current()) {
|
|
1725
|
-
// A stop/restart arrived while this start was reconciling: do not spawn.
|
|
1726
|
-
await daemon.abortStartup().catch(() => { });
|
|
1518
|
+
this.ctx.setKiroCompatibilityHold?.(name, message);
|
|
1519
|
+
});
|
|
1520
|
+
daemon.setAgentCredentialIssuer?.(token => {
|
|
1521
|
+
if (this.epochOf(name) !== epoch)
|
|
1727
1522
|
throw new SupersededStartError(name);
|
|
1523
|
+
this.ctx.agentCredentials?.issue(name, token);
|
|
1524
|
+
});
|
|
1525
|
+
daemon.setDeliveryOutboxPort(this.ctx.deliveryOutbox ?? undefined);
|
|
1526
|
+
daemon.setWorkLeaseCheck(() => this.hasWorkLease(name));
|
|
1527
|
+
if (seedNow)
|
|
1528
|
+
daemon.seedActivityNow();
|
|
1529
|
+
// Read at each spawn so a fleet.yaml reload is honoured (#984).
|
|
1530
|
+
daemon.setPeerWorkingDirectories(backendName === "kiro-cli"
|
|
1531
|
+
? this.ctx.kiroPeerWorkingDirectories ? () => this.ctx.kiroPeerWorkingDirectories(name) : undefined
|
|
1532
|
+
: () => peerWorkingDirectories(this.ctx.fleetConfig, name, backendName));
|
|
1533
|
+
daemon.setStatusEmojiAvoidList(() => this.ctx.statusEmojiAvoidList?.(name));
|
|
1534
|
+
// Before start: the first spawn builds the command and emits its launch
|
|
1535
|
+
// warning synchronously inside Daemon.start, long before
|
|
1536
|
+
// attachIncidentHandlers runs (#984).
|
|
1537
|
+
this.attachLaunchWarningHandler(name, daemon);
|
|
1538
|
+
this.attachContextLostHandler(name, daemon);
|
|
1539
|
+
daemon.on("durable_delivery_deferred", (data) => {
|
|
1540
|
+
// A daemon without its outbox port cannot update the row directly. The
|
|
1541
|
+
// lifecycle owns the same-process store and records a bounded pre-write
|
|
1542
|
+
// retry instead of leaving the lane in delivering forever.
|
|
1543
|
+
this.ctx.deliveryOutbox?.retryBeforeBegin(data.deliveryId, data.targetBootId, data.attemptNo, data.reason, 5_000);
|
|
1544
|
+
});
|
|
1545
|
+
daemon.on("mcp_tool_response_written", (data) => {
|
|
1546
|
+
if (!data.operationId || data.daemonBootId !== daemon.bootId)
|
|
1547
|
+
return;
|
|
1548
|
+
try {
|
|
1549
|
+
this.ctx.deliveryOutbox?.markResponseDelivered(name, data.operationId);
|
|
1728
1550
|
}
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
// hold it and deliver it once both are true.
|
|
1732
|
-
daemon.holdStartupIncidents?.();
|
|
1733
|
-
await InstanceLifecycle.startOrDispose(daemon, name, this.ctx.logger, execution || native ? check : undefined);
|
|
1734
|
-
// Publication fence (Phase 2a): the spawn cannot be cancelled, so a stop or
|
|
1735
|
-
// restart requested meanwhile has been waiting behind this transition. A
|
|
1736
|
-
// superseded start must not register, signal ready, or keep its window.
|
|
1737
|
-
if (this.epochOf(name) !== epoch || execution && !execution.current()) {
|
|
1738
|
-
await daemon.abortStartup().catch(err => this.ctx.logger.warn({ err, name }, "Failed to dispose a superseded start"));
|
|
1739
|
-
throw new SupersededStartError(name);
|
|
1551
|
+
catch (err) {
|
|
1552
|
+
this.ctx.logger.error({ name, operationId: data.operationId, err }, "Could not persist MCP response-delivered marker");
|
|
1740
1553
|
}
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
this.ctx.
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
this.ctx.logger.
|
|
1761
|
-
this.ctx.
|
|
1762
|
-
this.ctx.
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
this.
|
|
1768
|
-
daemon.
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1554
|
+
});
|
|
1555
|
+
this.applyCapacityBackoffBaseline(name, backendName, daemon);
|
|
1556
|
+
// Catch errors from daemon internals (e.g. IPC server) to prevent crashing the fleet process
|
|
1557
|
+
daemon.on("error", (err) => {
|
|
1558
|
+
this.ctx.logger.error({ err, name }, "Daemon emitted error — instance isolated");
|
|
1559
|
+
});
|
|
1560
|
+
if (this.ctx.deliveryOutbox) {
|
|
1561
|
+
// Fence older-generation submissions and reconcile them before Daemon.start
|
|
1562
|
+
// reaches Strategy A's unconditional old-window kill.
|
|
1563
|
+
const recovered = this.ctx.deliveryOutbox.recoverTargetGeneration(name, daemon.bootId);
|
|
1564
|
+
if (recovered.queued || recovered.reconciliationPending) {
|
|
1565
|
+
this.ctx.logger.warn({ name, ...recovered }, "Preparing durable outbox rows before target generation start");
|
|
1566
|
+
}
|
|
1567
|
+
const reconciled = await reconcileTargetBeforeStart(this.ctx.deliveryOutbox, name, instanceDir, this.ctx.logger);
|
|
1568
|
+
if (reconciled.uncertain > 0) {
|
|
1569
|
+
this.ctx.logger.warn({ name, ...reconciled }, "Some durable submissions need operator reconciliation");
|
|
1570
|
+
}
|
|
1571
|
+
if (!reconciled.safeToStart) {
|
|
1572
|
+
const message = t("delivery.restart_blocked", name);
|
|
1573
|
+
this.ctx.logger.error({ name, ...reconciled }, message);
|
|
1574
|
+
this.ctx.notifyFleetError?.(message);
|
|
1575
|
+
await daemon.abortStartup().catch(err => this.ctx.logger.warn({ err, name }, "Failed to dispose daemon after reconciliation could not verify old CLI exit"));
|
|
1576
|
+
throw new Error(message);
|
|
1577
|
+
}
|
|
1578
|
+
}
|
|
1579
|
+
if (this.epochOf(name) !== epoch || execution && !execution.current()) {
|
|
1580
|
+
// A stop/restart arrived while this start was reconciling: do not spawn.
|
|
1581
|
+
await daemon.abortStartup().catch(() => { });
|
|
1582
|
+
throw new SupersededStartError(name);
|
|
1583
|
+
}
|
|
1584
|
+
// The startup scan can raise an incident (sign-in screen, fatal modal)
|
|
1585
|
+
// before the handlers below exist and before this daemon is registered;
|
|
1586
|
+
// hold it and deliver it once both are true.
|
|
1587
|
+
daemon.holdStartupIncidents?.();
|
|
1588
|
+
await InstanceLifecycle.startOrDispose(daemon, name, this.ctx.logger, execution ? check : undefined);
|
|
1589
|
+
// Publication fence (Phase 2a): the spawn cannot be cancelled, so a stop or
|
|
1590
|
+
// restart requested meanwhile has been waiting behind this transition. A
|
|
1591
|
+
// superseded start must not register, signal ready, or keep its window.
|
|
1592
|
+
if (this.epochOf(name) !== epoch || execution && !execution.current()) {
|
|
1593
|
+
await daemon.abortStartup().catch(err => this.ctx.logger.warn({ err, name }, "Failed to dispose a superseded start"));
|
|
1594
|
+
throw new SupersededStartError(name);
|
|
1595
|
+
}
|
|
1596
|
+
this.capacityBackoffBaselines.delete(name);
|
|
1597
|
+
this.daemons.set(name, daemon);
|
|
1598
|
+
published?.(daemon); // Exact publication, synchronously after the ownership fence.
|
|
1599
|
+
if (seedNow)
|
|
1600
|
+
this.noteWokeForWork(name);
|
|
1601
|
+
this.ctx.onDaemonReady?.(name, daemon.bootId);
|
|
1602
|
+
daemon.on("auto_pause_requested", safeHandler(async (data) => {
|
|
1603
|
+
await this.pause(name, data?.reason ?? "idle");
|
|
1604
|
+
}, this.ctx.logger, `autoPause[${name}]`));
|
|
1605
|
+
daemon.on("auto_paused", (data) => {
|
|
1606
|
+
this.ctx.eventLog?.insert(name, "instance_paused", { reason: "idle", paused_at: data.pausedAt });
|
|
1607
|
+
this.ctx.logger.info({ name, pausedAt: data.pausedAt }, "Instance auto-paused after idle timeout");
|
|
1608
|
+
this.ctx.setTopicIcon(name, "remove");
|
|
1609
|
+
this.ctx.onAttentionChanged?.(name);
|
|
1610
|
+
});
|
|
1611
|
+
daemon.on("auto_woke", () => {
|
|
1612
|
+
this.ctx.onAttentionChanged?.(name);
|
|
1613
|
+
this.ctx.eventLog?.insert(name, "instance_resumed", { reason: "message" });
|
|
1614
|
+
this.ctx.logger.info({ name }, "Instance auto-woke for delivery");
|
|
1778
1615
|
this.ctx.setTopicIcon(name, "green");
|
|
1779
1616
|
this.ctx.touchActivity(name);
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1617
|
+
});
|
|
1618
|
+
this.ctx.setKiroCompatibilityHold?.(name, null);
|
|
1619
|
+
this.attachIncidentHandlers(name, daemon);
|
|
1620
|
+
// #2897: a new daemon starts with no dialog held; a notice the last one left (a crash, a respawn) is out of date.
|
|
1621
|
+
this.ctx.resolveParkedNotice?.(name);
|
|
1622
|
+
daemon.on("pty_recovered", safeHandler((data) => {
|
|
1623
|
+
const mins = Math.floor(data.downtime_s / 60);
|
|
1624
|
+
const secs = data.downtime_s % 60;
|
|
1625
|
+
const duration = mins > 0 ? `${mins}m ${secs}s` : `${secs}s`;
|
|
1626
|
+
this.ctx.eventLog?.insert(name, "pty_recovered", { downtime_s: data.downtime_s });
|
|
1627
|
+
this.ctx.logger.info({ name, downtime_s: data.downtime_s }, "PTY error recovered");
|
|
1628
|
+
this.ctx.notifyInstanceTopic(name, t("inst.recovered", name, duration));
|
|
1629
|
+
this.ctx.webhookEmit("pty_recovered", name, { downtime_s: data.downtime_s });
|
|
1630
|
+
}, this.ctx.logger, `daemon.pty_recovered[${name}]`));
|
|
1631
|
+
this.attachDeliveryStatusHandlers(name, daemon);
|
|
1632
|
+
this.ctx.setTopicIcon(name, "green");
|
|
1633
|
+
this.ctx.touchActivity(name);
|
|
1634
|
+
// Last: handlers attached and daemon registered, so a held startup incident
|
|
1635
|
+
// (pause, notify) finds both.
|
|
1636
|
+
daemon.releaseStartupIncidents?.();
|
|
1790
1637
|
}
|
|
1791
1638
|
isPaused(name) {
|
|
1792
1639
|
return this.daemons.get(name)?.isPaused ?? hasPausedMarker(this.ctx.getInstanceDir(name));
|
|
@@ -1795,30 +1642,11 @@ export class InstanceLifecycle {
|
|
|
1795
1642
|
return this.daemons.get(name)?.lastPausedAt ?? readPausedAt(this.ctx.getInstanceDir(name));
|
|
1796
1643
|
}
|
|
1797
1644
|
async pause(name, reason = "operator", admission) {
|
|
1798
|
-
this.cancelNativeRecovery(name);
|
|
1799
1645
|
// Final backstop shared by slash, MCP, Settings, warm-cap, and any future
|
|
1800
1646
|
// caller. General is the coordinator and must remain resident to route work.
|
|
1801
1647
|
if (isGeneralInstance(this.ctx.fleetConfig, name)) {
|
|
1802
1648
|
throw new Error(GENERAL_PAUSE_ERROR);
|
|
1803
1649
|
}
|
|
1804
|
-
const nativeDaemon = this.daemons.get(name);
|
|
1805
|
-
if (nativeDaemon?.usesNativePane?.()) {
|
|
1806
|
-
if (admission && !admission.current())
|
|
1807
|
-
return;
|
|
1808
|
-
await this.runTransition(name, async () => {
|
|
1809
|
-
if (this.daemons.get(name) !== nativeDaemon || admission && !admission.current())
|
|
1810
|
-
return;
|
|
1811
|
-
if (!nativeDaemon.nativePaneHasExited() && (!await nativeDaemon.nativePauseReady(admission) || this.daemons.get(name) !== nativeDaemon || !nativeDaemon.nativePauseStillReady()))
|
|
1812
|
-
return;
|
|
1813
|
-
if (this.daemons.get(name) !== nativeDaemon || admission && !admission.current())
|
|
1814
|
-
return;
|
|
1815
|
-
await this.stopInTransition(name);
|
|
1816
|
-
this.ctx.setNativePanePaused?.(name, true);
|
|
1817
|
-
writePausedMarker(this.ctx.getInstanceDir(name), Date.now(), reason);
|
|
1818
|
-
this.ctx.onAttentionChanged?.(name);
|
|
1819
|
-
});
|
|
1820
|
-
return;
|
|
1821
|
-
}
|
|
1822
1650
|
// B1: cancel any pending capacity backoff — a user-initiated pause should
|
|
1823
1651
|
// not be undone by a queued restart 30–120s later.
|
|
1824
1652
|
const pendingBackoff = this.capacityBackoffTimers.get(name);
|
|
@@ -1902,21 +1730,16 @@ export class InstanceLifecycle {
|
|
|
1902
1730
|
clearPausedMarker(instanceDir);
|
|
1903
1731
|
this.markActivitySeedNow(name);
|
|
1904
1732
|
try {
|
|
1905
|
-
if (isNativePaneInstance(this.ctx.fleetConfig?.instances[name]))
|
|
1906
|
-
this.ctx.setNativePanePaused?.(name, false);
|
|
1907
1733
|
await this.ctx.startPersistedPausedInstance(name, transition);
|
|
1908
1734
|
}
|
|
1909
1735
|
catch (err) {
|
|
1910
1736
|
this.clearActivitySeedNow(name);
|
|
1911
1737
|
writePausedMarker(instanceDir, pausedAt, reason);
|
|
1912
|
-
if (isNativePaneInstance(this.ctx.fleetConfig?.instances[name]))
|
|
1913
|
-
this.ctx.setNativePanePaused?.(name, true);
|
|
1914
1738
|
throw err;
|
|
1915
1739
|
}
|
|
1916
1740
|
}
|
|
1917
1741
|
this.noteWokeForWork(name);
|
|
1918
|
-
|
|
1919
|
-
this.ctx.startStatuslineWatcher(name);
|
|
1742
|
+
this.ctx.startStatuslineWatcher(name);
|
|
1920
1743
|
}
|
|
1921
1744
|
/**
|
|
1922
1745
|
* Ownership boundary for a daemon that is not yet registered: if start()
|
|
@@ -1950,8 +1773,8 @@ export class InstanceLifecycle {
|
|
|
1950
1773
|
this.invalidate(name);
|
|
1951
1774
|
return this.runTransition(name, () => this.stopInTransition(name), transition);
|
|
1952
1775
|
}
|
|
1953
|
-
async stopInTransition(name
|
|
1954
|
-
this.invalidate(name
|
|
1776
|
+
async stopInTransition(name) {
|
|
1777
|
+
this.invalidate(name);
|
|
1955
1778
|
this.wokeAt.delete(name);
|
|
1956
1779
|
this.ctx.setTopicIcon(name, "remove");
|
|
1957
1780
|
// #2897: a stopped instance holds no dialog — its "needs a human" notices are out of date.
|
|
@@ -1976,20 +1799,11 @@ export class InstanceLifecycle {
|
|
|
1976
1799
|
if (!drained)
|
|
1977
1800
|
this.ctx.logger.warn({ name }, "Pane write did not drain before durable reconciliation capture; relying on the Enter write-ahead fence");
|
|
1978
1801
|
this.ctx.deliveryOutbox.markTargetReconciliationPending(name, daemon.bootId);
|
|
1979
|
-
|
|
1980
|
-
const reconciled = await daemon.reconcileNativeDeliveries(this.ctx.deliveryOutbox, () => this.daemons.get(name) === daemon);
|
|
1981
|
-
if (!reconciled)
|
|
1982
|
-
this.ctx.logger.warn({ name }, "Native stop could not settle every old delivery; retained attempts will not be replayed");
|
|
1983
|
-
}
|
|
1984
|
-
if (!daemon.usesNativePane?.())
|
|
1985
|
-
captured = await capturePendingTargetReconciliation(this.ctx.deliveryOutbox, name, this.ctx.getInstanceDir(name), getTmuxSession(), this.ctx.logger);
|
|
1802
|
+
captured = await capturePendingTargetReconciliation(this.ctx.deliveryOutbox, name, this.ctx.getInstanceDir(name), getTmuxSession(), this.ctx.logger);
|
|
1986
1803
|
}
|
|
1987
1804
|
let stopped = false;
|
|
1988
1805
|
try {
|
|
1989
|
-
|
|
1990
|
-
await daemon.stop({ nativePane: "close" });
|
|
1991
|
-
else
|
|
1992
|
-
await daemon.stop();
|
|
1806
|
+
await daemon.stop();
|
|
1993
1807
|
stopped = true;
|
|
1994
1808
|
}
|
|
1995
1809
|
finally {
|
|
@@ -2019,11 +1833,6 @@ export class InstanceLifecycle {
|
|
|
2019
1833
|
if (this.daemons.get(name) === daemon)
|
|
2020
1834
|
this.daemons.delete(name);
|
|
2021
1835
|
}
|
|
2022
|
-
else if (isNativePaneInstance(this.ctx.fleetConfig?.instances[name])) {
|
|
2023
|
-
if (!this.ctx.closeRetainedNativePane)
|
|
2024
|
-
throw Error("Retained native pane owner is unavailable; no local PID was signalled");
|
|
2025
|
-
await this.ctx.closeRetainedNativePane(name);
|
|
2026
|
-
}
|
|
2027
1836
|
else {
|
|
2028
1837
|
const instanceDir = this.ctx.getInstanceDir(name);
|
|
2029
1838
|
const pidPath = join(instanceDir, "daemon.pid");
|
|
@@ -2221,27 +2030,6 @@ export class InstanceLifecycle {
|
|
|
2221
2030
|
async handleCreate(args, respond, adapterId, execution) {
|
|
2222
2031
|
const check = () => execution?.assert();
|
|
2223
2032
|
check();
|
|
2224
|
-
if (args.runtime !== undefined && args.runtime !== "wsl" && args.runtime !== "windows") {
|
|
2225
|
-
respond(null, "Unknown instance runtime");
|
|
2226
|
-
return;
|
|
2227
|
-
}
|
|
2228
|
-
// M-2239 P1-1: a Windows agent is created only from the admin web dashboard (native-instance-api.ts), never through
|
|
2229
|
-
// create_instance, deploy_template or any other path that reaches here — an agent holding create_instance could
|
|
2230
|
-
// otherwise start one on the Windows host, in any drive path, with write access.
|
|
2231
|
-
if (args.runtime === "windows") {
|
|
2232
|
-
respond(null, WINDOWS_CREATE_REFUSED);
|
|
2233
|
-
return;
|
|
2234
|
-
}
|
|
2235
|
-
// #3021 review: on a fleet with no chat connection a new agent never becomes a second General (it would inherit
|
|
2236
|
-
// defaults.general_topic: true while the fleet has one).
|
|
2237
|
-
if (this.ctx.fleetConfig && addsSecondGeneral(this.ctx.fleetConfig)) {
|
|
2238
|
-
respond(null, "one_general: this fleet already has its General, and a new agent would inherit defaults.general_topic: true — set it to false in the defaults first");
|
|
2239
|
-
return;
|
|
2240
|
-
}
|
|
2241
|
-
if (args.sandbox !== undefined) {
|
|
2242
|
-
respond(null, "sandbox is supported only by the Windows runtime");
|
|
2243
|
-
return;
|
|
2244
|
-
}
|
|
2245
2033
|
const rawDirectory = args.directory;
|
|
2246
2034
|
const directory = rawDirectory ? rawDirectory.replace(/^~/, process.env.HOME || "~") : undefined;
|
|
2247
2035
|
const topicName = args.topic_name || (directory ? basename(directory) : undefined);
|
|
@@ -2535,11 +2323,6 @@ export class InstanceLifecycle {
|
|
|
2535
2323
|
createdConfig = instanceConfig;
|
|
2536
2324
|
const beforeCreate = structuredClone(this.ctx.fleetConfig);
|
|
2537
2325
|
const persist = () => {
|
|
2538
|
-
// #3021 review r2: asked again at the commit, after every await — two creates that both saw no General at entry
|
|
2539
|
-
// (defaults.general_topic: true) must not both become one.
|
|
2540
|
-
if (addsSecondGeneral(this.ctx.fleetConfig, { general_topic: instanceConfig.general_topic })) {
|
|
2541
|
-
throw new Error("one_general: this fleet already has its General, and a new agent would inherit defaults.general_topic: true — set it to false in the defaults first");
|
|
2542
|
-
}
|
|
2543
2326
|
this.ctx.fleetConfig.instances[newInstanceName] = instanceConfig;
|
|
2544
2327
|
if (createdTopicId != null)
|
|
2545
2328
|
this.ctx.routing.register(createdTopicId, { kind: "instance", name: newInstanceName });
|