@timurproko/a1 0.1.8-dev.3b54f21 → 0.1.8-dev.407
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 +159 -65
- package/bin/cli.js +28 -10
- package/bin/guardian.js +12 -6
- package/bin/module-identity.js +69 -35
- package/bin/pi-tui.d.ts +6 -0
- package/bin/pi-tui.js +28 -0
- package/bin/release-cleanup.js +8 -0
- package/bin/supervisor.js +2 -2
- package/bin/sync-pi-tui-proxy.js +97 -0
- package/bin/ui.js +62 -21
- package/bin/update-recovery.js +274 -0
- package/bin/warmup.js +27 -0
- package/dist/cli/capabilities.d.ts +6 -0
- package/dist/{src/cli → cli}/capabilities.js +1 -1
- package/dist/{src/cli → cli}/dispatch.d.ts +15 -1
- package/dist/cli/dispatch.js +261 -0
- package/dist/cli/package-messages.d.ts +26 -0
- package/dist/cli/package-messages.js +71 -0
- package/dist/{src/cli → cli}/packages.d.ts +11 -2
- package/dist/{src/cli → cli}/packages.js +24 -27
- package/dist/{src/cli → cli}/version-stats.d.ts +6 -0
- package/dist/cli/version-stats.js +112 -0
- package/dist/composition/agent-engine-bridge.d.ts +3 -0
- package/dist/composition/agent-engine-bridge.js +108 -0
- package/dist/composition/index.d.ts +3 -0
- package/dist/composition/index.js +3 -0
- package/dist/composition/owned-ui.d.ts +35 -0
- package/dist/composition/owned-ui.js +118 -0
- package/dist/composition/process.d.ts +16 -0
- package/dist/composition/process.js +45 -0
- package/dist/composition/settings-route-host.d.ts +8 -0
- package/dist/composition/settings-route-host.js +75 -0
- package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.d.ts +2 -2
- package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain-validation.js +22 -4
- package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain.d.ts +17 -0
- package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.d.ts +6 -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 +8 -0
- package/dist/contracts/owned-ui/index.js +8 -0
- package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.d.ts +123 -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/{src/foundation/owned-ui-contracts → contracts/owned-ui}/validation.d.ts +5 -1
- package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/validation.js +129 -4
- package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.d.ts +8 -0
- package/dist/{src/features → features}/launch/development-launch.js +11 -3
- package/dist/{src/features → features}/launch/index.d.ts +0 -1
- package/dist/{src/features → features}/launch/index.js +0 -1
- package/dist/features/launch/intent.d.ts +10 -0
- package/dist/features/launch/intent.js +8 -0
- package/dist/{src/features → features}/launch/prepare-launch.d.ts +0 -2
- package/dist/{src/features → features}/launch/prepare-launch.js +2 -9
- package/dist/{src/features → features}/launch/profile-paths.d.ts +3 -2
- package/dist/{src/features → features}/launch/profile-paths.js +13 -8
- package/dist/{src/features → features}/launch/runtime-selection.d.ts +2 -5
- package/dist/{src/features → features}/owned-ui/customization.d.ts +3 -1
- package/dist/{src/features → features}/owned-ui/customization.js +3 -1
- package/dist/{src/features → features}/owned-ui/diagnostics.d.ts +2 -1
- package/dist/{src/features → features}/owned-ui/diagnostics.js +1 -0
- package/dist/{src/features → features}/owned-ui/index.d.ts +2 -0
- package/dist/{src/features → features}/owned-ui/index.js +2 -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/{src/features → features}/owned-ui/run.d.ts +2 -2
- package/dist/features/owned-ui/run.js +32 -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/{src/features → features}/owned-ui/settings-app.d.ts +3 -3
- package/dist/{src/features → features}/owned-ui/settings-app.js +105 -56
- 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 +223 -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 +1 -0
- package/dist/features/prompt-suggestions/index.js +1 -0
- package/dist/{src/features → features}/workspace/capabilities.d.ts +1 -1
- package/dist/{src/features → features}/workspace/reducer.d.ts +2 -1
- package/dist/{src/features → features}/workspace/reducer.js +2 -1
- package/dist/{src/features → features}/workspace/router.d.ts +2 -1
- package/dist/{src/features → features}/workspace/router.js +1 -0
- package/dist/{src/features → features}/workspace/store.d.ts +2 -1
- package/dist/{src/features → features}/workspace/store.js +1 -0
- package/dist/foundation/launch-context/index.d.ts +59 -0
- package/dist/foundation/launch-context/index.js +136 -0
- package/dist/{src/foundation → foundation}/launch-guardian/main.d.ts +2 -0
- package/dist/{src/foundation → foundation}/launch-guardian/main.js +23 -8
- package/dist/{src/foundation → foundation}/lifecycle/index.d.ts +2 -0
- package/dist/{src/foundation → foundation}/lifecycle/index.js +2 -0
- package/dist/{src/foundation → foundation}/lifecycle/model.d.ts +1 -1
- package/dist/{src/foundation → foundation}/lifecycle/model.js +1 -1
- package/dist/foundation/lifecycle/paths.d.ts +30 -0
- package/dist/{src/foundation → foundation}/lifecycle/paths.js +29 -1
- 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/{src/foundation → foundation}/native-host-protocol/codec.d.ts +2 -0
- package/dist/{src/foundation → foundation}/native-host-protocol/codec.js +2 -0
- package/dist/{src/foundation → foundation}/native-host-protocol/messages.d.ts +1 -1
- package/dist/{src/foundation → foundation}/native-host-protocol/messages.js +1 -1
- 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/{src/foundation → foundation}/process-containment/index.d.ts +1 -0
- package/dist/{src/foundation → foundation}/process-containment/index.js +1 -0
- package/dist/{src/foundation → foundation}/process-containment/linux-process-inspector.d.ts +1 -0
- package/dist/{src/foundation → foundation}/process-containment/linux-process-inspector.js +1 -0
- package/dist/{src/foundation → foundation}/process-containment/native-guardian-containment.d.ts +1 -0
- package/dist/{src/foundation → foundation}/process-containment/native-guardian-containment.js +1 -0
- package/dist/{src/foundation → foundation}/process-containment/windows-process-inspector.d.ts +3 -1
- package/dist/{src/foundation → foundation}/process-containment/windows-process-inspector.js +5 -2
- package/dist/{src/foundation → foundation}/protocol/client.d.ts +1 -0
- package/dist/{src/foundation → foundation}/protocol/client.js +1 -0
- package/dist/{src/foundation → foundation}/protocol/messages.d.ts +1 -0
- package/dist/{src/foundation → foundation}/protocol/messages.js +1 -0
- package/dist/foundation/release/bootstrap.d.ts +55 -0
- package/dist/{src/foundation → foundation}/release/bootstrap.js +219 -46
- 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 +81 -0
- package/dist/foundation/release/dependency-layer.js +466 -0
- package/dist/foundation/release/endpoints.d.ts +20 -0
- package/dist/foundation/release/endpoints.js +50 -0
- package/dist/foundation/release/immutable-platform.d.ts +6 -0
- package/dist/foundation/release/immutable-platform.js +13 -0
- package/dist/{src/foundation → foundation}/release/index.d.ts +6 -0
- package/dist/{src/foundation → foundation}/release/index.js +6 -0
- package/dist/foundation/release/release-gc.d.ts +71 -0
- package/dist/foundation/release/release-gc.js +764 -0
- package/dist/{src/foundation → foundation}/release/release-store.d.ts +9 -3
- package/dist/{src/foundation → foundation}/release/release-store.js +74 -14
- package/dist/{src/foundation → foundation}/release/release.d.ts +6 -1
- package/dist/{src/foundation → foundation}/release/release.js +15 -4
- package/dist/foundation/release/restart-certification.d.ts +68 -0
- package/dist/foundation/release/restart-certification.js +227 -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/{src/foundation → foundation}/release/update-transaction.d.ts +11 -0
- package/dist/{src/foundation → foundation}/release/update-transaction.js +13 -1
- package/dist/{src/foundation → foundation}/release/update.d.ts +40 -4
- package/dist/{src/foundation → foundation}/release/update.js +196 -78
- package/dist/foundation/release/warmup.d.ts +3 -0
- package/dist/foundation/release/warmup.js +47 -0
- package/dist/foundation/startup/index.d.ts +1 -0
- package/dist/foundation/startup/index.js +1 -0
- package/dist/foundation/startup/startup-runtime.d.ts +36 -0
- package/dist/foundation/startup/startup-runtime.js +142 -0
- package/dist/{src/foundation → foundation}/storage/control-store.d.ts +2 -1
- package/dist/{src/foundation → foundation}/storage/control-store.js +39 -4
- package/dist/{src/foundation → foundation}/structured-agent-runtime/backpressure.d.ts +2 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/backpressure.js +2 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/commands.d.ts +2 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/commands.js +2 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/handshake.d.ts +1 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/handshake.js +1 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/reconnection.d.ts +2 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/reconnection.js +2 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/state.d.ts +2 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/state.js +2 -1
- 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 +51 -0
- package/dist/{src/foundation → foundation}/supervision/server.js +142 -20
- package/dist/foundation/terminal-cleanup/fatal-exit.d.ts +12 -0
- package/dist/foundation/terminal-cleanup/fatal-exit.js +85 -0
- package/dist/foundation/terminal-cleanup/index.d.ts +2 -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/{src/foundation/pi-component-adapter → integrations/pi/components}/components.d.ts +1 -1
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/conformance.d.ts +1 -0
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/conformance.js +3 -2
- package/dist/integrations/pi/components/editor-interaction.d.ts +38 -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/{src/foundation/pi-component-adapter → integrations/pi/components}/index.d.ts +2 -1
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/index.js +2 -1
- package/dist/integrations/pi/components/owned-editor-ux.d.ts +74 -0
- package/dist/integrations/pi/components/owned-editor-ux.js +1093 -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/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-components.d.ts +1 -0
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-components.js +1 -0
- package/dist/integrations/pi/components/shell-editor-autocomplete.js +297 -0
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-extension-ui.d.ts +1 -1
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-footer-status.d.ts +4 -4
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-footer-status.js +58 -23
- package/dist/integrations/pi/components/shell-presenters-info.d.ts +43 -0
- package/dist/integrations/pi/components/shell-presenters-info.js +114 -0
- package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +29 -0
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-presenters-transcript.js +174 -170
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-selectors-dialogs.d.ts +8 -4
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-selectors-dialogs.js +10 -6
- package/dist/integrations/pi/components/shell-shared-facade.d.ts +213 -0
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-shared-facade.js +5 -2
- package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +15 -0
- package/dist/integrations/pi/components/submitted-prompt-adapter.js +43 -0
- package/dist/integrations/pi/components/tool-image-presentation.d.ts +21 -0
- package/dist/integrations/pi/components/tool-image-presentation.js +86 -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/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/adjacent/core/keybindings.d.ts +11 -2
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/adjacent/core/keybindings.js +41 -3
- package/dist/integrations/pi/components/upstream/assets/earendil-image.json +12 -0
- package/dist/integrations/pi/components/upstream/components/earendil-announcement.js +42 -0
- package/dist/integrations/pi/components/upstream/components/owned-editor.d.ts +40 -0
- package/dist/integrations/pi/components/upstream/components/owned-editor.js +166 -0
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/scoped-models-selector.d.ts +1 -1
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/scoped-models-selector.js +3 -1
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-footer.d.ts +3 -2
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-footer.js +12 -7
- package/dist/integrations/pi/components/upstream/components/tool-execution.d.ts +61 -0
- package/dist/integrations/pi/components/upstream/components/tool-execution.js +344 -0
- package/dist/integrations/pi/components/upstream/history/editor-core.d.ts +280 -0
- package/dist/integrations/pi/components/upstream/history/editor-core.js +2062 -0
- package/dist/integrations/pi/components/upstream/history/kill-ring.d.ts +32 -0
- package/dist/integrations/pi/components/upstream/history/kill-ring.js +48 -0
- package/dist/integrations/pi/components/upstream/history/printable-key.d.ts +1 -0
- package/dist/integrations/pi/components/upstream/history/printable-key.js +40 -0
- package/dist/integrations/pi/components/upstream/history/text-helpers.d.ts +14 -0
- package/dist/integrations/pi/components/upstream/history/text-helpers.js +28 -0
- package/dist/integrations/pi/components/upstream/history/undo-stack.d.ts +22 -0
- package/dist/integrations/pi/components/upstream/history/undo-stack.js +36 -0
- package/dist/integrations/pi/components/upstream/history/word-navigation.d.ts +24 -0
- package/dist/integrations/pi/components/upstream/history/word-navigation.js +100 -0
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/adapter.d.ts +74 -6
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/adapter.js +1340 -228
- package/dist/integrations/pi/engine/changelog.d.ts +2 -0
- package/dist/integrations/pi/engine/changelog.js +63 -0
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/conformance.d.ts +4 -2
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/conformance.js +15 -5
- package/dist/integrations/pi/engine/http-dispatcher.d.ts +4 -0
- package/dist/integrations/pi/engine/http-dispatcher.js +25 -0
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/index.d.ts +4 -0
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/index.js +4 -0
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/model-auth-integration.d.ts +2 -1
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/model-auth-integration.js +1 -0
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.d.ts +1 -1
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.js +32 -26
- package/dist/integrations/pi/engine/pending-delivery.d.ts +30 -0
- package/dist/integrations/pi/engine/pending-delivery.js +158 -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/{src/foundation/pi-engine-adapter → integrations/pi/engine}/resource-extension-integration.d.ts +2 -1
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/resource-extension-integration.js +1 -0
- package/dist/integrations/pi/engine/resources/changelog.json +12 -0
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/runtime-integration.d.ts +19 -1
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/runtime-integration.js +56 -5
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/session-integration.d.ts +4 -2
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/session-integration.js +19 -4
- 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-effects.d.ts +66 -0
- package/dist/integrations/pi/engine/settings-effects.js +249 -0
- package/dist/integrations/pi/engine/settings-integration.d.ts +43 -0
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/settings-integration.js +102 -108
- 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/windows-filesystem-hygiene.d.ts +21 -0
- package/dist/integrations/pi/engine/windows-filesystem-hygiene.js +55 -0
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflow-controllers.d.ts +3 -2
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflow-controllers.js +1 -0
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflows.d.ts +19 -2
- package/dist/integrations/pi/session-ui/clipboard-diagnostics.d.ts +16 -0
- package/dist/integrations/pi/session-ui/clipboard-diagnostics.js +65 -0
- package/dist/integrations/pi/session-ui/clipboard-image.d.ts +11 -0
- package/dist/integrations/pi/session-ui/clipboard-image.js +38 -0
- package/dist/integrations/pi/session-ui/editor-hyperlink-budget.d.ts +9 -0
- package/dist/integrations/pi/session-ui/editor-hyperlink-budget.js +23 -0
- package/dist/integrations/pi/session-ui/image-preparation-client.d.ts +20 -0
- package/dist/integrations/pi/session-ui/image-preparation-client.js +145 -0
- package/dist/integrations/pi/session-ui/image-preparation.d.ts +18 -0
- package/dist/integrations/pi/session-ui/image-preparation.js +126 -0
- package/dist/integrations/pi/session-ui/image-source.d.ts +13 -0
- package/dist/integrations/pi/session-ui/image-source.js +171 -0
- package/dist/integrations/pi/session-ui/image-worker.d.ts +17 -0
- package/dist/integrations/pi/session-ui/image-worker.js +23 -0
- package/dist/integrations/pi/session-ui/index.d.ts +5 -0
- package/dist/integrations/pi/session-ui/index.js +5 -0
- package/dist/integrations/pi/session-ui/paste-executor.d.ts +10 -0
- package/dist/integrations/pi/session-ui/paste-executor.js +232 -0
- package/dist/integrations/pi/session-ui/paste-helper.d.ts +1 -0
- package/dist/integrations/pi/session-ui/paste-helper.js +173 -0
- package/dist/integrations/pi/session-ui/paste-preparation-client.d.ts +16 -0
- package/dist/integrations/pi/session-ui/paste-preparation-client.js +159 -0
- package/dist/integrations/pi/session-ui/paste-protocol.d.ts +78 -0
- package/dist/integrations/pi/session-ui/paste-protocol.js +18 -0
- package/dist/integrations/pi/session-ui/paste-text-preparation.d.ts +20 -0
- package/dist/integrations/pi/session-ui/paste-text-preparation.js +134 -0
- package/dist/integrations/pi/session-ui/paste-text-worker.d.ts +1 -0
- package/dist/integrations/pi/session-ui/paste-text-worker.js +12 -0
- package/dist/integrations/pi/session-ui/path-chip-presentation.d.ts +7 -0
- package/dist/integrations/pi/session-ui/path-chip-presentation.js +24 -0
- package/dist/integrations/pi/session-ui/prompt-chips.d.ts +72 -0
- package/dist/integrations/pi/session-ui/prompt-chips.js +503 -0
- package/dist/integrations/pi/session-ui/prompt-history-controller.d.ts +36 -0
- package/dist/integrations/pi/session-ui/prompt-history-controller.js +170 -0
- package/dist/integrations/pi/session-ui/prompt-suggestion-controller.d.ts +35 -0
- package/dist/integrations/pi/session-ui/prompt-suggestion-controller.js +207 -0
- package/dist/integrations/pi/session-ui/response-copy-coordinator.d.ts +27 -0
- package/dist/integrations/pi/session-ui/response-copy-coordinator.js +189 -0
- package/dist/integrations/pi/session-ui/response-copy-helper.d.ts +1 -0
- package/dist/integrations/pi/session-ui/response-copy-helper.js +122 -0
- package/dist/integrations/pi/session-ui/response-copy-protocol.d.ts +56 -0
- package/dist/integrations/pi/session-ui/response-copy-protocol.js +5 -0
- package/dist/integrations/pi/session-ui/response-copy-transport.d.ts +31 -0
- package/dist/integrations/pi/session-ui/response-copy-transport.js +187 -0
- package/dist/integrations/pi/session-ui/route-host.d.ts +5 -0
- package/dist/integrations/pi/session-ui/route-host.js +1 -0
- package/dist/integrations/pi/session-ui/session-shell-root.d.ts +221 -0
- package/dist/integrations/pi/session-ui/session-shell-root.js +1305 -0
- package/dist/integrations/pi/session-ui/session-shell.d.ts +55 -0
- package/dist/integrations/pi/session-ui/session-shell.js +1792 -0
- package/dist/integrations/pi/session-ui/session-viewport-controller.d.ts +56 -0
- package/dist/integrations/pi/session-ui/session-viewport-controller.js +569 -0
- package/dist/integrations/pi/session-ui/stream-presentation-coalescer.d.ts +29 -0
- package/dist/integrations/pi/session-ui/stream-presentation-coalescer.js +79 -0
- package/dist/integrations/pi/session-ui/system-clipboard.d.ts +20 -0
- package/dist/integrations/pi/session-ui/system-clipboard.js +156 -0
- package/dist/integrations/pi/session-ui/text-paste.d.ts +5 -0
- package/dist/integrations/pi/session-ui/text-paste.js +16 -0
- package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/adapter.d.ts +10 -1
- package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/adapter.js +255 -11
- package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/contracts.d.ts +32 -6
- package/dist/integrations/pi/tui-runtime/contracts.js +1 -0
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +81 -0
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +424 -0
- package/dist/integrations/pi/tui-runtime/index.d.ts +7 -0
- package/dist/integrations/pi/tui-runtime/index.js +7 -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 +59 -0
- package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +32 -0
- package/dist/integrations/pi/tui-runtime/overlay-geometry.js +159 -0
- package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/presentation-adapter.d.ts +1 -1
- 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/{src/product-identity.d.ts → product-identity.d.ts} +4 -4
- package/dist/{src/product-identity.js → product-identity.js} +7 -38
- package/dist/{src/product-identity.json → product-identity.json} +13 -27
- package/dist/runtime-payload-inventory.json +122333 -0
- package/dist/{src/foundation/ui-apps → ui/apps}/contracts.d.ts +23 -1
- package/dist/{src/foundation/ui-apps → ui/apps}/host.d.ts +1 -1
- package/dist/{src/foundation/ui-apps → ui/apps}/host.js +14 -10
- package/dist/{src/foundation/ui-apps → ui/apps}/registry.d.ts +1 -0
- package/dist/{src/foundation/ui-apps → ui/apps}/registry.js +1 -0
- package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.js +5 -3
- package/dist/{src/foundation/ui-components → ui/components}/frame.d.ts +1 -0
- package/dist/{src/foundation/ui-components → ui/components}/frame.js +1 -0
- package/dist/{src/foundation/ui-components → ui/components}/index.d.ts +7 -0
- package/dist/{src/foundation/ui-components → ui/components}/index.js +7 -0
- package/dist/{src/foundation/ui-components → ui/components}/line-input.d.ts +2 -8
- package/dist/{src/foundation/ui-components → ui/components}/line-input.js +7 -28
- package/dist/{src/foundation/ui-components → ui/components}/list-view.d.ts +0 -6
- package/dist/{src/foundation/ui-components → ui/components}/list-view.js +14 -7
- package/dist/{src/foundation/ui-components → ui/components}/mouse.d.ts +10 -0
- package/dist/{src/foundation/ui-components → ui/components}/mouse.js +24 -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 +54 -0
- package/dist/ui/components/prompt-row.d.ts +14 -0
- package/dist/ui/components/prompt-row.js +20 -0
- package/dist/{src/foundation/ui-components → ui/components}/scrollbar.d.ts +26 -0
- package/dist/{src/foundation/ui-components → ui/components}/scrollbar.js +35 -0
- package/dist/ui/components/selection-copy.d.ts +24 -0
- package/dist/ui/components/selection-copy.js +39 -0
- package/dist/{src/foundation/ui-components → ui/components}/shortcuts.d.ts +1 -0
- package/dist/{src/foundation/ui-components → ui/components}/shortcuts.js +1 -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/{src/foundation/ui-components → ui/components}/surface.d.ts +0 -5
- package/dist/{src/foundation/ui-components → ui/components}/surface.js +1 -5
- package/dist/ui/components/text-selection.d.ts +62 -0
- package/dist/ui/components/text-selection.js +210 -0
- package/dist/{src/foundation/ui-components → ui/components}/text.d.ts +14 -0
- package/dist/{src/foundation/ui-components → ui/components}/text.js +67 -5
- 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/{src/foundation/owned-ui-settings → ui/settings}/declarations.d.ts +8 -1
- package/dist/ui/settings/declarations.js +94 -0
- package/dist/{src/foundation/owned-ui-settings → ui/settings}/migrations.d.ts +1 -1
- package/dist/{src/foundation/owned-ui-settings → ui/settings}/migrations.js +28 -2
- package/dist/{src/foundation/owned-ui-settings → ui/settings}/sections.d.ts +6 -19
- package/dist/{src/foundation/owned-ui-settings → ui/settings}/sections.js +41 -22
- package/dist/{src/foundation/owned-ui-settings → ui/settings}/session.d.ts +9 -17
- package/dist/ui/settings/session.js +164 -0
- package/dist/{src/foundation/owned-ui-settings → ui/settings}/store.d.ts +1 -0
- package/dist/{src/foundation/owned-ui-settings → ui/settings}/store.js +2 -1
- package/docs/architecture/boundaries.md +14 -10
- package/docs/architecture/code-documentation.md +77 -0
- package/docs/architecture/history-editor-provenance.md +100 -0
- package/docs/architecture/internal-naming.md +91 -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 +83 -0
- package/docs/architecture/tool-image-presentation.md +62 -0
- package/docs/architecture/toolchain.md +24 -10
- package/docs/architecture/ui-reference-provenance.md +59 -5
- package/docs/ci-release-runbook.md +236 -79
- package/docs/features/launch-profiles.md +24 -17
- package/docs/features/modal-content-interaction.md +37 -0
- package/docs/features/prompt-history.md +149 -0
- package/docs/local-worktree-cleanup.md +128 -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 +78 -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 +128 -0
- package/docs/repository-governance-live-acceptance.md +77 -0
- package/package.json +45 -28
- package/dist/src/cli/capabilities.d.ts +0 -15
- package/dist/src/cli/dispatch.js +0 -142
- package/dist/src/cli/version-stats.js +0 -72
- package/dist/src/composition/index.d.ts +0 -48
- package/dist/src/composition/index.js +0 -258
- package/dist/src/features/launch/intent.d.ts +0 -7
- package/dist/src/features/launch/intent.js +0 -4
- package/dist/src/features/launch/profiles.d.ts +0 -12
- package/dist/src/features/launch/profiles.js +0 -26
- package/dist/src/features/owned-ui/run.js +0 -15
- package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
- 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-settings/declarations.js +0 -39
- package/dist/src/foundation/owned-ui-settings/session.js +0 -145
- package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +0 -162
- package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -57
- package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -116
- package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +0 -19
- 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-engine-adapter/settings-integration.d.ts +0 -55
- 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/index.d.ts +0 -4
- package/dist/src/foundation/pi-tui-runtime-adapter/index.js +0 -4
- package/dist/src/foundation/release/bootstrap.d.ts +0 -29
- 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/release-gc.d.ts +0 -5
- package/dist/src/foundation/release/release-gc.js +0 -16
- 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/ui-components/spans.d.ts +0 -7
- package/dist/src/foundation/ui-components/spans.js +0 -59
- package/docs/manual-transparent-checkpoint.md +0 -53
- /package/dist/{src/cli → cli}/index.d.ts +0 -0
- /package/dist/{src/cli → cli}/index.js +0 -0
- /package/dist/{src/cli → cli}/version.d.ts +0 -0
- /package/dist/{src/cli → cli}/version.js +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/agent-engine-contracts → contracts/agent-engine}/domain.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.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}/ports.js +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.d.ts +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/foundation/workspace-contracts → contracts/workspace}/index.d.ts +0 -0
- /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/index.js +0 -0
- /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.d.ts +0 -0
- /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.js +0 -0
- /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.d.ts +0 -0
- /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.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/features → features}/launch/runtime-selection.js +0 -0
- /package/dist/{src/features → features}/workspace/capabilities.js +0 -0
- /package/dist/{src/features → features}/workspace/index.d.ts +0 -0
- /package/dist/{src/features → features}/workspace/index.js +0 -0
- /package/dist/{src/features → features}/workspace/presentation.d.ts +0 -0
- /package/dist/{src/features → features}/workspace/presentation.js +0 -0
- /package/dist/{src/features → features}/workspace/reconciliation.d.ts +0 -0
- /package/dist/{src/features → features}/workspace/reconciliation.js +0 -0
- /package/dist/{src/foundation → foundation}/launch-guardian/index.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/launch-guardian/index.js +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/commands.js +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}/native-host-protocol/evidence.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/native-host-protocol/evidence.js +0 -0
- /package/dist/{src/foundation → foundation}/native-host-protocol/index.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/native-host-protocol/index.js +0 -0
- /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.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}/protocol/index.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/protocol/index.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 → foundation}/storage/index.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/storage/index.js +0 -0
- /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/components.js +0 -0
- /package/dist/{src/foundation/pi-owned-ui-integration/route-host.js → integrations/pi/components/editor-interaction.js} +0 -0
- /package/dist/{src/foundation/pi-tui-runtime-adapter/contracts.js → integrations/pi/components/prompt-input-port.js} +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-editor-autocomplete.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-extension-ui.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.d.ts +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/custom-entry.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/custom-entry.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/earendil-announcement.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.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/mermaid.js +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/components/session-selector-search.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.js +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/external-editor.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.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-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.js +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/pi-settings-metadata.json +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/pi-engine-adapter → integrations/pi/engine}/workflows.js +0 -0
- /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.d.ts +0 -0
- /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.js +0 -0
- /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/presentation-adapter.js +0 -0
- /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
- /package/dist/{src/foundation/ui-apps → ui/apps}/index.d.ts +0 -0
- /package/dist/{src/foundation/ui-apps → ui/apps}/index.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}/index.d.ts +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/index.js +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.d.ts +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/resolution.js +0 -0
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source-derived from Pi 0.84.2, MIT, repository https://github.com/earendil-works/pi,
|
|
3
|
+
* commit 914cf1472e715297caa30db4b9535d534a9eb718:
|
|
4
|
+
* packages/coding-agent/src/modes/interactive/components/tool-execution.ts.
|
|
5
|
+
* The private image cache cannot be corrected through the public component API without
|
|
6
|
+
* rebuilding renderer state. Retain its shell/lifecycle and actual public tool definitions;
|
|
7
|
+
* replace only image ownership/conversion, guard invalidation, and remap private imports.
|
|
8
|
+
* Generic text fallback below follows core/tools/render-utils.ts and utils/shell.ts.
|
|
9
|
+
*/
|
|
10
|
+
import { stripVTControlCharacters } from "node:util";
|
|
11
|
+
import { Box, Container, getCapabilities, getImageDimensions, imageFallback, Spacer, Text } from "#pi-tui";
|
|
12
|
+
import { createReadToolDefinition, createBashToolDefinition, createEditToolDefinition, createWriteToolDefinition, createGrepToolDefinition, createFindToolDefinition, createLsToolDefinition, keyHint, } from "@earendil-works/pi-coding-agent";
|
|
13
|
+
import { piTheme } from "../theme/theme.js";
|
|
14
|
+
import { ToolImagePresentation } from "../../tool-image-presentation.js";
|
|
15
|
+
const definitions = { read: createReadToolDefinition, bash: createBashToolDefinition, edit: createEditToolDefinition,
|
|
16
|
+
write: createWriteToolDefinition, grep: createGrepToolDefinition, find: createFindToolDefinition, ls: createLsToolDefinition };
|
|
17
|
+
const FALLBACK_PREVIEW_LINES = 10;
|
|
18
|
+
export class ToolExecutionComponent extends Container {
|
|
19
|
+
contentBox;
|
|
20
|
+
contentText;
|
|
21
|
+
selfRenderContainer;
|
|
22
|
+
callRendererComponent;
|
|
23
|
+
resultRendererComponent;
|
|
24
|
+
rendererState = {};
|
|
25
|
+
imageComponents = [];
|
|
26
|
+
images;
|
|
27
|
+
disposed = false;
|
|
28
|
+
updatingDisplay = false;
|
|
29
|
+
imageSpacers = [];
|
|
30
|
+
toolName;
|
|
31
|
+
toolCallId;
|
|
32
|
+
args;
|
|
33
|
+
expanded = false;
|
|
34
|
+
showImages;
|
|
35
|
+
imageWidthCells;
|
|
36
|
+
isPartial = true;
|
|
37
|
+
toolDefinition;
|
|
38
|
+
builtInToolDefinition;
|
|
39
|
+
ui;
|
|
40
|
+
cwd;
|
|
41
|
+
executionStarted = false;
|
|
42
|
+
argsComplete = false;
|
|
43
|
+
result;
|
|
44
|
+
hideComponent = false;
|
|
45
|
+
constructor(toolName, toolCallId, args, options = {}, toolDefinition, ui, cwd) {
|
|
46
|
+
super();
|
|
47
|
+
this.toolName = toolName;
|
|
48
|
+
this.toolCallId = toolCallId;
|
|
49
|
+
this.args = args;
|
|
50
|
+
this.toolDefinition = toolDefinition;
|
|
51
|
+
this.builtInToolDefinition = Object.hasOwn(definitions, toolName)
|
|
52
|
+
? definitions[toolName](cwd) : undefined;
|
|
53
|
+
this.showImages = options.showImages ?? true;
|
|
54
|
+
this.imageWidthCells = options.imageWidthCells ?? 60;
|
|
55
|
+
this.ui = ui;
|
|
56
|
+
this.cwd = cwd;
|
|
57
|
+
this.images = new ToolImagePresentation(() => {
|
|
58
|
+
if (this.disposed)
|
|
59
|
+
return;
|
|
60
|
+
this.updateDisplay();
|
|
61
|
+
this.ui.requestRender();
|
|
62
|
+
});
|
|
63
|
+
this.addChild(new Spacer(1));
|
|
64
|
+
// Always create all shell variants. contentBox is used for default renderer-based composition.
|
|
65
|
+
// selfRenderContainer is used when the tool renders its own framing.
|
|
66
|
+
// contentText is reserved for generic fallback rendering when no tool definition exists.
|
|
67
|
+
this.contentBox = new Box(1, 1, (text) => piTheme().bg("toolPendingBg", text));
|
|
68
|
+
this.contentText = new Text("", 1, 1, (text) => piTheme().bg("toolPendingBg", text));
|
|
69
|
+
this.selfRenderContainer = new Container();
|
|
70
|
+
if (this.hasRendererDefinition()) {
|
|
71
|
+
this.addChild(this.getRenderShell() === "self" ? this.selfRenderContainer : this.contentBox);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.addChild(this.contentText);
|
|
75
|
+
}
|
|
76
|
+
this.updateDisplay();
|
|
77
|
+
}
|
|
78
|
+
getCallRenderer() {
|
|
79
|
+
if (!this.builtInToolDefinition) {
|
|
80
|
+
return this.toolDefinition?.renderCall;
|
|
81
|
+
}
|
|
82
|
+
if (!this.toolDefinition) {
|
|
83
|
+
return this.builtInToolDefinition.renderCall;
|
|
84
|
+
}
|
|
85
|
+
return this.toolDefinition.renderCall ?? this.builtInToolDefinition.renderCall;
|
|
86
|
+
}
|
|
87
|
+
getResultRenderer() {
|
|
88
|
+
if (!this.builtInToolDefinition) {
|
|
89
|
+
return this.toolDefinition?.renderResult;
|
|
90
|
+
}
|
|
91
|
+
if (!this.toolDefinition) {
|
|
92
|
+
return this.builtInToolDefinition.renderResult;
|
|
93
|
+
}
|
|
94
|
+
return this.toolDefinition.renderResult ?? this.builtInToolDefinition.renderResult;
|
|
95
|
+
}
|
|
96
|
+
hasRendererDefinition() {
|
|
97
|
+
return this.builtInToolDefinition !== undefined || this.toolDefinition !== undefined;
|
|
98
|
+
}
|
|
99
|
+
getRenderShell() {
|
|
100
|
+
if (!this.builtInToolDefinition) {
|
|
101
|
+
return this.toolDefinition?.renderShell ?? "default";
|
|
102
|
+
}
|
|
103
|
+
if (!this.toolDefinition) {
|
|
104
|
+
return this.builtInToolDefinition.renderShell ?? "default";
|
|
105
|
+
}
|
|
106
|
+
return this.toolDefinition.renderShell ?? this.builtInToolDefinition.renderShell ?? "default";
|
|
107
|
+
}
|
|
108
|
+
getRenderContext(lastComponent) {
|
|
109
|
+
return {
|
|
110
|
+
args: this.args,
|
|
111
|
+
toolCallId: this.toolCallId,
|
|
112
|
+
invalidate: () => {
|
|
113
|
+
if (this.disposed || this.updatingDisplay)
|
|
114
|
+
return;
|
|
115
|
+
this.invalidate();
|
|
116
|
+
this.ui.requestRender();
|
|
117
|
+
},
|
|
118
|
+
lastComponent,
|
|
119
|
+
state: this.rendererState,
|
|
120
|
+
cwd: this.cwd,
|
|
121
|
+
executionStarted: this.executionStarted,
|
|
122
|
+
argsComplete: this.argsComplete,
|
|
123
|
+
isPartial: this.isPartial,
|
|
124
|
+
expanded: this.expanded,
|
|
125
|
+
showImages: this.showImages,
|
|
126
|
+
isError: this.result?.isError ?? false,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
createCallFallback() {
|
|
130
|
+
const theme = piTheme();
|
|
131
|
+
return new Text(theme.fg("toolTitle", theme.bold(this.toolName)), 0, 0);
|
|
132
|
+
}
|
|
133
|
+
createResultFallback() {
|
|
134
|
+
const theme = piTheme();
|
|
135
|
+
const output = this.getTextOutput();
|
|
136
|
+
if (!output) {
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
const lines = output.split("\n");
|
|
140
|
+
const displayLines = this.expanded ? lines : lines.slice(0, FALLBACK_PREVIEW_LINES);
|
|
141
|
+
const remaining = lines.length - displayLines.length;
|
|
142
|
+
let text = displayLines.map((line) => theme.fg("toolOutput", line)).join("\n");
|
|
143
|
+
if (remaining > 0) {
|
|
144
|
+
text += `${theme.fg("muted", `\n... (${remaining} more lines,`)} ${keyHint("app.tools.expand", "to expand")}${theme.fg("muted", ")")}`;
|
|
145
|
+
}
|
|
146
|
+
return new Text(text, 0, 0);
|
|
147
|
+
}
|
|
148
|
+
updateArgs(args) {
|
|
149
|
+
this.args = args;
|
|
150
|
+
this.updateDisplay();
|
|
151
|
+
}
|
|
152
|
+
markExecutionStarted() {
|
|
153
|
+
this.executionStarted = true;
|
|
154
|
+
this.updateDisplay();
|
|
155
|
+
this.ui.requestRender();
|
|
156
|
+
}
|
|
157
|
+
setArgsComplete() {
|
|
158
|
+
this.argsComplete = true;
|
|
159
|
+
this.updateDisplay();
|
|
160
|
+
this.ui.requestRender();
|
|
161
|
+
}
|
|
162
|
+
updateResult(result, isPartial = false) {
|
|
163
|
+
this.result = result;
|
|
164
|
+
this.isPartial = isPartial;
|
|
165
|
+
this.updateDisplay();
|
|
166
|
+
}
|
|
167
|
+
/** End mount ownership without letting an obsolete conversion or extension callback repaint. */
|
|
168
|
+
dispose() {
|
|
169
|
+
this.disposed = true;
|
|
170
|
+
this.images.dispose();
|
|
171
|
+
this.result = undefined;
|
|
172
|
+
this.callRendererComponent = undefined;
|
|
173
|
+
this.resultRendererComponent = undefined;
|
|
174
|
+
this.rendererState = {};
|
|
175
|
+
this.imageComponents = [];
|
|
176
|
+
this.imageSpacers = [];
|
|
177
|
+
this.clear();
|
|
178
|
+
}
|
|
179
|
+
setExpanded(expanded) {
|
|
180
|
+
this.expanded = expanded;
|
|
181
|
+
this.updateDisplay();
|
|
182
|
+
}
|
|
183
|
+
setShowImages(show) {
|
|
184
|
+
this.showImages = show;
|
|
185
|
+
this.updateDisplay();
|
|
186
|
+
}
|
|
187
|
+
setImageWidthCells(width) {
|
|
188
|
+
this.imageWidthCells = Math.max(1, Math.floor(width));
|
|
189
|
+
this.updateDisplay();
|
|
190
|
+
}
|
|
191
|
+
invalidate() {
|
|
192
|
+
super.invalidate();
|
|
193
|
+
this.updateDisplay();
|
|
194
|
+
}
|
|
195
|
+
render(width) {
|
|
196
|
+
if (this.hideComponent) {
|
|
197
|
+
return [];
|
|
198
|
+
}
|
|
199
|
+
if (this.hasRendererDefinition() && this.getRenderShell() === "self") {
|
|
200
|
+
const contentLines = this.selfRenderContainer.render(width);
|
|
201
|
+
if (contentLines.length === 0 && this.imageComponents.length === 0) {
|
|
202
|
+
return [];
|
|
203
|
+
}
|
|
204
|
+
const lines = [];
|
|
205
|
+
if (contentLines.length > 0) {
|
|
206
|
+
lines.push("");
|
|
207
|
+
lines.push(...contentLines);
|
|
208
|
+
}
|
|
209
|
+
for (let i = 0; i < this.imageComponents.length; i++) {
|
|
210
|
+
const spacer = this.imageSpacers[i];
|
|
211
|
+
if (spacer) {
|
|
212
|
+
lines.push(...spacer.render(width));
|
|
213
|
+
}
|
|
214
|
+
const imageComponent = this.imageComponents[i];
|
|
215
|
+
if (imageComponent) {
|
|
216
|
+
lines.push(...imageComponent.render(width));
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return lines;
|
|
220
|
+
}
|
|
221
|
+
return super.render(width);
|
|
222
|
+
}
|
|
223
|
+
updateDisplay() {
|
|
224
|
+
if (this.disposed || this.updatingDisplay)
|
|
225
|
+
return;
|
|
226
|
+
this.updatingDisplay = true;
|
|
227
|
+
try {
|
|
228
|
+
this.composeDisplay();
|
|
229
|
+
}
|
|
230
|
+
finally {
|
|
231
|
+
this.updatingDisplay = false;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
composeDisplay() {
|
|
235
|
+
const theme = piTheme();
|
|
236
|
+
const bgFn = this.isPartial
|
|
237
|
+
? (text) => theme.bg("toolPendingBg", text)
|
|
238
|
+
: this.result?.isError
|
|
239
|
+
? (text) => theme.bg("toolErrorBg", text)
|
|
240
|
+
: (text) => theme.bg("toolSuccessBg", text);
|
|
241
|
+
let hasContent = false;
|
|
242
|
+
this.hideComponent = false;
|
|
243
|
+
if (this.hasRendererDefinition()) {
|
|
244
|
+
const renderContainer = this.getRenderShell() === "self" ? this.selfRenderContainer : this.contentBox;
|
|
245
|
+
if (renderContainer instanceof Box) {
|
|
246
|
+
renderContainer.setBgFn(bgFn);
|
|
247
|
+
}
|
|
248
|
+
renderContainer.clear();
|
|
249
|
+
const callRenderer = this.getCallRenderer();
|
|
250
|
+
if (!callRenderer) {
|
|
251
|
+
renderContainer.addChild(this.createCallFallback());
|
|
252
|
+
hasContent = true;
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
try {
|
|
256
|
+
const component = callRenderer(this.args, theme, this.getRenderContext(this.callRendererComponent));
|
|
257
|
+
this.callRendererComponent = component;
|
|
258
|
+
renderContainer.addChild(component);
|
|
259
|
+
hasContent = true;
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
this.callRendererComponent = undefined;
|
|
263
|
+
renderContainer.addChild(this.createCallFallback());
|
|
264
|
+
hasContent = true;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
if (this.result) {
|
|
268
|
+
const resultRenderer = this.getResultRenderer();
|
|
269
|
+
if (!resultRenderer) {
|
|
270
|
+
const component = this.createResultFallback();
|
|
271
|
+
if (component) {
|
|
272
|
+
renderContainer.addChild(component);
|
|
273
|
+
hasContent = true;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
try {
|
|
278
|
+
const component = resultRenderer({ content: this.result.content, details: this.result.details }, { expanded: this.expanded, isPartial: this.isPartial }, theme, this.getRenderContext(this.resultRendererComponent));
|
|
279
|
+
this.resultRendererComponent = component;
|
|
280
|
+
renderContainer.addChild(component);
|
|
281
|
+
hasContent = true;
|
|
282
|
+
}
|
|
283
|
+
catch {
|
|
284
|
+
this.resultRendererComponent = undefined;
|
|
285
|
+
const component = this.createResultFallback();
|
|
286
|
+
if (component) {
|
|
287
|
+
renderContainer.addChild(component);
|
|
288
|
+
hasContent = true;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
this.contentText.setCustomBgFn(bgFn);
|
|
296
|
+
this.contentText.setText(this.formatToolExecution());
|
|
297
|
+
hasContent = true;
|
|
298
|
+
}
|
|
299
|
+
for (const img of this.imageComponents) {
|
|
300
|
+
this.removeChild(img);
|
|
301
|
+
}
|
|
302
|
+
this.imageComponents = [];
|
|
303
|
+
for (const spacer of this.imageSpacers) {
|
|
304
|
+
this.removeChild(spacer);
|
|
305
|
+
}
|
|
306
|
+
this.imageSpacers = [];
|
|
307
|
+
this.images.update(this.result?.content ?? [], this.showImages);
|
|
308
|
+
for (const imageComponent of this.images.components(this.imageWidthCells)) {
|
|
309
|
+
const spacer = new Spacer(1);
|
|
310
|
+
this.addChild(spacer);
|
|
311
|
+
this.imageSpacers.push(spacer);
|
|
312
|
+
this.imageComponents.push(imageComponent);
|
|
313
|
+
this.addChild(imageComponent);
|
|
314
|
+
}
|
|
315
|
+
if (this.hasRendererDefinition() && !hasContent && this.imageComponents.length === 0) {
|
|
316
|
+
this.hideComponent = true;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
getTextOutput() {
|
|
320
|
+
if (!this.result)
|
|
321
|
+
return "";
|
|
322
|
+
const text = this.result.content.filter(part => part.type === "text").map(part => Array.from(stripVTControlCharacters(part.text ?? "")).filter(char => {
|
|
323
|
+
const code = char.codePointAt(0);
|
|
324
|
+
return code === 9 || code === 10 || code > 31 && (code < 0xfff9 || code > 0xfffb);
|
|
325
|
+
}).join("")).join("\n");
|
|
326
|
+
if (getCapabilities().images && this.showImages)
|
|
327
|
+
return text;
|
|
328
|
+
const indicators = this.result.content.filter(part => part.type === "image").map(part => imageFallback(part.mimeType ?? "image/unknown", part.data && part.mimeType ? getImageDimensions(part.data, part.mimeType) ?? undefined : undefined)).join("\n");
|
|
329
|
+
return text && indicators ? `${text}\n${indicators}` : text || indicators;
|
|
330
|
+
}
|
|
331
|
+
formatToolExecution() {
|
|
332
|
+
const theme = piTheme();
|
|
333
|
+
let text = theme.fg("toolTitle", theme.bold(this.toolName));
|
|
334
|
+
const content = JSON.stringify(this.args, null, 2);
|
|
335
|
+
if (content) {
|
|
336
|
+
text += `\n\n${content}`;
|
|
337
|
+
}
|
|
338
|
+
const output = this.getTextOutput();
|
|
339
|
+
if (output) {
|
|
340
|
+
text += `\n${output}`;
|
|
341
|
+
}
|
|
342
|
+
return text;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapted from @earendil-works/pi-tui 0.84.2, packages/tui/src/components/editor.ts (MIT).
|
|
3
|
+
* Source commit: 914cf1472e715297caa30db4b9535d534a9eb718.
|
|
4
|
+
* Modifications: public imports and owned editor-local typed seams; see docs/architecture/history-editor-provenance.md.
|
|
5
|
+
*/
|
|
6
|
+
import { type AutocompleteProvider, type Component, type Focusable, type TUI, type SelectListTheme } from "#pi-tui";
|
|
7
|
+
import type { EditorInteractionPort, EditorRecallPort } from "../../editor-interaction.js";
|
|
8
|
+
/**
|
|
9
|
+
* Represents a chunk of text for word-wrap layout.
|
|
10
|
+
* Tracks both the text content and its position in the original line.
|
|
11
|
+
*/
|
|
12
|
+
export interface TextChunk {
|
|
13
|
+
text: string;
|
|
14
|
+
startIndex: number;
|
|
15
|
+
endIndex: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Split a line into word-wrapped chunks.
|
|
19
|
+
* Wraps at word boundaries when possible, falling back to character-level
|
|
20
|
+
* wrapping for words longer than the available width.
|
|
21
|
+
*
|
|
22
|
+
* @param line - The text line to wrap
|
|
23
|
+
* @param maxWidth - Maximum visible width per chunk
|
|
24
|
+
* @param preSegmented - Optional pre-segmented graphemes (e.g. with paste-marker awareness).
|
|
25
|
+
* When omitted the default Intl.Segmenter is used.
|
|
26
|
+
* @returns Array of chunks with text and position information
|
|
27
|
+
*/
|
|
28
|
+
export declare function wordWrapLine(line: string, maxWidth: number, preSegmented?: Intl.SegmentData[]): TextChunk[];
|
|
29
|
+
export interface EditorTheme {
|
|
30
|
+
borderColor: (str: string) => string;
|
|
31
|
+
selectList: SelectListTheme;
|
|
32
|
+
}
|
|
33
|
+
export interface EditorOptions {
|
|
34
|
+
persistentHistory?: boolean;
|
|
35
|
+
styleHistoryLabel?: (text: string) => string;
|
|
36
|
+
paddingX?: number;
|
|
37
|
+
autocompleteMaxVisible?: number;
|
|
38
|
+
}
|
|
39
|
+
export declare class HistoryEditorCore implements Component, Focusable {
|
|
40
|
+
private segmentTransform;
|
|
41
|
+
readonly interaction: EditorInteractionPort;
|
|
42
|
+
private state;
|
|
43
|
+
/** Focusable interface - set by TUI when focus changes */
|
|
44
|
+
focused: boolean;
|
|
45
|
+
protected tui: TUI;
|
|
46
|
+
private theme;
|
|
47
|
+
private paddingX;
|
|
48
|
+
private lastWidth;
|
|
49
|
+
private scrollOffset;
|
|
50
|
+
borderColor: (str: string) => string;
|
|
51
|
+
private autocompleteProvider?;
|
|
52
|
+
private autocompleteTriggerCharacters;
|
|
53
|
+
private autocompleteTriggerPattern;
|
|
54
|
+
private autocompleteDebouncePattern;
|
|
55
|
+
private autocompleteList;
|
|
56
|
+
private autocompleteState;
|
|
57
|
+
private autocompletePrefix;
|
|
58
|
+
private autocompleteMaxVisible;
|
|
59
|
+
private autocompleteAbort;
|
|
60
|
+
private autocompleteDebounceTimer;
|
|
61
|
+
private autocompleteRequestTask;
|
|
62
|
+
private autocompleteStartToken;
|
|
63
|
+
private autocompleteRequestId;
|
|
64
|
+
private pastes;
|
|
65
|
+
private pasteCounter;
|
|
66
|
+
private pasteBuffer;
|
|
67
|
+
private isInPaste;
|
|
68
|
+
private history;
|
|
69
|
+
private historyIndex;
|
|
70
|
+
private historyDraft;
|
|
71
|
+
readonly recall: EditorRecallPort;
|
|
72
|
+
private persistentHistory;
|
|
73
|
+
private readonly styleHistoryLabel;
|
|
74
|
+
private historyPasteDraft;
|
|
75
|
+
private pendingHistory;
|
|
76
|
+
onHistoryChange?: (state: {
|
|
77
|
+
readonly index: number;
|
|
78
|
+
readonly total: number;
|
|
79
|
+
}) => void;
|
|
80
|
+
configurePersistentHistory(enabled: boolean): void;
|
|
81
|
+
replaceHistoryEntries(entries: readonly string[]): void;
|
|
82
|
+
getHistoryPosition(): {
|
|
83
|
+
readonly index: number;
|
|
84
|
+
readonly total: number;
|
|
85
|
+
};
|
|
86
|
+
resetHistoryBrowsing(): void;
|
|
87
|
+
private applyPendingHistory;
|
|
88
|
+
private notifyHistory;
|
|
89
|
+
private killRing;
|
|
90
|
+
private lastAction;
|
|
91
|
+
private jumpMode;
|
|
92
|
+
private preferredVisualCol;
|
|
93
|
+
private snappedFromCursorCol;
|
|
94
|
+
private undoStack;
|
|
95
|
+
onSubmit?: (text: string) => void;
|
|
96
|
+
onChange?: (text: string) => void;
|
|
97
|
+
disableSubmit: boolean;
|
|
98
|
+
constructor(tui: TUI, theme: EditorTheme, options?: EditorOptions);
|
|
99
|
+
/** Set of currently valid paste IDs, for marker-aware segmentation. */
|
|
100
|
+
private validPasteIds;
|
|
101
|
+
/** Segment text with paste-marker awareness, only merging markers with valid IDs. */
|
|
102
|
+
private segment;
|
|
103
|
+
getPaddingX(): number;
|
|
104
|
+
setPaddingX(padding: number): void;
|
|
105
|
+
getAutocompleteMaxVisible(): number;
|
|
106
|
+
setAutocompleteMaxVisible(maxVisible: number): void;
|
|
107
|
+
setAutocompleteProvider(provider: AutocompleteProvider): void;
|
|
108
|
+
/**
|
|
109
|
+
* Add a prompt to history for up/down arrow navigation.
|
|
110
|
+
* Called after successful submission.
|
|
111
|
+
*/
|
|
112
|
+
addToHistory(text: string): void;
|
|
113
|
+
private isEditorEmpty;
|
|
114
|
+
private isOnFirstVisualLine;
|
|
115
|
+
private isOnLastVisualLine;
|
|
116
|
+
private navigateHistory;
|
|
117
|
+
private exitHistoryBrowsing;
|
|
118
|
+
/** Internal setText that doesn't reset history state - used by navigateHistory */
|
|
119
|
+
private setTextInternal;
|
|
120
|
+
invalidate(): void;
|
|
121
|
+
render(width: number): string[];
|
|
122
|
+
handleInput(data: string): void;
|
|
123
|
+
private layoutText;
|
|
124
|
+
getText(): string;
|
|
125
|
+
private expandPasteMarkers;
|
|
126
|
+
/**
|
|
127
|
+
* Get text with paste markers expanded to their actual content.
|
|
128
|
+
* Use this when you need the full content (e.g., for external editor).
|
|
129
|
+
*/
|
|
130
|
+
getExpandedText(): string;
|
|
131
|
+
getLines(): string[];
|
|
132
|
+
getCursor(): {
|
|
133
|
+
line: number;
|
|
134
|
+
col: number;
|
|
135
|
+
};
|
|
136
|
+
setText(text: string): void;
|
|
137
|
+
/**
|
|
138
|
+
* Insert text at the current cursor position.
|
|
139
|
+
* Used for programmatic insertion (e.g., clipboard image markers).
|
|
140
|
+
* This is atomic for undo - single undo restores entire pre-insert state.
|
|
141
|
+
*/
|
|
142
|
+
insertTextAtCursor(text: string): void;
|
|
143
|
+
/**
|
|
144
|
+
* Normalize text for editor storage:
|
|
145
|
+
* - Normalize line endings (\r\n and \r -> \n)
|
|
146
|
+
* - Expand tabs to 4 spaces
|
|
147
|
+
*/
|
|
148
|
+
private normalizeText;
|
|
149
|
+
/**
|
|
150
|
+
* Internal text insertion at cursor. Handles single and multi-line text.
|
|
151
|
+
* Does not push undo snapshots or trigger autocomplete - caller is responsible.
|
|
152
|
+
* Normalizes line endings and calls onChange once at the end.
|
|
153
|
+
*/
|
|
154
|
+
private insertTextAtCursorInternal;
|
|
155
|
+
private insertCharacter;
|
|
156
|
+
private handlePaste;
|
|
157
|
+
private addNewLine;
|
|
158
|
+
private shouldSubmitOnBackslashEnter;
|
|
159
|
+
private submitValue;
|
|
160
|
+
private handleBackspace;
|
|
161
|
+
/**
|
|
162
|
+
* Set cursor column and clear preferredVisualCol.
|
|
163
|
+
* Use this for all non-vertical cursor movements to reset sticky column behavior.
|
|
164
|
+
*/
|
|
165
|
+
private setCursorCol;
|
|
166
|
+
/**
|
|
167
|
+
* Move cursor to a target visual line, applying sticky column logic.
|
|
168
|
+
* Shared by moveCursor() and pageScroll().
|
|
169
|
+
*/
|
|
170
|
+
private moveToVisualLine;
|
|
171
|
+
/**
|
|
172
|
+
* Compute the target visual column for vertical cursor movement.
|
|
173
|
+
* Implements the sticky column decision table:
|
|
174
|
+
*
|
|
175
|
+
* | P | S | T | U | Scenario | Set Preferred | Move To |
|
|
176
|
+
* |---|---|---|---| ---------------------------------------------------- |---------------|-------------|
|
|
177
|
+
* | 0 | * | 0 | - | Start nav, target fits | null | current |
|
|
178
|
+
* | 0 | * | 1 | - | Start nav, target shorter | current | target end |
|
|
179
|
+
* | 1 | 0 | 0 | 0 | Clamped, target fits preferred | null | preferred |
|
|
180
|
+
* | 1 | 0 | 0 | 1 | Clamped, target longer but still can't fit preferred | keep | target end |
|
|
181
|
+
* | 1 | 0 | 1 | - | Clamped, target even shorter | keep | target end |
|
|
182
|
+
* | 1 | 1 | 0 | - | Rewrapped, target fits current | null | current |
|
|
183
|
+
* | 1 | 1 | 1 | - | Rewrapped, target shorter than current | current | target end |
|
|
184
|
+
*
|
|
185
|
+
* Where:
|
|
186
|
+
* - P = preferred col is set
|
|
187
|
+
* - S = cursor in middle of source line (not clamped to end)
|
|
188
|
+
* - T = target line shorter than current visual col
|
|
189
|
+
* - U = target line shorter than preferred col
|
|
190
|
+
*/
|
|
191
|
+
private computeVerticalMoveColumn;
|
|
192
|
+
private moveToLineStart;
|
|
193
|
+
private moveToLineEnd;
|
|
194
|
+
private deleteToStartOfLine;
|
|
195
|
+
private deleteToEndOfLine;
|
|
196
|
+
private deleteWordBackwards;
|
|
197
|
+
private deleteWordForward;
|
|
198
|
+
private handleForwardDelete;
|
|
199
|
+
/**
|
|
200
|
+
* Build a mapping from visual lines to logical positions.
|
|
201
|
+
* Returns an array where each element represents a visual line with:
|
|
202
|
+
* - logicalLine: index into this.state.lines
|
|
203
|
+
* - startCol: starting column in the logical line
|
|
204
|
+
* - length: length of this visual line segment
|
|
205
|
+
*/
|
|
206
|
+
private buildVisualLineMap;
|
|
207
|
+
/**
|
|
208
|
+
* Find the visual line index that contains the given logical position.
|
|
209
|
+
*/
|
|
210
|
+
private findVisualLineAt;
|
|
211
|
+
/**
|
|
212
|
+
* Find the visual line index for the current cursor position.
|
|
213
|
+
*/
|
|
214
|
+
private findCurrentVisualLine;
|
|
215
|
+
private moveCursor;
|
|
216
|
+
/**
|
|
217
|
+
* Scroll by a page (direction: -1 for up, 1 for down).
|
|
218
|
+
* Moves cursor by the page size while keeping it in bounds.
|
|
219
|
+
*/
|
|
220
|
+
private pageScroll;
|
|
221
|
+
private moveWordBackwards;
|
|
222
|
+
/**
|
|
223
|
+
* Yank (paste) the most recent kill ring entry at cursor position.
|
|
224
|
+
*/
|
|
225
|
+
private yank;
|
|
226
|
+
/**
|
|
227
|
+
* Cycle through kill ring (only works immediately after yank or yank-pop).
|
|
228
|
+
* Replaces the last yanked text with the previous entry in the ring.
|
|
229
|
+
*/
|
|
230
|
+
private yankPop;
|
|
231
|
+
/**
|
|
232
|
+
* Insert text at cursor position (used by yank operations).
|
|
233
|
+
*/
|
|
234
|
+
private insertYankedText;
|
|
235
|
+
/**
|
|
236
|
+
* Delete the previously yanked text (used by yank-pop).
|
|
237
|
+
* The yanked text is derived from killRing[end] since it hasn't been rotated yet.
|
|
238
|
+
*/
|
|
239
|
+
private deleteYankedText;
|
|
240
|
+
private pushUndoSnapshot;
|
|
241
|
+
private undo;
|
|
242
|
+
/**
|
|
243
|
+
* Jump to the first occurrence of a character in the specified direction.
|
|
244
|
+
* Multi-line search. Case-sensitive. Skips the current cursor position.
|
|
245
|
+
*/
|
|
246
|
+
private jumpToChar;
|
|
247
|
+
private moveWordForwards;
|
|
248
|
+
private isSlashMenuAllowed;
|
|
249
|
+
private isAtStartOfMessage;
|
|
250
|
+
private isInSlashCommandContext;
|
|
251
|
+
/**
|
|
252
|
+
* Find the best autocomplete item index for the given prefix.
|
|
253
|
+
* Returns -1 if no match is found.
|
|
254
|
+
*
|
|
255
|
+
* Match priority:
|
|
256
|
+
* 1. Exact match (prefix === item.value) -> always selected
|
|
257
|
+
* 2. Prefix match -> first item whose value starts with prefix
|
|
258
|
+
* 3. No match -> -1 (keep default highlight)
|
|
259
|
+
*
|
|
260
|
+
* Matching is case-sensitive and checks item.value only.
|
|
261
|
+
*/
|
|
262
|
+
private getBestAutocompleteMatchIndex;
|
|
263
|
+
private createAutocompleteList;
|
|
264
|
+
private tryTriggerAutocomplete;
|
|
265
|
+
private handleTabCompletion;
|
|
266
|
+
private handleSlashCommandCompletion;
|
|
267
|
+
private forceFileAutocomplete;
|
|
268
|
+
private requestAutocomplete;
|
|
269
|
+
private startAutocompleteRequest;
|
|
270
|
+
private setAutocompleteTriggerCharacters;
|
|
271
|
+
private getAutocompleteDebounceMs;
|
|
272
|
+
private runAutocompleteRequest;
|
|
273
|
+
private isAutocompleteRequestCurrent;
|
|
274
|
+
private applyAutocompleteSuggestions;
|
|
275
|
+
private cancelAutocompleteRequest;
|
|
276
|
+
private clearAutocompleteUi;
|
|
277
|
+
private cancelAutocomplete;
|
|
278
|
+
isShowingAutocomplete(): boolean;
|
|
279
|
+
private updateAutocomplete;
|
|
280
|
+
}
|