@timurproko/a1 0.1.8-dev.50ebb19 → 0.1.8-dev.510
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 +209 -63
- 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 +37 -0
- package/dist/app/session-shell/prompt-suggestion-controller.js +219 -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 +275 -0
- package/dist/app/session-shell/session-shell-root.js +1376 -0
- package/dist/app/session-shell/session-shell.d.ts +66 -0
- package/dist/app/session-shell/session-shell.js +2116 -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 +154 -0
- package/dist/composition/settings-route-host.d.ts +20 -0
- package/dist/composition/settings-route-host.js +141 -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 +374 -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 +9 -0
- package/dist/features/owned-ui/index.js +6 -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/reference-routes.d.ts +6 -0
- package/dist/features/owned-ui/reference-routes.js +6 -0
- package/dist/features/owned-ui/reference-screen-app.d.ts +37 -0
- package/dist/features/owned-ui/reference-screen-app.js +232 -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 +802 -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 +23 -0
- package/dist/integrations/pi/components/index.js +14 -0
- package/dist/integrations/pi/components/models-dialog.d.ts +55 -0
- package/dist/integrations/pi/components/models-dialog.js +310 -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.d.ts +21 -0
- package/dist/integrations/pi/components/shell-editor-autocomplete.js +322 -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 +249 -0
- package/dist/integrations/pi/components/shell-presenters-info.d.ts +53 -0
- package/dist/integrations/pi/components/shell-presenters-info.js +134 -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 +133 -0
- package/dist/integrations/pi/components/shell-selectors-dialogs.js +255 -0
- package/dist/integrations/pi/components/shell-shared-facade.d.ts +225 -0
- package/dist/integrations/pi/components/shell-shared-facade.js +92 -0
- package/dist/integrations/pi/components/skills-command.d.ts +47 -0
- package/dist/integrations/pi/components/skills-command.js +118 -0
- package/dist/integrations/pi/components/skills-dialog.d.ts +9 -0
- package/dist/integrations/pi/components/skills-dialog.js +112 -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 +52 -0
- package/dist/integrations/pi/components/upstream/components/owned-editor.js +222 -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 +139 -0
- package/dist/integrations/pi/engine/adapter.js +660 -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 +50 -0
- package/dist/integrations/pi/engine/resource-catalog.js +299 -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 +66 -0
- package/dist/integrations/pi/engine/workflow-contexts.js +360 -0
- package/dist/integrations/pi/engine/workflow-runner.d.ts +60 -0
- package/dist/integrations/pi/engine/workflow-runner.js +533 -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 +275 -0
- package/dist/integrations/pi/engine/workflows.js +71 -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 +72 -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 +127 -0
- package/dist/ui/settings/declarations.js +124 -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 +92 -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 +61 -6
- package/docs/ci-release-runbook.md +256 -79
- package/docs/features/launch-profiles.md +24 -17
- package/docs/features/modal-content-interaction.md +38 -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.d.ts +0 -11
- 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}/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
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
import { displayWidth, faint, truncateToWidth } from "./text.js";
|
|
2
|
-
const MAX_VALUE_LENGTH = 4_096;
|
|
3
|
-
const GRAPHEMES = new Intl.Segmenter(undefined, { granularity: "grapheme" });
|
|
4
|
-
/** Character class for a word boundary: 0 space, 1 word, 2 anything else. */
|
|
5
|
-
function charClass(character) {
|
|
6
|
-
if (/\s/.test(character))
|
|
7
|
-
return 0;
|
|
8
|
-
if (/[\p{L}\p{N}_]/u.test(character))
|
|
9
|
-
return 1;
|
|
10
|
-
return 2;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Where a word jump to the left lands: past any whitespace, then past the run of
|
|
14
|
-
* characters of one class, so a word and a run of punctuation each count as one.
|
|
15
|
-
*/
|
|
16
|
-
export function wordLeft(text, from) {
|
|
17
|
-
const graphemes = [...GRAPHEMES.segment(text.slice(0, from))].map(entry => entry.segment);
|
|
18
|
-
let at = from;
|
|
19
|
-
let index = graphemes.length - 1;
|
|
20
|
-
while (index >= 0 && charClass(graphemes[index] ?? "") === 0)
|
|
21
|
-
at -= (graphemes[index--] ?? "").length;
|
|
22
|
-
if (index >= 0) {
|
|
23
|
-
const cls = charClass(graphemes[index] ?? "");
|
|
24
|
-
while (index >= 0 && charClass(graphemes[index] ?? "") === cls)
|
|
25
|
-
at -= (graphemes[index--] ?? "").length;
|
|
26
|
-
}
|
|
27
|
-
return at;
|
|
28
|
-
}
|
|
29
|
-
/** Where a word jump to the right lands, by the same rules mirrored. */
|
|
30
|
-
export function wordRight(text, from) {
|
|
31
|
-
const graphemes = [...GRAPHEMES.segment(text.slice(from))].map(entry => entry.segment);
|
|
32
|
-
let at = from;
|
|
33
|
-
let index = 0;
|
|
34
|
-
while (index < graphemes.length && charClass(graphemes[index] ?? "") === 0)
|
|
35
|
-
at += (graphemes[index++] ?? "").length;
|
|
36
|
-
if (index < graphemes.length) {
|
|
37
|
-
const cls = charClass(graphemes[index] ?? "");
|
|
38
|
-
while (index < graphemes.length && charClass(graphemes[index] ?? "") === cls)
|
|
39
|
-
at += (graphemes[index++] ?? "").length;
|
|
40
|
-
}
|
|
41
|
-
return at;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* A single-line editable value with a caret and horizontal scrolling. Accept and
|
|
45
|
-
* cancel are reported distinctly so a caller can commit or discard; cancelling
|
|
46
|
-
* never changes the caller's value.
|
|
47
|
-
*/
|
|
48
|
-
export class LineInput {
|
|
49
|
-
#value;
|
|
50
|
-
#caret;
|
|
51
|
-
#offset = 0;
|
|
52
|
-
constructor(value = "") {
|
|
53
|
-
this.#value = value.slice(0, MAX_VALUE_LENGTH);
|
|
54
|
-
this.#caret = this.#value.length;
|
|
55
|
-
}
|
|
56
|
-
get value() {
|
|
57
|
-
return this.#value;
|
|
58
|
-
}
|
|
59
|
-
get caret() {
|
|
60
|
-
return this.#caret;
|
|
61
|
-
}
|
|
62
|
-
setValue(value) {
|
|
63
|
-
this.#value = value.slice(0, MAX_VALUE_LENGTH);
|
|
64
|
-
this.#caret = Math.min(this.#caret, this.#value.length);
|
|
65
|
-
this.#offset = 0;
|
|
66
|
-
}
|
|
67
|
-
insert(text) {
|
|
68
|
-
const printable = [...text].filter(character => {
|
|
69
|
-
const code = character.codePointAt(0) ?? 0;
|
|
70
|
-
return code >= 0x20 && code !== 0x7f;
|
|
71
|
-
}).join("");
|
|
72
|
-
if (printable.length === 0)
|
|
73
|
-
return;
|
|
74
|
-
const next = this.#value.slice(0, this.#caret) + printable + this.#value.slice(this.#caret);
|
|
75
|
-
if (next.length > MAX_VALUE_LENGTH)
|
|
76
|
-
return;
|
|
77
|
-
this.#value = next;
|
|
78
|
-
this.#caret += printable.length;
|
|
79
|
-
}
|
|
80
|
-
backspace() {
|
|
81
|
-
if (this.#caret === 0)
|
|
82
|
-
return;
|
|
83
|
-
this.#value = this.#value.slice(0, this.#caret - 1) + this.#value.slice(this.#caret);
|
|
84
|
-
this.#caret -= 1;
|
|
85
|
-
}
|
|
86
|
-
deleteForward() {
|
|
87
|
-
if (this.#caret >= this.#value.length)
|
|
88
|
-
return;
|
|
89
|
-
this.#value = this.#value.slice(0, this.#caret) + this.#value.slice(this.#caret + 1);
|
|
90
|
-
}
|
|
91
|
-
moveCaret(delta) {
|
|
92
|
-
this.#caret = Math.min(Math.max(this.#caret + delta, 0), this.#value.length);
|
|
93
|
-
}
|
|
94
|
-
/** Moves the caret one word, in whichever direction the sign says. */
|
|
95
|
-
moveCaretByWord(direction) {
|
|
96
|
-
this.#caret = direction < 0 ? wordLeft(this.#value, this.#caret) : wordRight(this.#value, this.#caret);
|
|
97
|
-
}
|
|
98
|
-
/** Removes the word before the caret, leaving the caret where it began. */
|
|
99
|
-
deleteWordBefore() {
|
|
100
|
-
const to = wordLeft(this.#value, this.#caret);
|
|
101
|
-
if (to >= this.#caret)
|
|
102
|
-
return;
|
|
103
|
-
this.#value = this.#value.slice(0, to) + this.#value.slice(this.#caret);
|
|
104
|
-
this.#caret = to;
|
|
105
|
-
}
|
|
106
|
-
/** Removes the word after the caret, leaving the caret where it is. */
|
|
107
|
-
deleteWordAfter() {
|
|
108
|
-
const to = wordRight(this.#value, this.#caret);
|
|
109
|
-
if (to <= this.#caret)
|
|
110
|
-
return;
|
|
111
|
-
this.#value = this.#value.slice(0, this.#caret) + this.#value.slice(to);
|
|
112
|
-
}
|
|
113
|
-
moveCaretToStart() {
|
|
114
|
-
this.#caret = 0;
|
|
115
|
-
}
|
|
116
|
-
moveCaretToEnd() {
|
|
117
|
-
this.#caret = this.#value.length;
|
|
118
|
-
}
|
|
119
|
-
/** Visible slice for a width, scrolled so the caret stays on screen. */
|
|
120
|
-
view(width) {
|
|
121
|
-
if (width <= 0)
|
|
122
|
-
return { text: "", caretColumn: 0 };
|
|
123
|
-
const before = this.#value.slice(0, this.#caret);
|
|
124
|
-
const caretWidth = displayWidth(before);
|
|
125
|
-
if (caretWidth < this.#offset)
|
|
126
|
-
this.#offset = caretWidth;
|
|
127
|
-
if (caretWidth >= this.#offset + width)
|
|
128
|
-
this.#offset = caretWidth - width + 1;
|
|
129
|
-
if (this.#offset < 0)
|
|
130
|
-
this.#offset = 0;
|
|
131
|
-
let start = 0;
|
|
132
|
-
let consumed = 0;
|
|
133
|
-
for (const character of this.#value) {
|
|
134
|
-
if (consumed >= this.#offset)
|
|
135
|
-
break;
|
|
136
|
-
consumed += displayWidth(character);
|
|
137
|
-
start += character.length;
|
|
138
|
-
}
|
|
139
|
-
return {
|
|
140
|
-
text: truncateToWidth(this.#value.slice(start), width),
|
|
141
|
-
caretColumn: Math.max(0, Math.min(width, caretWidth - this.#offset)),
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
/** Applies one key to the input and reports whether the caller should commit. */
|
|
146
|
-
export function handleLineInputKey(input, data) {
|
|
147
|
-
if (data === "\r" || data === "\n")
|
|
148
|
-
return { kind: "accepted", value: input.value };
|
|
149
|
-
if (data === "\u001b" || data === "\u0003")
|
|
150
|
-
return { kind: "cancelled" };
|
|
151
|
-
// A word delete is decided before a plain one: on Windows Terminal the raw
|
|
152
|
-
// backspace byte IS ctrl+backspace, and the plain branch would swallow it.
|
|
153
|
-
if (data === "\b" || data === "\u001b\u007f" || data === "\u0017") {
|
|
154
|
-
input.deleteWordBefore();
|
|
155
|
-
return { kind: "editing" };
|
|
156
|
-
}
|
|
157
|
-
if (data === "\u001b[3;5~" || data === "\u001b[3;3~" || data === "\u001bd") {
|
|
158
|
-
input.deleteWordAfter();
|
|
159
|
-
return { kind: "editing" };
|
|
160
|
-
}
|
|
161
|
-
if (data === "\u007f") {
|
|
162
|
-
input.backspace();
|
|
163
|
-
return { kind: "editing" };
|
|
164
|
-
}
|
|
165
|
-
if (data === "\u001b[3~") {
|
|
166
|
-
input.deleteForward();
|
|
167
|
-
return { kind: "editing" };
|
|
168
|
-
}
|
|
169
|
-
if (data === "\u001b[1;5D" || data === "\u001b[1;3D" || data === "\u001bb") {
|
|
170
|
-
input.moveCaretByWord(-1);
|
|
171
|
-
return { kind: "editing" };
|
|
172
|
-
}
|
|
173
|
-
if (data === "\u001b[1;5C" || data === "\u001b[1;3C" || data === "\u001bf") {
|
|
174
|
-
input.moveCaretByWord(1);
|
|
175
|
-
return { kind: "editing" };
|
|
176
|
-
}
|
|
177
|
-
if (data === "\u001b[D") {
|
|
178
|
-
input.moveCaret(-1);
|
|
179
|
-
return { kind: "editing" };
|
|
180
|
-
}
|
|
181
|
-
if (data === "\u001b[C") {
|
|
182
|
-
input.moveCaret(1);
|
|
183
|
-
return { kind: "editing" };
|
|
184
|
-
}
|
|
185
|
-
if (data === "\u001b[H" || data === "\u0001") {
|
|
186
|
-
input.moveCaretToStart();
|
|
187
|
-
return { kind: "editing" };
|
|
188
|
-
}
|
|
189
|
-
if (data === "\u001b[F" || data === "\u0005") {
|
|
190
|
-
input.moveCaretToEnd();
|
|
191
|
-
return { kind: "editing" };
|
|
192
|
-
}
|
|
193
|
-
// Any other escape sequence is a key this input has no answer for - a page
|
|
194
|
-
// key, a function key, a chord. It is swallowed rather than typed, because the
|
|
195
|
-
// one thing it certainly is not is text the reader meant to enter.
|
|
196
|
-
if (data.startsWith("\u001b"))
|
|
197
|
-
return { kind: "editing" };
|
|
198
|
-
input.insert(data);
|
|
199
|
-
return { kind: "editing" };
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* The prompt the reference draws at the head of an input row, in the grey it
|
|
203
|
-
* uses for one (#9AA0A6), painted foreground-only so anything drawn behind the
|
|
204
|
-
* row survives.
|
|
205
|
-
*/
|
|
206
|
-
/** A rule drawn in the prompt's own grey, as the reference rules an input row. */
|
|
207
|
-
export function promptRule(width) {
|
|
208
|
-
return `\u001b[38;2;154;160;166m${"─".repeat(Math.max(0, width))}\u001b[39m`;
|
|
209
|
-
}
|
|
210
|
-
export const PROMPT_GLYPH = `\u001b[38;2;154;160;166m❯\u001b[39m `;
|
|
211
|
-
/**
|
|
212
|
-
* The caret the reference draws: the cell under it is reversed rather than given
|
|
213
|
-
* a colour of its own, so it reads as a block in whatever theme is in use.
|
|
214
|
-
*/
|
|
215
|
-
export function caretCell(text) {
|
|
216
|
-
return `\u001b[7m${text}\u001b[27m`;
|
|
217
|
-
}
|
|
218
|
-
/** The input row as the reference draws one, padded to exactly the width. */
|
|
219
|
-
export function renderInputRow(input, width, options = {}) {
|
|
220
|
-
const inner = Math.max(0, width - 2);
|
|
221
|
-
const view = input.view(inner);
|
|
222
|
-
const placeholder = options.placeholder ?? "";
|
|
223
|
-
const empty = view.text.length === 0 && placeholder.length > 0;
|
|
224
|
-
const before = view.text.slice(0, view.caretColumn);
|
|
225
|
-
const under = view.text.slice(view.caretColumn, view.caretColumn + 1) || " ";
|
|
226
|
-
const after = view.text.slice(view.caretColumn + 1);
|
|
227
|
-
// Typed text is left unpainted, the caret reverses its cell, and the
|
|
228
|
-
// placeholder is quietened by weight rather than by a colour of its own.
|
|
229
|
-
const body = empty
|
|
230
|
-
? `${caretCell(placeholder.slice(0, 1))}${faint(placeholder.slice(1))}`
|
|
231
|
-
: `${before}${caretCell(under)}${after}`;
|
|
232
|
-
const plain = empty
|
|
233
|
-
? placeholder
|
|
234
|
-
: `${view.text}${view.caretColumn >= view.text.length ? " " : ""}`;
|
|
235
|
-
const row = padVisible(truncateToWidth(`${PROMPT_GLYPH}${body}`, width), width, `❯ ${plain}`);
|
|
236
|
-
if (options.ruled === false)
|
|
237
|
-
return { lines: [row] };
|
|
238
|
-
const rule = promptRule(width);
|
|
239
|
-
return { lines: [rule, row, rule] };
|
|
240
|
-
}
|
|
241
|
-
/** Pads by visible width, so styling escapes do not shift the layout. */
|
|
242
|
-
function padVisible(line, width, raw) {
|
|
243
|
-
const visible = displayWidth(raw);
|
|
244
|
-
return visible >= width ? line : line + " ".repeat(width - visible);
|
|
245
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import type { UiTheme } from "./theme.js";
|
|
2
|
-
/**
|
|
3
|
-
* A list of things that each carry a label and a value. It owns where a value
|
|
4
|
-
* starts, how a row reads when it is selected or pointed at, and which part of a
|
|
5
|
-
* row the pointer is on — so a screen decides what a row means and this decides
|
|
6
|
-
* how it looks and where it can be touched.
|
|
7
|
-
*/
|
|
8
|
-
/** The part of a row the pointer is over. A label selects; a value acts. */
|
|
9
|
-
export type ListRegion = "label" | "value" | "minus" | "plus";
|
|
10
|
-
/** Columns a stepper's controls occupy on either side of the value. */
|
|
11
|
-
export declare const STEPPER_RESERVE = 2;
|
|
12
|
-
export interface ListViewRow {
|
|
13
|
-
/** Identity of the row, as the screen knows it. */
|
|
14
|
-
readonly key: string;
|
|
15
|
-
readonly label: string;
|
|
16
|
-
/** The value as it should read. Formatting belongs to the screen. */
|
|
17
|
-
readonly value: string;
|
|
18
|
-
/** Trailing note, such as where a value came from. */
|
|
19
|
-
readonly suffix?: string;
|
|
20
|
-
/**
|
|
21
|
-
* Present when the value is stepped. Each end says whether it can still act;
|
|
22
|
-
* an end that cannot is drawn as unavailable rather than explaining itself.
|
|
23
|
-
*/
|
|
24
|
-
readonly stepper?: {
|
|
25
|
-
readonly lower: boolean;
|
|
26
|
-
readonly raise: boolean;
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
export interface ListRowState {
|
|
30
|
-
/** The keyboard's row. */
|
|
31
|
-
readonly selected: boolean;
|
|
32
|
-
/** The pointer's row, and where on it the pointer is. */
|
|
33
|
-
readonly hovered: boolean;
|
|
34
|
-
readonly region: ListRegion;
|
|
35
|
-
}
|
|
36
|
-
/** Where a row was drawn, so a later pointer report can be read against it. */
|
|
37
|
-
export interface ListRowPlacement {
|
|
38
|
-
readonly key: string;
|
|
39
|
-
readonly screenRow: number;
|
|
40
|
-
readonly valueColumn: number;
|
|
41
|
-
readonly valueWidth: number;
|
|
42
|
-
readonly stepper: boolean;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* The column every value begins at: past the widest label, with room to breathe,
|
|
46
|
-
* and with the stepper's columns reserved for every row when any row has one, so
|
|
47
|
-
* a number does not shift its own value out of the column it shares.
|
|
48
|
-
*/
|
|
49
|
-
export declare function valueColumnFor(rows: readonly ListViewRow[], indent?: number, gap?: number): number;
|
|
50
|
-
/** A group's name, above the rows that belong to it. */
|
|
51
|
-
export declare function renderGroupHeader(title: string, width: number, theme: UiTheme): string;
|
|
52
|
-
/**
|
|
53
|
-
* One row, painted. The label carries the selection, the value carries the
|
|
54
|
-
* pointer, and the stepper appears only when the pointer is on the value it
|
|
55
|
-
* belongs to — an affordance, not decoration.
|
|
56
|
-
*/
|
|
57
|
-
export declare function renderListRow(row: ListViewRow, state: ListRowState, valueColumn: number, width: number, theme: UiTheme): string;
|
|
58
|
-
/** A line that stands in for rows: why a group has none, or what it is waiting on. */
|
|
59
|
-
export declare function renderNote(text: string, width: number, theme: UiTheme): string;
|
|
60
|
-
/** Where the value of a row starts and ends, for reading a pointer against it. */
|
|
61
|
-
export declare function placementFor(row: ListViewRow, screenRow: number, valueColumn: number, hovered: boolean): ListRowPlacement;
|
|
62
|
-
/**
|
|
63
|
-
* The part of a row a column falls on. The stepper's controls sit in the columns
|
|
64
|
-
* reserved before and after the value, so they are only reachable while drawn.
|
|
65
|
-
*/
|
|
66
|
-
export declare function regionAt(placement: ListRowPlacement, column: number): ListRegion;
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { displayWidth, truncateToWidth } from "./text.js";
|
|
2
|
-
/** Columns a stepper's controls occupy on either side of the value. */
|
|
3
|
-
export const STEPPER_RESERVE = 2;
|
|
4
|
-
/**
|
|
5
|
-
* The column every value begins at: past the widest label, with room to breathe,
|
|
6
|
-
* and with the stepper's columns reserved for every row when any row has one, so
|
|
7
|
-
* a number does not shift its own value out of the column it shares.
|
|
8
|
-
*/
|
|
9
|
-
export function valueColumnFor(rows, indent = 4, gap = 2) {
|
|
10
|
-
const widest = Math.max(0, ...rows.map(row => displayWidth(row.label)));
|
|
11
|
-
const stepper = rows.some(row => row.stepper !== undefined) ? STEPPER_RESERVE : 0;
|
|
12
|
-
return indent + widest + gap + stepper;
|
|
13
|
-
}
|
|
14
|
-
/** A group's name, above the rows that belong to it. */
|
|
15
|
-
export function renderGroupHeader(title, width, theme) {
|
|
16
|
-
return truncateToWidth(theme.fg("accent", theme.bold(title)), width);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* One row, painted. The label carries the selection, the value carries the
|
|
20
|
-
* pointer, and the stepper appears only when the pointer is on the value it
|
|
21
|
-
* belongs to — an affordance, not decoration.
|
|
22
|
-
*/
|
|
23
|
-
export function renderListRow(row, state, valueColumn, width, theme) {
|
|
24
|
-
const cursor = state.selected ? "→ " : " ";
|
|
25
|
-
const leftRaw = `${cursor} ${row.label}`;
|
|
26
|
-
const left = `${theme.fg("accent", cursor)} ${state.selected ? theme.fg("accent", row.label) : theme.plain(row.label)}`;
|
|
27
|
-
const gap = Math.max(2, valueColumn - displayWidth(leftRaw));
|
|
28
|
-
// Pointing anywhere on the row is pointing at the item; pointing at the value
|
|
29
|
-
// is what brightens it. The selection speaks through the label alone.
|
|
30
|
-
const valueHovered = state.hovered && state.region !== "label";
|
|
31
|
-
const stepper = row.stepper !== undefined && valueHovered;
|
|
32
|
-
const value = valueHovered ? theme.plain(row.value) : theme.fg("muted", row.value);
|
|
33
|
-
const minus = stepper
|
|
34
|
-
? row.stepper?.lower === true
|
|
35
|
-
? state.region === "minus" ? theme.plain("- ") : theme.fg("dim", "- ")
|
|
36
|
-
: theme.disabled("- ")
|
|
37
|
-
: "";
|
|
38
|
-
const plus = stepper
|
|
39
|
-
? row.stepper?.raise === true
|
|
40
|
-
? state.region === "plus" ? theme.plain(" +") : theme.fg("dim", " +")
|
|
41
|
-
: theme.disabled(" +")
|
|
42
|
-
: "";
|
|
43
|
-
const indent = Math.max(2, stepper ? gap - STEPPER_RESERVE : gap);
|
|
44
|
-
const suffix = row.suffix === undefined ? "" : theme.fg("dim", ` ${row.suffix}`);
|
|
45
|
-
return truncateToWidth(`${left}${" ".repeat(indent)}${minus}${value}${plus}${suffix}`, width);
|
|
46
|
-
}
|
|
47
|
-
/** A line that stands in for rows: why a group has none, or what it is waiting on. */
|
|
48
|
-
export function renderNote(text, width, theme) {
|
|
49
|
-
return truncateToWidth(theme.fg("muted", ` ${text}`), width);
|
|
50
|
-
}
|
|
51
|
-
/** Where the value of a row starts and ends, for reading a pointer against it. */
|
|
52
|
-
export function placementFor(row, screenRow, valueColumn, hovered) {
|
|
53
|
-
const stepper = row.stepper !== undefined && hovered;
|
|
54
|
-
return {
|
|
55
|
-
key: row.key,
|
|
56
|
-
screenRow,
|
|
57
|
-
valueColumn: stepper ? valueColumn - STEPPER_RESERVE : valueColumn,
|
|
58
|
-
valueWidth: displayWidth(row.value),
|
|
59
|
-
stepper,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* The part of a row a column falls on. The stepper's controls sit in the columns
|
|
64
|
-
* reserved before and after the value, so they are only reachable while drawn.
|
|
65
|
-
*/
|
|
66
|
-
export function regionAt(placement, column) {
|
|
67
|
-
const start = placement.valueColumn + 1;
|
|
68
|
-
const end = start + placement.valueWidth;
|
|
69
|
-
if (column >= start && column <= end)
|
|
70
|
-
return "value";
|
|
71
|
-
if (placement.stepper && column >= start - STEPPER_RESERVE && column < start)
|
|
72
|
-
return "minus";
|
|
73
|
-
if (placement.stepper && column > end && column <= end + STEPPER_RESERVE)
|
|
74
|
-
return "plus";
|
|
75
|
-
return "label";
|
|
76
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { PaneMouseEvent } from "./pane.js";
|
|
2
|
-
/**
|
|
3
|
-
* SGR mouse reporting. A screen that wants hover, click, and drag needs the
|
|
4
|
-
* terminal to send reports; nothing else in A1 turns this on, and the sequences
|
|
5
|
-
* are paired so the terminal is always left as it was found.
|
|
6
|
-
*/
|
|
7
|
-
export declare const MOUSE_TRACKING_ON = "\u001B[?1006h\u001B[?1000h\u001B[?1003h";
|
|
8
|
-
export declare const MOUSE_TRACKING_OFF = "\u001B[?1003l\u001B[?1000l\u001B[?1006l";
|
|
9
|
-
export interface ParsedMouseInput {
|
|
10
|
-
readonly events: readonly PaneMouseEvent[];
|
|
11
|
-
/** Input with every mouse report removed, for ordinary key handling. */
|
|
12
|
-
readonly rest: string;
|
|
13
|
-
}
|
|
14
|
-
/** Extracts SGR mouse reports, leaving any keyboard input untouched. */
|
|
15
|
-
export declare function parseMouseInput(data: string): ParsedMouseInput;
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SGR mouse reporting. A screen that wants hover, click, and drag needs the
|
|
3
|
-
* terminal to send reports; nothing else in A1 turns this on, and the sequences
|
|
4
|
-
* are paired so the terminal is always left as it was found.
|
|
5
|
-
*/
|
|
6
|
-
export const MOUSE_TRACKING_ON = "\u001b[?1006h\u001b[?1000h\u001b[?1003h";
|
|
7
|
-
export const MOUSE_TRACKING_OFF = "\u001b[?1003l\u001b[?1000l\u001b[?1006l";
|
|
8
|
-
const SGR_PATTERN = /\u001b\[<(\d+);(\d+);(\d+)([Mm])/g;
|
|
9
|
-
/** Extracts SGR mouse reports, leaving any keyboard input untouched. */
|
|
10
|
-
export function parseMouseInput(data) {
|
|
11
|
-
if (!data.includes("\u001b[<"))
|
|
12
|
-
return { events: [], rest: data };
|
|
13
|
-
const events = [];
|
|
14
|
-
let rest = "";
|
|
15
|
-
let index = 0;
|
|
16
|
-
SGR_PATTERN.lastIndex = 0;
|
|
17
|
-
for (let match = SGR_PATTERN.exec(data); match !== null; match = SGR_PATTERN.exec(data)) {
|
|
18
|
-
rest += data.slice(index, match.index);
|
|
19
|
-
index = match.index + match[0].length;
|
|
20
|
-
const code = Number.parseInt(match[1] ?? "", 10);
|
|
21
|
-
const column = Number.parseInt(match[2] ?? "", 10);
|
|
22
|
-
const row = Number.parseInt(match[3] ?? "", 10);
|
|
23
|
-
const released = match[4] === "m";
|
|
24
|
-
if (!Number.isInteger(code) || !Number.isInteger(column) || !Number.isInteger(row))
|
|
25
|
-
continue;
|
|
26
|
-
const event = toEvent(code, column, row, released);
|
|
27
|
-
if (event !== null)
|
|
28
|
-
events.push(event);
|
|
29
|
-
}
|
|
30
|
-
rest += data.slice(index);
|
|
31
|
-
return { events: Object.freeze(events), rest };
|
|
32
|
-
}
|
|
33
|
-
function toEvent(code, column, row, released) {
|
|
34
|
-
if ((code & 64) !== 0) {
|
|
35
|
-
const kind = (code & 1) === 0 ? "wheel-up" : "wheel-down";
|
|
36
|
-
return { kind, button: 0, column, row };
|
|
37
|
-
}
|
|
38
|
-
const button = code & 3;
|
|
39
|
-
if ((code & 32) !== 0)
|
|
40
|
-
return { kind: "motion", button, column, row };
|
|
41
|
-
if (released)
|
|
42
|
-
return { kind: "release", button, column, row };
|
|
43
|
-
if (button === 3)
|
|
44
|
-
return { kind: "release", button: 0, column, row };
|
|
45
|
-
return { kind: "press", button, column, row };
|
|
46
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
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
|
-
export interface ScrollbarGeometry {
|
|
7
|
-
/** Rows in the track. */
|
|
8
|
-
readonly trackHeight: number;
|
|
9
|
-
/** Thumb height in rows, at least one. */
|
|
10
|
-
readonly thumbHeight: number;
|
|
11
|
-
/** Zero-based row of the thumb's top within the track. */
|
|
12
|
-
readonly thumbTop: number;
|
|
13
|
-
/** Highest scroll position the content allows. */
|
|
14
|
-
readonly maxScroll: number;
|
|
15
|
-
}
|
|
16
|
-
export interface ScrollbarInput {
|
|
17
|
-
readonly contentLength: number;
|
|
18
|
-
readonly viewportHeight: number;
|
|
19
|
-
readonly scroll: number;
|
|
20
|
-
readonly trackHeight: number;
|
|
21
|
-
}
|
|
22
|
-
/** Null when the content fits: no scrollbar is drawn and no width is reserved. */
|
|
23
|
-
export declare function scrollbarGeometry(input: ScrollbarInput): ScrollbarGeometry | null;
|
|
24
|
-
export declare function scrollbarReservesSpace(geometry: ScrollbarGeometry | null): boolean;
|
|
25
|
-
/** True when this track row is part of the thumb. */
|
|
26
|
-
export declare function isThumbRow(geometry: ScrollbarGeometry | null, trackRow: number): boolean;
|
|
27
|
-
/** Scroll position for a thumb dragged to a track row. */
|
|
28
|
-
export declare function scrollForThumbRow(geometry: ScrollbarGeometry | null, trackRow: number): number;
|
|
29
|
-
/** Scroll position after paging on the track above or below the thumb. */
|
|
30
|
-
export declare function scrollForTrackPage(geometry: ScrollbarGeometry | null, trackRow: number, scroll: number, viewportHeight: number): number;
|
|
31
|
-
export interface RailPosition {
|
|
32
|
-
/** Identity of this rail. Two surfaces never share one. */
|
|
33
|
-
readonly key: string;
|
|
34
|
-
/** Column the rail is drawn in, one-based. */
|
|
35
|
-
readonly column: number;
|
|
36
|
-
/** First row of the track within the surface, zero-based. */
|
|
37
|
-
readonly rowStart: number;
|
|
38
|
-
readonly trackHeight: number;
|
|
39
|
-
}
|
|
40
|
-
export interface RailPointer {
|
|
41
|
-
readonly column: number;
|
|
42
|
-
readonly row: number;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Hover and drag state for every rail on screen. State is keyed by rail, so a
|
|
46
|
-
* pointer over one rail cannot make another appear hot, and a drag started on
|
|
47
|
-
* one rail cannot be continued by a report addressed to another.
|
|
48
|
-
*/
|
|
49
|
-
export declare class ScrollbarRails {
|
|
50
|
-
#private;
|
|
51
|
-
isHovered(key: string): boolean;
|
|
52
|
-
isDragging(key: string): boolean;
|
|
53
|
-
get draggingKey(): string | null;
|
|
54
|
-
/** Records the pointer position. Returns the rail it is over, if any. */
|
|
55
|
-
notePointer(rails: readonly RailPosition[], pointer: RailPointer): string | null;
|
|
56
|
-
/** Starts a drag when the pointer is on that rail's thumb. */
|
|
57
|
-
beginDrag(rail: RailPosition, geometry: ScrollbarGeometry | null, pointer: RailPointer): boolean;
|
|
58
|
-
/** Scroll position for a drag in progress, or null when this rail is not being dragged. */
|
|
59
|
-
dragTo(rail: RailPosition, geometry: ScrollbarGeometry | null, pointer: RailPointer): number | null;
|
|
60
|
-
endDrag(): void;
|
|
61
|
-
clear(): void;
|
|
62
|
-
}
|
|
@@ -1,102 +0,0 @@
|
|
|
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
|
-
/** Null when the content fits: no scrollbar is drawn and no width is reserved. */
|
|
7
|
-
export function scrollbarGeometry(input) {
|
|
8
|
-
const { contentLength, viewportHeight, trackHeight } = input;
|
|
9
|
-
if (trackHeight <= 0 || viewportHeight <= 0)
|
|
10
|
-
return null;
|
|
11
|
-
if (contentLength <= viewportHeight)
|
|
12
|
-
return null;
|
|
13
|
-
const maxScroll = contentLength - viewportHeight;
|
|
14
|
-
const scroll = Math.min(Math.max(input.scroll, 0), maxScroll);
|
|
15
|
-
const thumbHeight = Math.max(1, Math.min(trackHeight, Math.round(trackHeight * viewportHeight / contentLength)));
|
|
16
|
-
const travel = trackHeight - thumbHeight;
|
|
17
|
-
const thumbTop = maxScroll === 0 ? 0 : Math.min(travel, Math.round(travel * scroll / maxScroll));
|
|
18
|
-
return { trackHeight, thumbHeight, thumbTop, maxScroll };
|
|
19
|
-
}
|
|
20
|
-
export function scrollbarReservesSpace(geometry) {
|
|
21
|
-
return geometry !== null;
|
|
22
|
-
}
|
|
23
|
-
/** True when this track row is part of the thumb. */
|
|
24
|
-
export function isThumbRow(geometry, trackRow) {
|
|
25
|
-
if (geometry === null)
|
|
26
|
-
return false;
|
|
27
|
-
return trackRow >= geometry.thumbTop && trackRow < geometry.thumbTop + geometry.thumbHeight;
|
|
28
|
-
}
|
|
29
|
-
/** Scroll position for a thumb dragged to a track row. */
|
|
30
|
-
export function scrollForThumbRow(geometry, trackRow) {
|
|
31
|
-
if (geometry === null)
|
|
32
|
-
return 0;
|
|
33
|
-
const travel = geometry.trackHeight - geometry.thumbHeight;
|
|
34
|
-
if (travel <= 0)
|
|
35
|
-
return 0;
|
|
36
|
-
const clamped = Math.min(Math.max(trackRow, 0), travel);
|
|
37
|
-
return Math.round(clamped * geometry.maxScroll / travel);
|
|
38
|
-
}
|
|
39
|
-
/** Scroll position after paging on the track above or below the thumb. */
|
|
40
|
-
export function scrollForTrackPage(geometry, trackRow, scroll, viewportHeight) {
|
|
41
|
-
if (geometry === null)
|
|
42
|
-
return scroll;
|
|
43
|
-
const page = Math.max(1, viewportHeight);
|
|
44
|
-
const next = trackRow < geometry.thumbTop ? scroll - page : scroll + page;
|
|
45
|
-
return Math.min(Math.max(next, 0), geometry.maxScroll);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Hover and drag state for every rail on screen. State is keyed by rail, so a
|
|
49
|
-
* pointer over one rail cannot make another appear hot, and a drag started on
|
|
50
|
-
* one rail cannot be continued by a report addressed to another.
|
|
51
|
-
*/
|
|
52
|
-
export class ScrollbarRails {
|
|
53
|
-
#hovered = new Set();
|
|
54
|
-
#dragging;
|
|
55
|
-
isHovered(key) {
|
|
56
|
-
return this.#hovered.has(key);
|
|
57
|
-
}
|
|
58
|
-
isDragging(key) {
|
|
59
|
-
return this.#dragging?.key === key;
|
|
60
|
-
}
|
|
61
|
-
get draggingKey() {
|
|
62
|
-
return this.#dragging?.key ?? null;
|
|
63
|
-
}
|
|
64
|
-
/** Records the pointer position. Returns the rail it is over, if any. */
|
|
65
|
-
notePointer(rails, pointer) {
|
|
66
|
-
this.#hovered.clear();
|
|
67
|
-
for (const rail of rails) {
|
|
68
|
-
if (pointer.column !== rail.column)
|
|
69
|
-
continue;
|
|
70
|
-
const trackRow = pointer.row - rail.rowStart;
|
|
71
|
-
if (trackRow < 0 || trackRow >= rail.trackHeight)
|
|
72
|
-
continue;
|
|
73
|
-
this.#hovered.add(rail.key);
|
|
74
|
-
return rail.key;
|
|
75
|
-
}
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
|
-
/** Starts a drag when the pointer is on that rail's thumb. */
|
|
79
|
-
beginDrag(rail, geometry, pointer) {
|
|
80
|
-
if (geometry === null || pointer.column !== rail.column)
|
|
81
|
-
return false;
|
|
82
|
-
const trackRow = pointer.row - rail.rowStart;
|
|
83
|
-
if (!isThumbRow(geometry, trackRow))
|
|
84
|
-
return false;
|
|
85
|
-
this.#dragging = { key: rail.key, grabOffset: trackRow - geometry.thumbTop };
|
|
86
|
-
return true;
|
|
87
|
-
}
|
|
88
|
-
/** Scroll position for a drag in progress, or null when this rail is not being dragged. */
|
|
89
|
-
dragTo(rail, geometry, pointer) {
|
|
90
|
-
const dragging = this.#dragging;
|
|
91
|
-
if (dragging === undefined || dragging.key !== rail.key || geometry === null)
|
|
92
|
-
return null;
|
|
93
|
-
return scrollForThumbRow(geometry, pointer.row - rail.rowStart - dragging.grabOffset);
|
|
94
|
-
}
|
|
95
|
-
endDrag() {
|
|
96
|
-
this.#dragging = undefined;
|
|
97
|
-
}
|
|
98
|
-
clear() {
|
|
99
|
-
this.#hovered.clear();
|
|
100
|
-
this.#dragging = undefined;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
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
|
-
export declare class ShortcutRegistry<Action extends string = string> {
|
|
44
|
-
#private;
|
|
45
|
-
declare(declaration: ShortcutDeclaration, action: Action): void;
|
|
46
|
-
/** The action this key invokes in this scope, preferring a screen over a global. */
|
|
47
|
-
resolve(key: string, scope: string): Action | null;
|
|
48
|
-
assemble(): ShortcutRegistryResult;
|
|
49
|
-
/**
|
|
50
|
-
* The hint line, in the order the screen declares its keys. It is rendered from
|
|
51
|
-
* the same declarations dispatch reads, so a key cannot be described here and
|
|
52
|
-
* bound to something else, or bound and never mentioned.
|
|
53
|
-
*/
|
|
54
|
-
hint(scope: string, separator?: string): string;
|
|
55
|
-
/** The listing, derived from the declarations dispatch reads. */
|
|
56
|
-
list(scope?: string): readonly ShortcutDeclaration[];
|
|
57
|
-
}
|