@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,9 +1,10 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import {
|
|
1
|
+
import type { OwnedUiShellComponentPort, OwnedUiShellEditorPort } from "../../contracts/owned-ui/index.js";
|
|
2
|
+
import type { TerminalInputSurfaceKind, TerminalRuntimeFactory } from "../../contracts/presentation/index.js";
|
|
3
3
|
import type { SessionViewportController } from "./session-viewport-controller.js";
|
|
4
|
-
|
|
4
|
+
interface InputSurfaceSwitchPorts {
|
|
5
5
|
/** Whether keystrokes that cannot change the transcript may repaint the dock alone. */
|
|
6
6
|
readonly dockInputReuse: boolean;
|
|
7
|
+
readonly classifyInput: TerminalRuntimeFactory["classifyInput"];
|
|
7
8
|
readonly viewport: Pick<SessionViewportController, "invalidateInputSurface" | "presentationRevision">;
|
|
8
9
|
/** The surface changed; listeners outside the root react. */
|
|
9
10
|
readonly onChanged?: () => void;
|
|
@@ -15,9 +16,9 @@ export interface InputSurfaceSwitchPorts {
|
|
|
15
16
|
*/
|
|
16
17
|
export declare class InputSurfaceSwitch {
|
|
17
18
|
#private;
|
|
18
|
-
constructor(editor:
|
|
19
|
-
get surface():
|
|
20
|
-
get coordination():
|
|
19
|
+
constructor(editor: OwnedUiShellEditorPort, ports: InputSurfaceSwitchPorts);
|
|
20
|
+
get surface(): OwnedUiShellComponentPort;
|
|
21
|
+
get coordination(): TerminalInputSurfaceKind;
|
|
21
22
|
get usesEditor(): boolean;
|
|
22
23
|
get dockInputCandidate(): boolean;
|
|
23
24
|
get dockInputRevision(): number | undefined;
|
|
@@ -25,7 +26,7 @@ export declare class InputSurfaceSwitch {
|
|
|
25
26
|
* Shows `component` in the dock, or the editor for null. Returns false when the surface is
|
|
26
27
|
* unchanged, in which case only its coordination kind is updated.
|
|
27
28
|
*/
|
|
28
|
-
set(component:
|
|
29
|
+
set(component: OwnedUiShellComponentPort | null, disposePrevious: boolean, coordination: Exclude<TerminalInputSurfaceKind, "editor">): boolean;
|
|
29
30
|
handleInput(data: string): void;
|
|
30
31
|
/** Reads and clears the dock-only candidate for one composition. */
|
|
31
32
|
takeDockInputCandidate(): boolean;
|
|
@@ -34,3 +35,4 @@ export declare class InputSurfaceSwitch {
|
|
|
34
35
|
/** Disposes a replacement surface; the editor is disposed by its owner. */
|
|
35
36
|
dispose(): void;
|
|
36
37
|
}
|
|
38
|
+
export {};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { classifyPiTuiInput } from "../../integrations/pi/tui-runtime/input-presentation-coordinator.js";
|
|
2
1
|
/**
|
|
3
2
|
* Which component receives the dock's input: the prompt editor, or a selector, dialog, or prompt
|
|
4
3
|
* that temporarily replaces it. It also records whether the latest keystroke is safe for a
|
|
@@ -55,7 +54,7 @@ export class InputSurfaceSwitch {
|
|
|
55
54
|
return true;
|
|
56
55
|
}
|
|
57
56
|
handleInput(data) {
|
|
58
|
-
this.#dockInputCandidate = this.#ports.dockInputReuse &&
|
|
57
|
+
this.#dockInputCandidate = this.#ports.dockInputReuse && this.#ports.classifyInput(data, this.#coordination) === "safe";
|
|
59
58
|
this.#dockInputRevision = this.#dockInputCandidate ? this.#ports.viewport.presentationRevision : undefined;
|
|
60
59
|
try {
|
|
61
60
|
this.#surface.handleInput?.(data);
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import type { OwnedUiWorkflowInteractionRequest, OwnedUiWorkflowLoginNotification, OwnedUiWorkflowLoginStart } from "../../contracts/owned-ui/index.js";
|
|
2
|
-
import type { ProgramStatusReporter } from "../../integrations/pi/components/upstream/program-status-reporter.js";
|
|
1
|
+
import type { OwnedUiShellComponents, OwnedUiShellProgramStatusReporter, OwnedUiWorkflowInteractionRequest, OwnedUiWorkflowLoginNotification, OwnedUiWorkflowLoginStart } from "../../contracts/owned-ui/index.js";
|
|
3
2
|
import type { SessionConcern } from "./session-concern.js";
|
|
4
3
|
import type { OwnedUiSessionShellRoot } from "./session-shell-root.js";
|
|
5
4
|
import { type OwnedUiPresenterTerminal } from "./shell-host.js";
|
|
6
|
-
|
|
5
|
+
interface LoginInteractionPorts {
|
|
7
6
|
readonly terminal: Pick<OwnedUiPresenterTerminal, "viewport" | "requestRender">;
|
|
8
7
|
readonly root: Pick<OwnedUiSessionShellRoot, "setInputSurface">;
|
|
9
|
-
readonly programStatus: Pick<
|
|
8
|
+
readonly programStatus: Pick<OwnedUiShellProgramStatusReporter, "setBlocked">;
|
|
9
|
+
readonly dialogs: Pick<OwnedUiShellComponents["dialogs"], "loginDialog" | "extensionSelector">;
|
|
10
10
|
/** The blocked-on-authentication state changed; the presenter republishes terminal progress. */
|
|
11
11
|
readonly syncProgress: () => void;
|
|
12
12
|
}
|
|
@@ -25,3 +25,4 @@ export declare class LoginInteraction implements SessionConcern {
|
|
|
25
25
|
/** A replaced session forgets its dialog; the presenter clears the input surface as part of the same replacement. */
|
|
26
26
|
onSessionReplaced(): void;
|
|
27
27
|
}
|
|
28
|
+
export {};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { createPiShellExtensionSelector, createPiShellLoginDialog, } from "../../integrations/pi/components/shell-selectors-dialogs.js";
|
|
2
1
|
import { componentRuntime } from "./shell-host.js";
|
|
3
2
|
/**
|
|
4
3
|
* The engine's login flow in the dock: one login dialog at a time, the prompts and selections the
|
|
@@ -12,7 +11,7 @@ export class LoginInteraction {
|
|
|
12
11
|
}
|
|
13
12
|
start(request) {
|
|
14
13
|
this.finish();
|
|
15
|
-
const dialog =
|
|
14
|
+
const dialog = this.#ports.dialogs.loginDialog(componentRuntime(this.#ports.terminal), request.providerId, success => {
|
|
16
15
|
if (!success)
|
|
17
16
|
this.finish();
|
|
18
17
|
}, request.providerName);
|
|
@@ -39,7 +38,7 @@ export class LoginInteraction {
|
|
|
39
38
|
this.#ports.root.setInputSurface(dialog);
|
|
40
39
|
this.#ports.terminal.requestRender();
|
|
41
40
|
};
|
|
42
|
-
const selector =
|
|
41
|
+
const selector = this.#ports.dialogs.extensionSelector(request.message, labels, label => {
|
|
43
42
|
const id = options.find(option => option.label === label)?.id;
|
|
44
43
|
restoreDialog();
|
|
45
44
|
resolve(id ?? null);
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { PiShellClipboardContent } from "../../integrations/pi/components/shell-shared-facade.js";
|
|
1
|
+
import type { OwnedUiShellClipboardContent } from "../../contracts/owned-ui/index.js";
|
|
3
2
|
import { type PreparedPaste, type PasteEvent } from "./paste-protocol.js";
|
|
4
3
|
import { HelperPool } from "./helper-pool.js";
|
|
5
4
|
export interface PasteExecutorJob {
|
|
@@ -7,12 +6,9 @@ export interface PasteExecutorJob {
|
|
|
7
6
|
readonly stopped: Promise<void>;
|
|
8
7
|
cancel(): void;
|
|
9
8
|
}
|
|
10
|
-
|
|
11
|
-
/** Forks one paste helper: no inherited descriptors, JSON IPC only, and its own process group on POSIX. */
|
|
12
|
-
export declare function forkPasteHelper(helper?: URL): ChildProcess;
|
|
13
|
-
/** Kills a paste helper and everything it spawned, then lets the parent exit without waiting for it. */
|
|
14
|
-
export declare function stopPasteHelper(child: ChildProcess): void;
|
|
9
|
+
type PastePhase = (phase: PasteEvent["phase"], bytes?: number) => void;
|
|
15
10
|
/** A spare-of-one pool of paste helpers; `startPasteExecutor` takes its child and warms the next one after each paste. */
|
|
16
11
|
export declare function createPasteHelperPool(helper?: URL, idleMs?: number): HelperPool;
|
|
17
12
|
/** Streams bounded fragments through a killable child; native/codec/filesystem work never runs on the UI thread. */
|
|
18
|
-
export declare function startPasteExecutor(content:
|
|
13
|
+
export declare function startPasteExecutor(content: OwnedUiShellClipboardContent | undefined, signal: AbortSignal, phase?: PastePhase, helper?: URL, pool?: HelperPool): PasteExecutorJob;
|
|
14
|
+
export {};
|
|
@@ -20,7 +20,7 @@ function permitConversion() {
|
|
|
20
20
|
child.send({ kind: "convert" }, () => { });
|
|
21
21
|
}
|
|
22
22
|
/** Forks one paste helper: no inherited descriptors, JSON IPC only, and its own process group on POSIX. */
|
|
23
|
-
|
|
23
|
+
function forkPasteHelper(helper) {
|
|
24
24
|
const source = new URL(import.meta.url).pathname.endsWith(".ts");
|
|
25
25
|
const entry = helper ?? new URL(source ? "./paste-helper.ts" : "./paste-helper.js", import.meta.url);
|
|
26
26
|
const options = {
|
|
@@ -31,7 +31,7 @@ export function forkPasteHelper(helper) {
|
|
|
31
31
|
return fork(entry, [], options);
|
|
32
32
|
}
|
|
33
33
|
/** Kills a paste helper and everything it spawned, then lets the parent exit without waiting for it. */
|
|
34
|
-
|
|
34
|
+
function stopPasteHelper(child) {
|
|
35
35
|
// Concurrency: POSIX command fallbacks share this isolated process group; kill descendants too.
|
|
36
36
|
if (process.platform !== "win32" && child.pid !== undefined) {
|
|
37
37
|
try {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { OwnedUiShellClipboardContent } from "../../contracts/owned-ui/index.js";
|
|
2
2
|
import type { PreparedPasteText, ClipboardPath } from "./paste-text-preparation.js";
|
|
3
3
|
import type { PreparedImage } from "./image-preparation.js";
|
|
4
4
|
export declare const PASTE_READ_MS = 5000;
|
|
@@ -16,7 +16,7 @@ export type PasteSource = {
|
|
|
16
16
|
readonly before?: (signal: AbortSignal) => Promise<boolean>;
|
|
17
17
|
} | {
|
|
18
18
|
readonly kind: "provided";
|
|
19
|
-
readonly read: (signal: AbortSignal) => Promise<
|
|
19
|
+
readonly read: (signal: AbortSignal) => Promise<OwnedUiShellClipboardContent | null>;
|
|
20
20
|
readonly before?: (signal: AbortSignal) => Promise<boolean>;
|
|
21
21
|
} | {
|
|
22
22
|
readonly kind: "text";
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import type { ClipboardPath, PreparedPasteText } from "./paste-types.js";
|
|
2
|
-
export declare const PATH_CHIP_PRESENTATION_UNITS = 4096;
|
|
3
2
|
/** Normalizes a path for host-filesystem identity comparisons. */
|
|
4
3
|
export declare function normalizedPathIdentity(fullPath: string): string;
|
|
5
4
|
/** Yields labels from the basename through the normalized rooted path, shortest first. */
|
|
6
5
|
export declare function pathChipLabelCandidates(fullPath: string): Iterable<string>;
|
|
7
|
-
/** Formats one path label with the established folder/file/image-file icon. */
|
|
8
|
-
export declare function pathChipTag(item: ClipboardPath, label?: string): string;
|
|
9
6
|
/** Yields complete deterministic tags lazily for path collision adoption. */
|
|
10
7
|
export declare function pathChipTagCandidates(item: ClipboardPath): Iterable<string>;
|
|
11
|
-
/** Returns the conservative UTF-16 presentation cost for one path occurrence. */
|
|
12
|
-
export declare function pathChipPresentationUnits(item: ClipboardPath): number;
|
|
13
8
|
/** Run in the isolated preparer: compact before path arrays become an oversized editor presentation. */
|
|
14
9
|
export declare function preparePathPresentation(paths: readonly ClipboardPath[]): PreparedPasteText;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
|
|
2
|
+
const PATH_CHIP_PRESENTATION_UNITS = 4096;
|
|
3
3
|
const IMAGE_EXTENSION = /\.(?:jpe?g|png|webp|gif|bmp|tiff?)$/iu;
|
|
4
4
|
/** Normalizes a path for host-filesystem identity comparisons. */
|
|
5
5
|
export function normalizedPathIdentity(fullPath) {
|
|
@@ -29,7 +29,7 @@ export function* pathChipLabelCandidates(fullPath) {
|
|
|
29
29
|
yield rooted;
|
|
30
30
|
}
|
|
31
31
|
/** Formats one path label with the established folder/file/image-file icon. */
|
|
32
|
-
|
|
32
|
+
function pathChipTag(item, label = basePathLabel(item.fullPath)) {
|
|
33
33
|
const icon = item.kind === "folder" ? "📁" : IMAGE_EXTENSION.test(item.fullPath) ? "🖼 " : "📄";
|
|
34
34
|
return `[${icon} ${label}]`;
|
|
35
35
|
}
|
|
@@ -39,7 +39,7 @@ export function* pathChipTagCandidates(item) {
|
|
|
39
39
|
yield pathChipTag(item, label);
|
|
40
40
|
}
|
|
41
41
|
/** Returns the conservative UTF-16 presentation cost for one path occurrence. */
|
|
42
|
-
|
|
42
|
+
function pathChipPresentationUnits(item) {
|
|
43
43
|
return pathChipTag(item, displayPath(path.normalize(item.fullPath.trim()))).length;
|
|
44
44
|
}
|
|
45
45
|
/** Run in the isolated preparer: compact before path arrays become an oversized editor presentation. */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { OwnedUiShellClipboardContent, OwnedUiShellEditorTextRange } from "../../contracts/owned-ui/index.js";
|
|
2
2
|
import { type PastePreparationClientOptions } from "./paste-preparation-client.js";
|
|
3
3
|
import type { PasteEvent, PasteSource } from "./paste-protocol.js";
|
|
4
|
-
|
|
4
|
+
interface PromptImageAttachment {
|
|
5
5
|
readonly type: "image";
|
|
6
6
|
readonly data: string;
|
|
7
7
|
readonly mimeType: string;
|
|
@@ -21,7 +21,7 @@ export declare class PromptChipStore {
|
|
|
21
21
|
});
|
|
22
22
|
/** Forks the spare paste helper so the session's first paste does not pay for helper startup. */
|
|
23
23
|
warm(): void;
|
|
24
|
-
beginPaste(currentText: string, read: ((signal: AbortSignal) => Promise<
|
|
24
|
+
beginPaste(currentText: string, read: ((signal: AbortSignal) => Promise<OwnedUiShellClipboardContent | null>) | PasteSource, onError: (error: unknown) => void, onImage?: () => void): {
|
|
25
25
|
marker: string;
|
|
26
26
|
result: Promise<string>;
|
|
27
27
|
complete?(): void;
|
|
@@ -37,11 +37,11 @@ export declare class PromptChipStore {
|
|
|
37
37
|
readonly limit: number;
|
|
38
38
|
readonly corrected: boolean;
|
|
39
39
|
};
|
|
40
|
-
transformPastedContent(content:
|
|
40
|
+
transformPastedContent(content: OwnedUiShellClipboardContent, currentText?: string): string;
|
|
41
41
|
/** Hide provisional clipboard identities until the read identifies an actual image. */
|
|
42
|
-
hiddenRanges(line: string): readonly
|
|
43
|
-
atomicRanges(line: string): readonly
|
|
44
|
-
unsentRanges(line: string): readonly
|
|
42
|
+
hiddenRanges(line: string): readonly OwnedUiShellEditorTextRange[];
|
|
43
|
+
atomicRanges(line: string): readonly OwnedUiShellEditorTextRange[];
|
|
44
|
+
unsentRanges(line: string): readonly OwnedUiShellEditorTextRange[];
|
|
45
45
|
omitUnsentImages(text: string): string;
|
|
46
46
|
hyperlinkRanges(text: string): readonly {
|
|
47
47
|
start: number;
|
|
@@ -76,3 +76,4 @@ export declare class PromptChipStore {
|
|
|
76
76
|
rehydrateHistoryText(text: string, resolveImage: (id: string) => PromptImageAttachment | null): string;
|
|
77
77
|
prepareSubmission(text: string): PreparedPrompt;
|
|
78
78
|
}
|
|
79
|
+
export {};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import type { OwnedUiShellEditorPort } from "../../contracts/owned-ui/index.js";
|
|
1
2
|
import { type PromptHistoryKind, type PromptHistoryPort } from "../../contracts/owned-ui/index.js";
|
|
2
|
-
import type { PiShellEditorPort } from "../../integrations/pi/components/index.js";
|
|
3
3
|
/** Merges bounded recall snapshots; the editor alone owns browsing, draft, cursor, and undo state. */
|
|
4
4
|
export declare class PromptHistoryController {
|
|
5
5
|
#private;
|
|
6
6
|
readonly options: {
|
|
7
|
-
editor:
|
|
7
|
+
editor: OwnedUiShellEditorPort;
|
|
8
8
|
store: PromptHistoryPort;
|
|
9
9
|
limit: number;
|
|
10
10
|
fallback: readonly string[];
|
|
@@ -16,7 +16,7 @@ export declare class PromptHistoryController {
|
|
|
16
16
|
rehydrate?: (text: string) => string;
|
|
17
17
|
};
|
|
18
18
|
constructor(options: {
|
|
19
|
-
editor:
|
|
19
|
+
editor: OwnedUiShellEditorPort;
|
|
20
20
|
store: PromptHistoryPort;
|
|
21
21
|
limit: number;
|
|
22
22
|
fallback: readonly string[];
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
+
import type { OwnedUiShellComponents } from "../../contracts/owned-ui/index.js";
|
|
1
2
|
import type { OwnedUiCommand, OwnedUiCommandResult, OwnedUiSessionBackend, OwnedUiSessionViewModel, PromptHistoryImageSidecarPort } from "../../contracts/owned-ui/index.js";
|
|
2
3
|
import type { PromptHistoryController } from "./prompt-history-controller.js";
|
|
3
|
-
import type { ResidentTabCoordinator } from "./resident-tab-coordinator.js";
|
|
4
4
|
import type { SessionConcern } from "./session-concern.js";
|
|
5
5
|
import type { OwnedUiSessionShellRoot } from "./session-shell-root.js";
|
|
6
6
|
import type { OwnedUiPresenterTerminal } from "./shell-host.js";
|
|
7
|
-
|
|
7
|
+
interface PromptSubmissionPorts {
|
|
8
8
|
readonly backend: Pick<OwnedUiSessionBackend, "session" | "identity" | "workflows">;
|
|
9
|
-
readonly root: Pick<OwnedUiSessionShellRoot, "editor" | "hasPendingPastes" | "waitForPromptPastes" | "setExtensionWidget" | "prepareHistoryText" | "imageChipAttachmentsFromEditor" | "preparePromptSubmission" | "omitUnsentPromptImages" | "resumeViewportFollowing" | "beginImageSubmissionStatus" | "
|
|
9
|
+
readonly root: Pick<OwnedUiSessionShellRoot, "editor" | "hasPendingPastes" | "waitForPromptPastes" | "setExtensionWidget" | "prepareHistoryText" | "imageChipAttachmentsFromEditor" | "preparePromptSubmission" | "omitUnsentPromptImages" | "resumeViewportFollowing" | "beginImageSubmissionStatus" | "workflow">;
|
|
10
10
|
readonly terminal: Pick<OwnedUiPresenterTerminal, "requestRender">;
|
|
11
|
-
readonly residentTab: ResidentTabCoordinator;
|
|
12
11
|
readonly cwd: string;
|
|
12
|
+
readonly statusText: OwnedUiShellComponents["info"]["statusText"];
|
|
13
13
|
promptHistory(): PromptHistoryController | null;
|
|
14
14
|
imageSidecar(): PromptHistoryImageSidecarPort | undefined;
|
|
15
15
|
disposed(): boolean;
|
|
@@ -23,8 +23,8 @@ export interface PromptSubmissionPorts {
|
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
25
|
* Turns editor input into engine commands: prompts, steering, follow-ups, and bash, each recorded
|
|
26
|
-
* in history first. It holds a submission whose image pastes are still preparing
|
|
27
|
-
*
|
|
26
|
+
* in history first. It holds a submission whose image pastes are still preparing and recovers the
|
|
27
|
+
* draft when a submission is rejected.
|
|
28
28
|
*/
|
|
29
29
|
export declare class PromptSubmission implements SessionConcern {
|
|
30
30
|
#private;
|
|
@@ -46,3 +46,4 @@ export declare class PromptSubmission implements SessionConcern {
|
|
|
46
46
|
onSessionReplaced(): void;
|
|
47
47
|
dispose(): void;
|
|
48
48
|
}
|
|
49
|
+
export {};
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { assertOwnedUiCommand, assertPromptImages, ImageAttachmentError, } from "../../contracts/owned-ui/index.js";
|
|
2
|
-
import { renderPiShellStatusText } from "../../integrations/pi/components/shell-presenters-info.js";
|
|
3
2
|
const rejected = (diagnostic) => ({ outcome: "rejected", diagnostic });
|
|
4
3
|
/**
|
|
5
4
|
* Turns editor input into engine commands: prompts, steering, follow-ups, and bash, each recorded
|
|
6
|
-
* in history first. It holds a submission whose image pastes are still preparing
|
|
7
|
-
*
|
|
5
|
+
* in history first. It holds a submission whose image pastes are still preparing and recovers the
|
|
6
|
+
* draft when a submission is rejected.
|
|
8
7
|
*/
|
|
9
8
|
export class PromptSubmission {
|
|
10
9
|
#ports;
|
|
@@ -80,7 +79,7 @@ export class PromptSubmission {
|
|
|
80
79
|
reportError(error, message) {
|
|
81
80
|
// Security: arbitrary provider/extension error messages can contain the entire request.
|
|
82
81
|
try {
|
|
83
|
-
this.#ports.root.
|
|
82
|
+
this.#ports.root.workflow.appendResult({ command: "debug", outcome: "failed", message: message
|
|
84
83
|
?? (error instanceof ImageAttachmentError ? error.message : "Submission failed. Check the prompt and try again.") }, error instanceof ImageAttachmentError ? error.code : undefined);
|
|
85
84
|
this.#ports.terminal.requestRender();
|
|
86
85
|
}
|
|
@@ -120,7 +119,7 @@ export class PromptSubmission {
|
|
|
120
119
|
#showWaiting() {
|
|
121
120
|
const count = this.#waiting.size;
|
|
122
121
|
this.#ports.root.setExtensionWidget("owned-image-preparation", count === 0 ? null : {
|
|
123
|
-
render: width => [...
|
|
122
|
+
render: width => [...this.#ports.statusText(`Waiting for images (${count} submission${count === 1 ? "" : "s"}) — Esc cancels; dequeue restores`, width)],
|
|
124
123
|
invalidate: () => { },
|
|
125
124
|
}, "aboveEditor");
|
|
126
125
|
this.#ports.terminal.requestRender();
|
|
@@ -199,29 +198,9 @@ export class PromptSubmission {
|
|
|
199
198
|
text: input,
|
|
200
199
|
...(prepared.images.length === 0 ? {} : { images: prepared.images }),
|
|
201
200
|
};
|
|
202
|
-
let submission;
|
|
203
|
-
try {
|
|
204
|
-
submission = await this.#ports.residentTab.admit({
|
|
205
|
-
sessionId: command.sessionId,
|
|
206
|
-
sessionFile: this.#ports.currentSessionFile(),
|
|
207
|
-
kind: type,
|
|
208
|
-
text: input,
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
catch {
|
|
212
|
-
if (root.editor.getText().length === 0)
|
|
213
|
-
root.editor.setText(displayInput);
|
|
214
|
-
const message = "Prompt was not sent because its recovery journal could not be synchronized.";
|
|
215
|
-
this.reportError(undefined, message);
|
|
216
|
-
return rejected(message);
|
|
217
|
-
}
|
|
218
201
|
const finishSending = prepared.images.length === 0 ? () => { } : root.beginImageSubmissionStatus();
|
|
219
202
|
try {
|
|
220
|
-
|
|
221
|
-
if (submission !== undefined && result.outcome !== "rejected") {
|
|
222
|
-
await this.#ports.residentTab.dispatched(submission.id, command.correlationId);
|
|
223
|
-
}
|
|
224
|
-
return result;
|
|
203
|
+
return await this.execute(command, displayInput);
|
|
225
204
|
}
|
|
226
205
|
finally {
|
|
227
206
|
finishSending();
|
|
@@ -242,13 +221,13 @@ export class PromptSubmission {
|
|
|
242
221
|
message: result.cancelled ? "Bash command cancelled" : `Bash exited ${result.exitCode ?? 0}: ${command}`,
|
|
243
222
|
...(result.output ? { detail: result.output } : {}),
|
|
244
223
|
};
|
|
245
|
-
this.#ports.root.
|
|
224
|
+
this.#ports.root.workflow.appendResult(workflow);
|
|
246
225
|
this.#ports.terminal.requestRender();
|
|
247
226
|
return workflow.outcome === "failed" ? rejected(workflow.message) : { outcome: "completed", diagnostic: null };
|
|
248
227
|
}
|
|
249
228
|
catch (error) {
|
|
250
229
|
const message = `Bash command failed: ${error instanceof Error ? error.message : String(error)}`;
|
|
251
|
-
this.#ports.root.
|
|
230
|
+
this.#ports.root.workflow.appendResult({ command: "debug", outcome: "failed", message });
|
|
252
231
|
this.#ports.terminal.requestRender();
|
|
253
232
|
return rejected(message);
|
|
254
233
|
}
|
|
@@ -16,14 +16,14 @@ export interface QuitOutroCell {
|
|
|
16
16
|
readonly glyph: string;
|
|
17
17
|
readonly color: string;
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
interface QuitOutroPlan {
|
|
20
20
|
/** Sorted by `start`. */
|
|
21
21
|
readonly sparkles: readonly QuitOutroCell[];
|
|
22
22
|
/** Sorted by `end`. */
|
|
23
23
|
readonly clears: readonly QuitOutroCell[];
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
declare const QUIT_OUTRO_EFFECTS: readonly ["fall", "dissolve", "starburst", "waves"];
|
|
26
26
|
export type QuitOutroEffect = (typeof QUIT_OUTRO_EFFECTS)[number];
|
|
27
|
-
export declare function isQuitOutroEffect(value: unknown): value is QuitOutroEffect;
|
|
28
27
|
/** Builds the selected effect's deterministic plan for the captured row widths. */
|
|
29
28
|
export declare function createQuitOutroPlan(effect: QuitOutroEffect, rowWidths: readonly number[], seed: number): QuitOutroPlan;
|
|
29
|
+
export {};
|
|
@@ -6,10 +6,7 @@
|
|
|
6
6
|
* cell from `start`, and clears blank a cell at `end`. The player consumes both
|
|
7
7
|
* in order, so a fixed seed yields a byte-stable animation.
|
|
8
8
|
*/
|
|
9
|
-
|
|
10
|
-
export function isQuitOutroEffect(value) {
|
|
11
|
-
return typeof value === "string" && QUIT_OUTRO_EFFECTS.includes(value);
|
|
12
|
-
}
|
|
9
|
+
const QUIT_OUTRO_EFFECTS = Object.freeze(["fall", "dissolve", "starburst", "waves"]);
|
|
13
10
|
const WHITE = "\x1b[38;2;238;238;238m";
|
|
14
11
|
const DUST_GLYPHS = [".", "·", "'", ":", "+", "°"];
|
|
15
12
|
const FALL_GLYPHS = [".", ".", "·", "'", ":", "°"];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type QuitOutroEffect } from "./quit-outro-effects.js";
|
|
2
|
-
|
|
2
|
+
interface QuitOutroFrame {
|
|
3
3
|
/** Row content as presented, truncated to `columns`; index 0 is the top row. */
|
|
4
4
|
readonly lines: readonly string[];
|
|
5
5
|
readonly columns: number;
|
|
@@ -7,7 +7,7 @@ export interface QuitOutroFrame {
|
|
|
7
7
|
/** Visible width of each line, at most `columns`. */
|
|
8
8
|
readonly rowWidths: readonly number[];
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
interface QuitOutroPlayback {
|
|
11
11
|
write(data: string): void;
|
|
12
12
|
/** Monotonic clock seam; defaults to `Date.now`. */
|
|
13
13
|
now?(): number;
|
|
@@ -16,25 +16,22 @@ export interface QuitOutroPlayback {
|
|
|
16
16
|
/** Plan seed; defaults to a time- and geometry-derived value. */
|
|
17
17
|
readonly seed?: number;
|
|
18
18
|
/** Active bare-A1 canvas; omitted preserves transparent playback bytes. */
|
|
19
|
-
readonly
|
|
19
|
+
readonly canvas?: QuitOutroCanvas;
|
|
20
|
+
}
|
|
21
|
+
/** A painted canvas: its background sequence and how to rebase a row's default background onto it. */
|
|
22
|
+
export interface QuitOutroCanvas {
|
|
23
|
+
readonly ansi: string;
|
|
24
|
+
readonly rebase: (content: string, backgroundAnsi: string) => string;
|
|
20
25
|
}
|
|
21
|
-
export declare const QUIT_OUTRO_MIN_MS = 300;
|
|
22
|
-
export declare const QUIT_OUTRO_MAX_MS = 2000;
|
|
23
|
-
/** Wall-clock allowance beyond the clamped duration before playback abandons remaining ticks. */
|
|
24
|
-
export declare const QUIT_OUTRO_GUARD_MS = 500;
|
|
25
|
-
/** Tick ceiling for a clock that stops advancing: the longest playback plus its guard at 30 fps. */
|
|
26
|
-
export declare const QUIT_OUTRO_MAX_TICKS: number;
|
|
27
|
-
export declare function clampQuitOutroDuration(durationMs: number): number;
|
|
28
26
|
/**
|
|
29
27
|
* Captures the presented rows into an outro frame. Returns null when nothing is
|
|
30
28
|
* visible, so a blank screen never animates.
|
|
31
29
|
*/
|
|
32
30
|
export declare function captureQuitOutroFrame(presented: readonly string[], columns: number, rows: number): QuitOutroFrame | null;
|
|
33
|
-
/** The clear-and-repaint block that seeds the animation surface with the captured frame. */
|
|
34
|
-
export declare function createQuitOutroSurfaceFrame(frame: QuitOutroFrame, canvasBackgroundAnsi?: string): string;
|
|
35
31
|
/**
|
|
36
32
|
* Plays the effect over the frame. Resolves true when the plan was played to
|
|
37
33
|
* completion or abandoned at its guard, false when there was nothing to play.
|
|
38
34
|
* Write failures propagate so the caller can decide to continue restoration.
|
|
39
35
|
*/
|
|
40
36
|
export declare function playQuitOutro(frame: QuitOutroFrame, effect: QuitOutroEffect, durationMs: number, playback: QuitOutroPlayback): Promise<boolean>;
|
|
37
|
+
export {};
|
|
@@ -6,22 +6,21 @@
|
|
|
6
6
|
* terminal cannot delay restoration past the configured clamp.
|
|
7
7
|
*/
|
|
8
8
|
import { displayWidth, truncateToWidth } from "../../ui/components/index.js";
|
|
9
|
-
import { rebaseTerminalDefaultBackground } from "../../integrations/pi/tui-runtime/index.js";
|
|
10
9
|
import { createQuitOutroPlan } from "./quit-outro-effects.js";
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
const QUIT_OUTRO_MIN_MS = 300;
|
|
11
|
+
const QUIT_OUTRO_MAX_MS = 2000;
|
|
13
12
|
/** Wall-clock allowance beyond the clamped duration before playback abandons remaining ticks. */
|
|
14
|
-
|
|
13
|
+
const QUIT_OUTRO_GUARD_MS = 500;
|
|
15
14
|
const FRAME_MS = 1000 / 30;
|
|
16
15
|
/** Tick ceiling for a clock that stops advancing: the longest playback plus its guard at 30 fps. */
|
|
17
|
-
|
|
16
|
+
const QUIT_OUTRO_MAX_TICKS = Math.ceil((QUIT_OUTRO_MAX_MS + QUIT_OUTRO_GUARD_MS) / FRAME_MS) + 1;
|
|
18
17
|
const SYNC_BEGIN = "\x1b[?2026h";
|
|
19
18
|
const SYNC_END = "\x1b[?2026l";
|
|
20
19
|
const RESET = "\x1b[0m";
|
|
21
20
|
const CLEAR_SCREEN = "\x1b[2J";
|
|
22
21
|
const HOME = "\x1b[H";
|
|
23
22
|
const HIDE_CURSOR = "\x1b[?25l";
|
|
24
|
-
|
|
23
|
+
function clampQuitOutroDuration(durationMs) {
|
|
25
24
|
if (!Number.isFinite(durationMs))
|
|
26
25
|
return QUIT_OUTRO_MIN_MS;
|
|
27
26
|
return Math.max(QUIT_OUTRO_MIN_MS, Math.min(QUIT_OUTRO_MAX_MS, Math.floor(durationMs)));
|
|
@@ -45,8 +44,8 @@ export function captureQuitOutroFrame(presented, columns, rows) {
|
|
|
45
44
|
return { lines, columns: width, rows: height, rowWidths };
|
|
46
45
|
}
|
|
47
46
|
/** The clear-and-repaint block that seeds the animation surface with the captured frame. */
|
|
48
|
-
|
|
49
|
-
if (
|
|
47
|
+
function createQuitOutroSurfaceFrame(frame, canvas) {
|
|
48
|
+
if (canvas === undefined) {
|
|
50
49
|
let output = `${SYNC_BEGIN}${HIDE_CURSOR}${CLEAR_SCREEN}${HOME}${RESET}`;
|
|
51
50
|
for (let row = 0; row < frame.rows; row++) {
|
|
52
51
|
const line = frame.lines[row] ?? "";
|
|
@@ -55,12 +54,13 @@ export function createQuitOutroSurfaceFrame(frame, canvasBackgroundAnsi) {
|
|
|
55
54
|
}
|
|
56
55
|
return `${output}${SYNC_END}`;
|
|
57
56
|
}
|
|
57
|
+
const canvasBackgroundAnsi = canvas.ansi;
|
|
58
58
|
let output = `${SYNC_BEGIN}${HIDE_CURSOR}${RESET}${canvasBackgroundAnsi}${CLEAR_SCREEN}${HOME}`;
|
|
59
59
|
for (let row = 0; row < frame.rows; row++) {
|
|
60
60
|
const line = frame.lines[row] ?? "";
|
|
61
61
|
if (frame.rowWidths[row] > 0) {
|
|
62
62
|
output += `${cursorAt(row, 0)}${canvasBackgroundAnsi}`
|
|
63
|
-
+ `${
|
|
63
|
+
+ `${canvas.rebase(line, canvasBackgroundAnsi)}${RESET}${canvasBackgroundAnsi}`;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
return `${output}${RESET}${SYNC_END}`;
|
|
@@ -81,8 +81,8 @@ export async function playQuitOutro(frame, effect, durationMs, playback) {
|
|
|
81
81
|
let sparkleIndex = 0;
|
|
82
82
|
let clearIndex = 0;
|
|
83
83
|
let ticks = 0;
|
|
84
|
-
|
|
85
|
-
playback.
|
|
84
|
+
playback.write(createQuitOutroSurfaceFrame(frame, playback.canvas));
|
|
85
|
+
const canvas = playback.canvas?.ansi;
|
|
86
86
|
const startedAt = now();
|
|
87
87
|
for (;;) {
|
|
88
88
|
ticks += 1;
|
|
@@ -4,8 +4,8 @@ export declare const COPY_CLEANUP_MS = 250;
|
|
|
4
4
|
export declare const MAX_COPY_BYTES: number;
|
|
5
5
|
export declare const MAX_COPY_CONTROL_BYTES: number;
|
|
6
6
|
export declare const COPY_CHUNK_UNITS = 16384;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
type CopyOutcome = "delivered" | "submitted-unverified" | "failed" | "timed-out" | "superseded" | "canceled";
|
|
8
|
+
type CopyFailure = "size" | "unavailable" | "denied" | "transport" | "unsafe";
|
|
9
9
|
export interface CopyResult {
|
|
10
10
|
readonly outcome: CopyOutcome;
|
|
11
11
|
readonly failure?: CopyFailure;
|
|
@@ -54,3 +54,4 @@ export type CopyHelperOutput = {
|
|
|
54
54
|
readonly result: CopyResult;
|
|
55
55
|
readonly control?: string;
|
|
56
56
|
};
|
|
57
|
+
export {};
|
|
@@ -15,26 +15,13 @@ export interface OwnedResponseCopyExecutor extends ResponseCopyExecutor {
|
|
|
15
15
|
dispose(): void;
|
|
16
16
|
readonly warmed: boolean;
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
interface ResponseCopyTerminal {
|
|
19
19
|
readonly maxBytes?: number;
|
|
20
20
|
/** A supported non-blocking submission boundary, not clipboard acknowledgment. */
|
|
21
21
|
submit(control: string, signal: AbortSignal): Promise<void>;
|
|
22
22
|
}
|
|
23
23
|
/** Never substitute a remote host's native clipboard for the terminal user's clipboard. */
|
|
24
24
|
export declare function responseCopyDestination(env: NodeJS.ProcessEnv): "native" | "terminal";
|
|
25
|
-
/**
|
|
26
|
-
* Spawn options for one operating-system clipboard writer.
|
|
27
|
-
* Platform: on POSIX the writer is detached into its own process group, as pinned Pi 1.4 does, so a writer
|
|
28
|
-
* that daemonizes to keep serving the clipboard is not stopped when Ctrl+Z sends SIGTSTP to the shell's group.
|
|
29
|
-
*/
|
|
30
|
-
export declare function platformClipboardWriteOptions(signal: AbortSignal, platform?: NodeJS.Platform): {
|
|
31
|
-
signal: AbortSignal;
|
|
32
|
-
windowsHide: boolean;
|
|
33
|
-
timeout: number;
|
|
34
|
-
killSignal: "SIGKILL";
|
|
35
|
-
maxBuffer: number;
|
|
36
|
-
detached: boolean;
|
|
37
|
-
};
|
|
38
25
|
/** Isolates preparation and native clipboard access; only the owner may submit terminal controls. */
|
|
39
26
|
export declare function createResponseCopyExecutor(options?: {
|
|
40
27
|
readonly terminal?: ResponseCopyTerminal;
|
|
@@ -52,3 +39,4 @@ export declare function createResponseCopyExecutor(options?: {
|
|
|
52
39
|
}): OwnedResponseCopyExecutor;
|
|
53
40
|
/** A spare-of-one pool of copy helpers; `createResponseCopyExecutor` takes its child and warms the next one after each copy. */
|
|
54
41
|
export declare function createCopyHelperPool(helper?: URL, idleMs?: number): HelperPool;
|
|
42
|
+
export {};
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { execFile, fork } from "node:child_process";
|
|
2
2
|
import { HelperPool } from "./helper-pool.js";
|
|
3
|
-
import { PRODUCT_IDENTITY } from "../../product-identity.js";
|
|
4
3
|
import { COPY_CHUNK_UNITS, COPY_CLEANUP_MS, MAX_COPY_BYTES, MAX_COPY_CONTROL_BYTES } from "./response-copy-protocol.js";
|
|
5
4
|
const PLATFORM_WRITE_TIMEOUT_MS = 1_500;
|
|
6
5
|
/** Never substitute a remote host's native clipboard for the terminal user's clipboard. */
|
|
7
6
|
export function responseCopyDestination(env) {
|
|
8
|
-
return env
|
|
7
|
+
return env.SSH_CONNECTION || env.SSH_CLIENT || env.SSH_TTY || env.TMUX || env.STY || env.WSL_DISTRO_NAME
|
|
9
8
|
? "terminal" : "native";
|
|
10
9
|
}
|
|
11
10
|
function platformClipboardCommands() {
|
|
@@ -26,7 +25,7 @@ function platformClipboardCommands() {
|
|
|
26
25
|
* Platform: on POSIX the writer is detached into its own process group, as pinned Pi 1.4 does, so a writer
|
|
27
26
|
* that daemonizes to keep serving the clipboard is not stopped when Ctrl+Z sends SIGTSTP to the shell's group.
|
|
28
27
|
*/
|
|
29
|
-
|
|
28
|
+
function platformClipboardWriteOptions(signal, platform = process.platform) {
|
|
30
29
|
return {
|
|
31
30
|
signal,
|
|
32
31
|
windowsHide: true,
|
|
@@ -3,14 +3,13 @@ export interface SessionResumeCommandMetadata {
|
|
|
3
3
|
readonly sessionDir: string;
|
|
4
4
|
readonly usesDefaultSessionDir: boolean;
|
|
5
5
|
}
|
|
6
|
-
export declare function formatSessionResumeCommand(metadata: SessionResumeCommandMetadata
|
|
6
|
+
export declare function formatSessionResumeCommand(metadata: SessionResumeCommandMetadata): string;
|
|
7
7
|
export declare function quoteCommandArgument(value: string): string;
|
|
8
|
-
|
|
8
|
+
interface ExitTextInput {
|
|
9
9
|
readonly terminalMode: "regular" | "fullscreen";
|
|
10
10
|
readonly customViewport: boolean;
|
|
11
11
|
readonly exitMode: "transcript" | "resume-hint";
|
|
12
12
|
readonly resume: SessionResumeCommandMetadata | null;
|
|
13
|
-
readonly soloResumeHint?: boolean;
|
|
14
13
|
/** The styled transcript, rendered only when the pinned profile asks for it. */
|
|
15
14
|
readonly transcript: () => string;
|
|
16
15
|
}
|
|
@@ -28,3 +27,4 @@ export declare class SessionStopLatch {
|
|
|
28
27
|
/** The engine stopped on its own: dispose the shell, then resolve whether or not disposal failed. */
|
|
29
28
|
settleAfter(dispose: () => Promise<void>): void;
|
|
30
29
|
}
|
|
30
|
+
export {};
|