@timurproko/a1 0.2.7-dev.1249 → 0.2.7-dev.1255
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 +11 -36
- package/bin/cli.js +2 -17
- package/bin/ui.js +10 -51
- package/dist/app/session-shell/clipboard-diagnostics.d.ts +2 -2
- package/dist/app/session-shell/clipboard-image.d.ts +0 -1
- package/dist/app/session-shell/clipboard-image.js +1 -1
- package/dist/app/session-shell/dialog-coordinator.d.ts +6 -5
- package/dist/app/session-shell/dialog-coordinator.js +3 -4
- package/dist/app/session-shell/dock-chrome.d.ts +11 -6
- package/dist/app/session-shell/dock-chrome.js +5 -8
- package/dist/app/session-shell/editor-hyperlink-budget.d.ts +0 -2
- package/dist/app/session-shell/editor-hyperlink-budget.js +1 -1
- package/dist/app/session-shell/exit-notice.d.ts +3 -3
- package/dist/app/session-shell/exit-notice.js +10 -10
- package/dist/app/session-shell/extension-surface.d.ts +8 -7
- package/dist/app/session-shell/helper-pool.d.ts +3 -4
- package/dist/app/session-shell/helper-pool.js +1 -1
- package/dist/app/session-shell/image-preparation-client.d.ts +4 -3
- package/dist/app/session-shell/image-preparation.d.ts +0 -2
- package/dist/app/session-shell/image-preparation.js +2 -2
- package/dist/app/session-shell/image-source.d.ts +2 -3
- package/dist/app/session-shell/image-source.js +2 -2
- package/dist/app/session-shell/input-surface-switch.d.ts +9 -7
- package/dist/app/session-shell/input-surface-switch.js +1 -2
- package/dist/app/session-shell/login-interaction.d.ts +5 -4
- package/dist/app/session-shell/login-interaction.js +2 -3
- package/dist/app/session-shell/paste-executor.d.ts +4 -8
- package/dist/app/session-shell/paste-executor.js +2 -2
- package/dist/app/session-shell/paste-protocol.d.ts +2 -2
- package/dist/app/session-shell/path-chip-presentation.d.ts +0 -5
- package/dist/app/session-shell/path-chip-presentation.js +3 -3
- package/dist/app/session-shell/prompt-chips.d.ts +8 -7
- package/dist/app/session-shell/prompt-history-controller.d.ts +3 -3
- package/dist/app/session-shell/prompt-submission.d.ts +7 -6
- package/dist/app/session-shell/prompt-submission.js +7 -28
- package/dist/app/session-shell/quit-outro-effects.d.ts +3 -3
- package/dist/app/session-shell/quit-outro-effects.js +1 -4
- package/dist/app/session-shell/quit-outro.d.ts +9 -12
- package/dist/app/session-shell/quit-outro.js +11 -11
- package/dist/app/session-shell/response-copy-protocol.d.ts +3 -2
- package/dist/app/session-shell/response-copy-transport.d.ts +2 -14
- package/dist/app/session-shell/response-copy-transport.js +2 -3
- package/dist/app/session-shell/session-lifecycle.d.ts +3 -3
- package/dist/app/session-shell/session-lifecycle.js +2 -4
- package/dist/app/session-shell/session-shell-root.d.ts +74 -120
- package/dist/app/session-shell/session-shell-root.js +82 -115
- package/dist/app/session-shell/session-shell.d.ts +13 -16
- package/dist/app/session-shell/session-shell.js +149 -314
- package/dist/app/session-shell/session-viewport-controller.d.ts +7 -6
- package/dist/app/session-shell/session-viewport-controller.js +5 -8
- package/dist/app/session-shell/settings-bindings.d.ts +24 -2
- package/dist/app/session-shell/settings-bindings.js +24 -0
- package/dist/app/session-shell/share-operation.d.ts +3 -3
- package/dist/app/session-shell/share-operation.js +4 -6
- package/dist/app/session-shell/shell-clipboard.d.ts +59 -0
- package/dist/app/session-shell/shell-clipboard.js +119 -0
- package/dist/app/session-shell/shell-editor-factory.d.ts +8 -4
- package/dist/app/session-shell/shell-editor-factory.js +13 -15
- package/dist/app/session-shell/shell-host.d.ts +16 -17
- package/dist/app/session-shell/shell-host.js +20 -37
- package/dist/app/session-shell/shell-layout.d.ts +2 -2
- package/dist/app/session-shell/shell-prompt-suggestions.d.ts +26 -0
- package/dist/app/session-shell/shell-prompt-suggestions.js +48 -0
- package/dist/app/session-shell/suggestion-surface.d.ts +1 -6
- package/dist/app/session-shell/suggestion-surface.js +1 -1
- package/dist/app/session-shell/system-clipboard.d.ts +2 -14
- package/dist/app/session-shell/system-clipboard.js +2 -7
- package/dist/app/session-shell/transcript-document.d.ts +12 -10
- package/dist/app/session-shell/transcript-document.js +15 -41
- package/dist/app/session-shell/viewport-layout.d.ts +2 -2
- package/dist/app/session-shell/workflow-output.d.ts +5 -3
- package/dist/app/session-shell/workflow-output.js +13 -15
- package/dist/app/session-shell/workflow-router.d.ts +1 -3
- package/dist/app/session-shell/workflow-router.js +1 -4
- package/dist/cli/dispatch.d.ts +1 -11
- package/dist/cli/dispatch.js +5 -92
- package/dist/cli/package-messages.d.ts +0 -1
- package/dist/cli/package-messages.js +1 -1
- package/dist/cli/session-context.d.ts +1 -1
- package/dist/cli/session-context.js +5 -7
- package/dist/cli/uninstall.d.ts +4 -7
- package/dist/cli/uninstall.js +6 -35
- package/dist/cli/version-stats.js +4 -7
- package/dist/composition/owned-settings.d.ts +2 -2
- package/dist/composition/owned-settings.js +0 -4
- package/dist/composition/owned-ui.d.ts +3 -25
- package/dist/composition/owned-ui.js +37 -113
- package/dist/composition/reference-selection-options.d.ts +1 -1
- package/dist/composition/reference-selection-options.js +1 -1
- package/dist/composition/release-update-observation.d.ts +4 -4
- package/dist/composition/release-update-observation.js +17 -47
- package/dist/composition/session-backend.d.ts +0 -1
- package/dist/composition/session-runtime-registry.d.ts +5 -4
- package/dist/composition/settings-route-host.d.ts +0 -7
- package/dist/composition/settings-route-host.js +7 -20
- package/dist/composition/settings-search-input.d.ts +2 -1
- package/dist/composition/startup-route.d.ts +2 -3
- package/dist/composition/startup-route.js +2 -3
- package/dist/contracts/owned-ui/extension-ui.d.ts +2 -1
- package/dist/contracts/owned-ui/index.d.ts +2 -1
- package/dist/contracts/owned-ui/model.d.ts +0 -3
- package/dist/contracts/owned-ui/session-presenters.d.ts +3 -0
- package/dist/contracts/owned-ui/session-workflows.d.ts +1 -4
- package/dist/contracts/owned-ui/shell-components.d.ts +543 -0
- package/dist/contracts/presentation/component.d.ts +17 -0
- package/dist/contracts/presentation/component.js +8 -0
- package/dist/contracts/presentation/index.d.ts +6 -15
- package/dist/contracts/presentation/index.js +2 -0
- package/dist/contracts/presentation/terminal.d.ts +290 -0
- package/dist/contracts/presentation/theme.d.ts +46 -0
- package/dist/features/launch/development-launch.js +1 -2
- package/dist/features/launch/index.d.ts +1 -1
- package/dist/features/launch/intent.d.ts +1 -3
- package/dist/features/launch/intent.js +2 -4
- package/dist/features/launch/runtime-selection.d.ts +2 -2
- package/dist/features/launch/runtime-selection.js +2 -2
- package/dist/features/launch/session-context.d.ts +2 -2
- package/dist/features/owned-ui/project-trust-prompt.d.ts +2 -2
- package/dist/features/owned-ui/project-trust-prompt.js +1 -1
- package/dist/features/owned-ui/reference-screen-app.d.ts +0 -2
- package/dist/features/owned-ui/reference-screen-app.js +2 -9
- package/dist/features/owned-ui/release-note-state.d.ts +2 -1
- package/dist/features/owned-ui/settings-app.d.ts +0 -6
- package/dist/features/owned-ui/settings-app.js +42 -254
- package/dist/features/owned-ui/settings-edits.d.ts +31 -0
- package/dist/features/owned-ui/settings-edits.js +139 -0
- package/dist/features/owned-ui/settings-scroll-rail.d.ts +29 -0
- package/dist/features/owned-ui/settings-scroll-rail.js +79 -0
- package/dist/features/owned-ui/settings-search-input.d.ts +2 -1
- package/dist/features/prompt-history/service.d.ts +3 -2
- package/dist/foundation/launch-context/index.d.ts +0 -12
- package/dist/foundation/launch-context/index.js +0 -26
- package/dist/foundation/lifecycle/claim-gate.d.ts +9 -0
- package/dist/foundation/lifecycle/claim-gate.js +37 -0
- package/dist/foundation/lifecycle/index.d.ts +5 -9
- package/dist/foundation/lifecycle/index.js +3 -4
- package/dist/foundation/lifecycle/model.d.ts +2 -59
- package/dist/foundation/lifecycle/model.js +0 -35
- package/dist/foundation/lifecycle/paths.d.ts +0 -24
- package/dist/foundation/lifecycle/paths.js +0 -40
- package/dist/foundation/lifecycle/process-liveness.d.ts +8 -0
- package/dist/foundation/lifecycle/process-liveness.js +18 -0
- package/dist/foundation/lifecycle/session-claim-lock.d.ts +1 -1
- package/dist/foundation/lifecycle/session-claim-lock.js +2 -2
- package/dist/foundation/lifecycle/session-repository-context.d.ts +6 -6
- package/dist/foundation/lifecycle/session-repository-context.js +2 -3
- package/dist/foundation/release/automatic-update.d.ts +6 -17
- package/dist/foundation/release/automatic-update.js +23 -44
- package/dist/foundation/release/bootstrap.d.ts +2 -25
- package/dist/foundation/release/bootstrap.js +37 -348
- package/dist/foundation/release/dependency-certification.d.ts +1 -2
- package/dist/foundation/release/dependency-certification.js +1 -1
- package/dist/foundation/release/early-accent.d.ts +2 -2
- package/dist/foundation/release/early-accent.js +1 -1
- package/dist/foundation/release/index.d.ts +10 -17
- package/dist/foundation/release/index.js +7 -11
- package/dist/foundation/release/latest-release.d.ts +3 -19
- package/dist/foundation/release/latest-release.js +11 -12
- package/dist/foundation/release/ordinary-launch-selection.d.ts +1 -1
- package/dist/foundation/release/ordinary-launch-selection.js +1 -1
- package/dist/foundation/release/process-liveness.d.ts +2 -0
- package/dist/foundation/release/process-liveness.js +12 -0
- package/dist/foundation/release/release-gc.d.ts +13 -10
- package/dist/foundation/release/release-gc.js +37 -101
- package/dist/foundation/release/{cohort-state.d.ts → release-state.d.ts} +44 -69
- package/dist/foundation/release/{cohort-state.js → release-state.js} +38 -70
- package/dist/foundation/release/release-store.d.ts +2 -2
- package/dist/foundation/release/release-store.js +2 -2
- package/dist/foundation/release/restart-certification.js +1 -1
- package/dist/foundation/release/update-activation.d.ts +2 -9
- package/dist/foundation/release/update-activation.js +30 -45
- package/dist/foundation/release/update-execution-lease.d.ts +2 -3
- package/dist/foundation/release/update-execution-lease.js +2 -2
- package/dist/foundation/release/update-launch.d.ts +2 -4
- package/dist/foundation/release/update-launch.js +0 -7
- package/dist/foundation/release/update-recovery.js +1 -1
- package/dist/foundation/release/update-transaction.d.ts +1 -1
- package/dist/foundation/release/update-transaction.js +5 -2
- package/dist/foundation/release/update.d.ts +2 -12
- package/dist/foundation/release/update.js +37 -214
- package/dist/foundation/session-writer-lock/index.d.ts +14 -6
- package/dist/foundation/session-writer-lock/index.js +48 -103
- package/dist/foundation/startup/startup-budget.d.ts +5 -5
- package/dist/foundation/startup/startup-budget.js +2 -2
- package/dist/foundation/startup/startup-runtime.d.ts +1 -1
- package/dist/foundation/terminal-cleanup/exit-notice.d.ts +6 -0
- package/dist/foundation/terminal-cleanup/exit-notice.js +36 -0
- package/dist/foundation/terminal-cleanup/index.d.ts +2 -1
- package/dist/foundation/terminal-cleanup/index.js +2 -1
- package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +0 -5
- package/dist/foundation/terminal-cleanup/terminal-reset.js +0 -5
- package/dist/integrations/pi/components/editor-interaction.d.ts +4 -12
- package/dist/integrations/pi/components/index.d.ts +15 -9
- package/dist/integrations/pi/components/index.js +9 -5
- package/dist/integrations/pi/components/lazy-selectors.d.ts +2 -10
- package/dist/integrations/pi/components/lazy-selectors.js +1 -1
- package/dist/integrations/pi/components/modal-frame.d.ts +5 -22
- package/dist/integrations/pi/components/modal-frame.js +3 -23
- package/dist/integrations/pi/components/owned-editor-ux.d.ts +4 -3
- package/dist/integrations/pi/components/prompt-input-port.d.ts +2 -19
- package/dist/integrations/pi/components/resources/builtin-themes.d.ts +2 -1
- package/dist/integrations/pi/components/shell-editor-autocomplete.d.ts +3 -2
- package/dist/integrations/pi/components/shell-editor-autocomplete.js +1 -4
- package/dist/integrations/pi/components/shell-footer-status.d.ts +3 -3
- package/dist/integrations/pi/components/shell-footer-status.js +5 -4
- package/dist/integrations/pi/components/shell-hotkey-sections.js +1 -1
- package/dist/integrations/pi/components/shell-presenters-info.d.ts +6 -8
- package/dist/integrations/pi/components/shell-presenters-info.js +6 -19
- package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +1 -1
- package/dist/integrations/pi/components/shell-presenters-transcript.js +1 -1
- package/dist/integrations/pi/components/shell-session-info-reference.d.ts +2 -1
- package/dist/integrations/pi/components/shell-shared-facade.d.ts +33 -229
- package/dist/integrations/pi/components/shell-shared-facade.js +8 -1
- package/dist/integrations/pi/components/skills-command.d.ts +1 -9
- package/dist/integrations/pi/components/skills-command.js +5 -5
- package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +2 -5
- package/dist/integrations/pi/components/submitted-prompt-adapter.js +2 -16
- package/dist/integrations/pi/components/theme.d.ts +9 -2
- package/dist/integrations/pi/components/theme.js +17 -2
- package/dist/integrations/pi/components/thinking-selector-dialog.d.ts +2 -1
- package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +2 -2
- package/dist/integrations/pi/components/upstream/components/session-footer.d.ts +1 -2
- package/dist/integrations/pi/components/upstream/components/session-footer.js +6 -8
- package/dist/integrations/pi/engine/adapter.d.ts +3 -6
- package/dist/integrations/pi/engine/adapter.js +4 -28
- package/dist/integrations/pi/engine/changelog.d.ts +2 -2
- package/dist/integrations/pi/engine/changelog.js +3 -3
- package/dist/integrations/pi/engine/compaction-progress.d.ts +2 -3
- package/dist/integrations/pi/engine/compaction-progress.js +1 -1
- package/dist/integrations/pi/engine/conformance.d.ts +2 -1
- package/dist/integrations/pi/engine/default-model-setting.d.ts +0 -2
- package/dist/integrations/pi/engine/default-model-setting.js +1 -2
- package/dist/integrations/pi/engine/diagnostics-state.d.ts +0 -1
- package/dist/integrations/pi/engine/diagnostics-state.js +0 -14
- package/dist/integrations/pi/engine/event-delivery.d.ts +2 -1
- package/dist/integrations/pi/engine/extension-ui-binding.d.ts +2 -1
- package/dist/integrations/pi/engine/host.js +2 -2
- package/dist/integrations/pi/engine/message-values.d.ts +0 -1
- package/dist/integrations/pi/engine/message-values.js +1 -1
- package/dist/integrations/pi/engine/pending-delivery.d.ts +0 -4
- package/dist/integrations/pi/engine/pending-delivery.js +3 -3
- package/dist/integrations/pi/engine/ports.d.ts +7 -1
- package/dist/integrations/pi/engine/ports.js +4 -0
- package/dist/integrations/pi/engine/project-trust-preflight.d.ts +2 -1
- package/dist/integrations/pi/engine/prompt-suggestions.d.ts +3 -3
- package/dist/integrations/pi/engine/prompt-suggestions.js +0 -40
- package/dist/integrations/pi/engine/provider-authentication.d.ts +1 -1
- package/dist/integrations/pi/engine/public-main-entry.d.ts +1 -5
- package/dist/integrations/pi/engine/public-main-entry.js +1 -1
- package/dist/integrations/pi/engine/repository-pr-rest.d.ts +1 -9
- package/dist/integrations/pi/engine/repository-pr-rest.js +2 -2
- package/dist/integrations/pi/engine/repository-pr.d.ts +1 -3
- package/dist/integrations/pi/engine/repository-pr.js +1 -1
- package/dist/integrations/pi/engine/resource-catalog.d.ts +2 -1
- package/dist/integrations/pi/engine/session-integration.d.ts +1 -1
- package/dist/integrations/pi/engine/session-runtime.d.ts +4 -3
- package/dist/integrations/pi/engine/session-runtime.js +0 -2
- package/dist/integrations/pi/engine/settings-bridge.d.ts +0 -2
- package/dist/integrations/pi/engine/settings-bridge.js +1 -1
- package/dist/integrations/pi/engine/settings-port.d.ts +3 -2
- package/dist/integrations/pi/engine/transcript-projection.d.ts +2 -1
- package/dist/integrations/pi/engine/workflow-contexts.d.ts +1 -1
- package/dist/integrations/pi/engine/workflow-runner.d.ts +1 -1
- package/dist/integrations/pi/engine/workflow-runner.js +1 -1
- package/dist/integrations/pi/engine/workflow-support.d.ts +0 -6
- package/dist/integrations/pi/engine/workflow-support.js +4 -18
- package/dist/integrations/pi/engine/workflows.d.ts +5 -5
- package/dist/integrations/pi/session-presenters/components.d.ts +3 -0
- package/dist/integrations/pi/session-presenters/components.js +75 -0
- package/dist/integrations/pi/session-presenters/index.d.ts +1 -0
- package/dist/integrations/pi/session-presenters/index.js +1 -0
- package/dist/integrations/pi/session-presenters/presentation.d.ts +3 -0
- package/dist/integrations/pi/session-presenters/presentation.js +10 -0
- package/dist/integrations/pi/session-presenters/presenters.d.ts +2 -1
- package/dist/integrations/pi/session-presenters/presenters.js +3 -1
- package/dist/integrations/pi/tui-runtime/adapter.d.ts +2 -2
- package/dist/integrations/pi/tui-runtime/adapter.js +23 -32
- package/dist/integrations/pi/tui-runtime/contracts.d.ts +22 -166
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +5 -40
- package/dist/integrations/pi/tui-runtime/index.d.ts +1 -0
- package/dist/integrations/pi/tui-runtime/index.js +1 -0
- package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +4 -6
- package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +2 -8
- package/dist/integrations/pi/tui-runtime/overlay-geometry.js +3 -9
- package/dist/integrations/pi/tui-runtime/runtime-factory.d.ts +3 -0
- package/dist/integrations/pi/tui-runtime/runtime-factory.js +11 -0
- package/dist/product-identity.d.ts +4 -6
- package/dist/product-identity.js +6 -11
- package/dist/product-identity.json +1 -40
- package/dist/runtime-payload-inventory.json +0 -3
- package/dist/ui/components/index.d.ts +4 -4
- package/dist/ui/components/index.js +2 -2
- package/dist/ui/components/selection-copy.d.ts +0 -1
- package/dist/ui/components/selection-copy.js +0 -12
- package/dist/ui/components/submitted-prompt.d.ts +3 -13
- package/dist/ui/components/submitted-prompt.js +8 -41
- package/dist/ui/components/theme.d.ts +4 -19
- package/dist/ui/components/theme.js +6 -0
- package/dist/ui/components/transcript-viewport.d.ts +1 -3
- package/dist/ui/components/transcript-viewport.js +1 -4
- package/dist/ui/settings/declarations.d.ts +2 -97
- package/dist/ui/settings/declarations.js +2 -78
- package/dist/ui/settings/early-accent.js +1 -1
- package/dist/ui/settings/index.d.ts +3 -5
- package/dist/ui/settings/index.js +2 -3
- package/dist/ui/settings/manager.d.ts +0 -4
- package/dist/ui/settings/manager.js +6 -62
- package/dist/ui/settings/resolution.d.ts +6 -18
- package/dist/ui/settings/resolution.js +4 -103
- package/dist/ui/settings/sections.d.ts +0 -4
- package/dist/ui/settings/sections.js +1 -1
- package/docs/architecture/boundaries.md +23 -40
- package/docs/architecture/code-documentation.md +2 -2
- package/docs/architecture/internal-naming.md +11 -17
- package/docs/architecture/project-structure.md +13 -16
- package/docs/architecture/resource-and-data-policy.md +16 -31
- package/docs/architecture/toolchain.md +14 -19
- package/docs/architecture/ui-reference-provenance.md +2 -2
- package/docs/ci-release-runbook.md +5 -5
- package/docs/features/launch-profiles.md +11 -17
- package/docs/features/prompt-history.md +10 -11
- package/docs/local-worktree-cleanup.md +28 -1
- package/docs/manual-owned-ui-checkpoint.md +0 -1
- package/docs/validation.md +5 -11
- package/docs/worktree-link-recovery.md +6 -6
- package/package.json +7 -20
- package/bin/guardian.js +0 -42
- package/bin/supervisor.js +0 -7
- package/bin/tab-launch-context.d.ts +0 -27
- package/bin/tab-launch-context.js +0 -94
- package/dist/app/session-shell/resident-tab-coordinator.d.ts +0 -38
- package/dist/app/session-shell/resident-tab-coordinator.js +0 -77
- package/dist/cli/tabs-request.d.ts +0 -7
- package/dist/cli/tabs.d.ts +0 -14
- package/dist/cli/tabs.js +0 -151
- package/dist/composition/resident-tab-bridge.d.ts +0 -41
- package/dist/composition/resident-tab-bridge.js +0 -209
- package/dist/composition/utility-tab.d.ts +0 -28
- package/dist/composition/utility-tab.js +0 -244
- package/dist/features/owned-ui/plus-menu-dialog.d.ts +0 -28
- package/dist/features/owned-ui/plus-menu-dialog.js +0 -89
- package/dist/features/resident-tab/auto-name.d.ts +0 -11
- package/dist/features/resident-tab/auto-name.js +0 -44
- package/dist/features/resident-tab/index.d.ts +0 -5
- package/dist/features/resident-tab/index.js +0 -7
- package/dist/features/resident-tab/shortcut-bindings-file.d.ts +0 -8
- package/dist/features/resident-tab/shortcut-bindings-file.js +0 -40
- package/dist/features/resident-tab/shortcut-declarations.d.ts +0 -13
- package/dist/features/resident-tab/shortcut-declarations.js +0 -26
- package/dist/features/resident-tab/shortcut-projection.d.ts +0 -29
- package/dist/features/resident-tab/shortcut-projection.js +0 -64
- package/dist/features/resident-tab/status-deriver.d.ts +0 -10
- package/dist/features/resident-tab/status-deriver.js +0 -12
- package/dist/foundation/launch-guardian/exit-watcher.d.ts +0 -14
- package/dist/foundation/launch-guardian/exit-watcher.js +0 -103
- package/dist/foundation/launch-guardian/index.d.ts +0 -2
- package/dist/foundation/launch-guardian/index.js +0 -1
- package/dist/foundation/launch-guardian/main.d.ts +0 -39
- package/dist/foundation/launch-guardian/main.js +0 -232
- package/dist/foundation/lifecycle/commands.d.ts +0 -40
- package/dist/foundation/lifecycle/launch-instance.d.ts +0 -46
- package/dist/foundation/lifecycle/launch-instance.js +0 -134
- package/dist/foundation/lifecycle/native-claim-gate.d.ts +0 -5
- package/dist/foundation/lifecycle/native-claim-gate.js +0 -41
- package/dist/foundation/lifecycle/supervisor-startup.d.ts +0 -30
- package/dist/foundation/lifecycle/supervisor-startup.js +0 -106
- package/dist/foundation/process-containment/addon-containment.d.ts +0 -20
- package/dist/foundation/process-containment/addon-containment.js +0 -139
- package/dist/foundation/process-containment/addon-process-inspector.d.ts +0 -11
- package/dist/foundation/process-containment/addon-process-inspector.js +0 -36
- package/dist/foundation/process-containment/addon.d.ts +0 -47
- package/dist/foundation/process-containment/addon.js +0 -57
- package/dist/foundation/process-containment/artifact.d.ts +0 -1
- package/dist/foundation/process-containment/artifact.js +0 -35
- package/dist/foundation/process-containment/contracts.d.ts +0 -33
- package/dist/foundation/process-containment/contracts.js +0 -35
- package/dist/foundation/process-containment/index.d.ts +0 -9
- package/dist/foundation/process-containment/index.js +0 -7
- package/dist/foundation/process-containment/linux-process-inspector.d.ts +0 -7
- package/dist/foundation/process-containment/linux-process-inspector.js +0 -27
- package/dist/foundation/process-containment/native-process-inspector.d.ts +0 -4
- package/dist/foundation/process-containment/native-process-inspector.js +0 -21
- package/dist/foundation/protocol/client.d.ts +0 -18
- package/dist/foundation/protocol/client.js +0 -130
- package/dist/foundation/protocol/index.d.ts +0 -3
- package/dist/foundation/protocol/index.js +0 -2
- package/dist/foundation/protocol/messages.d.ts +0 -90
- package/dist/foundation/protocol/messages.js +0 -100
- package/dist/foundation/release/cohort-selection.d.ts +0 -33
- package/dist/foundation/release/cohort-selection.js +0 -67
- package/dist/foundation/release/endpoint-lock.d.ts +0 -2
- package/dist/foundation/release/endpoint-lock.js +0 -37
- package/dist/foundation/release/endpoint-recovery.d.ts +0 -10
- package/dist/foundation/release/endpoint-recovery.js +0 -45
- package/dist/foundation/release/endpoints.d.ts +0 -32
- package/dist/foundation/release/endpoints.js +0 -152
- package/dist/foundation/release/prepared-update-activation.d.ts +0 -3
- package/dist/foundation/release/prepared-update-activation.js +0 -27
- package/dist/foundation/release/process-cleanup.d.ts +0 -14
- package/dist/foundation/release/process-cleanup.js +0 -76
- package/dist/foundation/release/supervisor-identity.d.ts +0 -15
- package/dist/foundation/release/supervisor-identity.js +0 -63
- package/dist/foundation/resident-tabs/boot-identity.d.ts +0 -6
- package/dist/foundation/resident-tabs/boot-identity.js +0 -16
- package/dist/foundation/resident-tabs/bounded-host-command.d.ts +0 -20
- package/dist/foundation/resident-tabs/bounded-host-command.js +0 -62
- package/dist/foundation/resident-tabs/bridge-client.d.ts +0 -73
- package/dist/foundation/resident-tabs/bridge-client.js +0 -327
- package/dist/foundation/resident-tabs/continuity.d.ts +0 -12
- package/dist/foundation/resident-tabs/continuity.js +0 -63
- package/dist/foundation/resident-tabs/doctor.d.ts +0 -28
- package/dist/foundation/resident-tabs/doctor.js +0 -166
- package/dist/foundation/resident-tabs/draft-checkpoint.d.ts +0 -27
- package/dist/foundation/resident-tabs/draft-checkpoint.js +0 -145
- package/dist/foundation/resident-tabs/ensure-terminal-host.d.ts +0 -36
- package/dist/foundation/resident-tabs/ensure-terminal-host.js +0 -151
- package/dist/foundation/resident-tabs/fault-injection.d.ts +0 -8
- package/dist/foundation/resident-tabs/fault-injection.js +0 -26
- package/dist/foundation/resident-tabs/fixture-control.d.ts +0 -7
- package/dist/foundation/resident-tabs/fixture-control.js +0 -35
- package/dist/foundation/resident-tabs/host-entry.js +0 -17
- package/dist/foundation/resident-tabs/index.d.ts +0 -15
- package/dist/foundation/resident-tabs/index.js +0 -10
- package/dist/foundation/resident-tabs/maintenance.d.ts +0 -39
- package/dist/foundation/resident-tabs/maintenance.js +0 -75
- package/dist/foundation/resident-tabs/progress-observation-schema.d.ts +0 -34
- package/dist/foundation/resident-tabs/progress-observation-schema.js +0 -1
- package/dist/foundation/resident-tabs/progress-observation.d.ts +0 -4
- package/dist/foundation/resident-tabs/progress-observation.js +0 -150
- package/dist/foundation/resident-tabs/prompt-journal.d.ts +0 -63
- package/dist/foundation/resident-tabs/prompt-journal.js +0 -213
- package/dist/foundation/resident-tabs/protocol.d.ts +0 -12
- package/dist/foundation/resident-tabs/protocol.js +0 -195
- package/dist/foundation/resident-tabs/recovery.d.ts +0 -26
- package/dist/foundation/resident-tabs/recovery.js +0 -205
- package/dist/foundation/resident-tabs/release-holds.d.ts +0 -28
- package/dist/foundation/resident-tabs/release-holds.js +0 -78
- package/dist/foundation/resident-tabs/routes.d.ts +0 -5
- package/dist/foundation/resident-tabs/routes.js +0 -5
- package/dist/foundation/resident-tabs/routing.d.ts +0 -11
- package/dist/foundation/resident-tabs/routing.js +0 -10
- package/dist/foundation/resident-tabs/runtime-control.d.ts +0 -38
- package/dist/foundation/resident-tabs/runtime-control.js +0 -74
- package/dist/foundation/resident-tabs/session-sync.d.ts +0 -14
- package/dist/foundation/resident-tabs/session-sync.js +0 -37
- package/dist/foundation/resident-tabs/settings.d.ts +0 -16
- package/dist/foundation/resident-tabs/settings.js +0 -60
- package/dist/foundation/resident-tabs/terminal-host-artifact.d.ts +0 -14
- package/dist/foundation/resident-tabs/terminal-host-artifact.js +0 -78
- package/dist/foundation/resident-tabs/zip-archive.d.ts +0 -9
- package/dist/foundation/resident-tabs/zip-archive.js +0 -56
- package/dist/foundation/storage/control-store.d.ts +0 -20
- package/dist/foundation/storage/control-store.js +0 -331
- package/dist/foundation/storage/index.d.ts +0 -1
- package/dist/foundation/storage/index.js +0 -1
- package/dist/foundation/supervision/index.d.ts +0 -3
- package/dist/foundation/supervision/index.js +0 -3
- package/dist/foundation/supervision/main.d.ts +0 -1
- package/dist/foundation/supervision/main.js +0 -86
- package/dist/foundation/supervision/paths.d.ts +0 -1
- package/dist/foundation/supervision/paths.js +0 -1
- package/dist/foundation/supervision/server.d.ts +0 -46
- package/dist/foundation/supervision/server.js +0 -611
- package/dist/integrations/pi/components/components.d.ts +0 -4
- package/dist/integrations/pi/components/components.js +0 -48
- package/dist/integrations/pi/components/conformance.d.ts +0 -18
- package/dist/integrations/pi/components/conformance.js +0 -70
- package/dist/integrations/pi/components/shell-components.d.ts +0 -7
- package/dist/integrations/pi/components/shell-components.js +0 -7
- package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +0 -33
- package/dist/integrations/pi/components/upstream/theme/theme-controller.js +0 -114
- package/dist/integrations/pi/engine/offline-settings-port.d.ts +0 -23
- package/dist/integrations/pi/engine/offline-settings-port.js +0 -54
- package/dist/native/darwin-arm64/manifest.json +0 -23
- package/dist/native/darwin-arm64/process-guardian.node +0 -0
- package/dist/native/darwin-arm64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -10500
- package/dist/native/darwin-arm64/terminal-host.manifest.json +0 -46
- package/dist/native/darwin-arm64/terminal-host.node +0 -0
- package/dist/native/darwin-x64/manifest.json +0 -23
- package/dist/native/darwin-x64/process-guardian.node +0 -0
- package/dist/native/darwin-x64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -10737
- package/dist/native/darwin-x64/terminal-host.manifest.json +0 -46
- package/dist/native/darwin-x64/terminal-host.node +0 -0
- package/dist/native/linux-x64/manifest.json +0 -23
- package/dist/native/linux-x64/process-guardian.node +0 -0
- package/dist/native/linux-x64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -11226
- package/dist/native/linux-x64/terminal-host.manifest.json +0 -46
- package/dist/native/linux-x64/terminal-host.node +0 -0
- package/dist/native/win32-x64/manifest.json +0 -23
- package/dist/native/win32-x64/process-guardian.node +0 -0
- package/dist/native/win32-x64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -10757
- package/dist/native/win32-x64/terminal-host.manifest.json +0 -46
- package/dist/native/win32-x64/terminal-host.node +0 -0
- package/dist/ui/settings/migrations.d.ts +0 -19
- package/dist/ui/settings/migrations.js +0 -209
- package/dist/ui/settings/progress-palette.generated.d.ts +0 -139
- package/dist/ui/settings/progress-palette.generated.js +0 -139
- package/docs/architecture/evidence/resident-tabs/linux-x64.md +0 -37
- package/docs/architecture/evidence/resident-tabs/macos-arm64.md +0 -36
- package/docs/architecture/evidence/resident-tabs/macos-x64.md +0 -35
- package/docs/architecture/evidence/resident-tabs/windows-x64.md +0 -36
- package/docs/architecture/evidence/terminal-host-spike/manual-one-pane-terminal-host.md +0 -70
- package/docs/architecture/evidence/terminal-host-spike/manual-two-by-two-basic-terminal-host.md +0 -32
- package/docs/architecture/evidence/terminal-host-spike/milestone-baseline.json +0 -115
- package/docs/architecture/evidence/terminal-host-spike/owned-ui-foundation-prerequisite.json +0 -48
- package/docs/architecture/evidence/terminal-host-spike/terminal-host-provenance.json +0 -125
- package/docs/architecture/evidence/terminal-host-spike/terminal-host-task-5-1.json +0 -56
- package/docs/architecture/evidence/terminal-host-spike/terminal-host-task-5-3.json +0 -174
- package/docs/architecture/evidence/terminal-host-spike/terminal-spike-acceptance-record.json +0 -18
- package/docs/architecture/native-fixture-isolation.md +0 -23
- package/docs/architecture/process-guardian-provenance.md +0 -36
- package/docs/architecture/resident-tabs-requirements.md +0 -18
- package/docs/architecture/resident-tabs.md +0 -668
- package/docs/architecture/terminal-host-proof-gate.md +0 -34
- package/docs/architecture/terminal-host-provenance.md +0 -81
- package/docs/architecture/terminal-host-spike-evidence.md +0 -39
- package/docs/launch-recovery.md +0 -23
- package/docs/manual-launch-instance-acceptance.md +0 -43
- package/docs/manual-resident-tabs-acceptance.md +0 -51
- /package/dist/{cli/tabs-request.js → contracts/owned-ui/shell-components.js} +0 -0
- /package/dist/{foundation/release → contracts/presentation}/progress-palette.generated.d.ts +0 -0
- /package/dist/{foundation/release → contracts/presentation}/progress-palette.generated.js +0 -0
- /package/dist/{foundation/lifecycle/commands.js → contracts/presentation/terminal.js} +0 -0
- /package/dist/{foundation/resident-tabs/host-entry.d.ts → contracts/presentation/theme.js} +0 -0
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { createPiShellArmin, createPiShellEarendilAnnouncement, } from "../../integrations/pi/components/shell-selectors-dialogs.js";
|
|
2
|
-
import { createPiShellChangelog, createPiShellHotkeys, createPiShellSessionInfo, renderPiShellCommandMessage, renderPiShellStatusText, } from "../../integrations/pi/components/shell-presenters-info.js";
|
|
3
|
-
import { piShellHyperlink } from "../../integrations/pi/components/shell-shared-facade.js";
|
|
4
1
|
/**
|
|
5
2
|
* Presents workflow results: bare A1 answers in the dock notice, the pinned profile appends
|
|
6
3
|
* transcript-anchored output, and consecutive status lines at the same anchor replace each other.
|
|
@@ -33,7 +30,7 @@ export class WorkflowOutput {
|
|
|
33
30
|
}
|
|
34
31
|
const id = this.#appendAnchored(width => [
|
|
35
32
|
"",
|
|
36
|
-
...
|
|
33
|
+
...this.#ports.components.info.statusText(this.#statusMessages.get(id) ?? message, width),
|
|
37
34
|
]);
|
|
38
35
|
this.#statusMessages.set(id, message);
|
|
39
36
|
this.#lastStatusId = id;
|
|
@@ -53,7 +50,7 @@ export class WorkflowOutput {
|
|
|
53
50
|
}
|
|
54
51
|
this.#lastStatusId = undefined;
|
|
55
52
|
const presentation = { kind: message.kind, message: message.message };
|
|
56
|
-
this.#appendAnchored(width =>
|
|
53
|
+
this.#appendAnchored(width => this.#ports.components.info.commandMessage(presentation, width, this.#ports.outputPad()));
|
|
57
54
|
}
|
|
58
55
|
appendResult(result, errorCode) {
|
|
59
56
|
if (result.messages !== undefined) {
|
|
@@ -86,16 +83,17 @@ export class WorkflowOutput {
|
|
|
86
83
|
if (result.outcome === "completed" && (result.command === "new" || result.command === "name" || result.command === "debug")) {
|
|
87
84
|
this.#lastStatusId = undefined;
|
|
88
85
|
const presentation = { kind: result.command, message: result.message, ...(result.detail === undefined ? {} : { detail: result.detail }) };
|
|
89
|
-
this.#appendAnchored(width =>
|
|
86
|
+
this.#appendAnchored(width => this.#ports.components.info.commandMessage(presentation, width, this.#ports.outputPad()));
|
|
90
87
|
return;
|
|
91
88
|
}
|
|
92
89
|
if (result.outcome === "completed" && this.#appendAnnouncement(result.command))
|
|
93
90
|
return;
|
|
94
91
|
// Rationale: the pinned engine links both share URLs; the workflow result carries the plain URLs.
|
|
92
|
+
const link = (url) => this.#ports.components.text.hyperlink(url);
|
|
95
93
|
const message = result.command !== "share" ? result.message
|
|
96
|
-
: result.detail ? `${linkShareUrl(result.message)}\nGist: ${
|
|
94
|
+
: result.detail ? `${linkShareUrl(result.message, link)}\nGist: ${link(result.detail)}`
|
|
97
95
|
// Protocol: Radius shares carry only the artifact URL.
|
|
98
|
-
: linkShareUrl(result.message);
|
|
96
|
+
: linkShareUrl(result.message, link);
|
|
99
97
|
this.appendStatus(message);
|
|
100
98
|
}
|
|
101
99
|
/** Drops every anchored output and the status-replacement chain. */
|
|
@@ -108,20 +106,20 @@ export class WorkflowOutput {
|
|
|
108
106
|
#appendPresentation(result) {
|
|
109
107
|
if (result.command === "session" && result.presentation?.kind === "session-info") {
|
|
110
108
|
this.#lastStatusId = undefined;
|
|
111
|
-
const sessionInfo =
|
|
109
|
+
const sessionInfo = this.#ports.components.info.sessionInfo(result.presentation);
|
|
112
110
|
this.#appendAnchored(width => sessionInfo.render(width), () => sessionInfo.dispose?.());
|
|
113
111
|
return true;
|
|
114
112
|
}
|
|
115
113
|
if (result.command === "hotkeys") {
|
|
116
114
|
this.#lastStatusId = undefined;
|
|
117
115
|
const presentation = this.#ports.hotkeysPresentation();
|
|
118
|
-
const hotkeys =
|
|
116
|
+
const hotkeys = this.#ports.components.info.hotkeys(presentation.bindings, presentation.getShortcuts, presentation.profile);
|
|
119
117
|
this.#appendAnchored(width => hotkeys.render(width), () => hotkeys.dispose?.());
|
|
120
118
|
return true;
|
|
121
119
|
}
|
|
122
120
|
if (result.command === "changelog") {
|
|
123
121
|
this.#lastStatusId = undefined;
|
|
124
|
-
const changelog =
|
|
122
|
+
const changelog = this.#ports.components.info.changelog(result.detail ?? "No changelog entries found.");
|
|
125
123
|
this.#appendAnchored(width => changelog.render(width), () => changelog.dispose?.());
|
|
126
124
|
return true;
|
|
127
125
|
}
|
|
@@ -131,13 +129,13 @@ export class WorkflowOutput {
|
|
|
131
129
|
#appendAnnouncement(command) {
|
|
132
130
|
if (command === "arminsayshi") {
|
|
133
131
|
this.#lastStatusId = undefined;
|
|
134
|
-
const armin =
|
|
132
|
+
const armin = this.#ports.components.info.armin(this.#ports.componentRuntime);
|
|
135
133
|
this.#appendAnchored(width => ["", ...armin.render(width)], () => armin.dispose?.());
|
|
136
134
|
return true;
|
|
137
135
|
}
|
|
138
136
|
if (command === "dementedelves") {
|
|
139
137
|
this.#lastStatusId = undefined;
|
|
140
|
-
const announcement =
|
|
138
|
+
const announcement = this.#ports.components.info.earendilAnnouncement();
|
|
141
139
|
this.#appendAnchored(width => ["", ...announcement.render(width)], () => announcement.dispose?.());
|
|
142
140
|
return true;
|
|
143
141
|
}
|
|
@@ -168,7 +166,7 @@ export class WorkflowOutput {
|
|
|
168
166
|
}
|
|
169
167
|
}
|
|
170
168
|
/** "Share URL: <url>" with the URL made clickable; other share wordings pass through unchanged. */
|
|
171
|
-
function linkShareUrl(message) {
|
|
169
|
+
function linkShareUrl(message, link) {
|
|
172
170
|
const match = /^Share URL: (\S+)$/.exec(message);
|
|
173
|
-
return match === null ? message : `Share URL: ${
|
|
171
|
+
return match === null ? message : `Share URL: ${link(match[1])}`;
|
|
174
172
|
}
|
|
@@ -20,6 +20,4 @@ export interface WorkflowSelectors {
|
|
|
20
20
|
* has opened, or undefined when the request goes to the engine. The decision itself is synchronous,
|
|
21
21
|
* so a request that goes to the engine reaches it in the same turn.
|
|
22
22
|
*/
|
|
23
|
-
export declare function openWorkflowSelector(request: OwnedUiWorkflowRequest, selectors: WorkflowSelectors
|
|
24
|
-
readonly residentTab: boolean;
|
|
25
|
-
}): OwnedUiCommandResult | Promise<OwnedUiCommandResult> | undefined;
|
|
23
|
+
export declare function openWorkflowSelector(request: OwnedUiWorkflowRequest, selectors: WorkflowSelectors): OwnedUiCommandResult | Promise<OwnedUiCommandResult> | undefined;
|
|
@@ -26,13 +26,10 @@ const SELECTOR_ROUTES = [
|
|
|
26
26
|
* has opened, or undefined when the request goes to the engine. The decision itself is synchronous,
|
|
27
27
|
* so a request that goes to the engine reaches it in the same turn.
|
|
28
28
|
*/
|
|
29
|
-
export function openWorkflowSelector(request, selectors
|
|
29
|
+
export function openWorkflowSelector(request, selectors) {
|
|
30
30
|
const route = SELECTOR_ROUTES.find(candidate => candidate.command === request.command && candidate.pending(request));
|
|
31
31
|
if (route === undefined)
|
|
32
32
|
return undefined;
|
|
33
|
-
if (route.command === "settings" && options.residentTab) {
|
|
34
|
-
return { outcome: "rejected", diagnostic: "Settings is available from the global Settings tab." };
|
|
35
|
-
}
|
|
36
33
|
const completed = { outcome: "completed", diagnostic: null };
|
|
37
34
|
const opened = route.open(selectors, request);
|
|
38
35
|
return opened instanceof Promise ? opened.then(() => completed) : completed;
|
package/dist/cli/dispatch.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { type InteractiveLaunchIntent, type
|
|
1
|
+
import { type InteractiveLaunchIntent, type LaunchProfileId, type SessionSelection } from "../features/launch/index.js";
|
|
2
2
|
import type { CliCapabilities } from "./capabilities.js";
|
|
3
3
|
import type { PackageCommandRequest } from "./packages.js";
|
|
4
4
|
import type { SessionContextRequest } from "./session-context.js";
|
|
5
|
-
import type { TabsRequest } from "./tabs-request.js";
|
|
6
5
|
import { type PackageCliVerb, type PackageCommandNamespace, type PackageSyntaxDiagnostic } from "./package-messages.js";
|
|
7
6
|
export type UpdateChannel = "stable" | "next";
|
|
8
7
|
export interface CliHandlers {
|
|
@@ -11,7 +10,6 @@ export interface CliHandlers {
|
|
|
11
10
|
readonly update: (channel: UpdateChannel, target?: string) => Promise<number>;
|
|
12
11
|
readonly packages: (request: PackageCommandRequest) => Promise<number>;
|
|
13
12
|
readonly sessionContext: (request: SessionContextRequest) => Promise<number>;
|
|
14
|
-
readonly tabs: (request: TabsRequest) => Promise<number>;
|
|
15
13
|
/** Removes A1 from the machine; absent in hosts that cannot uninstall. */
|
|
16
14
|
readonly uninstall?: (request: {
|
|
17
15
|
readonly yes: boolean;
|
|
@@ -24,8 +22,6 @@ export interface CliOutput {
|
|
|
24
22
|
}
|
|
25
23
|
export declare function cliUsage(capabilities: CliCapabilities): string;
|
|
26
24
|
export declare function cliHelp(capabilities: CliCapabilities): string;
|
|
27
|
-
/** Focused help for the resident-tab maintenance forms; printing it contacts no host. */
|
|
28
|
-
export declare function tabsHelp(): string;
|
|
29
25
|
export declare function dispatchCli(arguments_: readonly string[], handlers: CliHandlers, output: CliOutput, capabilities: CliCapabilities): Promise<number>;
|
|
30
26
|
export type CliCommand = {
|
|
31
27
|
readonly kind: "noop";
|
|
@@ -42,7 +38,6 @@ export type CliCommand = {
|
|
|
42
38
|
} | {
|
|
43
39
|
readonly kind: "launch";
|
|
44
40
|
readonly profileId: LaunchProfileId;
|
|
45
|
-
readonly launchMode: InteractiveLaunchMode;
|
|
46
41
|
readonly sessionSelection?: SessionSelection;
|
|
47
42
|
} | {
|
|
48
43
|
readonly kind: "version";
|
|
@@ -56,11 +51,6 @@ export type CliCommand = {
|
|
|
56
51
|
} | {
|
|
57
52
|
readonly kind: "session-context";
|
|
58
53
|
readonly request: SessionContextRequest;
|
|
59
|
-
} | {
|
|
60
|
-
readonly kind: "tabs";
|
|
61
|
-
readonly request: TabsRequest;
|
|
62
|
-
} | {
|
|
63
|
-
readonly kind: "tabs-help";
|
|
64
54
|
} | {
|
|
65
55
|
readonly kind: "uninstall";
|
|
66
56
|
readonly request: {
|
package/dist/cli/dispatch.js
CHANGED
|
@@ -6,9 +6,6 @@ export function cliUsage(capabilities) {
|
|
|
6
6
|
"",
|
|
7
7
|
"--session <path|id>",
|
|
8
8
|
"--session-dir <dir> --session <path|id>",
|
|
9
|
-
"solo",
|
|
10
|
-
"solo --session <path|id>",
|
|
11
|
-
"solo --session-dir <dir> --session <path|id>",
|
|
12
9
|
...(capabilities.developmentComparison ? ["pi"] : []),
|
|
13
10
|
"help",
|
|
14
11
|
"version",
|
|
@@ -26,10 +23,6 @@ export function cliUsage(capabilities) {
|
|
|
26
23
|
"session worktrees",
|
|
27
24
|
"session link-worktree <path>",
|
|
28
25
|
"session unlink-worktree",
|
|
29
|
-
"tabs",
|
|
30
|
-
"tabs stop <id>|--all",
|
|
31
|
-
"tabs host status|stop",
|
|
32
|
-
"tabs doctor",
|
|
33
26
|
]);
|
|
34
27
|
}
|
|
35
28
|
export function cliHelp(capabilities) {
|
|
@@ -39,9 +32,6 @@ export function cliHelp(capabilities) {
|
|
|
39
32
|
` ${command}`,
|
|
40
33
|
` ${command} --session <path|id>`,
|
|
41
34
|
` ${command} --session-dir <dir> --session <path|id>`,
|
|
42
|
-
` ${command} solo`,
|
|
43
|
-
` ${command} solo --session <path|id>`,
|
|
44
|
-
` ${command} solo --session-dir <dir> --session <path|id>`,
|
|
45
35
|
...(capabilities.developmentComparison ? [` ${command} pi`] : []),
|
|
46
36
|
` ${command} help`,
|
|
47
37
|
` ${command} version`,
|
|
@@ -66,32 +56,9 @@ export function cliHelp(capabilities) {
|
|
|
66
56
|
` ${command} session link-worktree <path>`,
|
|
67
57
|
` ${command} session unlink-worktree`,
|
|
68
58
|
"",
|
|
69
|
-
"Tabs:",
|
|
70
|
-
` ${command} tabs`,
|
|
71
|
-
` ${command} tabs stop <id>|--all`,
|
|
72
|
-
` ${command} tabs host status|stop`,
|
|
73
|
-
` ${command} tabs doctor`,
|
|
74
|
-
"",
|
|
75
59
|
].join("\n");
|
|
76
60
|
}
|
|
77
|
-
|
|
78
|
-
export function tabsHelp() {
|
|
79
|
-
const command = PRODUCT_TEXT.commandName;
|
|
80
|
-
return [
|
|
81
|
-
"Resident tabs:",
|
|
82
|
-
` ${command} tabs List running tabs`,
|
|
83
|
-
` ${command} tabs stop <id> Stop one tab; its session stays resumable`,
|
|
84
|
-
` ${command} tabs stop --all Stop every tab and keep the host`,
|
|
85
|
-
` ${command} tabs host status Show host identity, limits, and health counters`,
|
|
86
|
-
` ${command} tabs host stop Stop every tab and the host`,
|
|
87
|
-
` ${command} tabs doctor Write a redacted diagnostic bundle`,
|
|
88
|
-
"",
|
|
89
|
-
"Options:",
|
|
90
|
-
" --json Print the versioned machine-readable report",
|
|
91
|
-
"",
|
|
92
|
-
].join("\n");
|
|
93
|
-
}
|
|
94
|
-
const PROFILE_WORDS = new Set(["pi", "solo"]);
|
|
61
|
+
const PROFILE_WORDS = new Set(["pi"]);
|
|
95
62
|
export async function dispatchCli(arguments_, handlers, output, capabilities) {
|
|
96
63
|
const command = parseCliCommand(arguments_, capabilities);
|
|
97
64
|
if (command.kind === "noop")
|
|
@@ -113,31 +80,25 @@ export async function dispatchCli(arguments_, handlers, output, capabilities) {
|
|
|
113
80
|
return 2;
|
|
114
81
|
}
|
|
115
82
|
if (command.kind === "launch")
|
|
116
|
-
return await handlers.launch(interactiveLaunchIntent(command.profileId, command.sessionSelection
|
|
83
|
+
return await handlers.launch(interactiveLaunchIntent(command.profileId, command.sessionSelection));
|
|
117
84
|
if (command.kind === "version")
|
|
118
85
|
return await handlers.version();
|
|
119
86
|
if (command.kind === "packages")
|
|
120
87
|
return await handlers.packages(command.request);
|
|
121
88
|
if (command.kind === "session-context")
|
|
122
89
|
return await handlers.sessionContext(command.request);
|
|
123
|
-
if (command.kind === "tabs-help") {
|
|
124
|
-
output.stdout(tabsHelp());
|
|
125
|
-
return 0;
|
|
126
|
-
}
|
|
127
|
-
if (command.kind === "tabs")
|
|
128
|
-
return await handlers.tabs(command.request);
|
|
129
90
|
if (command.kind === "uninstall")
|
|
130
91
|
return handlers.uninstall ? await handlers.uninstall(command.request) : 2;
|
|
131
92
|
return await handlers.update(command.channel, command.target);
|
|
132
93
|
}
|
|
133
94
|
export function parseCliCommand(arguments_, capabilities) {
|
|
134
95
|
if (arguments_.length === 0)
|
|
135
|
-
return { kind: "launch", profileId: "a1"
|
|
96
|
+
return { kind: "launch", profileId: "a1" };
|
|
136
97
|
const [command, ...rest] = arguments_;
|
|
137
98
|
if (command === "--session" || command === "--session-dir") {
|
|
138
99
|
try {
|
|
139
100
|
const sessionSelection = parseSessionSelection(arguments_);
|
|
140
|
-
return { kind: "launch", profileId: "a1",
|
|
101
|
+
return { kind: "launch", profileId: "a1", ...(sessionSelection === undefined ? {} : { sessionSelection }) };
|
|
141
102
|
}
|
|
142
103
|
catch (error) {
|
|
143
104
|
return { kind: "error", message: PRODUCT_TEXT.diagnostic(`could not parse session launch: ${error instanceof Error ? error.message : String(error)}`) };
|
|
@@ -158,66 +119,18 @@ export function parseCliCommand(arguments_, capabilities) {
|
|
|
158
119
|
if (command === "pi") {
|
|
159
120
|
if (rest.length > 0)
|
|
160
121
|
return parsePackageCommand(rest, "pi");
|
|
161
|
-
return capabilities.developmentComparison ? { kind: "launch", profileId: "pi"
|
|
162
|
-
}
|
|
163
|
-
if (command === "solo") {
|
|
164
|
-
if (rest.length === 0)
|
|
165
|
-
return { kind: "launch", profileId: "a1", launchMode: "solo" };
|
|
166
|
-
try {
|
|
167
|
-
const sessionSelection = parseSessionSelection(rest);
|
|
168
|
-
return { kind: "launch", profileId: "a1", launchMode: "solo", ...(sessionSelection === undefined ? {} : { sessionSelection }) };
|
|
169
|
-
}
|
|
170
|
-
catch (error) {
|
|
171
|
-
return { kind: "error", message: PRODUCT_TEXT.diagnostic(`could not parse solo session launch: ${error instanceof Error ? error.message : String(error)}`) };
|
|
172
|
-
}
|
|
122
|
+
return capabilities.developmentComparison ? { kind: "launch", profileId: "pi" } : { kind: "noop" };
|
|
173
123
|
}
|
|
174
124
|
if (command === "update")
|
|
175
125
|
return parseUpdate(rest, capabilities.runningChannel ?? "stable");
|
|
176
126
|
if (command === "session")
|
|
177
127
|
return parseSessionContext(rest);
|
|
178
|
-
if (command === "tabs")
|
|
179
|
-
return parseTabs(rest);
|
|
180
128
|
if (command?.startsWith("update:"))
|
|
181
129
|
return { kind: "noop" };
|
|
182
130
|
// Rationale: unsupported and reserved command spaces are deliberately quiet. Help is
|
|
183
131
|
// explicit, and a typo must never start an interactive or maintenance path.
|
|
184
132
|
return { kind: "noop" };
|
|
185
133
|
}
|
|
186
|
-
/** Parses `a1 tabs` before any I/O; a malformed form fails with one line and contacts no host. */
|
|
187
|
-
function parseTabs(rest) {
|
|
188
|
-
if (rest.some(value => value === "--help" || value === "-h"))
|
|
189
|
-
return { kind: "tabs-help" };
|
|
190
|
-
const json = rest.includes("--json");
|
|
191
|
-
const words = rest.filter(value => value !== "--json");
|
|
192
|
-
const fail = (detail) => ({ kind: "error", message: PRODUCT_TEXT.diagnostic(`could not parse tabs: ${detail}`) });
|
|
193
|
-
const [action, value, extra] = words;
|
|
194
|
-
if (action === undefined)
|
|
195
|
-
return { kind: "tabs", request: { action: "list", json } };
|
|
196
|
-
if (action === "stop") {
|
|
197
|
-
if (value === undefined)
|
|
198
|
-
return fail("stop requires a tab id or --all.");
|
|
199
|
-
if (extra !== undefined)
|
|
200
|
-
return fail("stop accepts one tab id or --all.");
|
|
201
|
-
if (value === "--all")
|
|
202
|
-
return { kind: "tabs", request: { action: "stop-all", json } };
|
|
203
|
-
if (value.startsWith("-"))
|
|
204
|
-
return fail(`unknown option ${value}.`);
|
|
205
|
-
return { kind: "tabs", request: { action: "stop", tabId: value, json } };
|
|
206
|
-
}
|
|
207
|
-
if (action === "host") {
|
|
208
|
-
if (extra !== undefined || (value !== "status" && value !== "stop"))
|
|
209
|
-
return fail("host accepts status or stop.");
|
|
210
|
-
return { kind: "tabs", request: { action: value === "status" ? "host-status" : "host-stop", json } };
|
|
211
|
-
}
|
|
212
|
-
if (action === "doctor") {
|
|
213
|
-
if (value !== undefined)
|
|
214
|
-
return fail("doctor does not accept arguments.");
|
|
215
|
-
return { kind: "tabs", request: { action: "doctor", json } };
|
|
216
|
-
}
|
|
217
|
-
if (action.startsWith("-"))
|
|
218
|
-
return fail(`unknown option ${action}.`);
|
|
219
|
-
return fail(`unknown subcommand ${action}; use list, stop, host, or doctor.`);
|
|
220
|
-
}
|
|
221
134
|
function parseSessionContext(rest) {
|
|
222
135
|
const [action, value, extra] = rest;
|
|
223
136
|
if (action === "link-worktree") {
|
|
@@ -19,7 +19,6 @@ export type PackageSyntaxDiagnostic = {
|
|
|
19
19
|
readonly message: string;
|
|
20
20
|
};
|
|
21
21
|
type MessageStyle = Pick<typeof chalk, "red" | "dim" | "bold">;
|
|
22
|
-
export declare function packageCommandUsage(verb: PackageCliVerb, namespace?: PackageCommandNamespace): string;
|
|
23
22
|
/** Diagnostic facts stay unstyled until the terminal boundary decides color support. */
|
|
24
23
|
export declare function renderPackageSyntax(diagnostic: PackageSyntaxDiagnostic, namespace?: PackageCommandNamespace, style?: MessageStyle): string;
|
|
25
24
|
/** Pi's help layout, with unsupported options and examples deliberately absent. */
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// at 914cf1472e715297caa30db4b9535d534a9eb718 (MIT); grammar is restricted to A1's supported subset.
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import { PRODUCT_TEXT } from "../product-identity.js";
|
|
5
|
-
|
|
5
|
+
function packageCommandUsage(verb, namespace = "pi") {
|
|
6
6
|
const command = namespace === "direct"
|
|
7
7
|
? `${PRODUCT_TEXT.commandName} ${verb}`
|
|
8
8
|
: `${PRODUCT_TEXT.commandName} pi ${verb}`;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type SessionContextRequest } from "../features/launch/index.js";
|
|
2
2
|
export type { SessionContextRequest } from "../features/launch/index.js";
|
|
3
|
-
|
|
3
|
+
interface SessionContextCommandOptions {
|
|
4
4
|
readonly environment?: NodeJS.ProcessEnv;
|
|
5
5
|
readonly inspectProcess?: (pid: number) => Promise<{
|
|
6
6
|
readonly pid: number;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PRIMARY_SESSION_AGENT_ID, updateSessionRepositoryContext, } from "../features/launch/index.js";
|
|
2
|
+
import { inspectLiveProcess } from "../foundation/lifecycle/index.js";
|
|
2
3
|
import { PRODUCT_IDENTITY, PRODUCT_TEXT } from "../product-identity.js";
|
|
3
4
|
/** Apply repository context only when invoked by an exact live A1 shell-tool runtime. */
|
|
4
5
|
export async function runSessionContextCommand(request, options = {}) {
|
|
@@ -11,9 +12,7 @@ export async function runSessionContextCommand(request, options = {}) {
|
|
|
11
12
|
return 2;
|
|
12
13
|
}
|
|
13
14
|
try {
|
|
14
|
-
|
|
15
|
-
throw Object.assign(new Error("native process identity inspection is unavailable"), { code: "process-inspection-unavailable" });
|
|
16
|
-
const outcome = await updateSessionRepositoryContext({ sessionId: identity.sessionId, sessionFile: identity.sessionFile }, request, { runtimeId: identity.runtimeId, inspectProcess: options.inspectProcess });
|
|
15
|
+
const outcome = await updateSessionRepositoryContext({ sessionId: identity.sessionId, sessionFile: identity.sessionFile }, request, { runtimeId: identity.runtimeId, inspectProcess: options.inspectProcess ?? inspectLiveProcess });
|
|
17
16
|
if (outcome.kind === "unlinked")
|
|
18
17
|
stdout("Session worktree context cleared.\n");
|
|
19
18
|
if (outcome.kind === "linked")
|
|
@@ -42,16 +41,15 @@ function readIdentity(environment) {
|
|
|
42
41
|
return null;
|
|
43
42
|
return { sessionId, sessionFile, runtimeId };
|
|
44
43
|
}
|
|
45
|
-
/** Known coordination failures must not expose
|
|
44
|
+
/** Known coordination failures must not expose internal paths or another session's identity. */
|
|
46
45
|
function recoveryDetail(code) {
|
|
47
46
|
const details = {
|
|
48
47
|
"worktree-claim-busy": "another mutation is still running; runtime registration retries automatically, so retry this link shortly",
|
|
49
48
|
"worktree-legacy-recovery-required": "an older-format worktree lock requires safe recovery; stop all older A1 processes, move only session-worktree-claims/mutation.lock to a backup while stopped, then start the updated A1; keep all sessions and worktree claims",
|
|
50
|
-
"worktree-coordination-unavailable": "
|
|
49
|
+
"worktree-coordination-unavailable": "worktree coordination is unavailable; repair or update this A1 installation, then retry",
|
|
51
50
|
"worktree-coordination-io": "worktree coordination could not access its files; check A1 data-directory permissions and filesystem availability, then retry",
|
|
52
51
|
"worktree-coordination-boundary": "unexpected worktree coordination entry; retain it for inspection, and do not delete the claim store",
|
|
53
|
-
"
|
|
54
|
-
"session-runtime-unverifiable": "runtime identity could not be verified; check native process inspection and retry; no ownership was overridden",
|
|
52
|
+
"session-runtime-unverifiable": "runtime identity could not be verified; retry; no ownership was overridden",
|
|
55
53
|
"session-runtime-unavailable": "this session has not registered yet; updated A1 retries registration automatically; retry shortly and follow any specific coordination error if it persists",
|
|
56
54
|
"session-runtime-stopped": "this shell belongs to a stopped runtime; resume in a running A1 session before linking",
|
|
57
55
|
"worktree-active-in-another-session": "another live agent owns this worktree; use a different worktree or wait for its owner to release it",
|
package/dist/cli/uninstall.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
export interface UninstallRequest {
|
|
1
|
+
interface UninstallRequest {
|
|
3
2
|
/** Skips the program-removal question; user data is still kept unless `purge` is set. */
|
|
4
3
|
readonly yes: boolean;
|
|
5
4
|
/** Also removes sessions, settings, sign-ins, and prompt history. */
|
|
6
5
|
readonly purge: boolean;
|
|
7
6
|
}
|
|
8
|
-
|
|
7
|
+
interface UninstallOutput {
|
|
9
8
|
readonly stdout: (message: string) => void;
|
|
10
9
|
readonly stderr: (message: string) => void;
|
|
11
10
|
}
|
|
@@ -17,14 +16,12 @@ export interface UninstallDependencies {
|
|
|
17
16
|
readonly home?: string;
|
|
18
17
|
/** Asks one yes/no question; absent when no terminal can answer. */
|
|
19
18
|
readonly confirm?: (question: string) => Promise<boolean>;
|
|
20
|
-
readonly stopResidentHost?: (releaseRoot: string, paths: ProductPaths, profileRoot: string) => Promise<void>;
|
|
21
|
-
readonly stopSupervisors?: (paths: ProductPaths) => Promise<void>;
|
|
22
19
|
readonly removePackage?: (packageRoot: string, environment: NodeJS.ProcessEnv) => Promise<void>;
|
|
23
20
|
readonly remove?: (path: string) => Promise<void>;
|
|
24
21
|
}
|
|
25
22
|
/**
|
|
26
|
-
* Removes A1 from this machine:
|
|
27
|
-
* release's own maintenance contract, then the global package and every A1-owned state root go.
|
|
23
|
+
* Removes A1 from this machine: the global package goes first, then every A1-owned state root.
|
|
28
24
|
* Sessions and settings live in the profile home and leave only with explicit consent.
|
|
29
25
|
*/
|
|
30
26
|
export declare function runUninstall(request: UninstallRequest, dependencies: UninstallDependencies): Promise<number>;
|
|
27
|
+
export {};
|
package/dist/cli/uninstall.js
CHANGED
|
@@ -1,25 +1,19 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
-
import {
|
|
2
|
+
import { rm } from "node:fs/promises";
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
import { dirname, parse, resolve, sep } from "node:path";
|
|
5
5
|
import { resolveLaunchProfilePaths } from "../features/launch/index.js";
|
|
6
6
|
import { resolveProductPaths } from "../foundation/lifecycle/index.js";
|
|
7
|
-
import {
|
|
8
|
-
import { runTerminalHostMaintenance } from "../foundation/resident-tabs/index.js";
|
|
7
|
+
import { npmPrefixForGlobalRoot, resolveNpmCli } from "../foundation/release/index.js";
|
|
9
8
|
import { PRODUCT_IDENTITY, PRODUCT_TEXT } from "../product-identity.js";
|
|
10
9
|
/**
|
|
11
|
-
* Removes A1 from this machine:
|
|
12
|
-
* release's own maintenance contract, then the global package and every A1-owned state root go.
|
|
10
|
+
* Removes A1 from this machine: the global package goes first, then every A1-owned state root.
|
|
13
11
|
* Sessions and settings live in the profile home and leave only with explicit consent.
|
|
14
12
|
*/
|
|
15
13
|
export async function runUninstall(request, dependencies) {
|
|
16
14
|
const { output } = dependencies;
|
|
17
15
|
const environment = dependencies.environment ?? process.env;
|
|
18
16
|
const command = PRODUCT_TEXT.commandName;
|
|
19
|
-
if (environment[PRODUCT_IDENTITY.environment.tabId] !== undefined) {
|
|
20
|
-
output.stderr(`${PRODUCT_TEXT.diagnostic(`${command} uninstall stops every tab, including this one. Run it from a terminal outside ${command}.`)}\n`);
|
|
21
|
-
return 1;
|
|
22
|
-
}
|
|
23
17
|
const globalRoot = managedGlobalRoot(dependencies.packageRoot);
|
|
24
18
|
if (globalRoot === null) {
|
|
25
19
|
output.stderr(`${PRODUCT_TEXT.diagnostic(`${command} uninstall removes only an installed ${command}; this one runs from ${dependencies.packageRoot}.`)}\n`);
|
|
@@ -34,18 +28,12 @@ export async function runUninstall(request, dependencies) {
|
|
|
34
28
|
output.stderr(`${PRODUCT_TEXT.diagnostic(`${command} uninstall needs a terminal to confirm. Run ${command} uninstall --yes to remove it.`)}\n`);
|
|
35
29
|
return 2;
|
|
36
30
|
}
|
|
37
|
-
if (!await dependencies.confirm(`Remove ${command} from this machine?
|
|
31
|
+
if (!await dependencies.confirm(`Remove ${command} from this machine? [y/N] `)) {
|
|
38
32
|
output.stdout(`${command} was not removed\n`);
|
|
39
33
|
return 1;
|
|
40
34
|
}
|
|
41
35
|
purge ||= await dependencies.confirm(`Also delete your sessions, settings, and sign-ins in ${profileHome}? [y/N] `);
|
|
42
36
|
}
|
|
43
|
-
const profileRoot = environment[PRODUCT_IDENTITY.environment.profileHome] ?? paths.configDir;
|
|
44
|
-
const stopResidentHost = dependencies.stopResidentHost ?? stopReleaseResidentHost;
|
|
45
|
-
for (const releaseRoot of await installedReleaseRoots(paths.dataDir)) {
|
|
46
|
-
await stopResidentHost(releaseRoot, paths, profileRoot).catch(() => undefined);
|
|
47
|
-
}
|
|
48
|
-
await (dependencies.stopSupervisors ?? stopRecordedSupervisors)(paths).catch(() => undefined);
|
|
49
37
|
try {
|
|
50
38
|
await (dependencies.removePackage ?? removeGlobalPackage)(dependencies.packageRoot, environment);
|
|
51
39
|
}
|
|
@@ -56,8 +44,8 @@ export async function runUninstall(request, dependencies) {
|
|
|
56
44
|
}
|
|
57
45
|
const remove = dependencies.remove ?? (async (path) => await rm(path, { recursive: true, force: true }));
|
|
58
46
|
const home = dependencies.home ?? environment.HOME ?? environment.USERPROFILE ?? homedir();
|
|
59
|
-
const owned = [paths.dataDir, paths.configDir, paths.runtimeDir,
|
|
60
|
-
for (const path of new Set(owned
|
|
47
|
+
const owned = [paths.dataDir, paths.configDir, paths.runtimeDir, ...(purge ? [profileHome] : [])];
|
|
48
|
+
for (const path of new Set(owned)) {
|
|
61
49
|
if (removable(path, home))
|
|
62
50
|
await remove(path);
|
|
63
51
|
}
|
|
@@ -79,23 +67,6 @@ function removable(path, home) {
|
|
|
79
67
|
const target = resolve(path);
|
|
80
68
|
return target !== parse(target).root && target !== resolve(home) && !resolve(home).startsWith(`${target}${sep}`);
|
|
81
69
|
}
|
|
82
|
-
async function installedReleaseRoots(dataDir) {
|
|
83
|
-
const releases = resolve(dataDir, "releases");
|
|
84
|
-
const names = await readdir(releases).catch(() => []);
|
|
85
|
-
return names.map(name => resolve(releases, name));
|
|
86
|
-
}
|
|
87
|
-
async function stopReleaseResidentHost(releaseRoot, paths, profileRoot) {
|
|
88
|
-
// Invariant: each release stops only its own namespace, through its own verified host.
|
|
89
|
-
await runTerminalHostMaintenance({
|
|
90
|
-
action: "host-stop", profileRoot, dataDir: paths.dataDir, runtimeDir: paths.runtimeDir,
|
|
91
|
-
releaseRoots: [releaseRoot], environment: process.env, timeoutMs: 30_000,
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
async function stopRecordedSupervisors(paths) {
|
|
95
|
-
for (const endpoint of await listRecordedEndpoints(paths)) {
|
|
96
|
-
await cleanupVerifiedOwner(endpoint.metadata, { allowLiveInstances: true }).catch(() => undefined);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
70
|
async function removeGlobalPackage(packageRoot, environment) {
|
|
100
71
|
const globalRoot = managedGlobalRoot(packageRoot);
|
|
101
72
|
if (globalRoot === null)
|
|
@@ -22,15 +22,12 @@ export async function runVersionStats(options) {
|
|
|
22
22
|
output.stderr(`${PRODUCT_TEXT.diagnostic(`could not read its installed version: ${message(error)}`)}\n`);
|
|
23
23
|
return 1;
|
|
24
24
|
}
|
|
25
|
-
// Rationale:
|
|
26
|
-
//
|
|
27
|
-
// they carry the pull request a preview's manifest records; a missing record is silently omitted.
|
|
25
|
+
// Rationale: both installed channels show the same remote heads without starting a session;
|
|
26
|
+
// only development versions carry preview pull-request attribution, when their manifests record it.
|
|
28
27
|
const remote = await queryDistTags(runner, options.fetcher ?? defaultRegistryFetcher);
|
|
29
28
|
const developmentBuild = prerelease(installed) !== null;
|
|
30
|
-
const headPullRequest =
|
|
31
|
-
const develop =
|
|
32
|
-
? `Develop: ${remote.develop === null ? "unavailable" : withPullRequest(remote.develop, headPullRequest)}\n`
|
|
33
|
-
: "";
|
|
29
|
+
const headPullRequest = remote.develop !== null ? await queryRecordedPullRequest(runner, remote.develop) : null;
|
|
30
|
+
const develop = `Develop: ${remote.develop === null ? "unavailable" : withPullRequest(remote.develop, headPullRequest)}\n`;
|
|
34
31
|
output.stdout(`Current: ${withPullRequest(installed, developmentBuild ? installedPullRequest : null)}\n${develop}Release: ${remote.release ?? "unavailable"}\n`);
|
|
35
32
|
if (remote.error)
|
|
36
33
|
output.stderr(`${PRODUCT_TEXT.diagnostic(`could not resolve npm dist-tags: ${remote.error}`)}\n`);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { AgentSettingsPort } from "../contracts/agent-engine/index.js";
|
|
2
2
|
import { OwnedSettingsManager } from "../ui/settings/manager.js";
|
|
3
|
-
|
|
3
|
+
interface OwnedSettingsManagerFactoryOptions {
|
|
4
4
|
readonly profileId: string;
|
|
5
|
-
readonly hideTabSettings?: boolean;
|
|
6
5
|
readonly agent?: AgentSettingsPort | null;
|
|
7
6
|
readonly agentProvider?: () => AgentSettingsPort | null;
|
|
8
7
|
}
|
|
@@ -10,3 +9,4 @@ export interface OwnedSettingsManagerFactoryOptions {
|
|
|
10
9
|
export declare function createOwnedSettingsManager(options: OwnedSettingsManagerFactoryOptions): OwnedSettingsManager;
|
|
11
10
|
/** Rereads the shared settings document whenever its stat changes; returns the stop. */
|
|
12
11
|
export declare function watchSharedSettings(settings: Pick<OwnedSettingsManager, "file" | "refresh">): () => void;
|
|
12
|
+
export {};
|
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
import { statSync } from "node:fs";
|
|
2
2
|
import { resolveLaunchProfilePaths } from "../features/launch/profile-paths.js";
|
|
3
|
-
import { resolveProductPaths } from "../foundation/lifecycle/paths.js";
|
|
4
3
|
import { PRODUCT_IDENTITY } from "../product-identity.js";
|
|
5
4
|
import { OwnedSettingsManager } from "../ui/settings/manager.js";
|
|
6
5
|
/** Builds the profile-global settings manager shared by the Agent and slim utility compositions. */
|
|
7
6
|
export function createOwnedSettingsManager(options) {
|
|
8
7
|
const profilePaths = resolveLaunchProfilePaths();
|
|
9
|
-
const productPaths = resolveProductPaths();
|
|
10
8
|
return new OwnedSettingsManager({
|
|
11
9
|
profileDir: profilePaths.agentProfile,
|
|
12
10
|
profileId: options.profileId,
|
|
13
11
|
namespace: PRODUCT_IDENTITY.commandName,
|
|
14
|
-
legacyConfigDir: productPaths.configDir,
|
|
15
12
|
...(options.agent === undefined ? {} : { agent: options.agent }),
|
|
16
13
|
...(options.agentProvider === undefined ? {} : { agentProvider: options.agentProvider }),
|
|
17
|
-
...(options.hideTabSettings ? { hiddenOwnedSettingIds: ["tabsAutoName", "tabsPosition", "tabBarPlusMenu", "tabBarRightItems"] } : {}),
|
|
18
14
|
hiddenAgentSettingIds: ["fullscreenWheelScrollLines"],
|
|
19
15
|
agentSettingLabelOverrides: { fullscreenCopyOnSelect: "Copy on select" },
|
|
20
16
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AvailableRelease, StartupReleaseCheckOptions } from "../foundation/release/latest-release.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { ProcessIdentity } from "../foundation/lifecycle/model.js";
|
|
3
3
|
import type { SessionSelection } from "../foundation/lifecycle/session-selection.js";
|
|
4
4
|
import { type PiEngineHostOptions } from "../integrations/pi/engine/host.js";
|
|
5
5
|
import type { PiProjectTrustPreflightPrompt } from "../integrations/pi/engine/project-trust-preflight.js";
|
|
@@ -7,10 +7,8 @@ import type { PiSessionForkPrompt } from "../integrations/pi/engine/session-sele
|
|
|
7
7
|
import type { OwnedSettingsManager } from "../ui/settings/manager.js";
|
|
8
8
|
import type { OwnedUiApplicationPort, PresentationTerminalPort } from "../contracts/presentation/index.js";
|
|
9
9
|
import type { ReleaseNoteCatalog } from "../features/owned-ui/release-notes.js";
|
|
10
|
-
import type { TabBridgeClient } from "../foundation/resident-tabs/bridge-client.js";
|
|
11
10
|
import type { ComposedEngineHost } from "./session-backend.js";
|
|
12
11
|
export type { ComposedEngineHost, ComposedSessionBackend } from "./session-backend.js";
|
|
13
|
-
export { bindResidentTabBridge, correlateResidentTabSubmission } from "./resident-tab-bridge.js";
|
|
14
12
|
export interface OwnedUiCompositionOptions {
|
|
15
13
|
readonly cwd?: string;
|
|
16
14
|
readonly terminal?: PresentationTerminalPort;
|
|
@@ -22,12 +20,8 @@ export interface OwnedUiCompositionOptions {
|
|
|
22
20
|
readonly sessionForkPrompt?: PiSessionForkPrompt;
|
|
23
21
|
/** A1 settings profile; comparison paths omit it. */
|
|
24
22
|
readonly profileId?: string;
|
|
25
|
-
/** Hide resident-only tab controls for the explicit direct single-agent launch. */
|
|
26
|
-
readonly hideTabSettings?: boolean;
|
|
27
|
-
/** The explicit solo launch owns a mode-specific resume hint; resident fallback keeps the tabbed form. */
|
|
28
|
-
readonly soloResumeHint?: boolean;
|
|
29
23
|
/** `off` withholds A1-specific surfaces from comparison profiles. */
|
|
30
|
-
readonly
|
|
24
|
+
readonly productMode?: "bare" | "comparison";
|
|
31
25
|
readonly projectTrustPrompt?: PiProjectTrustPreflightPrompt;
|
|
32
26
|
/** Explicit local diagnostic destination; ignored by comparison/settings-free compositions. */
|
|
33
27
|
readonly suggestionDiagnosticsPath?: string;
|
|
@@ -35,32 +29,16 @@ export interface OwnedUiCompositionOptions {
|
|
|
35
29
|
readonly clipboardDiagnosticsPath?: string;
|
|
36
30
|
/** Deterministic release-note seams for composition tests. */
|
|
37
31
|
readonly packageVersion?: string;
|
|
38
|
-
readonly notificationVersion?: string | undefined;
|
|
39
32
|
readonly releaseNotes?: ReleaseNoteCatalog;
|
|
40
33
|
/** Startup release-availability seam; defaults to the throttled registry check. */
|
|
41
34
|
readonly checkForNewerRelease?: (options: StartupReleaseCheckOptions) => Promise<AvailableRelease | null>;
|
|
42
|
-
readonly inspectProcess?: (pid: number) => Promise<
|
|
43
|
-
readonly tab?: {
|
|
44
|
-
readonly bridge: TabBridgeClient;
|
|
45
|
-
readonly dataDir: string;
|
|
46
|
-
readonly incarnation: number;
|
|
47
|
-
};
|
|
48
|
-
readonly residentFallbackNotice?: string;
|
|
35
|
+
readonly inspectProcess?: (pid: number) => Promise<ProcessIdentity | null>;
|
|
49
36
|
}
|
|
50
37
|
export interface OwnedUiComposition {
|
|
51
38
|
readonly application: OwnedUiApplicationPort;
|
|
52
39
|
/** Present when a profile was supplied, so the caller can resolve settings before start. */
|
|
53
40
|
readonly settings: OwnedSettingsManager | null;
|
|
54
41
|
}
|
|
55
|
-
export declare function residentStartupPresentation(resident: boolean, fallbackNotice?: string): {
|
|
56
|
-
readonly startup?: {
|
|
57
|
-
readonly quiet?: boolean;
|
|
58
|
-
readonly notices?: readonly [{
|
|
59
|
-
readonly kind: "warning";
|
|
60
|
-
readonly message: string;
|
|
61
|
-
}];
|
|
62
|
-
};
|
|
63
|
-
};
|
|
64
42
|
export declare function composeOwnedUiApplication(options?: OwnedUiCompositionOptions): Promise<OwnedUiApplicationPort>;
|
|
65
43
|
export declare function composeOwnedUi(options?: OwnedUiCompositionOptions): Promise<OwnedUiComposition>;
|
|
66
44
|
export { watchSharedSettings } from "./owned-settings.js";
|