@timurproko/a1 0.1.8-dev.50ebb19 → 0.1.8-dev.512
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 +168 -65
- package/bin/activate.js +8 -0
- package/bin/cli.js +33 -11
- package/bin/guardian.js +16 -6
- package/bin/module-identity.js +76 -69
- package/bin/module-resolver.js +138 -0
- package/bin/pinned-pi-public.d.ts +3 -0
- package/bin/pinned-pi-public.js +93 -0
- package/bin/release-cleanup.js +8 -0
- package/bin/supervisor.js +2 -2
- package/bin/sync-pi-tui-proxy.js +7 -0
- package/bin/ui.js +67 -22
- package/bin/update-recovery.js +343 -0
- package/bin/warmup.js +28 -0
- package/dist/app/session-shell/clipboard-diagnostics.d.ts +16 -0
- package/dist/app/session-shell/clipboard-diagnostics.js +65 -0
- package/dist/app/session-shell/clipboard-image.d.ts +11 -0
- package/dist/app/session-shell/clipboard-image.js +38 -0
- package/dist/app/session-shell/editor-hyperlink-budget.d.ts +9 -0
- package/dist/app/session-shell/editor-hyperlink-budget.js +23 -0
- package/dist/app/session-shell/helper-pool.d.ts +33 -0
- package/dist/app/session-shell/helper-pool.js +98 -0
- package/dist/app/session-shell/image-preparation-client.d.ts +20 -0
- package/dist/app/session-shell/image-preparation-client.js +145 -0
- package/dist/app/session-shell/image-preparation.d.ts +18 -0
- package/dist/app/session-shell/image-preparation.js +126 -0
- package/dist/app/session-shell/image-source.d.ts +13 -0
- package/dist/app/session-shell/image-source.js +171 -0
- package/dist/app/session-shell/image-worker.d.ts +17 -0
- package/dist/app/session-shell/image-worker.js +23 -0
- package/dist/app/session-shell/index.d.ts +7 -0
- package/dist/app/session-shell/index.js +4 -0
- package/dist/app/session-shell/paste-executor.d.ts +18 -0
- package/dist/app/session-shell/paste-executor.js +253 -0
- package/dist/app/session-shell/paste-helper.js +173 -0
- package/dist/app/session-shell/paste-preparation-client.d.ts +31 -0
- package/dist/app/session-shell/paste-preparation-client.js +170 -0
- package/dist/app/session-shell/paste-protocol.d.ts +78 -0
- package/dist/app/session-shell/paste-protocol.js +18 -0
- package/dist/app/session-shell/paste-text-preparation.d.ts +6 -0
- package/dist/app/session-shell/paste-text-preparation.js +134 -0
- package/dist/app/session-shell/paste-text-worker.js +12 -0
- package/dist/app/session-shell/paste-types.d.ts +17 -0
- package/dist/app/session-shell/path-chip-presentation.d.ts +7 -0
- package/dist/app/session-shell/path-chip-presentation.js +24 -0
- package/dist/app/session-shell/prompt-chips.d.ts +76 -0
- package/dist/app/session-shell/prompt-chips.js +507 -0
- package/dist/app/session-shell/prompt-history-controller.d.ts +36 -0
- package/dist/app/session-shell/prompt-history-controller.js +170 -0
- package/dist/app/session-shell/prompt-suggestion-controller.d.ts +35 -0
- package/dist/app/session-shell/prompt-suggestion-controller.js +207 -0
- package/dist/app/session-shell/quit-outro-effects.d.ts +29 -0
- package/dist/app/session-shell/quit-outro-effects.js +242 -0
- package/dist/app/session-shell/quit-outro.d.ts +38 -0
- package/dist/app/session-shell/quit-outro.js +98 -0
- package/dist/app/session-shell/response-copy-coordinator.d.ts +27 -0
- package/dist/app/session-shell/response-copy-coordinator.js +187 -0
- package/dist/app/session-shell/response-copy-helper.js +122 -0
- package/dist/app/session-shell/response-copy-protocol.d.ts +56 -0
- package/dist/app/session-shell/response-copy-protocol.js +5 -0
- package/dist/app/session-shell/response-copy-transport.d.ts +39 -0
- package/dist/app/session-shell/response-copy-transport.js +217 -0
- package/dist/app/session-shell/session-shell-root.d.ts +265 -0
- package/dist/app/session-shell/session-shell-root.js +1366 -0
- package/dist/app/session-shell/session-shell.d.ts +59 -0
- package/dist/app/session-shell/session-shell.js +1917 -0
- package/dist/app/session-shell/session-viewport-controller.d.ts +61 -0
- package/dist/app/session-shell/session-viewport-controller.js +597 -0
- package/dist/app/session-shell/stream-presentation-coalescer.d.ts +29 -0
- package/dist/app/session-shell/stream-presentation-coalescer.js +79 -0
- package/dist/app/session-shell/system-clipboard.d.ts +20 -0
- package/dist/app/session-shell/system-clipboard.js +159 -0
- package/dist/app/session-shell/text-paste.d.ts +5 -0
- package/dist/app/session-shell/text-paste.js +16 -0
- package/dist/cli/capabilities.d.ts +6 -0
- package/dist/cli/capabilities.js +7 -0
- package/dist/cli/dispatch.d.ts +46 -0
- package/dist/cli/dispatch.js +261 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.js +4 -0
- package/dist/cli/package-messages.d.ts +26 -0
- package/dist/cli/package-messages.js +71 -0
- package/dist/cli/packages.d.ts +32 -0
- package/dist/cli/packages.js +81 -0
- package/dist/cli/version-stats.d.ts +22 -0
- package/dist/cli/version-stats.js +112 -0
- package/dist/composition/index.d.ts +2 -0
- package/dist/composition/index.js +2 -0
- package/dist/composition/owned-ui.d.ts +37 -0
- package/dist/composition/owned-ui.js +136 -0
- package/dist/composition/settings-route-host.d.ts +7 -0
- package/dist/composition/settings-route-host.js +110 -0
- package/dist/contracts/agent-engine/capability-ports.d.ts +95 -0
- package/dist/contracts/agent-engine/domain-validation.js +107 -0
- package/dist/contracts/agent-engine/domain.d.ts +138 -0
- package/dist/contracts/agent-engine/index.d.ts +11 -0
- package/dist/contracts/agent-engine/index.js +6 -0
- package/dist/contracts/agent-engine/package-ports.d.ts +60 -0
- package/dist/contracts/agent-engine/ports.js +1 -0
- package/dist/contracts/owned-ui/extension-ui.d.ts +310 -0
- package/dist/contracts/owned-ui/image-attachments.d.ts +36 -0
- package/dist/contracts/owned-ui/image-attachments.js +67 -0
- package/dist/contracts/owned-ui/index.d.ts +12 -0
- package/dist/contracts/owned-ui/index.js +8 -0
- package/dist/contracts/owned-ui/model.d.ts +378 -0
- package/dist/contracts/owned-ui/prompt-history.d.ts +55 -0
- package/dist/contracts/owned-ui/prompt-history.js +23 -0
- package/dist/contracts/owned-ui/prompt-suggestions.d.ts +3 -0
- package/dist/contracts/owned-ui/prompt-suggestions.js +44 -0
- package/dist/contracts/owned-ui/suggestion-diagnostics.d.ts +22 -0
- package/dist/contracts/owned-ui/suggestion-diagnostics.js +9 -0
- package/dist/contracts/owned-ui/transcript-lifecycle.d.ts +5 -0
- package/dist/contracts/owned-ui/transcript-lifecycle.js +33 -0
- package/dist/contracts/owned-ui/validation.d.ts +15 -0
- package/dist/contracts/owned-ui/validation.js +523 -0
- package/dist/contracts/presentation/index.d.ts +104 -0
- package/dist/features/launch/development-launch.js +36 -0
- package/dist/features/launch/index.d.ts +12 -0
- package/dist/features/launch/index.js +6 -0
- package/dist/features/launch/intent.d.ts +12 -0
- package/dist/features/launch/intent.js +8 -0
- package/dist/features/launch/prepare-launch.d.ts +11 -0
- package/dist/features/launch/prepare-launch.js +14 -0
- package/dist/features/launch/profile-paths.d.ts +16 -0
- package/dist/features/launch/profile-paths.js +36 -0
- package/dist/features/launch/runtime-selection.d.ts +16 -0
- package/dist/features/launch/runtime-selection.js +13 -0
- package/dist/features/owned-ui/index.d.ts +6 -0
- package/dist/features/owned-ui/index.js +4 -0
- package/dist/features/owned-ui/project-trust-prompt.d.ts +25 -0
- package/dist/features/owned-ui/project-trust-prompt.js +149 -0
- package/dist/features/owned-ui/run.d.ts +17 -0
- package/dist/features/owned-ui/run.js +64 -0
- package/dist/features/owned-ui/session-fork-prompt.d.ts +8 -0
- package/dist/features/owned-ui/session-fork-prompt.js +34 -0
- package/dist/features/owned-ui/settings-app.d.ts +21 -0
- package/dist/features/owned-ui/settings-app.js +807 -0
- package/dist/features/owned-ui/settings-route.d.ts +2 -0
- package/dist/features/owned-ui/settings-route.js +2 -0
- package/dist/features/prompt-history/image-sidecar.d.ts +32 -0
- package/dist/features/prompt-history/image-sidecar.js +130 -0
- package/dist/features/prompt-history/index.d.ts +4 -0
- package/dist/features/prompt-history/index.js +3 -0
- package/dist/features/prompt-history/paths.d.ts +5 -0
- package/dist/features/prompt-history/paths.js +17 -0
- package/dist/features/prompt-history/service.d.ts +54 -0
- package/dist/features/prompt-history/service.js +425 -0
- package/dist/features/prompt-history/store.d.ts +16 -0
- package/dist/features/prompt-history/store.js +219 -0
- package/dist/features/prompt-history/worker.d.ts +9 -0
- package/dist/features/prompt-history/worker.js +45 -0
- package/dist/features/prompt-suggestions/diagnostics.d.ts +18 -0
- package/dist/features/prompt-suggestions/diagnostics.js +82 -0
- package/dist/features/prompt-suggestions/index.d.ts +2 -0
- package/dist/features/prompt-suggestions/index.js +1 -0
- package/dist/foundation/launch-context/index.d.ts +59 -0
- package/dist/foundation/launch-context/index.js +136 -0
- package/dist/foundation/launch-guardian/index.d.ts +2 -0
- package/dist/foundation/launch-guardian/index.js +1 -0
- package/dist/foundation/launch-guardian/main.d.ts +33 -0
- package/dist/foundation/launch-guardian/main.js +180 -0
- package/dist/foundation/lifecycle/commands.js +1 -0
- package/dist/foundation/lifecycle/index.d.ts +11 -0
- package/dist/foundation/lifecycle/index.js +5 -0
- package/dist/foundation/lifecycle/model.d.ts +64 -0
- package/dist/foundation/lifecycle/model.js +40 -0
- package/dist/foundation/lifecycle/paths.d.ts +30 -0
- package/dist/foundation/lifecycle/paths.js +70 -0
- package/dist/foundation/lifecycle/session-selection.d.ts +9 -0
- package/dist/foundation/lifecycle/session-selection.js +39 -0
- package/dist/foundation/lifecycle/supervisor-startup.d.ts +30 -0
- package/dist/foundation/lifecycle/supervisor-startup.js +106 -0
- package/dist/foundation/process-containment/darwin-process-inspector.d.ts +5 -0
- package/dist/foundation/process-containment/darwin-process-inspector.js +7 -0
- package/dist/foundation/process-containment/index.d.ts +8 -0
- package/dist/foundation/process-containment/index.js +6 -0
- package/dist/foundation/process-containment/linux-process-inspector.d.ts +7 -0
- package/dist/foundation/process-containment/linux-process-inspector.js +27 -0
- package/dist/foundation/process-containment/native-guardian-containment.d.ts +17 -0
- package/dist/foundation/process-containment/native-guardian-containment.js +140 -0
- package/dist/foundation/process-containment/windows-process-inspector.d.ts +19 -0
- package/dist/foundation/process-containment/windows-process-inspector.js +56 -0
- package/dist/foundation/protocol/client.d.ts +18 -0
- package/dist/foundation/protocol/client.js +130 -0
- package/dist/foundation/protocol/index.d.ts +3 -0
- package/dist/foundation/protocol/index.js +2 -0
- package/dist/foundation/protocol/messages.d.ts +90 -0
- package/dist/foundation/protocol/messages.js +100 -0
- package/dist/foundation/release/bootstrap.d.ts +51 -0
- package/dist/foundation/release/bootstrap.js +427 -0
- package/dist/foundation/release/cohort-state.d.ts +157 -0
- package/dist/foundation/release/cohort-state.js +472 -0
- package/dist/foundation/release/dependency-certification-retention.d.ts +7 -0
- package/dist/foundation/release/dependency-certification-retention.js +88 -0
- package/dist/foundation/release/dependency-certification.d.ts +24 -0
- package/dist/foundation/release/dependency-certification.js +266 -0
- package/dist/foundation/release/dependency-layer.d.ts +78 -0
- package/dist/foundation/release/dependency-layer.js +466 -0
- package/dist/foundation/release/endpoints.d.ts +24 -0
- package/dist/foundation/release/endpoints.js +134 -0
- package/dist/foundation/release/immutable-platform.d.ts +6 -0
- package/dist/foundation/release/immutable-platform.js +13 -0
- package/dist/foundation/release/index.d.ts +32 -0
- package/dist/foundation/release/index.js +17 -0
- package/dist/foundation/release/release-gc.d.ts +71 -0
- package/dist/foundation/release/release-gc.js +764 -0
- package/dist/foundation/release/release-store.d.ts +49 -0
- package/dist/foundation/release/release-store.js +235 -0
- package/dist/foundation/release/release.d.ts +43 -0
- package/dist/foundation/release/release.js +215 -0
- package/dist/foundation/release/restart-certification.d.ts +68 -0
- package/dist/foundation/release/restart-certification.js +227 -0
- package/dist/foundation/release/types.d.ts +11 -0
- package/dist/foundation/release/types.js +1 -0
- package/dist/foundation/release/update-activation.d.ts +72 -0
- package/dist/foundation/release/update-activation.js +204 -0
- package/dist/foundation/release/update-launch.d.ts +6 -0
- package/dist/foundation/release/update-launch.js +17 -0
- package/dist/foundation/release/update-recovery.d.ts +76 -0
- package/dist/foundation/release/update-recovery.js +356 -0
- package/dist/foundation/release/update-transaction.d.ts +42 -0
- package/dist/foundation/release/update-transaction.js +101 -0
- package/dist/foundation/release/update.d.ts +114 -0
- package/dist/foundation/release/update.js +633 -0
- package/dist/foundation/release/warmup.d.ts +3 -0
- package/dist/foundation/release/warmup.js +47 -0
- package/dist/foundation/startup/index.d.ts +4 -0
- package/dist/foundation/startup/index.js +2 -0
- package/dist/foundation/startup/startup-budget.d.ts +46 -0
- package/dist/foundation/startup/startup-budget.js +42 -0
- package/dist/foundation/startup/startup-descriptor.js +34 -0
- package/dist/foundation/startup/startup-runtime.d.ts +27 -0
- package/dist/foundation/startup/startup-runtime.js +128 -0
- package/dist/foundation/storage/control-store.d.ts +18 -0
- package/dist/foundation/storage/control-store.js +342 -0
- package/dist/foundation/storage/index.d.ts +1 -0
- package/dist/foundation/storage/index.js +1 -0
- package/dist/foundation/supervision/index.d.ts +3 -0
- package/dist/foundation/supervision/index.js +3 -0
- package/dist/foundation/supervision/main.d.ts +1 -0
- package/dist/foundation/supervision/main.js +84 -0
- package/dist/foundation/supervision/paths.d.ts +1 -0
- package/dist/foundation/supervision/paths.js +1 -0
- package/dist/foundation/supervision/server.d.ts +46 -0
- package/dist/foundation/supervision/server.js +573 -0
- package/dist/foundation/terminal-cleanup/fatal-exit.d.ts +12 -0
- package/dist/foundation/terminal-cleanup/fatal-exit.js +87 -0
- package/dist/foundation/terminal-cleanup/index.d.ts +3 -0
- package/dist/foundation/terminal-cleanup/index.js +2 -0
- package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +4 -0
- package/dist/foundation/terminal-cleanup/terminal-reset.js +40 -0
- package/dist/integrations/pi/components/components.d.ts +4 -0
- package/dist/integrations/pi/components/components.js +64 -0
- package/dist/integrations/pi/components/conformance.d.ts +18 -0
- package/dist/integrations/pi/components/conformance.js +70 -0
- package/dist/integrations/pi/components/editor-interaction.d.ts +38 -0
- package/dist/integrations/pi/components/editor-interaction.js +1 -0
- package/dist/integrations/pi/components/history-editor-loader.d.ts +5 -0
- package/dist/integrations/pi/components/history-editor-loader.js +5 -0
- package/dist/integrations/pi/components/index.d.ts +21 -0
- package/dist/integrations/pi/components/index.js +13 -0
- package/dist/integrations/pi/components/owned-editor-ux.d.ts +74 -0
- package/dist/integrations/pi/components/owned-editor-ux.js +1094 -0
- package/dist/integrations/pi/components/path-word-ranges.d.ts +2 -0
- package/dist/integrations/pi/components/path-word-ranges.js +37 -0
- package/dist/integrations/pi/components/prompt-input-port.d.ts +18 -0
- package/dist/integrations/pi/components/prompt-input-port.js +1 -0
- package/dist/integrations/pi/components/resources/builtin-themes.d.ts +167 -0
- package/dist/integrations/pi/components/resources/builtin-themes.js +168 -0
- package/dist/integrations/pi/components/shell-components.d.ts +7 -0
- package/dist/integrations/pi/components/shell-components.js +7 -0
- package/dist/integrations/pi/components/shell-editor-autocomplete.js +298 -0
- package/dist/integrations/pi/components/shell-extension-ui.d.ts +35 -0
- package/dist/integrations/pi/components/shell-extension-ui.js +280 -0
- package/dist/integrations/pi/components/shell-footer-status.d.ts +7 -0
- package/dist/integrations/pi/components/shell-footer-status.js +248 -0
- package/dist/integrations/pi/components/shell-presenters-info.d.ts +43 -0
- package/dist/integrations/pi/components/shell-presenters-info.js +114 -0
- package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +29 -0
- package/dist/integrations/pi/components/shell-presenters-transcript.js +433 -0
- package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +123 -0
- package/dist/integrations/pi/components/shell-selectors-dialogs.js +242 -0
- package/dist/integrations/pi/components/shell-shared-facade.d.ts +217 -0
- package/dist/integrations/pi/components/shell-shared-facade.js +92 -0
- package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +17 -0
- package/dist/integrations/pi/components/submitted-prompt-adapter.js +49 -0
- package/dist/integrations/pi/components/tool-image-presentation.d.ts +21 -0
- package/dist/integrations/pi/components/tool-image-presentation.js +83 -0
- package/dist/integrations/pi/components/tool-result-adapter.d.ts +6 -0
- package/dist/integrations/pi/components/tool-result-adapter.js +27 -0
- package/dist/integrations/pi/components/transcript-image-resolver.d.ts +7 -0
- package/dist/integrations/pi/components/transcript-image-resolver.js +19 -0
- package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +445 -0
- package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.js +370 -0
- package/dist/integrations/pi/components/upstream/assets/earendil-image.json +12 -0
- package/dist/integrations/pi/components/upstream/components/countdown-timer.d.ts +13 -0
- package/dist/integrations/pi/components/upstream/components/daxnuts.d.ts +29 -0
- package/dist/integrations/pi/components/upstream/components/daxnuts.js +146 -0
- package/dist/integrations/pi/components/upstream/components/earendil-announcement.d.ts +4 -0
- package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +48 -0
- package/dist/integrations/pi/components/upstream/components/extension-editor.d.ts +20 -0
- package/dist/integrations/pi/components/upstream/components/extension-editor.js +84 -0
- package/dist/integrations/pi/components/upstream/components/mermaid.js +81 -0
- package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +46 -0
- package/dist/integrations/pi/components/upstream/components/owned-editor.js +187 -0
- package/dist/integrations/pi/components/upstream/components/scoped-models-selector.d.ts +59 -0
- package/dist/integrations/pi/components/upstream/components/scoped-models-selector.js +346 -0
- package/dist/integrations/pi/components/upstream/components/session-footer.d.ts +11 -0
- package/dist/integrations/pi/components/upstream/components/session-footer.js +123 -0
- package/dist/integrations/pi/components/upstream/components/session-selector-search.js +161 -0
- package/dist/integrations/pi/components/upstream/components/session-selector.d.ts +95 -0
- package/dist/integrations/pi/components/upstream/components/session-selector.js +893 -0
- package/dist/integrations/pi/components/upstream/components/skill-invocation-message.d.ts +21 -0
- package/dist/integrations/pi/components/upstream/components/skill-invocation-message.js +46 -0
- package/dist/integrations/pi/components/upstream/components/status-indicator.d.ts +35 -0
- package/dist/integrations/pi/components/upstream/components/status-indicator.js +69 -0
- package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +67 -0
- package/dist/integrations/pi/components/upstream/components/tool-execution.js +365 -0
- package/dist/integrations/pi/components/upstream/components/tree-selector.d.ts +101 -0
- package/dist/integrations/pi/components/upstream/components/tree-selector.js +1275 -0
- package/dist/integrations/pi/components/upstream/components/trust-selector.d.ts +33 -0
- package/dist/integrations/pi/components/upstream/components/trust-selector.js +81 -0
- package/dist/integrations/pi/components/upstream/external-editor.js +43 -0
- package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +289 -0
- package/dist/integrations/pi/components/upstream/history/editor-core.js +2144 -0
- package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +35 -0
- package/dist/integrations/pi/components/upstream/history/kill-ring.js +51 -0
- package/dist/integrations/pi/components/upstream/history/printable-key.d.ts +1 -0
- package/dist/integrations/pi/components/upstream/history/printable-key.js +43 -0
- package/dist/integrations/pi/components/upstream/history/text-helpers.d.ts +14 -0
- package/dist/integrations/pi/components/upstream/history/text-helpers.js +31 -0
- package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +25 -0
- package/dist/integrations/pi/components/upstream/history/undo-stack.js +39 -0
- package/dist/integrations/pi/components/upstream/history/word-navigation.d.ts +24 -0
- package/dist/integrations/pi/components/upstream/history/word-navigation.js +103 -0
- package/dist/integrations/pi/components/upstream/model-search.d.ts +18 -0
- package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +33 -0
- package/dist/integrations/pi/components/upstream/theme/theme-controller.js +114 -0
- package/dist/integrations/pi/components/upstream/theme/theme.d.ts +61 -0
- package/dist/integrations/pi/components/upstream/theme/theme.js +337 -0
- package/dist/integrations/pi/engine/adapter.d.ts +135 -0
- package/dist/integrations/pi/engine/adapter.js +648 -0
- package/dist/integrations/pi/engine/changelog.d.ts +2 -0
- package/dist/integrations/pi/engine/changelog.js +63 -0
- package/dist/integrations/pi/engine/command-dispatch.d.ts +41 -0
- package/dist/integrations/pi/engine/command-dispatch.js +125 -0
- package/dist/integrations/pi/engine/compaction-progress.d.ts +28 -0
- package/dist/integrations/pi/engine/compaction-progress.js +96 -0
- package/dist/integrations/pi/engine/conformance.d.ts +39 -0
- package/dist/integrations/pi/engine/conformance.js +140 -0
- package/dist/integrations/pi/engine/event-delivery.d.ts +100 -0
- package/dist/integrations/pi/engine/event-delivery.js +184 -0
- package/dist/integrations/pi/engine/extension-ui-binding.d.ts +35 -0
- package/dist/integrations/pi/engine/extension-ui-binding.js +81 -0
- package/dist/integrations/pi/engine/http-dispatcher.d.ts +4 -0
- package/dist/integrations/pi/engine/http-dispatcher.js +25 -0
- package/dist/integrations/pi/engine/index.d.ts +18 -0
- package/dist/integrations/pi/engine/index.js +10 -0
- package/dist/integrations/pi/engine/message-values.d.ts +29 -0
- package/dist/integrations/pi/engine/message-values.js +168 -0
- package/dist/integrations/pi/engine/package-integration.d.ts +13 -0
- package/dist/integrations/pi/engine/package-integration.js +118 -0
- package/dist/integrations/pi/engine/pending-delivery.d.ts +30 -0
- package/dist/integrations/pi/engine/pending-delivery.js +156 -0
- package/dist/integrations/pi/engine/pi-settings-metadata.json +385 -0
- package/dist/integrations/pi/engine/project-trust-preflight.d.ts +22 -0
- package/dist/integrations/pi/engine/project-trust-preflight.js +50 -0
- package/dist/integrations/pi/engine/prompt-suggestions.d.ts +30 -0
- package/dist/integrations/pi/engine/prompt-suggestions.js +102 -0
- package/dist/integrations/pi/engine/provider-authentication.d.ts +34 -0
- package/dist/integrations/pi/engine/provider-authentication.js +209 -0
- package/dist/integrations/pi/engine/resource-catalog.d.ts +49 -0
- package/dist/integrations/pi/engine/resource-catalog.js +289 -0
- package/dist/integrations/pi/engine/resources/changelog.json +12 -0
- package/dist/integrations/pi/engine/runtime-integration.d.ts +53 -0
- package/dist/integrations/pi/engine/runtime-integration.js +118 -0
- package/dist/integrations/pi/engine/session-events.d.ts +48 -0
- package/dist/integrations/pi/engine/session-events.js +223 -0
- package/dist/integrations/pi/engine/session-integration.d.ts +67 -0
- package/dist/integrations/pi/engine/session-integration.js +195 -0
- package/dist/integrations/pi/engine/session-runtime.d.ts +84 -0
- package/dist/integrations/pi/engine/session-runtime.js +249 -0
- package/dist/integrations/pi/engine/session-selection.d.ts +28 -0
- package/dist/integrations/pi/engine/session-selection.js +90 -0
- package/dist/integrations/pi/engine/settings-bridge.d.ts +121 -0
- package/dist/integrations/pi/engine/settings-bridge.js +514 -0
- package/dist/integrations/pi/engine/settings-metadata.d.ts +31 -0
- package/dist/integrations/pi/engine/settings-metadata.js +67 -0
- package/dist/integrations/pi/engine/settings-port.d.ts +42 -0
- package/dist/integrations/pi/engine/settings-port.js +353 -0
- package/dist/integrations/pi/engine/tool-rendering.d.ts +13 -0
- package/dist/integrations/pi/engine/tool-rendering.js +145 -0
- package/dist/integrations/pi/engine/transcript-image-assets.d.ts +11 -0
- package/dist/integrations/pi/engine/transcript-image-assets.js +86 -0
- package/dist/integrations/pi/engine/transcript-projection.d.ts +39 -0
- package/dist/integrations/pi/engine/transcript-projection.js +405 -0
- package/dist/integrations/pi/engine/usage-view.d.ts +4 -0
- package/dist/integrations/pi/engine/usage-view.js +56 -0
- package/dist/integrations/pi/engine/windows-filesystem-hygiene.d.ts +21 -0
- package/dist/integrations/pi/engine/windows-filesystem-hygiene.js +55 -0
- package/dist/integrations/pi/engine/workflow-contexts.d.ts +59 -0
- package/dist/integrations/pi/engine/workflow-contexts.js +316 -0
- package/dist/integrations/pi/engine/workflow-runner.d.ts +60 -0
- package/dist/integrations/pi/engine/workflow-runner.js +509 -0
- package/dist/integrations/pi/engine/workflow-support.d.ts +33 -0
- package/dist/integrations/pi/engine/workflow-support.js +352 -0
- package/dist/integrations/pi/engine/workflows.d.ts +251 -0
- package/dist/integrations/pi/engine/workflows.js +63 -0
- package/dist/integrations/pi/startup-public.d.ts +2 -0
- package/dist/integrations/pi/startup-public.js +2223 -0
- package/dist/integrations/pi/startup-public.manifest.json +12502 -0
- package/dist/integrations/pi/tui-runtime/adapter.d.ts +56 -0
- package/dist/integrations/pi/tui-runtime/adapter.js +783 -0
- package/dist/integrations/pi/tui-runtime/contracts.d.ts +156 -0
- package/dist/integrations/pi/tui-runtime/contracts.js +1 -0
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +88 -0
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +433 -0
- package/dist/integrations/pi/tui-runtime/index.d.ts +9 -0
- package/dist/integrations/pi/tui-runtime/index.js +5 -0
- package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +39 -0
- package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.js +139 -0
- package/dist/integrations/pi/tui-runtime/mouse-report-input.d.ts +13 -0
- package/dist/integrations/pi/tui-runtime/mouse-report-input.js +57 -0
- package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +32 -0
- package/dist/integrations/pi/tui-runtime/overlay-geometry.js +158 -0
- package/dist/integrations/pi/tui-runtime/presentation-adapter.d.ts +4 -0
- package/dist/integrations/pi/tui-runtime/presentation-adapter.js +48 -0
- package/dist/native/darwin-arm64/manifest.json +4 -4
- package/dist/native/darwin-arm64/process-guardian +0 -0
- package/dist/native/linux-x64/manifest.json +3 -3
- package/dist/native/linux-x64/process-guardian +0 -0
- package/dist/native/win32-x64/manifest.json +3 -3
- package/dist/native/win32-x64/process-guardian.exe +0 -0
- package/dist/product-identity.d.ts +37 -0
- package/dist/product-identity.js +119 -0
- package/dist/product-identity.json +85 -0
- package/dist/runtime-payload-inventory.json +127148 -0
- package/dist/ui/apps/contracts.d.ts +64 -0
- package/dist/ui/apps/host.d.ts +42 -0
- package/dist/ui/apps/host.js +156 -0
- package/dist/ui/apps/index.d.ts +5 -0
- package/dist/ui/apps/index.js +3 -0
- package/dist/ui/apps/registry.d.ts +12 -0
- package/dist/ui/apps/registry.js +33 -0
- package/dist/ui/components/dialog-panel.js +49 -0
- package/dist/ui/components/frame.d.ts +22 -0
- package/dist/ui/components/frame.js +55 -0
- package/dist/ui/components/index.d.ts +47 -0
- package/dist/ui/components/index.js +25 -0
- package/dist/ui/components/line-input.d.ts +68 -0
- package/dist/ui/components/line-input.js +224 -0
- package/dist/ui/components/list-view.d.ts +60 -0
- package/dist/ui/components/list-view.js +82 -0
- package/dist/ui/components/mouse.d.ts +25 -0
- package/dist/ui/components/mouse.js +70 -0
- package/dist/ui/components/progress-status.d.ts +2 -0
- package/dist/ui/components/progress-status.js +4 -0
- package/dist/ui/components/prompt-input.d.ts +32 -0
- package/dist/ui/components/prompt-input.js +51 -0
- package/dist/ui/components/scrollbar.d.ts +88 -0
- package/dist/ui/components/scrollbar.js +137 -0
- package/dist/ui/components/selection-copy.d.ts +24 -0
- package/dist/ui/components/selection-copy.js +39 -0
- package/dist/ui/components/shortcuts.d.ts +58 -0
- package/dist/ui/components/shortcuts.js +82 -0
- package/dist/ui/components/spans.d.ts +28 -0
- package/dist/ui/components/spans.js +266 -0
- package/dist/ui/components/submitted-prompt.d.ts +23 -0
- package/dist/ui/components/submitted-prompt.js +50 -0
- package/dist/ui/components/surface.d.ts +20 -0
- package/dist/ui/components/surface.js +44 -0
- package/dist/ui/components/text-selection.d.ts +62 -0
- package/dist/ui/components/text-selection.js +210 -0
- package/dist/ui/components/text.d.ts +38 -0
- package/dist/ui/components/text.js +185 -0
- package/dist/ui/components/transcript-viewport.d.ts +173 -0
- package/dist/ui/components/transcript-viewport.js +753 -0
- package/dist/ui/components/visible-hyperlinks.d.ts +26 -0
- package/dist/ui/components/visible-hyperlinks.js +97 -0
- package/dist/ui/settings/declarations.d.ts +141 -0
- package/dist/ui/settings/declarations.js +135 -0
- package/dist/ui/settings/index.d.ts +10 -0
- package/dist/ui/settings/index.js +5 -0
- package/dist/ui/settings/manager.d.ts +54 -0
- package/dist/ui/settings/manager.js +256 -0
- package/dist/ui/settings/migrations.d.ts +13 -0
- package/dist/ui/settings/migrations.js +74 -0
- package/dist/ui/settings/sections.d.ts +52 -0
- package/dist/ui/settings/sections.js +112 -0
- package/docs/architecture/boundaries.md +17 -13
- package/docs/architecture/code-documentation.md +77 -0
- package/docs/architecture/history-editor-provenance.md +100 -0
- package/docs/architecture/internal-naming.md +93 -0
- package/docs/architecture/process-guardian-provenance.md +3 -1
- package/docs/architecture/project-structure.md +69 -30
- package/docs/architecture/prompt-suggestions.md +68 -0
- package/docs/architecture/resource-and-data-policy.md +28 -2
- package/docs/architecture/response-copy-delivery.md +85 -0
- package/docs/architecture/terminal-host-proof-gate.md +1 -1
- package/docs/architecture/terminal-host-spike-evidence.md +1 -1
- package/docs/architecture/tool-image-presentation.md +62 -0
- package/docs/architecture/toolchain.md +32 -10
- package/docs/architecture/ui-reference-provenance.md +60 -6
- package/docs/ci-release-runbook.md +256 -79
- package/docs/features/launch-profiles.md +24 -17
- package/docs/features/modal-content-interaction.md +37 -0
- package/docs/features/prompt-history.md +149 -0
- package/docs/local-worktree-cleanup.md +212 -0
- package/docs/manual-code-streaming-cleanup.md +88 -0
- package/docs/manual-ghost-link-baseline.md +89 -0
- package/docs/manual-launch-instance-acceptance.md +12 -35
- package/docs/manual-owned-ui-checkpoint.md +79 -0
- package/docs/manual-pi-boundary-candidate.md +4 -5
- package/docs/manual-terminal-colour-check.md +4 -3
- package/docs/openspec-archive-automation.md +259 -0
- package/docs/repository-governance-live-acceptance.md +77 -0
- package/docs/validation.md +100 -0
- package/package.json +52 -34
- package/dist/src/cli/capabilities.d.ts +0 -15
- package/dist/src/cli/capabilities.js +0 -7
- package/dist/src/cli/dispatch.d.ts +0 -32
- package/dist/src/cli/dispatch.js +0 -142
- package/dist/src/cli/index.d.ts +0 -5
- package/dist/src/cli/index.js +0 -5
- package/dist/src/cli/packages.d.ts +0 -23
- package/dist/src/cli/packages.js +0 -84
- package/dist/src/cli/version-stats.d.ts +0 -16
- package/dist/src/cli/version-stats.js +0 -72
- package/dist/src/cli/version.d.ts +0 -2
- package/dist/src/cli/version.js +0 -23
- package/dist/src/composition/index.d.ts +0 -48
- package/dist/src/composition/index.js +0 -258
- package/dist/src/features/launch/development-launch.js +0 -28
- package/dist/src/features/launch/index.d.ts +0 -7
- package/dist/src/features/launch/index.js +0 -7
- package/dist/src/features/launch/intent.d.ts +0 -7
- package/dist/src/features/launch/intent.js +0 -4
- package/dist/src/features/launch/prepare-launch.d.ts +0 -13
- package/dist/src/features/launch/prepare-launch.js +0 -21
- package/dist/src/features/launch/profile-paths.d.ts +0 -15
- package/dist/src/features/launch/profile-paths.js +0 -31
- package/dist/src/features/launch/profiles.d.ts +0 -12
- package/dist/src/features/launch/profiles.js +0 -26
- package/dist/src/features/launch/runtime-selection.d.ts +0 -19
- package/dist/src/features/launch/runtime-selection.js +0 -13
- package/dist/src/features/owned-ui/customization.d.ts +0 -38
- package/dist/src/features/owned-ui/customization.js +0 -108
- package/dist/src/features/owned-ui/diagnostics.d.ts +0 -33
- package/dist/src/features/owned-ui/diagnostics.js +0 -94
- package/dist/src/features/owned-ui/index.d.ts +0 -4
- package/dist/src/features/owned-ui/index.js +0 -4
- package/dist/src/features/owned-ui/run.d.ts +0 -11
- package/dist/src/features/owned-ui/run.js +0 -15
- package/dist/src/features/owned-ui/settings-app.d.ts +0 -22
- package/dist/src/features/owned-ui/settings-app.js +0 -633
- package/dist/src/features/workspace/capabilities.d.ts +0 -31
- package/dist/src/features/workspace/capabilities.js +0 -75
- package/dist/src/features/workspace/index.d.ts +0 -6
- package/dist/src/features/workspace/index.js +0 -6
- package/dist/src/features/workspace/presentation.d.ts +0 -30
- package/dist/src/features/workspace/presentation.js +0 -70
- package/dist/src/features/workspace/reconciliation.d.ts +0 -15
- package/dist/src/features/workspace/reconciliation.js +0 -82
- package/dist/src/features/workspace/reducer.d.ts +0 -42
- package/dist/src/features/workspace/reducer.js +0 -213
- package/dist/src/features/workspace/router.d.ts +0 -31
- package/dist/src/features/workspace/router.js +0 -124
- package/dist/src/features/workspace/store.d.ts +0 -17
- package/dist/src/features/workspace/store.js +0 -54
- package/dist/src/foundation/agent-engine-contracts/capability-ports.d.ts +0 -95
- package/dist/src/foundation/agent-engine-contracts/domain-validation.js +0 -89
- package/dist/src/foundation/agent-engine-contracts/domain.d.ts +0 -116
- package/dist/src/foundation/agent-engine-contracts/index.d.ts +0 -8
- package/dist/src/foundation/agent-engine-contracts/index.js +0 -8
- package/dist/src/foundation/agent-engine-contracts/package-ports.d.ts +0 -54
- package/dist/src/foundation/launch-guardian/index.d.ts +0 -1
- package/dist/src/foundation/launch-guardian/index.js +0 -1
- package/dist/src/foundation/launch-guardian/main.d.ts +0 -31
- package/dist/src/foundation/launch-guardian/main.js +0 -165
- package/dist/src/foundation/lifecycle/index.d.ts +0 -4
- package/dist/src/foundation/lifecycle/index.js +0 -4
- package/dist/src/foundation/lifecycle/model.d.ts +0 -64
- package/dist/src/foundation/lifecycle/model.js +0 -40
- package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
- package/dist/src/foundation/lifecycle/paths.js +0 -42
- package/dist/src/foundation/native-host-protocol/codec.d.ts +0 -11
- package/dist/src/foundation/native-host-protocol/codec.js +0 -56
- package/dist/src/foundation/native-host-protocol/evidence.d.ts +0 -67
- package/dist/src/foundation/native-host-protocol/evidence.js +0 -141
- package/dist/src/foundation/native-host-protocol/index.d.ts +0 -4
- package/dist/src/foundation/native-host-protocol/index.js +0 -4
- package/dist/src/foundation/native-host-protocol/messages.d.ts +0 -56
- package/dist/src/foundation/native-host-protocol/messages.js +0 -149
- package/dist/src/foundation/native-host-protocol/proof-gate.d.ts +0 -13
- package/dist/src/foundation/native-host-protocol/proof-gate.js +0 -33
- package/dist/src/foundation/owned-ui-contracts/extension-ui.d.ts +0 -302
- package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -3
- package/dist/src/foundation/owned-ui-contracts/index.js +0 -3
- package/dist/src/foundation/owned-ui-contracts/model.d.ts +0 -241
- package/dist/src/foundation/owned-ui-contracts/validation.d.ts +0 -11
- package/dist/src/foundation/owned-ui-contracts/validation.js +0 -395
- package/dist/src/foundation/owned-ui-settings/declarations.d.ts +0 -13
- package/dist/src/foundation/owned-ui-settings/declarations.js +0 -39
- package/dist/src/foundation/owned-ui-settings/index.d.ts +0 -6
- package/dist/src/foundation/owned-ui-settings/index.js +0 -6
- package/dist/src/foundation/owned-ui-settings/migrations.d.ts +0 -13
- package/dist/src/foundation/owned-ui-settings/migrations.js +0 -28
- package/dist/src/foundation/owned-ui-settings/sections.d.ts +0 -70
- package/dist/src/foundation/owned-ui-settings/sections.js +0 -93
- package/dist/src/foundation/owned-ui-settings/session.d.ts +0 -44
- package/dist/src/foundation/owned-ui-settings/session.js +0 -145
- package/dist/src/foundation/owned-ui-settings/store.d.ts +0 -28
- package/dist/src/foundation/owned-ui-settings/store.js +0 -90
- package/dist/src/foundation/pi-component-adapter/components.d.ts +0 -4
- package/dist/src/foundation/pi-component-adapter/components.js +0 -64
- package/dist/src/foundation/pi-component-adapter/conformance.d.ts +0 -17
- package/dist/src/foundation/pi-component-adapter/conformance.js +0 -69
- package/dist/src/foundation/pi-component-adapter/index.d.ts +0 -13
- package/dist/src/foundation/pi-component-adapter/index.js +0 -13
- package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.d.ts +0 -165
- package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.js +0 -166
- package/dist/src/foundation/pi-component-adapter/shell-components.d.ts +0 -6
- package/dist/src/foundation/pi-component-adapter/shell-components.js +0 -6
- package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +0 -162
- package/dist/src/foundation/pi-component-adapter/shell-extension-ui.d.ts +0 -35
- package/dist/src/foundation/pi-component-adapter/shell-extension-ui.js +0 -279
- package/dist/src/foundation/pi-component-adapter/shell-footer-status.d.ts +0 -7
- package/dist/src/foundation/pi-component-adapter/shell-footer-status.js +0 -189
- package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -57
- package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.js +0 -429
- package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts +0 -113
- package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js +0 -235
- package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -116
- package/dist/src/foundation/pi-component-adapter/shell-shared-facade.js +0 -87
- package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.d.ts +0 -422
- package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.js +0 -296
- package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.d.ts +0 -10
- package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.d.ts +0 -17
- package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.js +0 -51
- package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.d.ts +0 -22
- package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.js +0 -142
- package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.d.ts +0 -4
- package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +0 -19
- package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.d.ts +0 -17
- package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.js +0 -81
- package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.d.ts +0 -24
- package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.js +0 -105
- package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.d.ts +0 -2
- package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.js +0 -18
- package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.js +0 -77
- package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +0 -18
- package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +0 -55
- package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.d.ts +0 -55
- package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.js +0 -342
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.d.ts +0 -10
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.js +0 -120
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.js +0 -159
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.d.ts +0 -95
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.js +0 -889
- package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.d.ts +0 -19
- package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.js +0 -44
- package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.d.ts +0 -30
- package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.js +0 -59
- package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.d.ts +0 -98
- package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.js +0 -1272
- package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.d.ts +0 -33
- package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.js +0 -76
- package/dist/src/foundation/pi-component-adapter/upstream/external-editor.js +0 -39
- package/dist/src/foundation/pi-component-adapter/upstream/model-search.d.ts +0 -15
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.d.ts +0 -25
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.js +0 -117
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.d.ts +0 -61
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.js +0 -326
- package/dist/src/foundation/pi-engine-adapter/adapter.d.ts +0 -164
- package/dist/src/foundation/pi-engine-adapter/adapter.js +0 -2367
- package/dist/src/foundation/pi-engine-adapter/conformance.d.ts +0 -37
- package/dist/src/foundation/pi-engine-adapter/conformance.js +0 -130
- package/dist/src/foundation/pi-engine-adapter/index.d.ts +0 -10
- package/dist/src/foundation/pi-engine-adapter/index.js +0 -10
- package/dist/src/foundation/pi-engine-adapter/model-auth-integration.d.ts +0 -30
- package/dist/src/foundation/pi-engine-adapter/model-auth-integration.js +0 -61
- package/dist/src/foundation/pi-engine-adapter/package-integration.d.ts +0 -13
- package/dist/src/foundation/pi-engine-adapter/package-integration.js +0 -112
- package/dist/src/foundation/pi-engine-adapter/pi-settings-metadata.json +0 -374
- package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.d.ts +0 -31
- package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.js +0 -80
- package/dist/src/foundation/pi-engine-adapter/runtime-integration.d.ts +0 -35
- package/dist/src/foundation/pi-engine-adapter/runtime-integration.js +0 -67
- package/dist/src/foundation/pi-engine-adapter/session-integration.d.ts +0 -43
- package/dist/src/foundation/pi-engine-adapter/session-integration.js +0 -97
- package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +0 -55
- package/dist/src/foundation/pi-engine-adapter/settings-integration.js +0 -233
- package/dist/src/foundation/pi-engine-adapter/workflow-controllers.d.ts +0 -20
- package/dist/src/foundation/pi-engine-adapter/workflow-controllers.js +0 -48
- package/dist/src/foundation/pi-engine-adapter/workflows.d.ts +0 -173
- package/dist/src/foundation/pi-engine-adapter/workflows.js +0 -60
- package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +0 -2
- package/dist/src/foundation/pi-owned-ui-integration/index.js +0 -2
- package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +0 -29
- package/dist/src/foundation/pi-owned-ui-integration/session-shell.d.ts +0 -106
- package/dist/src/foundation/pi-owned-ui-integration/session-shell.js +0 -1518
- package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts +0 -39
- package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js +0 -493
- package/dist/src/foundation/pi-tui-runtime-adapter/conformance.d.ts +0 -18
- package/dist/src/foundation/pi-tui-runtime-adapter/conformance.js +0 -145
- package/dist/src/foundation/pi-tui-runtime-adapter/contracts.d.ts +0 -120
- package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +0 -4
- package/dist/src/foundation/pi-tui-runtime-adapter/index.js +0 -4
- package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.d.ts +0 -4
- package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.js +0 -48
- package/dist/src/foundation/presentation-contracts/index.d.ts +0 -96
- package/dist/src/foundation/process-containment/index.d.ts +0 -5
- package/dist/src/foundation/process-containment/index.js +0 -5
- package/dist/src/foundation/process-containment/linux-process-inspector.d.ts +0 -6
- package/dist/src/foundation/process-containment/linux-process-inspector.js +0 -26
- package/dist/src/foundation/process-containment/native-guardian-containment.d.ts +0 -16
- package/dist/src/foundation/process-containment/native-guardian-containment.js +0 -139
- package/dist/src/foundation/process-containment/windows-process-inspector.d.ts +0 -17
- package/dist/src/foundation/process-containment/windows-process-inspector.js +0 -53
- package/dist/src/foundation/protocol/client.d.ts +0 -17
- package/dist/src/foundation/protocol/client.js +0 -129
- package/dist/src/foundation/protocol/index.d.ts +0 -2
- package/dist/src/foundation/protocol/index.js +0 -2
- package/dist/src/foundation/protocol/messages.d.ts +0 -89
- package/dist/src/foundation/protocol/messages.js +0 -99
- package/dist/src/foundation/release/bootstrap.d.ts +0 -29
- package/dist/src/foundation/release/bootstrap.js +0 -335
- package/dist/src/foundation/release/cohort-state.d.ts +0 -70
- package/dist/src/foundation/release/cohort-state.js +0 -202
- package/dist/src/foundation/release/index.d.ts +0 -10
- package/dist/src/foundation/release/index.js +0 -10
- package/dist/src/foundation/release/release-gc.d.ts +0 -5
- package/dist/src/foundation/release/release-gc.js +0 -16
- package/dist/src/foundation/release/release-store.d.ts +0 -43
- package/dist/src/foundation/release/release-store.js +0 -175
- package/dist/src/foundation/release/release.d.ts +0 -38
- package/dist/src/foundation/release/release.js +0 -204
- package/dist/src/foundation/release/update-transaction.d.ts +0 -31
- package/dist/src/foundation/release/update-transaction.js +0 -89
- package/dist/src/foundation/release/update.d.ts +0 -82
- package/dist/src/foundation/release/update.js +0 -527
- package/dist/src/foundation/storage/control-store.d.ts +0 -61
- package/dist/src/foundation/storage/control-store.js +0 -530
- package/dist/src/foundation/storage/index.d.ts +0 -1
- package/dist/src/foundation/storage/index.js +0 -1
- package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts +0 -46
- package/dist/src/foundation/structured-agent-runtime/backpressure.js +0 -118
- package/dist/src/foundation/structured-agent-runtime/commands.d.ts +0 -52
- package/dist/src/foundation/structured-agent-runtime/commands.js +0 -164
- package/dist/src/foundation/structured-agent-runtime/handshake.d.ts +0 -41
- package/dist/src/foundation/structured-agent-runtime/handshake.js +0 -151
- package/dist/src/foundation/structured-agent-runtime/index.d.ts +0 -5
- package/dist/src/foundation/structured-agent-runtime/index.js +0 -5
- package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts +0 -37
- package/dist/src/foundation/structured-agent-runtime/reconnection.js +0 -129
- package/dist/src/foundation/structured-agent-runtime/state.d.ts +0 -56
- package/dist/src/foundation/structured-agent-runtime/state.js +0 -118
- package/dist/src/foundation/supervision/index.d.ts +0 -3
- package/dist/src/foundation/supervision/index.js +0 -3
- package/dist/src/foundation/supervision/main.d.ts +0 -1
- package/dist/src/foundation/supervision/main.js +0 -41
- package/dist/src/foundation/supervision/paths.d.ts +0 -1
- package/dist/src/foundation/supervision/paths.js +0 -1
- package/dist/src/foundation/supervision/server.d.ts +0 -22
- package/dist/src/foundation/supervision/server.js +0 -451
- package/dist/src/foundation/ui-apps/contracts.d.ts +0 -42
- package/dist/src/foundation/ui-apps/host.d.ts +0 -42
- package/dist/src/foundation/ui-apps/host.js +0 -152
- package/dist/src/foundation/ui-apps/index.d.ts +0 -3
- package/dist/src/foundation/ui-apps/index.js +0 -3
- package/dist/src/foundation/ui-apps/registry.d.ts +0 -11
- package/dist/src/foundation/ui-apps/registry.js +0 -32
- package/dist/src/foundation/ui-components/dialog-panel.js +0 -47
- package/dist/src/foundation/ui-components/frame.d.ts +0 -21
- package/dist/src/foundation/ui-components/frame.js +0 -54
- package/dist/src/foundation/ui-components/index.d.ts +0 -18
- package/dist/src/foundation/ui-components/index.js +0 -18
- package/dist/src/foundation/ui-components/line-input.d.ts +0 -74
- package/dist/src/foundation/ui-components/line-input.js +0 -245
- package/dist/src/foundation/ui-components/list-view.d.ts +0 -66
- package/dist/src/foundation/ui-components/list-view.js +0 -76
- package/dist/src/foundation/ui-components/mouse.d.ts +0 -15
- package/dist/src/foundation/ui-components/mouse.js +0 -46
- package/dist/src/foundation/ui-components/scrollbar.d.ts +0 -62
- package/dist/src/foundation/ui-components/scrollbar.js +0 -102
- package/dist/src/foundation/ui-components/shortcuts.d.ts +0 -57
- package/dist/src/foundation/ui-components/shortcuts.js +0 -81
- package/dist/src/foundation/ui-components/spans.d.ts +0 -7
- package/dist/src/foundation/ui-components/spans.js +0 -59
- package/dist/src/foundation/ui-components/surface.d.ts +0 -20
- package/dist/src/foundation/ui-components/surface.js +0 -38
- package/dist/src/foundation/ui-components/text.d.ts +0 -24
- package/dist/src/foundation/ui-components/text.js +0 -123
- package/dist/src/foundation/workspace-contracts/index.d.ts +0 -2
- package/dist/src/foundation/workspace-contracts/index.js +0 -2
- package/dist/src/foundation/workspace-contracts/model.d.ts +0 -248
- package/dist/src/foundation/workspace-contracts/model.js +0 -2
- package/dist/src/foundation/workspace-contracts/validation.d.ts +0 -13
- package/dist/src/foundation/workspace-contracts/validation.js +0 -335
- package/dist/src/product-identity.d.ts +0 -37
- package/dist/src/product-identity.js +0 -150
- package/dist/src/product-identity.json +0 -99
- package/docs/manual-transparent-checkpoint.md +0 -53
- /package/dist/{src/foundation/agent-engine-contracts/domain.js → app/session-shell/paste-helper.d.ts} +0 -0
- /package/dist/{src/foundation/agent-engine-contracts/ports.js → app/session-shell/paste-text-worker.d.ts} +0 -0
- /package/dist/{src/foundation/lifecycle/commands.js → app/session-shell/paste-types.js} +0 -0
- /package/dist/{src/foundation/pi-owned-ui-integration/route-host.js → app/session-shell/response-copy-helper.d.ts} +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.d.ts +0 -0
- /package/dist/{src/foundation/pi-tui-runtime-adapter/contracts.js → contracts/agent-engine/domain.js} +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
- /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
- /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
- /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.js +0 -0
- /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
- /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
- /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
- /package/dist/{src/foundation → foundation}/release/cohort-selection.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/release/cohort-selection.js +0 -0
- /package/dist/{src/foundation → foundation}/release/concurrency.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/release/concurrency.js +0 -0
- /package/dist/{src/foundation → foundation}/release/process-cleanup.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/release/process-cleanup.js +0 -0
- /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-editor-autocomplete.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
- /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/label.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/label.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/list-block.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/list-block.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/pane.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/pane.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/revision.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/revision.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/theme.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/theme.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/value-menu.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/value-menu.js +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One scrollbar for every scrollable surface. Hover and drag belong to a named
|
|
3
|
+
* rail rather than to a global, because two scrollable surfaces can be visible
|
|
4
|
+
* at once and a shared flag lights up the wrong one.
|
|
5
|
+
*/
|
|
6
|
+
/** Wheel distance: normal (3), fast (6), high as normal + fast (9). */
|
|
7
|
+
export function scrollbarWheelRows(speed) {
|
|
8
|
+
return speed === "high" ? 9 : speed === "fast" ? 6 : 3;
|
|
9
|
+
}
|
|
10
|
+
/** Selection edge distance uses the same configured rate as a wheel event. */
|
|
11
|
+
export function scrollbarSelectionRows(speed) {
|
|
12
|
+
return scrollbarWheelRows(speed);
|
|
13
|
+
}
|
|
14
|
+
/** Pure appearance decision; activity time is supplied so tests own the clock. */
|
|
15
|
+
export function scrollbarPresentation(input) {
|
|
16
|
+
const overflowing = input.geometry !== null;
|
|
17
|
+
// Invariant: auto/always reserve the final rail cell even while content fits.
|
|
18
|
+
// The blank gutter prevents prompt timestamps from touching the terminal edge
|
|
19
|
+
// and keeps later scrollbar appearance from reflowing the transcript.
|
|
20
|
+
const reservesSpace = input.appearance !== "hidden";
|
|
21
|
+
const visible = overflowing && reservesSpace && (input.appearance === "always"
|
|
22
|
+
|| input.hovered
|
|
23
|
+
|| input.dragging
|
|
24
|
+
|| (input.activeUntil > 0 && input.now <= input.activeUntil));
|
|
25
|
+
const thick = input.style === "thick";
|
|
26
|
+
return {
|
|
27
|
+
visible,
|
|
28
|
+
reservesSpace,
|
|
29
|
+
trackGlyph: thick ? "┃" : "│",
|
|
30
|
+
thumbGlyph: thick || input.hovered || input.dragging ? "┃" : "│",
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/** Null when the content fits: no scrollbar is drawn and no width is reserved. */
|
|
34
|
+
export function scrollbarGeometry(input) {
|
|
35
|
+
const { contentLength, viewportHeight, trackHeight } = input;
|
|
36
|
+
if (trackHeight <= 0 || viewportHeight <= 0)
|
|
37
|
+
return null;
|
|
38
|
+
if (contentLength <= viewportHeight)
|
|
39
|
+
return null;
|
|
40
|
+
const maxScroll = contentLength - viewportHeight;
|
|
41
|
+
const scroll = Math.min(Math.max(input.scroll, 0), maxScroll);
|
|
42
|
+
const thumbHeight = Math.max(1, Math.min(trackHeight, Math.round(trackHeight * viewportHeight / contentLength)));
|
|
43
|
+
const travel = trackHeight - thumbHeight;
|
|
44
|
+
const thumbTop = maxScroll === 0 ? 0 : Math.min(travel, Math.round(travel * scroll / maxScroll));
|
|
45
|
+
return { trackHeight, thumbHeight, thumbTop, maxScroll };
|
|
46
|
+
}
|
|
47
|
+
export function scrollbarReservesSpace(geometry) {
|
|
48
|
+
return geometry !== null;
|
|
49
|
+
}
|
|
50
|
+
/** True when this track row is part of the thumb. */
|
|
51
|
+
export function isThumbRow(geometry, trackRow) {
|
|
52
|
+
if (geometry === null)
|
|
53
|
+
return false;
|
|
54
|
+
return trackRow >= geometry.thumbTop && trackRow < geometry.thumbTop + geometry.thumbHeight;
|
|
55
|
+
}
|
|
56
|
+
/** Scroll position for a thumb dragged to a track row. */
|
|
57
|
+
export function scrollForThumbRow(geometry, trackRow) {
|
|
58
|
+
if (geometry === null)
|
|
59
|
+
return 0;
|
|
60
|
+
const travel = geometry.trackHeight - geometry.thumbHeight;
|
|
61
|
+
if (travel <= 0)
|
|
62
|
+
return 0;
|
|
63
|
+
const clamped = Math.min(Math.max(trackRow, 0), travel);
|
|
64
|
+
return Math.round(clamped * geometry.maxScroll / travel);
|
|
65
|
+
}
|
|
66
|
+
/** Scroll position after paging on the track above or below the thumb. */
|
|
67
|
+
export function scrollForTrackPage(geometry, trackRow, scroll, viewportHeight) {
|
|
68
|
+
if (geometry === null)
|
|
69
|
+
return scroll;
|
|
70
|
+
const page = Math.max(1, viewportHeight);
|
|
71
|
+
const next = trackRow < geometry.thumbTop ? scroll - page : scroll + page;
|
|
72
|
+
return Math.min(Math.max(next, 0), geometry.maxScroll);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Hover and drag state for every rail on screen. State is keyed by rail, so a
|
|
76
|
+
* pointer over one rail cannot make another appear hot, and a drag started on
|
|
77
|
+
* one rail cannot be continued by a report addressed to another.
|
|
78
|
+
*/
|
|
79
|
+
export class ScrollbarRails {
|
|
80
|
+
#hovered = new Set();
|
|
81
|
+
#activeUntil = new Map();
|
|
82
|
+
#dragging;
|
|
83
|
+
noteActivity(key, now, lingerMs = 900) {
|
|
84
|
+
this.#activeUntil.set(key, Math.max(this.#activeUntil.get(key) ?? 0, now + Math.max(0, lingerMs)));
|
|
85
|
+
}
|
|
86
|
+
isRecentlyActive(key, now) {
|
|
87
|
+
return now <= (this.#activeUntil.get(key) ?? 0);
|
|
88
|
+
}
|
|
89
|
+
isHovered(key) {
|
|
90
|
+
return this.#hovered.has(key);
|
|
91
|
+
}
|
|
92
|
+
isDragging(key) {
|
|
93
|
+
return this.#dragging?.key === key;
|
|
94
|
+
}
|
|
95
|
+
get draggingKey() {
|
|
96
|
+
return this.#dragging?.key ?? null;
|
|
97
|
+
}
|
|
98
|
+
/** Records the pointer position. Returns the rail it is over, if any. */
|
|
99
|
+
notePointer(rails, pointer) {
|
|
100
|
+
this.#hovered.clear();
|
|
101
|
+
for (const rail of rails) {
|
|
102
|
+
if (pointer.column !== rail.column)
|
|
103
|
+
continue;
|
|
104
|
+
const trackRow = pointer.row - rail.rowStart;
|
|
105
|
+
if (trackRow < 0 || trackRow >= rail.trackHeight)
|
|
106
|
+
continue;
|
|
107
|
+
this.#hovered.add(rail.key);
|
|
108
|
+
return rail.key;
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
/** Starts a drag when the pointer is on that rail's thumb. */
|
|
113
|
+
beginDrag(rail, geometry, pointer) {
|
|
114
|
+
if (geometry === null || pointer.column !== rail.column)
|
|
115
|
+
return false;
|
|
116
|
+
const trackRow = pointer.row - rail.rowStart;
|
|
117
|
+
if (!isThumbRow(geometry, trackRow))
|
|
118
|
+
return false;
|
|
119
|
+
this.#dragging = { key: rail.key, grabOffset: trackRow - geometry.thumbTop };
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
/** Scroll position for a drag in progress, or null when this rail is not being dragged. */
|
|
123
|
+
dragTo(rail, geometry, pointer) {
|
|
124
|
+
const dragging = this.#dragging;
|
|
125
|
+
if (dragging === undefined || dragging.key !== rail.key || geometry === null)
|
|
126
|
+
return null;
|
|
127
|
+
return scrollForThumbRow(geometry, pointer.row - rail.rowStart - dragging.grabOffset);
|
|
128
|
+
}
|
|
129
|
+
endDrag() {
|
|
130
|
+
this.#dragging = undefined;
|
|
131
|
+
}
|
|
132
|
+
clear() {
|
|
133
|
+
this.#hovered.clear();
|
|
134
|
+
this.#activeUntil.clear();
|
|
135
|
+
this.#dragging = undefined;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type OrderedTextSelection, type TextSelectionLineContent } from "./text-selection.js";
|
|
2
|
+
/** Bound selected-source retention independently of history length and encoded payload size. */
|
|
3
|
+
export declare const MAX_COPY_SOURCE_UNITS: number;
|
|
4
|
+
export declare const MAX_COPY_ROWS = 65536;
|
|
5
|
+
export type SelectionCopyPrompt = "first" | "continuation" | undefined;
|
|
6
|
+
export interface SelectionCopyRow {
|
|
7
|
+
readonly text: string;
|
|
8
|
+
readonly prompt?: "first" | "continuation";
|
|
9
|
+
}
|
|
10
|
+
/** Immutable selected rows only; safe to transfer to an isolated text preparer. */
|
|
11
|
+
export interface SelectionCopySnapshot {
|
|
12
|
+
readonly selection: OrderedTextSelection;
|
|
13
|
+
readonly revision: number;
|
|
14
|
+
/** Prompt copy/cut already supplies exact expanded text; do not apply transcript chrome stripping. */
|
|
15
|
+
readonly literal?: boolean;
|
|
16
|
+
readonly rows: readonly SelectionCopyRow[];
|
|
17
|
+
readonly sourceUnits: number;
|
|
18
|
+
readonly captureMs?: number;
|
|
19
|
+
readonly rejected?: "size";
|
|
20
|
+
}
|
|
21
|
+
/** Shares the viewport's semantic chrome exclusions with isolated copy preparation. */
|
|
22
|
+
export declare function selectionCopyLineContent(text: string, prompt: SelectionCopyPrompt): TextSelectionLineContent;
|
|
23
|
+
/** Extracts one snapshot row with the existing grapheme/newline policy; run expensive rows off-thread. */
|
|
24
|
+
export declare function selectionCopyRowText(snapshot: Pick<SelectionCopySnapshot, "selection" | "literal">, row: SelectionCopyRow, index: number): string;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { textSelectionText, usefulTextLineContent } from "./text-selection.js";
|
|
2
|
+
import { stripAnsi } from "./text.js";
|
|
3
|
+
/** Bound selected-source retention independently of history length and encoded payload size. */
|
|
4
|
+
export const MAX_COPY_SOURCE_UNITS = 32 * 1024 * 1024;
|
|
5
|
+
export const MAX_COPY_ROWS = 65_536;
|
|
6
|
+
/** Shares the viewport's semantic chrome exclusions with isolated copy preparation. */
|
|
7
|
+
export function selectionCopyLineContent(text, prompt) {
|
|
8
|
+
const plain = stripAnsi(text);
|
|
9
|
+
if (prompt !== undefined) {
|
|
10
|
+
if (prompt === "first") {
|
|
11
|
+
const timestamp = /\s+\d{2}:\d{2}\s*$/.exec(plain);
|
|
12
|
+
if (timestamp !== null)
|
|
13
|
+
return usefulTextLineContent(plain.slice(0, timestamp.index), 3);
|
|
14
|
+
}
|
|
15
|
+
return usefulTextLineContent(plain, 3);
|
|
16
|
+
}
|
|
17
|
+
const from = plain.trim().length === 0 || (plain.startsWith(" ") && !plain.startsWith(" ")) ? 2 : 1;
|
|
18
|
+
if (plain.trim().length === 0)
|
|
19
|
+
return { from, to: from + 1 };
|
|
20
|
+
return usefulTextLineContent(plain, from);
|
|
21
|
+
}
|
|
22
|
+
/** Extracts one snapshot row with the existing grapheme/newline policy; run expensive rows off-thread. */
|
|
23
|
+
export function selectionCopyRowText(snapshot, row, index) {
|
|
24
|
+
if (snapshot.literal)
|
|
25
|
+
return row.text;
|
|
26
|
+
let plain = stripAnsi(row.text);
|
|
27
|
+
if (row.prompt === "first") {
|
|
28
|
+
const timestamp = /\s+\d{2}:\d{2}\s*$/.exec(plain);
|
|
29
|
+
if (timestamp !== null)
|
|
30
|
+
plain = plain.slice(0, timestamp.index);
|
|
31
|
+
}
|
|
32
|
+
const from = row.prompt !== undefined ? 3 : plain.startsWith(" ") && !plain.startsWith(" ") ? 2 : 1;
|
|
33
|
+
// Performance: trailing chrome is excluded before extraction; full-row copy need not measure every grapheme.
|
|
34
|
+
plain = plain.trimEnd();
|
|
35
|
+
return textSelectionText({
|
|
36
|
+
start: { line: 0, column: index === snapshot.selection.start.line ? snapshot.selection.start.column : 0 },
|
|
37
|
+
end: { line: 0, column: index === snapshot.selection.end.line ? snapshot.selection.end.column : Number.MAX_SAFE_INTEGER },
|
|
38
|
+
}, [plain], () => ({ from }));
|
|
39
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shortcuts as declared data. Dispatch resolves a key through declarations
|
|
3
|
+
* rather than inline comparisons, conflicts are reported when the registry is
|
|
4
|
+
* assembled, and any listing is generated from the same declarations — so a
|
|
5
|
+
* listed shortcut is one dispatch would actually invoke.
|
|
6
|
+
*/
|
|
7
|
+
export interface ShortcutDeclaration {
|
|
8
|
+
/** Key token, for example `up`, `shift+down`, `ctrl+c`, or a literal character. */
|
|
9
|
+
readonly key: string;
|
|
10
|
+
/** Screen this applies to, or `global` for every screen. */
|
|
11
|
+
readonly scope: string;
|
|
12
|
+
readonly description: string;
|
|
13
|
+
/** Grouping label for the listing. */
|
|
14
|
+
readonly section?: string;
|
|
15
|
+
/**
|
|
16
|
+
* How this key reads on a screen's hint line, when it belongs there. Keys that
|
|
17
|
+
* do one thing together — the two arrows, enter and space — declare the same
|
|
18
|
+
* pair and are shown once.
|
|
19
|
+
*/
|
|
20
|
+
readonly hint?: {
|
|
21
|
+
readonly keys: string;
|
|
22
|
+
readonly does: string;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export declare const GLOBAL_SCOPE = "global";
|
|
26
|
+
export interface ShortcutConflict {
|
|
27
|
+
readonly key: string;
|
|
28
|
+
readonly scopes: readonly [string, string];
|
|
29
|
+
readonly descriptions: readonly [string, string];
|
|
30
|
+
readonly kind: "duplicate" | "shadowed";
|
|
31
|
+
}
|
|
32
|
+
export interface ShortcutRegistryResult {
|
|
33
|
+
readonly declarations: readonly ShortcutDeclaration[];
|
|
34
|
+
readonly conflicts: readonly ShortcutConflict[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Assembles declarations and reports every key claimed twice in overlapping
|
|
38
|
+
* scopes. A screen claiming a global key is reported as shadowed rather than
|
|
39
|
+
* silently resolved by declaration order.
|
|
40
|
+
*/
|
|
41
|
+
export declare function assembleShortcuts(declarations: readonly ShortcutDeclaration[]): ShortcutRegistryResult;
|
|
42
|
+
export declare function assertNoShortcutConflicts(result: ShortcutRegistryResult): void;
|
|
43
|
+
/** Keeps shortcut dispatch and reader-facing listings derived from one ordered declaration set. */
|
|
44
|
+
export declare class ShortcutRegistry<Action extends string = string> {
|
|
45
|
+
#private;
|
|
46
|
+
declare(declaration: ShortcutDeclaration, action: Action): void;
|
|
47
|
+
/** The action this key invokes in this scope, preferring a screen over a global. */
|
|
48
|
+
resolve(key: string, scope: string): Action | null;
|
|
49
|
+
assemble(): ShortcutRegistryResult;
|
|
50
|
+
/**
|
|
51
|
+
* The hint line, in the order the screen declares its keys. It is rendered from
|
|
52
|
+
* the same declarations dispatch reads, so a key cannot be described here and
|
|
53
|
+
* bound to something else, or bound and never mentioned.
|
|
54
|
+
*/
|
|
55
|
+
hint(scope: string, separator?: string): string;
|
|
56
|
+
/** The listing, derived from the declarations dispatch reads. */
|
|
57
|
+
list(scope?: string): readonly ShortcutDeclaration[];
|
|
58
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shortcuts as declared data. Dispatch resolves a key through declarations
|
|
3
|
+
* rather than inline comparisons, conflicts are reported when the registry is
|
|
4
|
+
* assembled, and any listing is generated from the same declarations — so a
|
|
5
|
+
* listed shortcut is one dispatch would actually invoke.
|
|
6
|
+
*/
|
|
7
|
+
export const GLOBAL_SCOPE = "global";
|
|
8
|
+
function overlaps(left, right) {
|
|
9
|
+
return left === right || left === GLOBAL_SCOPE || right === GLOBAL_SCOPE;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Assembles declarations and reports every key claimed twice in overlapping
|
|
13
|
+
* scopes. A screen claiming a global key is reported as shadowed rather than
|
|
14
|
+
* silently resolved by declaration order.
|
|
15
|
+
*/
|
|
16
|
+
export function assembleShortcuts(declarations) {
|
|
17
|
+
const conflicts = [];
|
|
18
|
+
for (let left = 0; left < declarations.length; left++) {
|
|
19
|
+
for (let right = left + 1; right < declarations.length; right++) {
|
|
20
|
+
const a = declarations[left];
|
|
21
|
+
const b = declarations[right];
|
|
22
|
+
if (a === undefined || b === undefined)
|
|
23
|
+
continue;
|
|
24
|
+
if (a.key !== b.key || !overlaps(a.scope, b.scope))
|
|
25
|
+
continue;
|
|
26
|
+
conflicts.push({
|
|
27
|
+
key: a.key,
|
|
28
|
+
scopes: [a.scope, b.scope],
|
|
29
|
+
descriptions: [a.description, b.description],
|
|
30
|
+
kind: a.scope === b.scope ? "duplicate" : "shadowed",
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return { declarations: Object.freeze([...declarations]), conflicts: Object.freeze(conflicts) };
|
|
35
|
+
}
|
|
36
|
+
export function assertNoShortcutConflicts(result) {
|
|
37
|
+
const duplicate = result.conflicts.find(conflict => conflict.kind === "duplicate");
|
|
38
|
+
if (duplicate) {
|
|
39
|
+
throw new Error(`shortcut ${duplicate.key} is declared twice in scope ${duplicate.scopes[0]}: `
|
|
40
|
+
+ `"${duplicate.descriptions[0]}" and "${duplicate.descriptions[1]}"`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** Keeps shortcut dispatch and reader-facing listings derived from one ordered declaration set. */
|
|
44
|
+
export class ShortcutRegistry {
|
|
45
|
+
#declarations = [];
|
|
46
|
+
#actions = new Map();
|
|
47
|
+
declare(declaration, action) {
|
|
48
|
+
this.#declarations.push(declaration);
|
|
49
|
+
this.#actions.set(`${declaration.scope}\u0000${declaration.key}`, action);
|
|
50
|
+
}
|
|
51
|
+
/** The action this key invokes in this scope, preferring a screen over a global. */
|
|
52
|
+
resolve(key, scope) {
|
|
53
|
+
return this.#actions.get(`${scope}\u0000${key}`) ?? this.#actions.get(`${GLOBAL_SCOPE}\u0000${key}`) ?? null;
|
|
54
|
+
}
|
|
55
|
+
assemble() {
|
|
56
|
+
return assembleShortcuts(this.#declarations);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The hint line, in the order the screen declares its keys. It is rendered from
|
|
60
|
+
* the same declarations dispatch reads, so a key cannot be described here and
|
|
61
|
+
* bound to something else, or bound and never mentioned.
|
|
62
|
+
*/
|
|
63
|
+
hint(scope, separator = " · ") {
|
|
64
|
+
const shown = new Map();
|
|
65
|
+
for (const declaration of this.#declarations) {
|
|
66
|
+
if (declaration.hint === undefined)
|
|
67
|
+
continue;
|
|
68
|
+
if (declaration.scope !== scope && declaration.scope !== GLOBAL_SCOPE)
|
|
69
|
+
continue;
|
|
70
|
+
if (!shown.has(declaration.hint.keys))
|
|
71
|
+
shown.set(declaration.hint.keys, declaration.hint.does);
|
|
72
|
+
}
|
|
73
|
+
return [...shown].map(([keys, does]) => `${keys} ${does}`).join(separator);
|
|
74
|
+
}
|
|
75
|
+
/** The listing, derived from the declarations dispatch reads. */
|
|
76
|
+
list(scope) {
|
|
77
|
+
const inScope = scope === undefined
|
|
78
|
+
? this.#declarations
|
|
79
|
+
: this.#declarations.filter(declaration => declaration.scope === scope || declaration.scope === GLOBAL_SCOPE);
|
|
80
|
+
return Object.freeze([...inScope].sort((left, right) => (left.section ?? "").localeCompare(right.section ?? "") || left.key.localeCompare(right.key)));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replaces the visible columns `[from, to)` of `line` with `span`, preserving
|
|
3
|
+
* the styling before it and re-asserting whatever was still open afterwards, so
|
|
4
|
+
* the tail keeps the colour it had. A wide character straddling either edge is
|
|
5
|
+
* replaced by spaces rather than split. Opt into the replaced cell's boundary
|
|
6
|
+
* style for background-preserving overlays; the span still owns its decoration.
|
|
7
|
+
*/
|
|
8
|
+
export declare function overlaySpan(line: string, from: number, to: number, span: string, options?: {
|
|
9
|
+
readonly inheritStartStyle?: boolean;
|
|
10
|
+
}): string;
|
|
11
|
+
/** Wraps visible columns `[from,to)` in an explicit OSC 8 hyperlink. */
|
|
12
|
+
export declare function hyperlinkSgrSpan(line: string, from: number, to: number, target: string, widthOf?: (text: string) => number): string;
|
|
13
|
+
/** Returns the OSC 8 target painted at a zero-based visible terminal column. */
|
|
14
|
+
export declare function hyperlinkTargetAtColumn(line: string, targetColumn: number, widthOf?: (text: string) => number): string | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Gives existing and bare web links explicit, tightly bounded OSC 8 regions so
|
|
17
|
+
* the terminal owns dotted-idle/solid-hover decoration without leaking hover
|
|
18
|
+
* state into cells repainted during scrolling.
|
|
19
|
+
*/
|
|
20
|
+
export declare function nativeHyperlinkStyle(line: string, color?: (text: string, target: string) => string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Held-button paint for terminal-native links. OSC 8 is removed so the terminal
|
|
23
|
+
* cannot switch a selected link to its solid hover underline. A dotted SGR
|
|
24
|
+
* underline preserves the idle appearance, and VS15 transiently breaks native
|
|
25
|
+
* plain-text URL detection without changing visible width.
|
|
26
|
+
*/
|
|
27
|
+
export declare function heldNativeHyperlinkStyle(line: string): string;
|
|
28
|
+
export declare function backgroundSgrSpan(line: string, from: number, to: number, on?: string, off?: string, widthOf?: (text: string) => number): string;
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import { displayWidth } from "./text.js";
|
|
2
|
+
/**
|
|
3
|
+
* Ported from the A1 UI reference implementation (`core/presentation/spans.ts`).
|
|
4
|
+
* Writing over part of a rendered row is not string slicing: the row carries
|
|
5
|
+
* styling and hyperlink sequences, and cutting through them either loses the
|
|
6
|
+
* styling of the tail or leaks the span's own reset into it.
|
|
7
|
+
*/
|
|
8
|
+
const ANSI_SEQUENCE = "\\u001b(?:\\[[0-?]*[ -/]*[@-~]|[\\]_][^\\u0007\\u001b]*(?:\\u0007|\\u001b\\\\|$))";
|
|
9
|
+
const ANSI_SPLIT = new RegExp(`(${ANSI_SEQUENCE})`);
|
|
10
|
+
const HYPERLINK = /^\]8;;([^]*)(?:|\\)?$/;
|
|
11
|
+
const HYPERLINK_OFF = "]8;;\\";
|
|
12
|
+
const SGR = /^\[[0-9;]*m$/;
|
|
13
|
+
const BARE_URL = /https?:\/\/[^\s\u0000-\u001f\u007f<>"']+/giu;
|
|
14
|
+
const TRAILING_URL_PUNCTUATION = /[.,;:!?]/u;
|
|
15
|
+
const GRAPHEMES = new Intl.Segmenter(undefined, { granularity: "grapheme" });
|
|
16
|
+
/**
|
|
17
|
+
* Replaces the visible columns `[from, to)` of `line` with `span`, preserving
|
|
18
|
+
* the styling before it and re-asserting whatever was still open afterwards, so
|
|
19
|
+
* the tail keeps the colour it had. A wide character straddling either edge is
|
|
20
|
+
* replaced by spaces rather than split. Opt into the replaced cell's boundary
|
|
21
|
+
* style for background-preserving overlays; the span still owns its decoration.
|
|
22
|
+
*/
|
|
23
|
+
export function overlaySpan(line, from, to, span, options = {}) {
|
|
24
|
+
let head = "";
|
|
25
|
+
let replay = "";
|
|
26
|
+
let tail = "";
|
|
27
|
+
let column = 0;
|
|
28
|
+
let hyperlinkOpen = false;
|
|
29
|
+
for (const token of line.split(ANSI_SPLIT)) {
|
|
30
|
+
if (!token)
|
|
31
|
+
continue;
|
|
32
|
+
if (token.startsWith("")) {
|
|
33
|
+
// Protocol: image transfers are one-shot commands, not styling to replay after an overlay.
|
|
34
|
+
if (token.startsWith("\u001b_G") || token.startsWith("\u001b]1337;File=")) {
|
|
35
|
+
if (column >= to)
|
|
36
|
+
tail += token;
|
|
37
|
+
else
|
|
38
|
+
head += token;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (column >= to) {
|
|
42
|
+
tail += token;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (column < from || (options.inheritStartStyle === true && column === from)) {
|
|
46
|
+
head += token;
|
|
47
|
+
const link = HYPERLINK.exec(token);
|
|
48
|
+
if (link)
|
|
49
|
+
hyperlinkOpen = (link[1] ?? "").length > 0;
|
|
50
|
+
}
|
|
51
|
+
// Invariant: re-assert everything still active: the span's own reset clobbers the tail.
|
|
52
|
+
replay += token;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
for (const { segment } of GRAPHEMES.segment(token)) {
|
|
56
|
+
const width = displayWidth(segment);
|
|
57
|
+
if (column + width <= from)
|
|
58
|
+
head += segment;
|
|
59
|
+
else if (column >= to)
|
|
60
|
+
tail += segment;
|
|
61
|
+
else if (column < from)
|
|
62
|
+
head += " ".repeat(from - column);
|
|
63
|
+
else if (column + width > to)
|
|
64
|
+
tail += " ".repeat(column + width - to);
|
|
65
|
+
column += width;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (column < from)
|
|
69
|
+
head += " ".repeat(from - column);
|
|
70
|
+
return head + (hyperlinkOpen ? HYPERLINK_OFF : "") + span + replay + tail;
|
|
71
|
+
}
|
|
72
|
+
/** Wraps visible columns `[from,to)` in an explicit OSC 8 hyperlink. */
|
|
73
|
+
export function hyperlinkSgrSpan(line, from, to, target, widthOf = displayWidth) {
|
|
74
|
+
const on = `\u001b]8;;${target}\u001b\\`;
|
|
75
|
+
const off = "\u001b]8;;\u001b\\";
|
|
76
|
+
let output = "";
|
|
77
|
+
let column = 0;
|
|
78
|
+
let inside = false;
|
|
79
|
+
for (const token of line.split(ANSI_SPLIT)) {
|
|
80
|
+
if (!token)
|
|
81
|
+
continue;
|
|
82
|
+
if (token.startsWith("\u001b")) {
|
|
83
|
+
output += token;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
for (const { segment } of GRAPHEMES.segment(token)) {
|
|
87
|
+
const shouldBeInside = column >= from && column < to;
|
|
88
|
+
if (shouldBeInside !== inside) {
|
|
89
|
+
output += shouldBeInside ? on : off;
|
|
90
|
+
inside = shouldBeInside;
|
|
91
|
+
}
|
|
92
|
+
output += segment;
|
|
93
|
+
column += widthOf(segment);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (inside)
|
|
97
|
+
output += off;
|
|
98
|
+
return output;
|
|
99
|
+
}
|
|
100
|
+
/** Returns the OSC 8 target painted at a zero-based visible terminal column. */
|
|
101
|
+
export function hyperlinkTargetAtColumn(line, targetColumn, widthOf = displayWidth) {
|
|
102
|
+
if (targetColumn < 0)
|
|
103
|
+
return undefined;
|
|
104
|
+
let hyperlinkTarget;
|
|
105
|
+
let column = 0;
|
|
106
|
+
for (const token of line.split(ANSI_SPLIT)) {
|
|
107
|
+
if (!token)
|
|
108
|
+
continue;
|
|
109
|
+
const link = HYPERLINK.exec(token);
|
|
110
|
+
if (link) {
|
|
111
|
+
hyperlinkTarget = (link[1] ?? "") || undefined;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (token.startsWith("\u001b"))
|
|
115
|
+
continue;
|
|
116
|
+
for (const { segment } of GRAPHEMES.segment(token)) {
|
|
117
|
+
const width = widthOf(segment);
|
|
118
|
+
if (targetColumn >= column && targetColumn < column + width)
|
|
119
|
+
return hyperlinkTarget;
|
|
120
|
+
column += width;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Gives existing and bare web links explicit, tightly bounded OSC 8 regions so
|
|
127
|
+
* the terminal owns dotted-idle/solid-hover decoration without leaking hover
|
|
128
|
+
* state into cells repainted during scrolling.
|
|
129
|
+
*/
|
|
130
|
+
export function nativeHyperlinkStyle(line, color = text => text) {
|
|
131
|
+
let hyperlinkTarget;
|
|
132
|
+
let sgrReplay = "";
|
|
133
|
+
let output = "";
|
|
134
|
+
for (const token of line.split(ANSI_SPLIT)) {
|
|
135
|
+
if (!token)
|
|
136
|
+
continue;
|
|
137
|
+
const link = HYPERLINK.exec(token);
|
|
138
|
+
if (link) {
|
|
139
|
+
hyperlinkTarget = (link[1] ?? "") || undefined;
|
|
140
|
+
output += token;
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
if (!token.startsWith("\u001b")) {
|
|
144
|
+
output += hyperlinkTarget === undefined
|
|
145
|
+
? decorateBareUrls(token, color, sgrReplay)
|
|
146
|
+
: color(token, hyperlinkTarget);
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
if (SGR.test(token)) {
|
|
150
|
+
if (token === "\u001b[0m")
|
|
151
|
+
sgrReplay = token;
|
|
152
|
+
else
|
|
153
|
+
sgrReplay += token;
|
|
154
|
+
}
|
|
155
|
+
if (hyperlinkTarget === undefined || (token !== "\u001b[4m" && token !== "\u001b[24m"))
|
|
156
|
+
output += token;
|
|
157
|
+
}
|
|
158
|
+
return hyperlinkTarget === undefined ? output : output + HYPERLINK_OFF;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Held-button paint for terminal-native links. OSC 8 is removed so the terminal
|
|
162
|
+
* cannot switch a selected link to its solid hover underline. A dotted SGR
|
|
163
|
+
* underline preserves the idle appearance, and VS15 transiently breaks native
|
|
164
|
+
* plain-text URL detection without changing visible width.
|
|
165
|
+
*/
|
|
166
|
+
export function heldNativeHyperlinkStyle(line) {
|
|
167
|
+
let hyperlinkTarget;
|
|
168
|
+
let fileDetectorBroken = false;
|
|
169
|
+
let output = "";
|
|
170
|
+
for (const token of line.split(ANSI_SPLIT)) {
|
|
171
|
+
if (!token)
|
|
172
|
+
continue;
|
|
173
|
+
const link = HYPERLINK.exec(token);
|
|
174
|
+
if (link) {
|
|
175
|
+
const nextTarget = (link[1] ?? "") || undefined;
|
|
176
|
+
if ((nextTarget !== undefined) !== (hyperlinkTarget !== undefined)) {
|
|
177
|
+
output += nextTarget === undefined ? "\u001b[24m" : "\u001b[4:4m";
|
|
178
|
+
}
|
|
179
|
+
if (nextTarget !== hyperlinkTarget)
|
|
180
|
+
fileDetectorBroken = false;
|
|
181
|
+
hyperlinkTarget = nextTarget;
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
if (token.startsWith("\u001b")) {
|
|
185
|
+
output += token;
|
|
186
|
+
// Protocol: foreground helpers may reset every SGR attribute; restore the held
|
|
187
|
+
// dotted underline without disturbing the source colour or intensity.
|
|
188
|
+
if (hyperlinkTarget !== undefined && SGR.test(token))
|
|
189
|
+
output += "\u001b[4:4m";
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
if (hyperlinkTarget === undefined) {
|
|
193
|
+
output += token;
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
let painted = token.replaceAll("https://", "https:\uFE0E//").replaceAll("http://", "http:\uFE0E//");
|
|
197
|
+
// Platform: Windows Terminal also detects file-link labels such as package.json and
|
|
198
|
+
// D:/work/file.ts after OSC 8 is removed. Break that detector once inside
|
|
199
|
+
// the paint-only label; semantic transcript text remains untouched.
|
|
200
|
+
if (!fileDetectorBroken && /^file:/iu.test(hyperlinkTarget)) {
|
|
201
|
+
const firstVisible = /\S/u.exec(painted);
|
|
202
|
+
if (firstVisible?.index !== undefined) {
|
|
203
|
+
const index = firstVisible.index;
|
|
204
|
+
const codePoint = painted.codePointAt(index) ?? 0;
|
|
205
|
+
const end = index + (codePoint > 0xffff ? 2 : 1);
|
|
206
|
+
painted = `${painted.slice(0, end)}\uFE0E${painted.slice(end)}`;
|
|
207
|
+
fileDetectorBroken = true;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
output += painted;
|
|
211
|
+
}
|
|
212
|
+
return hyperlinkTarget === undefined ? output : `${output}\u001b[24m`;
|
|
213
|
+
}
|
|
214
|
+
function decorateBareUrls(text, color, sgrReplay) {
|
|
215
|
+
return text.replace(BARE_URL, candidate => {
|
|
216
|
+
const { target, trailing } = splitUrlTrailingPunctuation(candidate);
|
|
217
|
+
if (target.length === 0)
|
|
218
|
+
return candidate;
|
|
219
|
+
return `\u001b]8;;${target}\u001b\\\u001b[24m${color(target, target)}${HYPERLINK_OFF}${sgrReplay}${trailing}`;
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
function splitUrlTrailingPunctuation(candidate) {
|
|
223
|
+
let end = candidate.length;
|
|
224
|
+
while (end > 0 && TRAILING_URL_PUNCTUATION.test(candidate[end - 1] ?? ""))
|
|
225
|
+
end -= 1;
|
|
226
|
+
for (const [opening, closing] of [["(", ")"], ["[", "]"], ["{", "}"]]) {
|
|
227
|
+
while (candidate.slice(0, end).endsWith(closing)
|
|
228
|
+
&& occurrences(candidate.slice(0, end), closing) > occurrences(candidate.slice(0, end), opening)) {
|
|
229
|
+
end -= 1;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return { target: candidate.slice(0, end), trailing: candidate.slice(end) };
|
|
233
|
+
}
|
|
234
|
+
function occurrences(text, value) {
|
|
235
|
+
return text.split(value).length - 1;
|
|
236
|
+
}
|
|
237
|
+
export function backgroundSgrSpan(line, from, to, on = "\u001b[47m", off = "\u001b[49m", widthOf = displayWidth) {
|
|
238
|
+
let output = "";
|
|
239
|
+
let seen = "";
|
|
240
|
+
let column = 0;
|
|
241
|
+
let inside = false;
|
|
242
|
+
for (const token of line.split(ANSI_SPLIT)) {
|
|
243
|
+
if (!token)
|
|
244
|
+
continue;
|
|
245
|
+
if (token.startsWith("\u001b")) {
|
|
246
|
+
output += token;
|
|
247
|
+
if (SGR.test(token))
|
|
248
|
+
seen += token;
|
|
249
|
+
if (inside)
|
|
250
|
+
output += on;
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
for (const { segment } of GRAPHEMES.segment(token)) {
|
|
254
|
+
const shouldBeInside = column >= from && column < to;
|
|
255
|
+
if (shouldBeInside !== inside) {
|
|
256
|
+
output += shouldBeInside ? on : off + seen;
|
|
257
|
+
inside = shouldBeInside;
|
|
258
|
+
}
|
|
259
|
+
output += segment;
|
|
260
|
+
column += widthOf(segment);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
if (inside)
|
|
264
|
+
output += off;
|
|
265
|
+
return output;
|
|
266
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Visible width of the submitted-prompt prefix (`❯ `). */
|
|
2
|
+
export declare const SUBMITTED_PROMPT_PREFIX_WIDTH = 2;
|
|
3
|
+
export interface SubmittedPromptStyle {
|
|
4
|
+
readonly prefix?: (text: string) => string;
|
|
5
|
+
readonly timestamp?: (text: string) => string;
|
|
6
|
+
}
|
|
7
|
+
export interface SubmittedPromptLayout {
|
|
8
|
+
readonly contentWidth: number;
|
|
9
|
+
readonly timestamp: string | null;
|
|
10
|
+
}
|
|
11
|
+
/** Formats transcript metadata, never render time, as local 24-hour HH:mm. */
|
|
12
|
+
export declare function formatSubmittedPromptTime(source: Date | number): string | null;
|
|
13
|
+
/**
|
|
14
|
+
* Computes the width at which the prompt's Markdown body must be rendered.
|
|
15
|
+
* The timestamp is omitted rather than allowing it to crowd useful content.
|
|
16
|
+
*/
|
|
17
|
+
export declare function submittedPromptLayout(width: number, source?: Date | number | null): SubmittedPromptLayout;
|
|
18
|
+
/**
|
|
19
|
+
* Composes already-rendered prompt content into the compact submitted bar.
|
|
20
|
+
* Continuations align below the content, not below the prefix, and no row can
|
|
21
|
+
* exceed the supplied terminal width even when the content renderer misbehaves.
|
|
22
|
+
*/
|
|
23
|
+
export declare function composeSubmittedPromptRows(contentRows: readonly string[], width: number, source?: Date | number | null, style?: SubmittedPromptStyle): readonly string[];
|