@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,12 +1,12 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { OwnedUiShellEditorPort } from "../../contracts/owned-ui/index.js";
|
|
2
|
+
import type { TerminalPointerSurface } from "../../contracts/presentation/index.js";
|
|
2
3
|
import type { OwnedUiViewportSettings } from "../../contracts/owned-ui/index.js";
|
|
3
4
|
import { type TranscriptViewportFrame, type TranscriptViewportFrameInput } from "../../ui/components/transcript-viewport.js";
|
|
4
5
|
import type { SelectionCopySnapshot } from "../../ui/components/selection-copy.js";
|
|
5
|
-
import type { PiShellEditorPort } from "../../integrations/pi/components/shell-shared-facade.js";
|
|
6
6
|
import type { PasteEvent } from "./paste-protocol.js";
|
|
7
|
-
|
|
7
|
+
interface SessionViewportControllerOptions {
|
|
8
8
|
readonly enabled: boolean;
|
|
9
|
-
readonly editor:
|
|
9
|
+
readonly editor: OwnedUiShellEditorPort;
|
|
10
10
|
readonly requestRender: (force?: boolean) => void;
|
|
11
11
|
readonly requestHyperlinkCleanup?: (rows?: readonly number[]) => void;
|
|
12
12
|
/** Whether mutable editor URL chips need targeted link-cell cleanup on deletion. */
|
|
@@ -61,8 +61,8 @@ export declare class SessionViewportController {
|
|
|
61
61
|
tailControlHovered(target: TailControlRegion | undefined): boolean;
|
|
62
62
|
/** Replacement input changed before its new bounds have been painted. */
|
|
63
63
|
invalidateInputSurface(): void;
|
|
64
|
-
setInputSurfaceFrame(surface:
|
|
65
|
-
setOverlaySurfaces(surfaces: readonly
|
|
64
|
+
setInputSurfaceFrame(surface: TerminalPointerSurface | undefined): void;
|
|
65
|
+
setOverlaySurfaces(surfaces: readonly TerminalPointerSurface[] | null): void;
|
|
66
66
|
get inputGeometryReady(): boolean;
|
|
67
67
|
compose(input: Omit<TranscriptViewportFrameInput, "pointerPosition">): TranscriptViewportFrame;
|
|
68
68
|
composeDockOnly(dockRows: readonly string[], width: number, height: number, copyableDockRows?: TranscriptViewportFrameInput["copyableDockRows"]): TranscriptViewportFrame | null;
|
|
@@ -74,3 +74,4 @@ export declare class SessionViewportController {
|
|
|
74
74
|
clearPointerState(): void;
|
|
75
75
|
handlePreInput(data: string, allowWheel?: boolean, now?: number, editorActive?: boolean): SessionViewportInputResult;
|
|
76
76
|
}
|
|
77
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { samePointerSurfaces } from "../../
|
|
1
|
+
import { samePointerSurfaces } from "../../contracts/presentation/index.js";
|
|
2
2
|
import { TranscriptViewport } from "../../ui/components/transcript-viewport.js";
|
|
3
3
|
import { readVisibleHyperlinks } from "../../ui/components/visible-hyperlinks.js";
|
|
4
4
|
import { routeMouseInput } from "../../ui/components/mouse.js";
|
|
@@ -22,7 +22,6 @@ export class SessionViewportController {
|
|
|
22
22
|
#pasteDiagnosticRequest = 0;
|
|
23
23
|
#viewport = new TranscriptViewport();
|
|
24
24
|
#config = {
|
|
25
|
-
timeFormat: "8:00 PM",
|
|
26
25
|
scrollbarAppearance: "auto",
|
|
27
26
|
scrollbarStyle: "thin",
|
|
28
27
|
scrollbarSpeed: "normal",
|
|
@@ -171,11 +170,9 @@ export class SessionViewportController {
|
|
|
171
170
|
}
|
|
172
171
|
/** Returns true when document wrapping may have changed. */
|
|
173
172
|
setConfig(config) {
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
this.#config = normalized;
|
|
178
|
-
this.#viewport.setConfig(normalized);
|
|
173
|
+
const layoutChanged = config.scrollbarAppearance !== this.#config.scrollbarAppearance;
|
|
174
|
+
this.#config = config;
|
|
175
|
+
this.#viewport.setConfig(config);
|
|
179
176
|
this.#requestRender();
|
|
180
177
|
return layoutChanged;
|
|
181
178
|
}
|
|
@@ -660,6 +657,6 @@ export class SessionViewportController {
|
|
|
660
657
|
const SELECTION_AUTO_SCROLL_INTERVAL_MS = 30;
|
|
661
658
|
const EDITOR_LINK_DELETION_INPUTS = new Set(["\b", "\u007f", "\u001b[3~"]);
|
|
662
659
|
// Platform: Windows Terminal may consume Shift+Arrow for native selection. Ctrl+Arrow matches
|
|
663
|
-
//
|
|
660
|
+
// A1's Windows binding while retaining Shift+Arrow whenever the terminal delivers it.
|
|
664
661
|
const PROMPT_UP_INPUTS = new Set(["\u001b[1;2A", "\u001b[1;5A"]);
|
|
665
662
|
const PROMPT_DOWN_INPUTS = new Set(["\u001b[1;2B", "\u001b[1;5B"]);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { OwnedUiSessionSettingsPort, OwnedUiSessionSettingsSnapshot } from "../../contracts/owned-ui/index.js";
|
|
1
|
+
import type { OwnedUiSessionSettingsPort, OwnedUiSessionSettingsSnapshot, OwnedUiViewportSettingsPort } from "../../contracts/owned-ui/index.js";
|
|
2
2
|
import type { OwnedUiPresenterTerminal } from "./shell-host.js";
|
|
3
3
|
import type { OwnedUiSessionShellRoot } from "./session-shell-root.js";
|
|
4
4
|
/** What the session's live setting effects reach: terminal modes, root presentation, and the presenter's progress flag. */
|
|
5
|
-
|
|
5
|
+
interface SessionSettingsTargets {
|
|
6
6
|
readonly terminal: Pick<OwnedUiPresenterTerminal, "setHardwareCursor" | "setClearOnShrink" | "setWheelScrollLines">;
|
|
7
7
|
readonly root: Pick<OwnedUiSessionShellRoot, "setEditorPaddingX" | "setAutocompleteMaxVisible" | "setOutputPad" | "setHideThinkingBlock" | "setMermaidRenderingMode" | "setImagePresentation" | "setFullscreenCopyOnSelect">;
|
|
8
8
|
setTerminalProgress(enabled: boolean): void;
|
|
@@ -15,3 +15,25 @@ export interface SessionSettingsTargets {
|
|
|
15
15
|
export declare function bindSessionSettings(settings: Pick<OwnedUiSessionSettingsPort, "bindOwner" | "productMode">, snapshot: OwnedUiSessionSettingsSnapshot, targets: SessionSettingsTargets, options: {
|
|
16
16
|
readonly customViewport: boolean;
|
|
17
17
|
}): () => void;
|
|
18
|
+
/** The shell's own live setting sources besides the session settings; absent sources bind nothing. */
|
|
19
|
+
export interface ShellSettingSources {
|
|
20
|
+
readonly customViewport: boolean;
|
|
21
|
+
readonly promptImages: {
|
|
22
|
+
onChange(listener: () => void): () => void;
|
|
23
|
+
} | null;
|
|
24
|
+
readonly skills: {
|
|
25
|
+
onChange(listener: () => void): () => void;
|
|
26
|
+
} | null;
|
|
27
|
+
readonly viewport: OwnedUiViewportSettingsPort | undefined;
|
|
28
|
+
readonly historyScope: ((listener: (scope: "unique" | "shared") => void) => () => void) | undefined;
|
|
29
|
+
}
|
|
30
|
+
/** What those sources change: the prompt-image notice, the command menu, the viewport, and the transcript binding. */
|
|
31
|
+
export interface ShellSettingEffects {
|
|
32
|
+
readonly root: Pick<OwnedUiSessionShellRoot, "setViewportConfig">;
|
|
33
|
+
promptImageLimitChanged(): void;
|
|
34
|
+
skillsChanged(): void;
|
|
35
|
+
historyScopeChanged(scope: "unique" | "shared"): void;
|
|
36
|
+
}
|
|
37
|
+
/** Seeds the viewport and subscribes every shell setting source; the returned release undoes all of them. */
|
|
38
|
+
export declare function bindShellSettings(sources: ShellSettingSources, effects: ShellSettingEffects): () => void;
|
|
39
|
+
export {};
|
|
@@ -89,3 +89,27 @@ export function bindSessionSettings(settings, snapshot, targets, options) {
|
|
|
89
89
|
}
|
|
90
90
|
return release;
|
|
91
91
|
}
|
|
92
|
+
/** Seeds the viewport and subscribes every shell setting source; the returned release undoes all of them. */
|
|
93
|
+
export function bindShellSettings(sources, effects) {
|
|
94
|
+
const releases = [];
|
|
95
|
+
const release = () => { for (const unbind of releases.splice(0).reverse())
|
|
96
|
+
unbind(); };
|
|
97
|
+
try {
|
|
98
|
+
if (sources.promptImages !== null)
|
|
99
|
+
releases.push(sources.promptImages.onChange(() => effects.promptImageLimitChanged()));
|
|
100
|
+
// Rationale: the same listener refreshes the menu for the A1 presentation choice and for the engine's
|
|
101
|
+
// skill-command registration, both of which the owned settings manager reports through one change.
|
|
102
|
+
if (sources.skills !== null)
|
|
103
|
+
releases.push(sources.skills.onChange(() => effects.skillsChanged()));
|
|
104
|
+
effects.root.setViewportConfig(sources.viewport?.snapshot() ?? { scrollbarAppearance: "auto", scrollbarStyle: "thin", scrollbarSpeed: "normal" });
|
|
105
|
+
if (sources.customViewport && sources.viewport !== undefined)
|
|
106
|
+
releases.push(sources.viewport.onChange(settings => effects.root.setViewportConfig(settings)));
|
|
107
|
+
if (sources.customViewport && sources.historyScope !== undefined)
|
|
108
|
+
releases.push(sources.historyScope(scope => effects.historyScopeChanged(scope)));
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
release();
|
|
112
|
+
throw error;
|
|
113
|
+
}
|
|
114
|
+
return release;
|
|
115
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare function
|
|
1
|
+
import type { UiTheme } from "../../contracts/presentation/index.js";
|
|
2
|
+
/** The completed share result in bare A1: dim labels with the share and gist URLs made clickable. */
|
|
3
|
+
export declare function renderShellShareResult(message: string, gistUrl: string, theme: UiTheme, hyperlink: (url: string) => string): string;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { createPiShellOperationLoader, createPiShellShareOperationDialog, piShellHyperlink, piTheme, } from "../../integrations/pi/components/index.js";
|
|
2
1
|
import { nativeHyperlinkStyle } from "../../ui/components/index.js";
|
|
3
|
-
|
|
4
|
-
export function
|
|
5
|
-
const theme = piTheme();
|
|
2
|
+
/** The completed share result in bare A1: dim labels with the share and gist URLs made clickable. */
|
|
3
|
+
export function renderShellShareResult(message, gistUrl, theme, hyperlink) {
|
|
6
4
|
const match = /^Share URL: (\S+)$/u.exec(message);
|
|
7
5
|
const linked = match === null
|
|
8
6
|
? theme.fg("dim", message)
|
|
9
|
-
: `${theme.fg("dim", "Share URL: ")}${
|
|
10
|
-
return nativeHyperlinkStyle(`${linked}\n${theme.fg("dim", "Gist: ")}${
|
|
7
|
+
: `${theme.fg("dim", "Share URL: ")}${hyperlink(match[1])}`;
|
|
8
|
+
return nativeHyperlinkStyle(`${linked}\n${theme.fg("dim", "Gist: ")}${hyperlink(gistUrl)}`, text => theme.fg("mdLink", text));
|
|
11
9
|
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type OwnedUiShellClipboardContent } from "../../contracts/owned-ui/index.js";
|
|
2
|
+
import type { OwnedUiClipboardServices } from "./clipboard-services.js";
|
|
3
|
+
import type { PastePreparationClientOptions } from "./paste-preparation-client.js";
|
|
4
|
+
import type { PasteSource } from "./paste-protocol.js";
|
|
5
|
+
import { ResponseCopyCoordinator } from "./response-copy-coordinator.js";
|
|
6
|
+
import type { SelectionCopySnapshot } from "../../ui/components/index.js";
|
|
7
|
+
import { type CopyResult, type ResponseCopyEvent } from "./response-copy-protocol.js";
|
|
8
|
+
import { type ResponseCopyExecutor } from "./response-copy-transport.js";
|
|
9
|
+
/** A platform clipboard seam; production reads and writes through A1's system clipboard adapter. */
|
|
10
|
+
export interface OwnedUiClipboardPort {
|
|
11
|
+
readText(signal?: AbortSignal): Promise<string | null>;
|
|
12
|
+
readImage?(signal?: AbortSignal): Promise<{
|
|
13
|
+
readonly data: string;
|
|
14
|
+
readonly mimeType: string;
|
|
15
|
+
} | null>;
|
|
16
|
+
writeText?(text: string, signal?: AbortSignal): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
/** What one shell's clipboard needs: the borrowed process-wide helpers, its terminal, and optional test seams. */
|
|
19
|
+
export interface ShellClipboardOptions {
|
|
20
|
+
/** Bare A1 owns response copy; comparison profiles keep the terminal-control write. */
|
|
21
|
+
readonly ownedCopy: boolean;
|
|
22
|
+
readonly shared?: OwnedUiClipboardServices;
|
|
23
|
+
readonly clipboard?: OwnedUiClipboardPort;
|
|
24
|
+
readonly responseCopy?: {
|
|
25
|
+
readonly execute?: ResponseCopyExecutor;
|
|
26
|
+
readonly onEvent?: (event: ResponseCopyEvent) => void;
|
|
27
|
+
};
|
|
28
|
+
readonly pastePreparation?: Omit<PastePreparationClientOptions, "onEvent" | "spareIdleMs">;
|
|
29
|
+
/** True when a test terminal stands in for the process terminal. */
|
|
30
|
+
readonly substituteTerminal: boolean;
|
|
31
|
+
readonly disposed: () => boolean;
|
|
32
|
+
/** Whether the shell's terminal is running and attached. */
|
|
33
|
+
readonly terminalAttached: () => boolean;
|
|
34
|
+
readonly writeControl: (control: string) => void;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* One shell's clipboard: response copy, the comparison write path, clipboard reads, and paste capture. It
|
|
38
|
+
* borrows the process-wide helper pools from composition and never disposes them.
|
|
39
|
+
*/
|
|
40
|
+
export declare class ShellClipboard {
|
|
41
|
+
#private;
|
|
42
|
+
/** Null in comparison profiles, which keep the pinned terminal-control write. */
|
|
43
|
+
readonly responseCopy: ResponseCopyCoordinator | null;
|
|
44
|
+
constructor(options: ShellClipboardOptions);
|
|
45
|
+
/** Paste-preparation options carrying the shared paste pool, or undefined when neither is supplied. */
|
|
46
|
+
pastePreparation(): Omit<PastePreparationClientOptions, "onEvent" | "spareIdleMs"> | undefined;
|
|
47
|
+
/** Copies text: through owned response copy when present, otherwise the comparison terminal-control write. */
|
|
48
|
+
copyText(text: string): Promise<CopyResult> | undefined;
|
|
49
|
+
/** Copies a selection after any pending comparison write has settled. */
|
|
50
|
+
copySelection(snapshot: SelectionCopySnapshot): Promise<CopyResult> | undefined;
|
|
51
|
+
/** Reads the clipboard once any write this shell started has settled. */
|
|
52
|
+
readContent(signal?: AbortSignal): Promise<OwnedUiShellClipboardContent | null>;
|
|
53
|
+
capturePaste(): PasteSource;
|
|
54
|
+
/** The extension clipboard writer: true once delivered, false when submitted without confirmation. */
|
|
55
|
+
writeForExtension(text: string): Promise<boolean>;
|
|
56
|
+
warm(): void;
|
|
57
|
+
reset(): void;
|
|
58
|
+
dispose(): void;
|
|
59
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { ImageAttachmentError } from "../../contracts/owned-ui/index.js";
|
|
2
|
+
import { runImageWorker } from "./image-preparation-client.js";
|
|
3
|
+
import { ResponseCopyCoordinator } from "./response-copy-coordinator.js";
|
|
4
|
+
import { MAX_COPY_CONTROL_BYTES } from "./response-copy-protocol.js";
|
|
5
|
+
import { createResponseCopyExecutor, responseCopyDestination } from "./response-copy-transport.js";
|
|
6
|
+
import { writeSystemClipboardText } from "./system-clipboard.js";
|
|
7
|
+
/**
|
|
8
|
+
* One shell's clipboard: response copy, the comparison write path, clipboard reads, and paste capture. It
|
|
9
|
+
* borrows the process-wide helper pools from composition and never disposes them.
|
|
10
|
+
*/
|
|
11
|
+
export class ShellClipboard {
|
|
12
|
+
/** Null in comparison profiles, which keep the pinned terminal-control write. */
|
|
13
|
+
responseCopy;
|
|
14
|
+
#options;
|
|
15
|
+
#executor;
|
|
16
|
+
#pendingWrite = Promise.resolve();
|
|
17
|
+
constructor(options) {
|
|
18
|
+
this.#options = options;
|
|
19
|
+
const { clipboard, shared, responseCopy } = options;
|
|
20
|
+
this.#executor = !options.ownedCopy || responseCopy?.execute !== undefined ? undefined : createResponseCopyExecutor({
|
|
21
|
+
...(shared === undefined ? {} : { pool: shared.copy }),
|
|
22
|
+
...(!options.substituteTerminal && clipboard === undefined ? {} : { destination: "terminal" }),
|
|
23
|
+
...(clipboard?.writeText === undefined ? {} : { writeText: (text, signal) => clipboard.writeText(text, signal) }),
|
|
24
|
+
// Invariant: the owned host is the route contract. Pseudoterminal children must not infer
|
|
25
|
+
// clipboard reachability from Node's view of stdout, and inactive shells are fenced here.
|
|
26
|
+
terminal: { submit: async (control, signal) => {
|
|
27
|
+
if (signal.aborted || options.disposed() || !options.terminalAttached())
|
|
28
|
+
throw new Error("Copy canceled");
|
|
29
|
+
// Performance: never grow the real terminal's pending buffer with another clipboard payload.
|
|
30
|
+
if (!options.substituteTerminal && process.stdout.writableLength + control.length > MAX_COPY_CONTROL_BYTES) {
|
|
31
|
+
throw new Error("Clipboard terminal is busy");
|
|
32
|
+
}
|
|
33
|
+
options.writeControl(control);
|
|
34
|
+
} },
|
|
35
|
+
});
|
|
36
|
+
this.responseCopy = !options.ownedCopy ? null : new ResponseCopyCoordinator({
|
|
37
|
+
execute: responseCopy?.execute ?? this.#executor,
|
|
38
|
+
...(responseCopy?.onEvent === undefined ? {} : { onEvent: responseCopy.onEvent }),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/** Paste-preparation options carrying the shared paste pool, or undefined when neither is supplied. */
|
|
42
|
+
pastePreparation() {
|
|
43
|
+
const { pastePreparation, shared } = this.#options;
|
|
44
|
+
if (pastePreparation === undefined && shared === undefined)
|
|
45
|
+
return undefined;
|
|
46
|
+
return { ...pastePreparation, ...(shared === undefined ? {} : { pool: shared.paste }) };
|
|
47
|
+
}
|
|
48
|
+
/** Copies text: through owned response copy when present, otherwise the comparison terminal-control write. */
|
|
49
|
+
copyText(text) {
|
|
50
|
+
if (this.responseCopy !== null)
|
|
51
|
+
return this.responseCopy.submitText(text);
|
|
52
|
+
const { clipboard } = this.#options;
|
|
53
|
+
const write = () => {
|
|
54
|
+
if (this.#options.disposed())
|
|
55
|
+
return Promise.resolve();
|
|
56
|
+
this.#options.writeControl(`\u001b]52;c;${Buffer.from(text, "utf8").toString("base64")}\u0007`);
|
|
57
|
+
return clipboard === undefined ? writeSystemClipboardText(text) : clipboard.writeText?.(text) ?? Promise.resolve();
|
|
58
|
+
};
|
|
59
|
+
// Compatibility: comparison profiles retain their existing clipboard path.
|
|
60
|
+
this.#pendingWrite = write().catch(() => { });
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
/** Copies a selection after any pending comparison write has settled. */
|
|
64
|
+
copySelection(snapshot) {
|
|
65
|
+
return this.responseCopy?.submit(snapshot, this.#pendingWrite);
|
|
66
|
+
}
|
|
67
|
+
/** Reads the clipboard once any write this shell started has settled. */
|
|
68
|
+
async readContent(signal = new AbortController().signal) {
|
|
69
|
+
await this.#pendingWrite;
|
|
70
|
+
return this.#read(signal);
|
|
71
|
+
}
|
|
72
|
+
capturePaste() {
|
|
73
|
+
const before = this.responseCopy?.capturePasteBarrier() ?? (async () => true);
|
|
74
|
+
if (this.#options.clipboard !== undefined)
|
|
75
|
+
return { kind: "provided", read: signal => this.#read(signal), before };
|
|
76
|
+
if (responseCopyDestination(process.env) === "terminal")
|
|
77
|
+
return {
|
|
78
|
+
kind: "provided", before, read: async () => { throw new ImageAttachmentError("paste-unavailable"); },
|
|
79
|
+
};
|
|
80
|
+
return { kind: "native", before };
|
|
81
|
+
}
|
|
82
|
+
/** The extension clipboard writer: true once delivered, false when submitted without confirmation. */
|
|
83
|
+
async writeForExtension(text) {
|
|
84
|
+
const result = await this.responseCopy.submitText(text);
|
|
85
|
+
if (result.outcome === "delivered")
|
|
86
|
+
return true;
|
|
87
|
+
if (result.outcome === "submitted-unverified")
|
|
88
|
+
return false;
|
|
89
|
+
throw new Error(result.outcome === "timed-out" ? "Clipboard delivery timed out" : "Clipboard delivery could not be completed");
|
|
90
|
+
}
|
|
91
|
+
warm() { this.#executor?.warm(); }
|
|
92
|
+
reset() { this.responseCopy?.reset(); }
|
|
93
|
+
dispose() {
|
|
94
|
+
this.responseCopy?.dispose();
|
|
95
|
+
this.#executor?.dispose();
|
|
96
|
+
}
|
|
97
|
+
async #read(signal) {
|
|
98
|
+
if (signal.aborted)
|
|
99
|
+
throw new ImageAttachmentError("image-canceled");
|
|
100
|
+
const { clipboard } = this.#options;
|
|
101
|
+
if (clipboard === undefined)
|
|
102
|
+
return runImageWorker({ kind: "clipboard" }, signal);
|
|
103
|
+
try {
|
|
104
|
+
const image = await clipboard.readImage?.(signal);
|
|
105
|
+
if (image !== null && image !== undefined) {
|
|
106
|
+
const canonical = await runImageWorker({ kind: "canonicalize", source: image }, signal);
|
|
107
|
+
if (canonical !== null)
|
|
108
|
+
return { kind: "image", ...canonical };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
if (error instanceof ImageAttachmentError)
|
|
113
|
+
throw error;
|
|
114
|
+
// Compatibility: an unavailable image reader can still provide text.
|
|
115
|
+
}
|
|
116
|
+
const text = await clipboard.readText(signal);
|
|
117
|
+
return text === null ? null : { kind: "text", text };
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { OwnedUiShellComponents, OwnedUiShellEditorOptions, OwnedUiShellEditorPort } from "../../contracts/owned-ui/index.js";
|
|
2
|
+
import type { ThemeSource } from "../../contracts/presentation/index.js";
|
|
2
3
|
import type { PasteEvent, PasteSource } from "./paste-protocol.js";
|
|
3
4
|
import type { PromptChipStore } from "./prompt-chips.js";
|
|
4
5
|
/** The shell callbacks the editor is wired to; the editor receives the whole object as its own options. */
|
|
5
|
-
|
|
6
|
+
type ShellEditorHandlers = Omit<OwnedUiShellEditorOptions, "onChange" | "onToolsExpand" | "keybindingProfile"> & {
|
|
6
7
|
readonly requestRender: (force?: boolean) => void;
|
|
7
8
|
readonly onEditorChange?: (text: string) => void;
|
|
8
9
|
readonly captureClipboardPaste?: () => PasteSource;
|
|
9
10
|
readonly pasteDiagnostics?: (event: PasteEvent) => void;
|
|
10
11
|
};
|
|
11
|
-
|
|
12
|
+
interface ShellEditorPorts {
|
|
13
|
+
readonly theme: ThemeSource;
|
|
14
|
+
readonly components: Pick<OwnedUiShellComponents, "editor" | "text">;
|
|
12
15
|
readonly handlers: ShellEditorHandlers;
|
|
13
16
|
readonly customViewport: boolean;
|
|
14
17
|
readonly cwd: string;
|
|
@@ -24,4 +27,5 @@ export interface ShellEditorPorts {
|
|
|
24
27
|
* Builds the session's prompt editor: chip-aware paste, selection, and hyperlink decoration over
|
|
25
28
|
* the Pi editor, plus bare A1's prompt presentation and terminal paste diagnostics.
|
|
26
29
|
*/
|
|
27
|
-
export declare function createShellEditor(ports: ShellEditorPorts):
|
|
30
|
+
export declare function createShellEditor(ports: ShellEditorPorts): OwnedUiShellEditorPort;
|
|
31
|
+
export {};
|
|
@@ -3,9 +3,6 @@ import { PromptInput } from "../../ui/components/prompt-input.js";
|
|
|
3
3
|
import { backgroundSgrSpan, hyperlinkSgrSpan } from "../../ui/components/spans.js";
|
|
4
4
|
import { faint, stripAnsi } from "../../ui/components/text.js";
|
|
5
5
|
import { paintTextSelection } from "../../ui/components/text-selection.js";
|
|
6
|
-
import { createPiShellEditor } from "../../integrations/pi/components/shell-editor-autocomplete.js";
|
|
7
|
-
import { piTheme } from "../../integrations/pi/components/upstream/theme/theme.js";
|
|
8
|
-
import { piShellTruncateToWidth, piShellVisibleWidth, } from "../../integrations/pi/components/shell-shared-facade.js";
|
|
9
6
|
import { EditorHyperlinkBudget } from "./editor-hyperlink-budget.js";
|
|
10
7
|
import { canPreparePasteInline } from "./paste-text-preparation.js";
|
|
11
8
|
/**
|
|
@@ -15,13 +12,14 @@ import { canPreparePasteInline } from "./paste-text-preparation.js";
|
|
|
15
12
|
export function createShellEditor(ports) {
|
|
16
13
|
const { handlers, customViewport, promptChips } = ports;
|
|
17
14
|
let terminalPasteDiagnosticRequest;
|
|
18
|
-
const
|
|
15
|
+
const { visibleWidth, truncateToWidth } = ports.components.text;
|
|
16
|
+
const editor = ports.components.editor.create({
|
|
19
17
|
...handlers,
|
|
20
18
|
keybindingProfile: customViewport ? "a1" : "pi",
|
|
21
19
|
...(handlers.keybindings === undefined ? {} : { keybindings: handlers.keybindings }),
|
|
22
20
|
paintEditorSelection: (line, from, to, atomic) => atomic
|
|
23
|
-
? backgroundSgrSpan(line, from, to, "\u001b[7m", "\u001b[27m",
|
|
24
|
-
: paintTextSelection(line, from, to,
|
|
21
|
+
? backgroundSgrSpan(line, from, to, "\u001b[7m", "\u001b[27m", visibleWidth)
|
|
22
|
+
: paintTextSelection(line, from, to, visibleWidth, true),
|
|
25
23
|
transformPastedContent: content => {
|
|
26
24
|
try {
|
|
27
25
|
return promptChips.transformPastedContent(content, editor.getText());
|
|
@@ -50,16 +48,16 @@ export function createShellEditor(ports) {
|
|
|
50
48
|
} : {}),
|
|
51
49
|
editorAtomicRanges: line => promptChips.atomicRanges(line),
|
|
52
50
|
editorHiddenRanges: line => promptChips.hiddenRanges(line),
|
|
53
|
-
decorateEditorRow: editorRowDecorator(promptChips, ports.editorPointerSelecting),
|
|
51
|
+
decorateEditorRow: editorRowDecorator(promptChips, ports.editorPointerSelecting, visibleWidth),
|
|
54
52
|
expandCopiedEditorText: text => promptChips.expandCopiedText(text),
|
|
55
53
|
cwd: ports.cwd,
|
|
56
54
|
...(ports.agentDir === undefined ? {} : { agentDir: ports.agentDir }),
|
|
57
55
|
onToolsExpand: () => ports.toggleToolsExpanded(),
|
|
58
56
|
...(customViewport ? {
|
|
59
57
|
promptPresentation: {
|
|
60
|
-
input: new PromptInput({ fg: (token, text) =>
|
|
61
|
-
measure:
|
|
62
|
-
truncate:
|
|
58
|
+
input: new PromptInput({ fg: (token, text) => ports.theme.current().fg(token, text) }, {
|
|
59
|
+
measure: visibleWidth,
|
|
60
|
+
truncate: truncateToWidth,
|
|
63
61
|
}),
|
|
64
62
|
styleSuggestion: faint,
|
|
65
63
|
styleSuggestionCaret: caretCell,
|
|
@@ -78,17 +76,17 @@ export function createShellEditor(ports) {
|
|
|
78
76
|
* Dims unsent chips and turns the draft's URLs into terminal hyperlinks, each target once per
|
|
79
77
|
* decoration pass; while a pointer drag selects, links paint as plain underlines instead.
|
|
80
78
|
*/
|
|
81
|
-
function editorRowDecorator(promptChips, editorPointerSelecting) {
|
|
79
|
+
function editorRowDecorator(promptChips, editorPointerSelecting, visibleWidth) {
|
|
82
80
|
const editorHyperlinks = new EditorHyperlinkBudget();
|
|
83
81
|
return (row, width, rowIndex) => {
|
|
84
82
|
if (rowIndex === 0)
|
|
85
83
|
editorHyperlinks.reset();
|
|
86
84
|
const plain = stripAnsi(row);
|
|
87
|
-
const dimmed = promptChips.unsentRanges(plain).reduce((result, range) => backgroundSgrSpan(result,
|
|
85
|
+
const dimmed = promptChips.unsentRanges(plain).reduce((result, range) => backgroundSgrSpan(result, visibleWidth(plain.slice(0, range.start)), visibleWidth(plain.slice(0, range.end)), "\u001b[2m", "\u001b[22m", visibleWidth), row);
|
|
88
86
|
const ranges = promptChips.hyperlinkRanges(plain);
|
|
89
87
|
if (ranges.length === 0 || !editorHyperlinks.takeCleanup())
|
|
90
88
|
return dimmed;
|
|
91
|
-
const linkResetAndTail = `\u001b]8;;\u001b\\\u001b[24m${" ".repeat(Math.max(0, width -
|
|
89
|
+
const linkResetAndTail = `\u001b]8;;\u001b\\\u001b[24m${" ".repeat(Math.max(0, width - visibleWidth(dimmed)))}`;
|
|
92
90
|
// Platform: VS15 is zero-column and default-ignorable. It breaks Windows Terminal's
|
|
93
91
|
// plain-text URL detector only in the held-button paint; semantic text stays exact.
|
|
94
92
|
const selecting = editorPointerSelecting();
|
|
@@ -96,8 +94,8 @@ function editorRowDecorator(promptChips, editorPointerSelecting) {
|
|
|
96
94
|
? dimmed.replaceAll("https://", "https:︎//").replaceAll("http://", "http:︎//")
|
|
97
95
|
: dimmed;
|
|
98
96
|
const decorated = selecting
|
|
99
|
-
? ranges.reduce((result, range) => backgroundSgrSpan(result,
|
|
100
|
-
: ranges.filter(range => editorHyperlinks.take(range.target)).reduce((result, range) => hyperlinkSgrSpan(result,
|
|
97
|
+
? ranges.reduce((result, range) => backgroundSgrSpan(result, visibleWidth(plain.slice(0, range.start)), visibleWidth(plain.slice(0, range.end)), "\u001b[4:4m", "\u001b[24m", visibleWidth), paintRow)
|
|
98
|
+
: ranges.filter(range => editorHyperlinks.take(range.target)).reduce((result, range) => hyperlinkSgrSpan(result, visibleWidth(plain.slice(0, range.start)), visibleWidth(plain.slice(0, range.end)), range.target, visibleWidth), dimmed);
|
|
101
99
|
// Platform: Windows Terminal can retain stale native dotted-link cells when a mutable
|
|
102
100
|
// prompt replaces a longer URL. Explicit non-link spaces overwrite that tail.
|
|
103
101
|
return `${decorated}${linkResetAndTail}`;
|
|
@@ -1,20 +1,18 @@
|
|
|
1
|
+
import type { TerminalComponentPort, TerminalInputListener, TerminalInputListenerResult, TerminalInputSurfaceKind, TerminalOverlayHandle, TerminalOverlayOptions, TerminalPointerSurface, TerminalPort } from "../../contracts/presentation/index.js";
|
|
1
2
|
import type { OwnedUiBackgroundSettingsPort, OwnedUiPresenterHost, OwnedUiSessionPresenter, OwnedUiTerminalHost as OwnedUiTerminalHostContract } from "../../contracts/owned-ui/index.js";
|
|
2
3
|
import type { UiRouteSurface } from "../../ui/apps/contracts.js";
|
|
3
|
-
import {
|
|
4
|
-
import { PiTuiRuntimeAdapter } from "../../integrations/pi/tui-runtime/adapter.js";
|
|
5
|
-
import type { PiTuiInputSurfaceKind } from "../../integrations/pi/tui-runtime/input-presentation-coordinator.js";
|
|
6
|
-
import type { PiTuiComponentPort, PiTuiInputListener, PiTuiInputListenerResult, PiTuiOverlayHandle, PiTuiOverlayOptions, PiTuiPointerSurface, PiTuiTerminalPort } from "../../integrations/pi/tui-runtime/contracts.js";
|
|
4
|
+
import type { ShellPresentationPorts, TerminalDamageDecision, TerminalDamageFrameDescriptor, TerminalDamageFrameSafety, TerminalProgramStatus, TerminalRuntimePort, TerminalWheelScrollLines } from "../../contracts/presentation/index.js";
|
|
7
5
|
import { type OwnedUiSessionShellOptions, type OwnedUiShellPresentationOptions, type PinnedLayoutPart } from "./session-shell-root.js";
|
|
8
|
-
type ProgramStatus =
|
|
9
|
-
type WheelScrollLines =
|
|
6
|
+
type ProgramStatus = TerminalProgramStatus;
|
|
7
|
+
type WheelScrollLines = TerminalWheelScrollLines;
|
|
10
8
|
/** What the terminal host needs from a presenter beyond the neutral contract: the Pi runtime's per-session seams. */
|
|
11
9
|
export interface OwnedUiHostedPresenter extends OwnedUiSessionPresenter {
|
|
12
|
-
inputCoordinationSurface():
|
|
13
|
-
setOverlaySurfaces(surfaces: readonly
|
|
10
|
+
inputCoordinationSurface(): TerminalInputSurfaceKind;
|
|
11
|
+
setOverlaySurfaces(surfaces: readonly TerminalPointerSurface[] | null): void;
|
|
14
12
|
noteImmediatePresentation(): void;
|
|
15
13
|
/** The bare-A1 viewport's pre-input routing; returns what the runtime's pre-input listener returns. */
|
|
16
|
-
handleViewportInput(data: string):
|
|
17
|
-
layoutPart(part: PinnedLayoutPart):
|
|
14
|
+
handleViewportInput(data: string): TerminalInputListenerResult | undefined;
|
|
15
|
+
layoutPart(part: PinnedLayoutPart): TerminalComponentPort;
|
|
18
16
|
/** Called after the host makes this presenter active, to republish its terminal-wide state. */
|
|
19
17
|
activated(): void;
|
|
20
18
|
/**
|
|
@@ -45,9 +43,9 @@ export interface OwnedUiPresenterTerminal extends OwnedUiPresenterHost {
|
|
|
45
43
|
writeControl(data: string): void;
|
|
46
44
|
hasOverlay(): boolean;
|
|
47
45
|
hasFocusedOverlay(): boolean;
|
|
48
|
-
showOverlay(component:
|
|
49
|
-
addInputListener(listener:
|
|
50
|
-
armFrame(descriptor:
|
|
46
|
+
showOverlay(component: TerminalComponentPort, options?: TerminalOverlayOptions): TerminalOverlayHandle;
|
|
47
|
+
addInputListener(listener: TerminalInputListener): () => void;
|
|
48
|
+
armFrame(descriptor: TerminalDamageFrameDescriptor, safety: TerminalDamageFrameSafety): void;
|
|
51
49
|
requestHyperlinkCleanup(rows?: readonly number[]): void;
|
|
52
50
|
openRoute(surface: UiRouteSurface, callbacks: OwnedUiRouteCallbacks): {
|
|
53
51
|
hide(): void;
|
|
@@ -61,19 +59,20 @@ export interface OwnedUiPresenterTerminal extends OwnedUiPresenterHost {
|
|
|
61
59
|
setClearOnShrink(enabled: boolean): void;
|
|
62
60
|
setWheelScrollLines(lines: WheelScrollLines): void;
|
|
63
61
|
}
|
|
64
|
-
|
|
62
|
+
interface OwnedUiRouteCallbacks {
|
|
65
63
|
/** The route, or the interrupt chord over it, asked to leave A1. */
|
|
66
64
|
exit(): void;
|
|
67
65
|
/** The route closed itself; `rendered` is true when it was ever painted. */
|
|
68
66
|
closed(rendered: boolean): void;
|
|
69
67
|
}
|
|
70
68
|
export interface OwnedUiTerminalHostOptions {
|
|
69
|
+
readonly presentation: ShellPresentationPorts;
|
|
71
70
|
/** Bare A1 owns a bounded custom viewport; comparison profiles keep the pinned layout. */
|
|
72
71
|
readonly layout: "pinned" | "custom-viewport";
|
|
73
72
|
readonly mode: "regular" | "fullscreen";
|
|
74
73
|
readonly hardwareCursor: boolean;
|
|
75
74
|
readonly wheelScrollLines?: WheelScrollLines;
|
|
76
|
-
readonly terminal?:
|
|
75
|
+
readonly terminal?: TerminalPort;
|
|
77
76
|
readonly input?: OwnedUiShellPresentationOptions["input"];
|
|
78
77
|
readonly backgroundSettings?: OwnedUiBackgroundSettingsPort;
|
|
79
78
|
readonly quitOutro?: OwnedUiShellPresentationOptions["quitOutro"];
|
|
@@ -93,9 +92,9 @@ export declare function sessionTerminalHostOptions(options: OwnedUiSessionShellO
|
|
|
93
92
|
*/
|
|
94
93
|
export declare class OwnedUiTerminalHost implements OwnedUiTerminalHostContract<OwnedUiHostedPresenter> {
|
|
95
94
|
#private;
|
|
96
|
-
readonly runtime:
|
|
95
|
+
readonly runtime: TerminalRuntimePort;
|
|
97
96
|
constructor(options: OwnedUiTerminalHostOptions);
|
|
98
|
-
get damagePresentationDecision():
|
|
97
|
+
get damagePresentationDecision(): TerminalDamageDecision | null;
|
|
99
98
|
/** Registers a presenter and returns its terminal handle. The presenter paints only once attached. */
|
|
100
99
|
connect(presenter: OwnedUiHostedPresenter): OwnedUiPresenterTerminal;
|
|
101
100
|
/** Forgets a presenter whose construction failed before it could be attached or released. */
|