@timurproko/a1 0.1.8-dev.de7821a → 0.2.0
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 +104 -65
- package/bin/activate.js +8 -0
- package/bin/cli.js +37 -11
- package/bin/guardian.js +21 -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 +365 -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 +499 -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 +278 -0
- package/dist/app/session-shell/session-shell-root.js +1442 -0
- package/dist/app/session-shell/session-shell.d.ts +66 -0
- package/dist/app/session-shell/session-shell.js +2151 -0
- package/dist/app/session-shell/session-viewport-controller.d.ts +62 -0
- package/dist/app/session-shell/session-viewport-controller.js +623 -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 +53 -0
- package/dist/cli/dispatch.js +287 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.js +4 -0
- package/dist/cli/package-messages.d.ts +27 -0
- package/dist/cli/package-messages.js +83 -0
- package/dist/cli/packages.d.ts +32 -0
- package/dist/cli/packages.js +81 -0
- package/dist/cli/session-context.d.ts +9 -0
- package/dist/cli/session-context.js +29 -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 +159 -0
- package/dist/composition/settings-route-host.d.ts +16 -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 +14 -0
- package/dist/contracts/owned-ui/index.js +9 -0
- package/dist/contracts/owned-ui/model.d.ts +383 -0
- package/dist/contracts/owned-ui/prompt-chips.d.ts +15 -0
- package/dist/contracts/owned-ui/prompt-chips.js +59 -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 +554 -0
- package/dist/contracts/presentation/index.d.ts +117 -0
- package/dist/contracts/presentation/index.js +68 -0
- package/dist/features/launch/development-launch.js +36 -0
- package/dist/features/launch/index.d.ts +14 -0
- package/dist/features/launch/index.js +7 -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/launch/session-context.d.ts +8 -0
- package/dist/features/launch/session-context.js +8 -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 +43 -0
- package/dist/features/owned-ui/reference-screen-app.js +279 -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 +851 -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 +179 -0
- package/dist/foundation/lifecycle/commands.js +1 -0
- package/dist/foundation/lifecycle/index.d.ts +13 -0
- package/dist/foundation/lifecycle/index.js +6 -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-repository-context.d.ts +18 -0
- package/dist/foundation/lifecycle/session-repository-context.js +173 -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 +470 -0
- package/dist/foundation/release/cohort-state.d.ts +159 -0
- package/dist/foundation/release/cohort-state.js +507 -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 +33 -0
- package/dist/foundation/release/index.js +18 -0
- package/dist/foundation/release/ordinary-launch-selection.d.ts +14 -0
- package/dist/foundation/release/ordinary-launch-selection.js +15 -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 +82 -0
- package/dist/foundation/release/update-recovery.js +386 -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 +142 -0
- package/dist/foundation/release/update.js +773 -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 +584 -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 +26 -0
- package/dist/integrations/pi/components/index.js +16 -0
- package/dist/integrations/pi/components/modal-frame.d.ts +41 -0
- package/dist/integrations/pi/components/modal-frame.js +110 -0
- package/dist/integrations/pi/components/models-dialog.d.ts +55 -0
- package/dist/integrations/pi/components/models-dialog.js +403 -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 +23 -0
- package/dist/integrations/pi/components/shell-editor-autocomplete.js +357 -0
- package/dist/integrations/pi/components/shell-extension-ui.d.ts +35 -0
- package/dist/integrations/pi/components/shell-extension-ui.js +282 -0
- package/dist/integrations/pi/components/shell-footer-status.d.ts +8 -0
- package/dist/integrations/pi/components/shell-footer-status.js +287 -0
- package/dist/integrations/pi/components/shell-hotkey-sections.d.ts +7 -0
- package/dist/integrations/pi/components/shell-hotkey-sections.js +29 -0
- package/dist/integrations/pi/components/shell-presenters-info.d.ts +73 -0
- package/dist/integrations/pi/components/shell-presenters-info.js +188 -0
- package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +29 -0
- package/dist/integrations/pi/components/shell-presenters-transcript.js +435 -0
- package/dist/integrations/pi/components/shell-selectors-dialogs.d.ts +134 -0
- package/dist/integrations/pi/components/shell-selectors-dialogs.js +286 -0
- package/dist/integrations/pi/components/shell-shared-facade.d.ts +233 -0
- package/dist/integrations/pi/components/shell-shared-facade.js +92 -0
- package/dist/integrations/pi/components/skills-command.d.ts +49 -0
- package/dist/integrations/pi/components/skills-command.js +119 -0
- package/dist/integrations/pi/components/skills-dialog.d.ts +9 -0
- package/dist/integrations/pi/components/skills-dialog.js +128 -0
- package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +17 -0
- package/dist/integrations/pi/components/submitted-prompt-adapter.js +52 -0
- package/dist/integrations/pi/components/theme.d.ts +5 -0
- package/dist/integrations/pi/components/theme.js +11 -0
- package/dist/integrations/pi/components/thinking-selector-dialog.d.ts +8 -0
- package/dist/integrations/pi/components/thinking-selector-dialog.js +22 -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 +371 -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 +22 -0
- package/dist/integrations/pi/components/upstream/components/extension-editor.js +89 -0
- package/dist/integrations/pi/components/upstream/components/extension-input.d.ts +17 -0
- package/dist/integrations/pi/components/upstream/components/extension-input.js +73 -0
- package/dist/integrations/pi/components/upstream/components/extension-selector.d.ts +15 -0
- package/dist/integrations/pi/components/upstream/components/extension-selector.js +93 -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 +60 -0
- package/dist/integrations/pi/components/upstream/components/scoped-models-selector.js +347 -0
- package/dist/integrations/pi/components/upstream/components/session-footer.d.ts +12 -0
- package/dist/integrations/pi/components/upstream/components/session-footer.js +150 -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 +97 -0
- package/dist/integrations/pi/components/upstream/components/session-selector.js +935 -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 +54 -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/thinking-selector.d.ts +36 -0
- package/dist/integrations/pi/components/upstream/components/thinking-selector.js +153 -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 +102 -0
- package/dist/integrations/pi/components/upstream/components/tree-selector.js +1294 -0
- package/dist/integrations/pi/components/upstream/components/trust-selector.d.ts +33 -0
- package/dist/integrations/pi/components/upstream/components/trust-selector.js +87 -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 +2145 -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 +17 -0
- package/dist/integrations/pi/components/upstream/history/text-helpers.js +34 -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 +140 -0
- package/dist/integrations/pi/engine/adapter.js +663 -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 +24 -0
- package/dist/integrations/pi/engine/compaction-progress.js +97 -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 +169 -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 +397 -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/repository-pr.d.ts +8 -0
- package/dist/integrations/pi/engine/repository-pr.js +62 -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 +98 -0
- package/dist/integrations/pi/engine/session-runtime.js +412 -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 +516 -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 +363 -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 +440 -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 +536 -0
- package/dist/integrations/pi/engine/workflow-support.d.ts +38 -0
- package/dist/integrations/pi/engine/workflow-support.js +386 -0
- package/dist/integrations/pi/engine/workflows.d.ts +308 -0
- package/dist/integrations/pi/engine/workflows.js +81 -0
- package/dist/integrations/pi/startup-public.d.ts +2 -0
- package/dist/integrations/pi/startup-public.js +2254 -0
- package/dist/integrations/pi/startup-public.manifest.json +12679 -0
- package/dist/integrations/pi/tui-runtime/adapter.d.ts +58 -0
- package/dist/integrations/pi/tui-runtime/adapter.js +792 -0
- package/dist/integrations/pi/tui-runtime/contracts.d.ts +158 -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 +439 -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 +19 -0
- package/dist/integrations/pi/tui-runtime/mouse-report-input.js +91 -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 +87 -0
- package/dist/runtime-payload-inventory.json +134179 -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.d.ts +37 -0
- package/dist/ui/components/dialog-panel.js +58 -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 +50 -0
- package/dist/ui/components/index.js +26 -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-block.d.ts +70 -0
- package/dist/ui/components/list-block.js +189 -0
- package/dist/ui/components/list-view.d.ts +60 -0
- package/dist/ui/components/list-view.js +84 -0
- package/dist/ui/components/mouse.d.ts +25 -0
- package/dist/ui/components/mouse.js +72 -0
- package/dist/ui/components/progress-status.d.ts +9 -0
- package/dist/ui/components/progress-status.js +25 -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/shortcut-hints.d.ts +7 -0
- package/dist/ui/components/shortcut-hints.js +12 -0
- package/dist/ui/components/shortcuts.d.ts +60 -0
- package/dist/ui/components/shortcuts.js +85 -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/theme.d.ts +19 -0
- package/dist/ui/components/theme.js +9 -0
- package/dist/ui/components/transcript-viewport.d.ts +187 -0
- package/dist/ui/components/transcript-viewport.js +886 -0
- package/dist/ui/components/value-menu.d.ts +43 -0
- package/dist/ui/components/value-menu.js +41 -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 +94 -0
- package/docs/architecture/process-guardian-provenance.md +3 -1
- package/docs/architecture/project-structure.md +72 -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 +34 -10
- package/docs/architecture/ui-reference-provenance.md +73 -6
- package/docs/ci-release-runbook.md +266 -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 +214 -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 +269 -0
- package/docs/repository-governance-live-acceptance.md +77 -0
- package/docs/validation.md +105 -0
- package/package.json +53 -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/theme.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/theme.js +0 -1
- 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/presentation-contracts/index.js +0 -38
- 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 -529
- 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.d.ts +0 -36
- 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-block.d.ts +0 -66
- package/dist/src/foundation/ui-components/list-block.js +0 -176
- 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/ui-components/theme.d.ts +0 -23
- package/dist/src/foundation/ui-components/theme.js +0 -13
- package/dist/src/foundation/ui-components/value-menu.d.ts +0 -41
- package/dist/src/foundation/ui-components/value-menu.js +0 -33
- 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/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}/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}/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}/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/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,8 @@
|
|
|
1
|
+
import type { OwnedUiSessionViewModel } from "../../../contracts/owned-ui/index.js";
|
|
2
|
+
import { type KeybindingsConfig } from "./upstream/adjacent/core/keybindings.js";
|
|
3
|
+
import { type PiShellViewComponentPort, type PiShellStatusPort, type PiShellProgressStatusPresentation, type PiShellQueuedInputPort, type PiShellHeaderPort, type PiShellResourceEntry, type PiShellLoadedResourcesPort, type PiShellHeaderOptions, type PiShellEditorOptions } from "./shell-shared-facade.js";
|
|
4
|
+
export declare function createPiShellHeader(options?: PiShellHeaderOptions): PiShellHeaderPort;
|
|
5
|
+
export declare function createPiShellLoadedResources(resources: readonly PiShellResourceEntry[], initialExpanded?: boolean): PiShellLoadedResourcesPort;
|
|
6
|
+
export declare function createPiShellStatus(view: OwnedUiSessionViewModel, progressStatus: PiShellProgressStatusPresentation, runtime?: Pick<PiShellEditorOptions, "getColumns" | "getRows" | "requestRender">): PiShellStatusPort;
|
|
7
|
+
export declare function createPiShellFooter(view: OwnedUiSessionViewModel, cwd: string, profile?: "pi" | "a1", showLevel?: () => boolean): PiShellViewComponentPort;
|
|
8
|
+
export declare function createPiQueuedInputStatus(submissions: readonly string[], presentation?: "pinned" | "custom-viewport", getKeybindings?: () => KeybindingsConfig): PiShellQueuedInputPort;
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import { rawKeyHint, VERSION } from "../startup-public.js";
|
|
2
|
+
import { Spacer, Text, } from "@earendil-works/pi-tui";
|
|
3
|
+
import { SessionFooter } from "./upstream/components/session-footer.js";
|
|
4
|
+
import { KeybindingsManager } from "./upstream/adjacent/core/keybindings.js";
|
|
5
|
+
import { StatusIndicator, WorkingStatusIndicator } from "./upstream/components/status-indicator.js";
|
|
6
|
+
import { PINNED_PI_LAYOUT, piTheme, } from "./theme.js";
|
|
7
|
+
import { createTuiFacade, ensureTheme, } from "./shell-shared-facade.js";
|
|
8
|
+
export function createPiShellHeader(options = {}) {
|
|
9
|
+
ensureTheme();
|
|
10
|
+
let expanded = options.expanded ?? false;
|
|
11
|
+
const compact = new Text(compactHeaderText(), 1, 0);
|
|
12
|
+
const full = new Text(expandedHeaderText(), 1, 0);
|
|
13
|
+
const notices = (options.notices ?? []).map(notice => new Text(noticeText(notice), 1, 0));
|
|
14
|
+
return {
|
|
15
|
+
get expanded() { return expanded; },
|
|
16
|
+
setExpanded(value) { expanded = value; },
|
|
17
|
+
render(width) {
|
|
18
|
+
if (options.quiet)
|
|
19
|
+
return [];
|
|
20
|
+
if (expanded && options.getKeybindings !== undefined)
|
|
21
|
+
full.setText(expandedHeaderText(options.getKeybindings()));
|
|
22
|
+
return [
|
|
23
|
+
...new Spacer(1).render(width),
|
|
24
|
+
...(expanded ? full : compact).render(width),
|
|
25
|
+
...notices.flatMap(notice => ["", ...notice.render(width)]),
|
|
26
|
+
...new Spacer(1).render(width),
|
|
27
|
+
];
|
|
28
|
+
},
|
|
29
|
+
invalidate() {
|
|
30
|
+
compact.invalidate();
|
|
31
|
+
full.invalidate();
|
|
32
|
+
for (const notice of notices)
|
|
33
|
+
notice.invalidate();
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function createPiShellLoadedResources(resources, initialExpanded = false) {
|
|
38
|
+
ensureTheme();
|
|
39
|
+
let expanded = initialExpanded;
|
|
40
|
+
return {
|
|
41
|
+
setExpanded(value) { expanded = value; },
|
|
42
|
+
render(width) {
|
|
43
|
+
const rows = [];
|
|
44
|
+
const sections = ["Context", "Skills", "Prompts", "Extensions", "Themes"];
|
|
45
|
+
for (const section of sections) {
|
|
46
|
+
const entries = resources.filter(entry => entry.section === section && !entry.diagnostic);
|
|
47
|
+
if (entries.length === 0)
|
|
48
|
+
continue;
|
|
49
|
+
if (rows.length === 0 && section === "Context")
|
|
50
|
+
rows.push("");
|
|
51
|
+
const labels = expanded
|
|
52
|
+
? entries.map(entry => entry.sourcePath ?? entry.label).sort((left, right) => left.localeCompare(right))
|
|
53
|
+
: entries.map(entry => entry.label).sort((left, right) => left.localeCompare(right));
|
|
54
|
+
const body = expanded
|
|
55
|
+
? labels.map(label => piTheme().fg("dim", ` ${label}`)).join("\n")
|
|
56
|
+
: piTheme().fg("dim", ` ${labels.join(", ")}`);
|
|
57
|
+
rows.push(...new Text(`${piTheme().fg("mdHeading", `[${section}]`)}\n${body}`, 0, 0).render(width), "");
|
|
58
|
+
}
|
|
59
|
+
const diagnostics = resources.filter(entry => entry.diagnostic);
|
|
60
|
+
for (const group of ["Skills", "Prompts", "Extensions", "Themes"]) {
|
|
61
|
+
const entries = diagnostics.filter(entry => entry.section === group);
|
|
62
|
+
if (entries.length === 0)
|
|
63
|
+
continue;
|
|
64
|
+
const title = group === "Skills" ? "Skill conflicts" : group === "Prompts" ? "Prompt conflicts" : group === "Extensions" ? "Extension issues" : "Theme conflicts";
|
|
65
|
+
const body = entries.map(entry => ` ${entry.sourcePath ? `${entry.sourcePath}\n ` : ""}${entry.diagnostic}`).join("\n");
|
|
66
|
+
rows.push(...new Text(`${piTheme().fg("warning", `[${title}]`)}\n${piTheme().fg("warning", body)}`, 0, 0).render(width), "");
|
|
67
|
+
}
|
|
68
|
+
return rows.length === 0 ? rows : [...rows, ""];
|
|
69
|
+
},
|
|
70
|
+
invalidate() { },
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export function createPiShellStatus(view, progressStatus, runtime) {
|
|
74
|
+
ensureTheme();
|
|
75
|
+
const statusUi = createTuiFacade(runtime ?? { getColumns: () => 80, getRows: () => 24, requestRender() { } });
|
|
76
|
+
let workingOverride;
|
|
77
|
+
let outputPad = PINNED_PI_LAYOUT.outputPad;
|
|
78
|
+
let progressPresentation = "pinned";
|
|
79
|
+
let placement = statusPlacement(view, workingOverride);
|
|
80
|
+
const liveStatusText = () => progressStatus.text(liveWorkingText(view, workingOverride, progressPresentation), progressPresentation);
|
|
81
|
+
let component = statusComponent(view, statusUi, outputPad, liveStatusText, placement, progressPresentation, progressStatus);
|
|
82
|
+
let signature = statusSignature(view, workingOverride, outputPad, placement, progressPresentation);
|
|
83
|
+
const rebuild = () => {
|
|
84
|
+
const nextPlacement = statusPlacement(view, workingOverride);
|
|
85
|
+
const nextSignature = statusSignature(view, workingOverride, outputPad, nextPlacement, progressPresentation);
|
|
86
|
+
if (nextSignature === signature)
|
|
87
|
+
return;
|
|
88
|
+
// Performance: progress ticks change only the live message; the spinner keeps its frame and timer.
|
|
89
|
+
const componentMatchesPresentation = progressPresentation === "custom-viewport"
|
|
90
|
+
? component instanceof OwnedWorkingStatusIndicator
|
|
91
|
+
: component instanceof WorkingStatusIndicator;
|
|
92
|
+
if (placement === "live" && nextPlacement === "live" && component instanceof StatusIndicator && componentMatchesPresentation
|
|
93
|
+
&& statusSignature(view, workingOverride, outputPad, nextPlacement, progressPresentation, false)
|
|
94
|
+
=== statusSignature(view, workingOverride, outputPad, placement, progressPresentation, false)) {
|
|
95
|
+
component.setMessage(liveStatusText());
|
|
96
|
+
signature = nextSignature;
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (component !== undefined && "dispose" in component && typeof component.dispose === "function")
|
|
100
|
+
component.dispose();
|
|
101
|
+
placement = nextPlacement;
|
|
102
|
+
signature = nextSignature;
|
|
103
|
+
component = statusComponent(view, statusUi, outputPad, liveStatusText, placement, progressPresentation, progressStatus);
|
|
104
|
+
};
|
|
105
|
+
return {
|
|
106
|
+
render: width => component?.render(width) ?? [],
|
|
107
|
+
renderDock: width => placement === "dock" ? component?.render(width) ?? [] : [],
|
|
108
|
+
renderLive: width => placement === "live" ? component?.render(width) ?? [] : [],
|
|
109
|
+
placement: () => placement,
|
|
110
|
+
invalidate: () => component?.invalidate(),
|
|
111
|
+
update(next) {
|
|
112
|
+
view = next;
|
|
113
|
+
rebuild();
|
|
114
|
+
},
|
|
115
|
+
setWorkingOverride(message) {
|
|
116
|
+
workingOverride = message;
|
|
117
|
+
rebuild();
|
|
118
|
+
},
|
|
119
|
+
setOutputPad(padding) {
|
|
120
|
+
outputPad = padding;
|
|
121
|
+
rebuild();
|
|
122
|
+
},
|
|
123
|
+
setProgressPresentation(presentation) {
|
|
124
|
+
progressPresentation = presentation;
|
|
125
|
+
rebuild();
|
|
126
|
+
},
|
|
127
|
+
dispose() {
|
|
128
|
+
if (component !== undefined && "dispose" in component && typeof component.dispose === "function")
|
|
129
|
+
component.dispose();
|
|
130
|
+
component = undefined;
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
export function createPiShellFooter(view, cwd, profile = "pi", showLevel = () => true) {
|
|
135
|
+
ensureTheme();
|
|
136
|
+
const footer = new SessionFooter(() => view, cwd, profile, showLevel);
|
|
137
|
+
return {
|
|
138
|
+
render: width => footer.render(width),
|
|
139
|
+
invalidate: () => footer.invalidate(),
|
|
140
|
+
update(next) { view = next; },
|
|
141
|
+
dispose: () => footer.dispose(),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
export function createPiQueuedInputStatus(submissions, presentation = "pinned", getKeybindings) {
|
|
145
|
+
let renderedText = queuedInputText(submissions, presentation, getKeybindings?.());
|
|
146
|
+
const text = new Text(renderedText, 1, 0);
|
|
147
|
+
const refresh = () => {
|
|
148
|
+
const next = queuedInputText(submissions, presentation, getKeybindings?.());
|
|
149
|
+
if (next === renderedText)
|
|
150
|
+
return;
|
|
151
|
+
renderedText = next;
|
|
152
|
+
text.setText(next);
|
|
153
|
+
};
|
|
154
|
+
return {
|
|
155
|
+
render(width) {
|
|
156
|
+
if (submissions.length === 0)
|
|
157
|
+
return [];
|
|
158
|
+
refresh();
|
|
159
|
+
return text.render(width);
|
|
160
|
+
},
|
|
161
|
+
invalidate: () => text.invalidate(),
|
|
162
|
+
update(next) {
|
|
163
|
+
submissions = next;
|
|
164
|
+
refresh();
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
function statusPlacement(view, workingOverride) {
|
|
169
|
+
// Invariant: live spinner placement follows semantic lifecycle, not text. An extension
|
|
170
|
+
// override is visible only when its lifecycle is busy, so a stale override cannot spin
|
|
171
|
+
// after completion or make an idle informational status scrollable.
|
|
172
|
+
if (view.lifecycle === "busy")
|
|
173
|
+
return "live";
|
|
174
|
+
if (view.lifecycle === "failed")
|
|
175
|
+
return "dock";
|
|
176
|
+
return view.status.workingMessage === null ? "hidden" : "dock";
|
|
177
|
+
}
|
|
178
|
+
// Rationale: the engine publishes the semantic working word and a separate measured percent; bare A1
|
|
179
|
+
// composes them here, while the pinned route keeps the bare word for comparison with Pi.
|
|
180
|
+
function liveWorkingText(view, workingOverride, progressPresentation) {
|
|
181
|
+
const message = workingOverride ?? view.status.workingMessage ?? "Working";
|
|
182
|
+
const progress = view.status.workingProgress;
|
|
183
|
+
return workingOverride === undefined && progressPresentation === "custom-viewport" && typeof progress === "number"
|
|
184
|
+
? `${message}(${progress}%)`
|
|
185
|
+
: message;
|
|
186
|
+
}
|
|
187
|
+
class OwnedWorkingStatusIndicator extends StatusIndicator {
|
|
188
|
+
constructor(ui, message, frame) {
|
|
189
|
+
let phase = -1;
|
|
190
|
+
super("working", ui, spinner => {
|
|
191
|
+
phase += 1;
|
|
192
|
+
return piTheme().fg("accent", spinner);
|
|
193
|
+
}, text => frame(text, phase, {
|
|
194
|
+
muted: value => piTheme().fg("muted", value),
|
|
195
|
+
accent: value => piTheme().fg("accent", value),
|
|
196
|
+
}), message);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
function statusComponent(view, ui, outputPad, liveStatusText, placement, progressPresentation, progressStatus) {
|
|
200
|
+
if (placement === "live") {
|
|
201
|
+
return progressPresentation === "custom-viewport"
|
|
202
|
+
? new OwnedWorkingStatusIndicator(ui, liveStatusText(), progressStatus.frame)
|
|
203
|
+
: new WorkingStatusIndicator(ui, liveStatusText());
|
|
204
|
+
}
|
|
205
|
+
if (placement === "dock") {
|
|
206
|
+
if (view.lifecycle === "failed") {
|
|
207
|
+
return new Text(piTheme().fg("error", view.status.diagnostics.at(-1) ?? "Session failed"), outputPad, 0);
|
|
208
|
+
}
|
|
209
|
+
return new Text(piTheme().fg("muted", view.status.workingMessage), outputPad, 0);
|
|
210
|
+
}
|
|
211
|
+
return undefined;
|
|
212
|
+
}
|
|
213
|
+
function statusSignature(view, workingOverride, outputPad, placement, progressPresentation, withMessage = true) {
|
|
214
|
+
const message = withMessage ? `${workingOverride ?? ""}\u0000${view.status.workingMessage ?? ""}\u0000${view.status.workingProgress ?? ""}` : "";
|
|
215
|
+
return `${placement}\u0000${outputPad}\u0000${view.lifecycle}\u0000${progressPresentation}\u0000${message}\u0000${view.status.diagnostics.at(-1) ?? ""}`;
|
|
216
|
+
}
|
|
217
|
+
function queuedInputText(submissions, presentation, bindings) {
|
|
218
|
+
if (submissions.length === 0)
|
|
219
|
+
return "";
|
|
220
|
+
const theme = piTheme();
|
|
221
|
+
if (presentation === "pinned") {
|
|
222
|
+
return submissions.map(submission => theme.fg("muted", `Steering: ${submission.replaceAll("\n", " ⏎ ")}`)).join("\n");
|
|
223
|
+
}
|
|
224
|
+
const messages = submissions.map(submission => theme.fg("dim", `Steering: ${submission.replaceAll("\n", " ⏎ ")}`));
|
|
225
|
+
const keys = KeybindingsManager.fromOwnedBindings(bindings).getKeys("app.message.dequeue");
|
|
226
|
+
const label = keys.length === 0 ? "Unbound" : keys.map(displayKeybinding).join("/");
|
|
227
|
+
const dequeueHint = theme.fg("dim", `↳ ${label} to edit all queued messages`);
|
|
228
|
+
// Compatibility: the custom viewport matches Pi's interactive queue presentation while the
|
|
229
|
+
// comparison shell remains byte-for-byte compatible with its pinned fixture.
|
|
230
|
+
return ["", ...messages, dequeueHint].join("\n");
|
|
231
|
+
}
|
|
232
|
+
function displayKeybinding(key) {
|
|
233
|
+
return key.split("+").map(part => {
|
|
234
|
+
const display = process.platform === "darwin" && part.toLowerCase() === "alt" ? "option" : part;
|
|
235
|
+
return display.charAt(0).toUpperCase() + display.slice(1);
|
|
236
|
+
}).join("+");
|
|
237
|
+
}
|
|
238
|
+
function compactHeaderText() {
|
|
239
|
+
const theme = piTheme();
|
|
240
|
+
const instructions = [
|
|
241
|
+
rawKeyHint("escape", "interrupt"),
|
|
242
|
+
rawKeyHint("ctrl+c/ctrl+d", "clear/exit"),
|
|
243
|
+
rawKeyHint("/", "commands"),
|
|
244
|
+
rawKeyHint("!", "bash"),
|
|
245
|
+
rawKeyHint("ctrl+o", "more"),
|
|
246
|
+
].join(theme.fg("muted", " · "));
|
|
247
|
+
const logo = theme.bold(theme.fg("accent", "pi")) + theme.fg("dim", ` v${VERSION}`);
|
|
248
|
+
const compactOnboarding = theme.fg("dim", "Press ctrl+o to show full startup help and loaded resources.");
|
|
249
|
+
const onboarding = theme.fg("dim", "Pi can explain its own features and look up its docs. Ask it how to use or extend Pi.");
|
|
250
|
+
return `${logo}\n${instructions}\n${compactOnboarding}\n\n${onboarding}`;
|
|
251
|
+
}
|
|
252
|
+
function expandedHeaderText(bindings) {
|
|
253
|
+
const keys = bindings === undefined ? undefined : KeybindingsManager.fromOwnedBindings(bindings);
|
|
254
|
+
const instructions = [
|
|
255
|
+
rawKeyHint("escape", "to interrupt"),
|
|
256
|
+
rawKeyHint("ctrl+c", "to clear"),
|
|
257
|
+
rawKeyHint("ctrl+c twice", "to exit"),
|
|
258
|
+
rawKeyHint("ctrl+d", "to exit (empty)"),
|
|
259
|
+
rawKeyHint(process.platform === "win32" ? "" : "ctrl+z", "to suspend"),
|
|
260
|
+
rawKeyHint("ctrl+k", "to delete to end"),
|
|
261
|
+
rawKeyHint(keys?.getKeys("app.thinking.cycle").join("/") ?? "shift+tab", "to cycle thinking level"),
|
|
262
|
+
rawKeyHint("ctrl+p/shift+ctrl+p", "to cycle models"),
|
|
263
|
+
// Invariant: only bare A1 supplies live bindings, and its unbound fallback is the unified `/models` command.
|
|
264
|
+
rawKeyHint(keys === undefined ? "ctrl+l" : keys.getKeys("app.model.select").join("/") || "/models", "to select model"),
|
|
265
|
+
rawKeyHint("ctrl+o", "to expand tools"),
|
|
266
|
+
rawKeyHint("ctrl+t", "to expand thinking"),
|
|
267
|
+
rawKeyHint("ctrl+g", "for external editor"),
|
|
268
|
+
rawKeyHint("/", "for commands"),
|
|
269
|
+
rawKeyHint("!", "to run bash"),
|
|
270
|
+
rawKeyHint("!!", "to run bash (no context)"),
|
|
271
|
+
rawKeyHint("alt+enter", "to queue follow-up"),
|
|
272
|
+
rawKeyHint(keys === undefined ? "alt+up" : keys.getKeys("app.message.dequeue").join("/") || "unbound", "to edit all queued messages"),
|
|
273
|
+
rawKeyHint(process.platform === "win32" ? "alt+v" : "ctrl+v", "to paste image (with text fallback)"),
|
|
274
|
+
rawKeyHint("drop files", "to attach"),
|
|
275
|
+
].join("\n");
|
|
276
|
+
const theme = piTheme();
|
|
277
|
+
const logo = theme.bold(theme.fg("accent", "pi")) + theme.fg("dim", ` v${VERSION}`);
|
|
278
|
+
const onboarding = theme.fg("dim", "Pi can explain its own features and look up its docs. Ask it how to use or extend Pi.");
|
|
279
|
+
return `${logo}\n${instructions}\n\n${onboarding}`;
|
|
280
|
+
}
|
|
281
|
+
function noticeText(notice) {
|
|
282
|
+
const theme = piTheme();
|
|
283
|
+
if (notice.kind === "info")
|
|
284
|
+
return theme.fg("dim", notice.message);
|
|
285
|
+
const prefix = notice.kind === "warning" ? "Warning" : "Error";
|
|
286
|
+
return theme.fg(notice.kind, `${prefix}: ${notice.message}`);
|
|
287
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type PiShellHotkeysPresentation } from "./shell-presenters-info.js";
|
|
2
|
+
export interface PiShellHotkeySection {
|
|
3
|
+
readonly title: string;
|
|
4
|
+
readonly rows: readonly string[];
|
|
5
|
+
}
|
|
6
|
+
/** Turns heading-led hotkeys Markdown into reusable grouped-document data before row rendering. */
|
|
7
|
+
export declare function renderPiShellHotkeySections(presentation: PiShellHotkeysPresentation, width: number): readonly PiShellHotkeySection[];
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { getMarkdownTheme } from "../startup-public.js";
|
|
2
|
+
import { Markdown } from "@earendil-works/pi-tui";
|
|
3
|
+
import { ensureTheme } from "./shell-shared-facade.js";
|
|
4
|
+
import { hotkeysMarkdown } from "./shell-presenters-info.js";
|
|
5
|
+
/** Turns heading-led hotkeys Markdown into reusable grouped-document data before row rendering. */
|
|
6
|
+
export function renderPiShellHotkeySections(presentation, width) {
|
|
7
|
+
ensureTheme();
|
|
8
|
+
const shortcuts = presentation.getShortcuts ?? (() => []);
|
|
9
|
+
const markdown = hotkeysMarkdown(presentation.bindings, shortcuts, presentation.profile ?? "pi");
|
|
10
|
+
const sections = [];
|
|
11
|
+
for (const line of markdown.split("\n")) {
|
|
12
|
+
const heading = /^\*\*(.+)\*\*$/.exec(line)?.[1];
|
|
13
|
+
if (heading !== undefined)
|
|
14
|
+
sections.push({ title: heading, lines: [] });
|
|
15
|
+
else
|
|
16
|
+
sections.at(-1)?.lines.push(line);
|
|
17
|
+
}
|
|
18
|
+
for (const section of sections)
|
|
19
|
+
while (section.lines.at(-1) === "")
|
|
20
|
+
section.lines.pop();
|
|
21
|
+
return sections.map(section => {
|
|
22
|
+
const rows = [...new Markdown(section.lines.join("\n"), 1, 1, getMarkdownTheme()).render(width)];
|
|
23
|
+
while (rows[0]?.trim().length === 0)
|
|
24
|
+
rows.shift();
|
|
25
|
+
while (rows.at(-1)?.trim().length === 0)
|
|
26
|
+
rows.pop();
|
|
27
|
+
return { title: section.title, rows };
|
|
28
|
+
});
|
|
29
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { type KeybindingsConfig } from "@earendil-works/pi-tui";
|
|
2
|
+
import { type PiShellComponentPort, type PiShellExtensionRendererResolver } from "./shell-shared-facade.js";
|
|
3
|
+
export interface PiShellSessionInfoPresentation {
|
|
4
|
+
readonly sessionName?: string;
|
|
5
|
+
readonly stats: {
|
|
6
|
+
readonly sessionFile?: string;
|
|
7
|
+
readonly sessionId: string;
|
|
8
|
+
readonly userMessages: number;
|
|
9
|
+
readonly assistantMessages: number;
|
|
10
|
+
readonly toolCalls: number;
|
|
11
|
+
readonly toolResults: number;
|
|
12
|
+
readonly totalMessages: number;
|
|
13
|
+
readonly tokens: {
|
|
14
|
+
readonly input: number;
|
|
15
|
+
readonly output: number;
|
|
16
|
+
readonly cacheRead: number;
|
|
17
|
+
readonly cacheWrite: number;
|
|
18
|
+
readonly total: number;
|
|
19
|
+
};
|
|
20
|
+
readonly cost: number;
|
|
21
|
+
};
|
|
22
|
+
readonly cacheWaste: {
|
|
23
|
+
readonly missedTokens: number;
|
|
24
|
+
readonly missedCost: number;
|
|
25
|
+
readonly missCount: number;
|
|
26
|
+
};
|
|
27
|
+
readonly usageBreakdown: readonly {
|
|
28
|
+
readonly key: string;
|
|
29
|
+
readonly cost: number;
|
|
30
|
+
readonly tokens: number;
|
|
31
|
+
}[];
|
|
32
|
+
readonly cacheWarming: PiShellCacheWarmingPresentation;
|
|
33
|
+
}
|
|
34
|
+
export interface PiShellCacheWarmingPresentation {
|
|
35
|
+
readonly mode: string;
|
|
36
|
+
readonly status?: {
|
|
37
|
+
readonly state: "inactive" | "scheduled" | "refreshing";
|
|
38
|
+
readonly reason?: string;
|
|
39
|
+
readonly nextWarmAt?: number;
|
|
40
|
+
readonly extensionOverride?: boolean;
|
|
41
|
+
readonly decision?: {
|
|
42
|
+
readonly phase: "streaming" | "idle";
|
|
43
|
+
readonly action: string;
|
|
44
|
+
readonly warmCost: number;
|
|
45
|
+
readonly missCost: number;
|
|
46
|
+
readonly continuationProbability: number;
|
|
47
|
+
readonly expectedSavings: number;
|
|
48
|
+
readonly economicsAvailable: boolean;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export declare function renderPiShellStatusText(message: string, width: number, outputPad?: 0 | 1): readonly string[];
|
|
53
|
+
export interface PiShellCommandMessagePresentation {
|
|
54
|
+
readonly kind: "error" | "warning" | "accent" | "new" | "name" | "debug";
|
|
55
|
+
readonly message: string;
|
|
56
|
+
readonly detail?: string;
|
|
57
|
+
}
|
|
58
|
+
export declare function renderPiShellCommandMessage(presentation: PiShellCommandMessagePresentation, width: number, outputPad?: 0 | 1): readonly string[];
|
|
59
|
+
export declare function createPiShellSessionInfo(presentation: PiShellSessionInfoPresentation): PiShellComponentPort;
|
|
60
|
+
export declare function createPiShellCollapsedChangelog(): PiShellComponentPort;
|
|
61
|
+
export declare function createPiShellChangelog(markdown: string): PiShellComponentPort;
|
|
62
|
+
/** The changelog document rows the feed presenter shows, without its spacer, borders, and heading. */
|
|
63
|
+
export declare function renderPiShellChangelogLines(markdown: string, width: number): readonly string[];
|
|
64
|
+
/** What the hotkeys presenters render: the editor bindings and the extension shortcuts declared over them. */
|
|
65
|
+
export interface PiShellHotkeysPresentation {
|
|
66
|
+
readonly bindings?: KeybindingsConfig;
|
|
67
|
+
readonly getShortcuts?: NonNullable<PiShellExtensionRendererResolver["getShortcuts"]>;
|
|
68
|
+
readonly profile?: "pi" | "a1";
|
|
69
|
+
}
|
|
70
|
+
export declare function createPiShellHotkeys(bindings?: KeybindingsConfig, getShortcuts?: NonNullable<PiShellExtensionRendererResolver["getShortcuts"]>, profile?: "pi" | "a1"): PiShellComponentPort;
|
|
71
|
+
/** The keyboard-shortcut document rows the feed presenter shows, without its spacer, borders, and heading. */
|
|
72
|
+
export declare function renderPiShellHotkeysLines(presentation: PiShellHotkeysPresentation, width: number): readonly string[];
|
|
73
|
+
export declare function hotkeysMarkdown(bindings: KeybindingsConfig | undefined, getShortcuts: NonNullable<PiShellExtensionRendererResolver["getShortcuts"]>, profile: "pi" | "a1"): string;
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { DynamicBorder, getMarkdownTheme } from "../startup-public.js";
|
|
2
|
+
import { Container, Markdown, Spacer, Text } from "@earendil-works/pi-tui";
|
|
3
|
+
import { KeybindingsManager } from "./upstream/adjacent/core/keybindings.js";
|
|
4
|
+
import { PINNED_PI_LAYOUT, piTheme } from "./theme.js";
|
|
5
|
+
import { componentPort, ensureTheme, formatSessionTokens } from "./shell-shared-facade.js";
|
|
6
|
+
export function renderPiShellStatusText(message, width, outputPad = PINNED_PI_LAYOUT.outputPad) {
|
|
7
|
+
ensureTheme();
|
|
8
|
+
return new Text(piTheme().fg("dim", message), outputPad, 0).render(width);
|
|
9
|
+
}
|
|
10
|
+
export function renderPiShellCommandMessage(presentation, width, outputPad = PINNED_PI_LAYOUT.outputPad) {
|
|
11
|
+
ensureTheme();
|
|
12
|
+
const { kind, message, detail } = presentation;
|
|
13
|
+
const prefix = kind === "error" ? "Error: " : kind === "warning" ? "Warning: " : "";
|
|
14
|
+
const color = kind === "name" ? "dim" : kind === "error" || kind === "warning" ? kind : "accent";
|
|
15
|
+
const content = piTheme().fg(color, `${prefix}${message}`)
|
|
16
|
+
+ (kind === "debug" && detail ? `\n${piTheme().fg("muted", detail)}` : "");
|
|
17
|
+
// Compatibility: pinned errors honor outputPad; warnings and command notices retain
|
|
18
|
+
// one-cell padding. New-session/debug notices also own one vertical padding row.
|
|
19
|
+
const text = new Text(content, kind === "error" ? outputPad : 1, kind === "new" || kind === "debug" ? 1 : 0);
|
|
20
|
+
return [
|
|
21
|
+
...(kind === "name" && detail ? renderPiShellCommandMessage({ kind: "warning", message: detail }, width) : []),
|
|
22
|
+
...new Spacer(1).render(width),
|
|
23
|
+
...text.render(width),
|
|
24
|
+
];
|
|
25
|
+
}
|
|
26
|
+
const CACHE_WARMING_MINIMUM_EXPECTED_SAVINGS = 0.05;
|
|
27
|
+
function formatWarmingDollars(value) {
|
|
28
|
+
return value < 0 ? `-${Math.abs(value).toFixed(3)}` : `${value.toFixed(3)}`;
|
|
29
|
+
}
|
|
30
|
+
function formatWarmingEconomics(decision) {
|
|
31
|
+
if (!decision.economicsAvailable)
|
|
32
|
+
return "cache economics unavailable";
|
|
33
|
+
const probability = Math.round(decision.continuationProbability * 100);
|
|
34
|
+
const probabilityText = decision.phase === "streaming"
|
|
35
|
+
? `${probability}% continuation probability while agent is running`
|
|
36
|
+
: `${probability}% continuation probability`;
|
|
37
|
+
const comparison = decision.action === "warm" ? ">=" : "<";
|
|
38
|
+
return `${probabilityText}, expected savings ${formatWarmingDollars(decision.expectedSavings)} ${comparison} ${CACHE_WARMING_MINIMUM_EXPECTED_SAVINGS.toFixed(3)}`;
|
|
39
|
+
}
|
|
40
|
+
function formatWarmingDecisionTime(nextWarmAt, now) {
|
|
41
|
+
if (nextWarmAt === undefined || nextWarmAt <= now)
|
|
42
|
+
return "Decision now";
|
|
43
|
+
let remainingSeconds = Math.ceil((nextWarmAt - now) / 1000);
|
|
44
|
+
const hours = Math.floor(remainingSeconds / 3600);
|
|
45
|
+
remainingSeconds %= 3600;
|
|
46
|
+
const minutes = Math.floor(remainingSeconds / 60);
|
|
47
|
+
const seconds = remainingSeconds % 60;
|
|
48
|
+
const parts = [];
|
|
49
|
+
if (hours > 0)
|
|
50
|
+
parts.push(`${hours}h`);
|
|
51
|
+
if (minutes > 0)
|
|
52
|
+
parts.push(`${minutes}m`);
|
|
53
|
+
if (seconds > 0 || parts.length === 0)
|
|
54
|
+
parts.push(`${seconds}s`);
|
|
55
|
+
return `Decision in ${parts.join(" ")}`;
|
|
56
|
+
}
|
|
57
|
+
/** The one-line warming status the pinned session report shows; a decision is attached once warming acted. */
|
|
58
|
+
function formatCacheWarmingStatus(status, now = Date.now()) {
|
|
59
|
+
const decision = status.decision;
|
|
60
|
+
if (!decision || (status.state === "inactive" && !decision.economicsAvailable && !status.extensionOverride)) {
|
|
61
|
+
return `Inactive (${status.reason ?? "unknown reason"})`;
|
|
62
|
+
}
|
|
63
|
+
const details = status.extensionOverride
|
|
64
|
+
? `extension override, ${formatWarmingEconomics(decision)}`
|
|
65
|
+
: `${formatWarmingEconomics(decision)} -> ${decision.action}`;
|
|
66
|
+
if (status.state === "inactive")
|
|
67
|
+
return `Stopped (${details})`;
|
|
68
|
+
if (status.state === "refreshing")
|
|
69
|
+
return `Warming cache (${details})`;
|
|
70
|
+
return `${formatWarmingDecisionTime(status.nextWarmAt, now)} (${details})`;
|
|
71
|
+
}
|
|
72
|
+
export function createPiShellSessionInfo(presentation) {
|
|
73
|
+
ensureTheme();
|
|
74
|
+
const { stats, sessionName, cacheWaste, usageBreakdown, cacheWarming } = presentation;
|
|
75
|
+
let info = `${piTheme().bold("Session Info")}\n\n`;
|
|
76
|
+
if (sessionName)
|
|
77
|
+
info += `${piTheme().fg("dim", "Name:")} ${sessionName}\n`;
|
|
78
|
+
info += `${piTheme().fg("dim", "File:")} ${stats.sessionFile ?? "In-memory"}\n${piTheme().fg("dim", "ID:")} ${stats.sessionId}\n\n`;
|
|
79
|
+
info += `${piTheme().bold("Messages")}\n${piTheme().fg("dim", "Total:")} ${stats.totalMessages}\n${piTheme().fg("dim", "User:")} ${stats.userMessages}\n`;
|
|
80
|
+
info += `${piTheme().fg("dim", "Assistant:")} ${stats.assistantMessages}\n${piTheme().fg("dim", "Tools:")} ${stats.toolCalls} calls, ${stats.toolResults} results\n\n`;
|
|
81
|
+
info += `${piTheme().bold("Tokens")}\n`;
|
|
82
|
+
const { input, cacheRead, cacheWrite } = stats.tokens;
|
|
83
|
+
const promptTokens = input + cacheRead + cacheWrite;
|
|
84
|
+
info += `${piTheme().fg("dim", "Input:")} ${promptTokens.toLocaleString()}\n`;
|
|
85
|
+
if (promptTokens > 0 && (cacheRead > 0 || cacheWrite > 0)) {
|
|
86
|
+
info += ` ${piTheme().fg("dim", "Cached:")} ${cacheRead.toLocaleString()} ${piTheme().fg("dim", `(${((cacheRead / promptTokens) * 100).toFixed(1)}%)`)}\n`;
|
|
87
|
+
const written = cacheWrite > 0 ? ` ${piTheme().fg("dim", `(${cacheWrite.toLocaleString()} written to cache)`)}` : "";
|
|
88
|
+
info += ` ${piTheme().fg("dim", "Uncached:")} ${(input + cacheWrite).toLocaleString()}${written}\n`;
|
|
89
|
+
}
|
|
90
|
+
info += `${piTheme().fg("dim", "Output:")} ${stats.tokens.output.toLocaleString()}\n${piTheme().fg("dim", "Total:")} ${stats.tokens.total.toLocaleString()}\n`;
|
|
91
|
+
const warmingStatus = cacheWarming.status;
|
|
92
|
+
info += `\n${piTheme().bold("Cache Warming")}\n${piTheme().fg("dim", "Mode:")} ${cacheWarming.mode}\n`;
|
|
93
|
+
info += `${piTheme().fg("dim", "Status:")} ${warmingStatus ? formatCacheWarmingStatus(warmingStatus) : "Inactive (cache warming unavailable)"}\n`;
|
|
94
|
+
const warmingDecision = warmingStatus?.decision;
|
|
95
|
+
if (warmingDecision?.economicsAvailable) {
|
|
96
|
+
info += `${piTheme().fg("dim", "Cache miss penalty:")} $${warmingDecision.missCost.toFixed(3)}\n`;
|
|
97
|
+
info += `${piTheme().fg("dim", "Refresh cost:")} $${warmingDecision.warmCost.toFixed(3)}\n`;
|
|
98
|
+
}
|
|
99
|
+
if (stats.cost > 0 || cacheWaste.missedTokens > 0) {
|
|
100
|
+
info += `\n${piTheme().bold("Cost")}\n${piTheme().fg("dim", "Total:")} $${stats.cost.toFixed(3)}`;
|
|
101
|
+
if (usageBreakdown.length > 1)
|
|
102
|
+
for (const entry of usageBreakdown)
|
|
103
|
+
info += `\n ${piTheme().fg("dim", `${entry.key}:`)} $${entry.cost.toFixed(3)} ${piTheme().fg("dim", `(${formatSessionTokens(entry.tokens)} tokens)`)}`;
|
|
104
|
+
if (cacheWaste.missedTokens > 0) {
|
|
105
|
+
const detail = `${cacheWaste.missedTokens.toLocaleString()} tokens, ${cacheWaste.missCount === 1 ? "1 miss" : `${cacheWaste.missCount} misses`}`;
|
|
106
|
+
info += cacheWaste.missedCost >= 0.0001 ? `\n${piTheme().fg("dim", "Cache Re-billed:")} $${cacheWaste.missedCost.toFixed(3)} ${piTheme().fg("dim", `(${detail})`)}` : `\n${piTheme().fg("dim", "Cache Re-billed:")} ${detail}`;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const container = new Container();
|
|
110
|
+
container.addChild(new Spacer(1));
|
|
111
|
+
container.addChild(new Text(info, 1, 0));
|
|
112
|
+
return componentPort(container);
|
|
113
|
+
}
|
|
114
|
+
export function createPiShellCollapsedChangelog() {
|
|
115
|
+
ensureTheme();
|
|
116
|
+
const container = new Container();
|
|
117
|
+
container.addChild(new Spacer(1));
|
|
118
|
+
container.addChild(new DynamicBorder());
|
|
119
|
+
container.addChild(new Text(`${piTheme().bold(piTheme().fg("accent", "What's New"))}\n${piTheme().fg("muted", "Run /changelog to view the full release notes.")}`, 1, 0));
|
|
120
|
+
container.addChild(new DynamicBorder());
|
|
121
|
+
return componentPort(container);
|
|
122
|
+
}
|
|
123
|
+
export function createPiShellChangelog(markdown) {
|
|
124
|
+
ensureTheme();
|
|
125
|
+
const container = new Container();
|
|
126
|
+
container.addChild(new Spacer(1));
|
|
127
|
+
container.addChild(new DynamicBorder());
|
|
128
|
+
container.addChild(new Text(piTheme().bold(piTheme().fg("accent", "What's New")), 1, 0));
|
|
129
|
+
container.addChild(new Spacer(1));
|
|
130
|
+
container.addChild(changelogMarkdown(markdown));
|
|
131
|
+
container.addChild(new DynamicBorder());
|
|
132
|
+
return componentPort(container);
|
|
133
|
+
}
|
|
134
|
+
/** The changelog document rows the feed presenter shows, without its spacer, borders, and heading. */
|
|
135
|
+
export function renderPiShellChangelogLines(markdown, width) {
|
|
136
|
+
ensureTheme();
|
|
137
|
+
return changelogMarkdown(markdown).render(width);
|
|
138
|
+
}
|
|
139
|
+
function changelogMarkdown(markdown) {
|
|
140
|
+
return new Markdown(markdown.trim() || "No changelog entries found.", 1, 1, getMarkdownTheme());
|
|
141
|
+
}
|
|
142
|
+
function shortcutDisplay(key) {
|
|
143
|
+
// Platform: pinned Pi labels Alt as Option on macOS, including extension shortcuts.
|
|
144
|
+
return key.split("/").map(binding => binding.split("+").map(part => {
|
|
145
|
+
const label = process.platform === "darwin" && part.toLowerCase() === "alt" ? "option" : part;
|
|
146
|
+
return label.charAt(0).toUpperCase() + label.slice(1);
|
|
147
|
+
}).join("+")).join("/");
|
|
148
|
+
}
|
|
149
|
+
export function createPiShellHotkeys(bindings, getShortcuts = () => [], profile = "pi") {
|
|
150
|
+
ensureTheme();
|
|
151
|
+
const markdown = hotkeysMarkdown(bindings, getShortcuts, profile);
|
|
152
|
+
const container = new Container();
|
|
153
|
+
container.addChild(new Spacer(1));
|
|
154
|
+
container.addChild(new DynamicBorder());
|
|
155
|
+
container.addChild(new Text(piTheme().bold(piTheme().fg("accent", "Keyboard Shortcuts")), 1, 0));
|
|
156
|
+
container.addChild(new Spacer(1));
|
|
157
|
+
container.addChild(hotkeysMarkdownComponent(markdown));
|
|
158
|
+
container.addChild(new DynamicBorder());
|
|
159
|
+
return componentPort(container);
|
|
160
|
+
}
|
|
161
|
+
/** The keyboard-shortcut document rows the feed presenter shows, without its spacer, borders, and heading. */
|
|
162
|
+
export function renderPiShellHotkeysLines(presentation, width) {
|
|
163
|
+
ensureTheme();
|
|
164
|
+
return hotkeysMarkdownComponent(hotkeysMarkdown(presentation.bindings, presentation.getShortcuts ?? (() => []), presentation.profile ?? "pi")).render(width);
|
|
165
|
+
}
|
|
166
|
+
function hotkeysMarkdownComponent(markdown) {
|
|
167
|
+
return new Markdown(markdown, 1, 1, getMarkdownTheme());
|
|
168
|
+
}
|
|
169
|
+
export function hotkeysMarkdown(bindings, getShortcuts, profile) {
|
|
170
|
+
const keys = profile === "a1" ? KeybindingsManager.fromOwnedBindings(bindings) : new KeybindingsManager(bindings);
|
|
171
|
+
// Compatibility: the owned viewport consumes these physical chords before editor actions.
|
|
172
|
+
const display = (action) => keys.getKeys(action)
|
|
173
|
+
.filter(key => profile !== "a1" || (key !== "ctrl+home" && key !== "ctrl+end"))
|
|
174
|
+
.map(shortcutDisplay).join("/");
|
|
175
|
+
const row = (actions, description) => `| ${actions.map(action => {
|
|
176
|
+
const label = display(action);
|
|
177
|
+
return profile === "a1" && label.length === 0
|
|
178
|
+
? action === "app.model.select" ? "Unbound (`/models`)" : "Unbound"
|
|
179
|
+
: `\`${label}\``;
|
|
180
|
+
}).join(" / ")} | ${description} |`;
|
|
181
|
+
let markdown = ["**Navigation**", "| Key | Action |", "|-----|--------|", row(["tui.editor.cursorUp", "tui.editor.cursorDown", "tui.editor.cursorLeft", "tui.editor.cursorRight"], "Move cursor / browse history"), row(["tui.editor.cursorWordLeft", "tui.editor.cursorWordRight"], "Move by word"), row(["tui.editor.cursorLineStart"], profile === "a1" ? "Start of prompt line" : "Start of line"), row(["tui.editor.cursorLineEnd"], profile === "a1" ? "End of prompt line" : "End of line"), ...(profile === "a1" ? ["| `Ctrl+Home` | Start of content |", "| `Ctrl+End` | End of content / follow output |"] : []), row(["tui.editor.jumpForward"], "Jump forward to character"), row(["tui.editor.jumpBackward"], "Jump backward to character"), row(["tui.editor.pageUp", "tui.editor.pageDown"], "Scroll by page"), "", "**Editing**", "| Key | Action |", "|-----|--------|", row(["tui.input.submit"], "Send message"), row(["tui.input.newLine"], `New line${process.platform === "win32" ? " (Ctrl+Enter on Windows Terminal)" : ""}`), row(["tui.editor.deleteWordBackward"], "Delete word backwards"), row(["tui.editor.deleteWordForward"], "Delete word forwards"), row(["tui.editor.deleteToLineStart"], "Delete to start of line"), row(["tui.editor.deleteToLineEnd"], "Delete to end of line"), row(["tui.editor.yank"], "Paste the most-recently-deleted text"), row(["tui.editor.yankPop"], "Cycle through the deleted text after pasting"), row(["tui.editor.undo"], "Undo"), "", "**Other**", "| Key | Action |", "|-----|--------|", row(["tui.input.tab"], "Path completion / accept autocomplete"), row(["app.interrupt"], "Cancel autocomplete / abort streaming"), row(["app.clear"], "Clear editor (first) / exit (second)"), row(["app.exit"], "Exit (when editor is empty)"), row(["app.suspend"], "Suspend to background"), row(["app.thinking.cycle"], "Cycle thinking level"), row(["app.model.cycleForward", "app.model.cycleBackward"], "Cycle models"), row(["app.model.select"], profile === "a1" ? "Open the Models dialog" : "Open model selector"), row(["app.tools.expand"], "Toggle tool output expansion"), row(["app.thinking.toggle"], "Toggle thinking block visibility"), row(["app.editor.external"], "Edit message in external editor"), row(["app.message.copy"], "Copy selection or last assistant message"), row(["app.message.followUp"], "Queue follow-up message"), row(["app.message.dequeue"], "Restore queued messages"), row(["app.clipboard.pasteImage"], "Paste image or text from clipboard"), "| `/` | Slash commands |", "| `!` | Run bash command |", "| `!!` | Run bash command (excluded from context) |", ...(profile === "a1" ? ["", "**Models dialog**", "| Key | Action |", "|-----|--------|", "| `Space` | Toggle the selected model in the cycling scope |", "| `Tab` | Switch the all/scoped filter |", row(["app.models.save"], "Save the scope to settings"), row(["app.models.enableAll"], "Scope every listed model"), row(["app.models.clearAll"], "Clear the listed models from the scope"), row(["app.models.toggleProvider"], "Toggle the selected model's provider"), row(["app.models.reorderUp", "app.models.reorderDown"], "Reorder the cycling scope")] : [])].join("\n");
|
|
182
|
+
const shortcuts = getShortcuts(bindings ?? keys.getEffectiveConfig());
|
|
183
|
+
if (shortcuts.length > 0) {
|
|
184
|
+
markdown += "\n\n**Extensions**\n| Key | Action |\n|-----|--------|\n";
|
|
185
|
+
markdown += shortcuts.map(shortcut => `| \`${shortcutDisplay(shortcut.key)}\` | ${shortcut.description} |`).join("\n");
|
|
186
|
+
}
|
|
187
|
+
return markdown;
|
|
188
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { AssistantMessageComponent } from "../startup-public.js";
|
|
2
|
+
import { type MermaidRenderingMode } from "./upstream/components/mermaid.js";
|
|
3
|
+
import type { OwnedUiTranscriptBlock } from "../../../contracts/owned-ui/index.js";
|
|
4
|
+
import { type PiShellSubmittedPromptComposer } from "./submitted-prompt-adapter.js";
|
|
5
|
+
export { isPiPromptStyleCompaction, paintPiSubmittedPromptTimestamp, type PiShellSubmittedPromptComposer } from "./submitted-prompt-adapter.js";
|
|
6
|
+
import { type PiShellExtensionRendererResolver, type PiShellImageAssetResolver, type PiShellTranscriptComponentPort } from "./shell-shared-facade.js";
|
|
7
|
+
export declare function createPiShellTranscriptComponent(initial: OwnedUiTranscriptBlock, cwd: string, extensions?: PiShellExtensionRendererResolver, submittedPrompt?: PiShellSubmittedPromptComposer, initialOutputPad?: 0 | 1, initialHideThinkingBlock?: boolean, initialMermaidRenderingMode?: MermaidRenderingMode, initialShowImages?: boolean, initialImageWidthCells?: number, imageAssets?: PiShellImageAssetResolver, presentation?: {
|
|
8
|
+
readonly getColumns: () => number;
|
|
9
|
+
readonly getRows: () => number;
|
|
10
|
+
readonly changed: () => void;
|
|
11
|
+
}): PiShellTranscriptComponentPort;
|
|
12
|
+
export declare function renderPiShellTranscriptBlock(block: OwnedUiTranscriptBlock, width: number, cwd: string): readonly string[];
|
|
13
|
+
/**
|
|
14
|
+
* Pinned Pi's CLI prints startup diagnostics with `reportDiagnostics` before
|
|
15
|
+
* the banner: the whole line, prefix included, in chalk's basic ANSI severity
|
|
16
|
+
* colour — not the theme's tokens — with info lines dim and unprefixed.
|
|
17
|
+
*/
|
|
18
|
+
export declare function renderPiShellStartupDiagnostic(diagnostic: {
|
|
19
|
+
readonly severity: "info" | "warning" | "error";
|
|
20
|
+
readonly message: string;
|
|
21
|
+
}, width: number): readonly string[];
|
|
22
|
+
/**
|
|
23
|
+
* Pinned Pi's `showPackageUpdateNotification` banner: warning-coloured dynamic
|
|
24
|
+
* borders around a bold warning title, the muted update instruction with the
|
|
25
|
+
* accent command, and the package list.
|
|
26
|
+
*/
|
|
27
|
+
export declare function renderPiShellPackageUpdateNotice(packages: readonly string[], width: number): readonly string[];
|
|
28
|
+
type PiAssistantMessage = NonNullable<ConstructorParameters<typeof AssistantMessageComponent>[0]>;
|
|
29
|
+
export declare function validatedAssistantMessage(block: OwnedUiTranscriptBlock): PiAssistantMessage;
|