@timurproko/a1 0.1.8-dev.0b6d8cc → 0.1.8-dev.121
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 +29 -23
- package/bin/cli.js +7 -7
- package/bin/guardian.js +1 -1
- package/bin/supervisor.js +1 -1
- package/bin/ui.js +3 -3
- package/dist/{src/cli → cli}/dispatch.js +14 -12
- package/dist/{src/cli → cli}/packages.d.ts +10 -2
- package/dist/{src/cli → cli}/packages.js +24 -20
- package/dist/{src/cli → cli}/version-stats.js +4 -4
- package/dist/composition/agent-engine-bridge.d.ts +3 -0
- package/dist/composition/agent-engine-bridge.js +108 -0
- package/dist/composition/index.d.ts +3 -0
- package/dist/composition/index.js +3 -0
- package/dist/composition/owned-ui.d.ts +25 -0
- package/dist/composition/owned-ui.js +40 -0
- package/dist/composition/process.d.ts +16 -0
- package/dist/composition/process.js +45 -0
- package/dist/composition/settings-route-host.d.ts +8 -0
- package/dist/composition/settings-route-host.js +73 -0
- package/dist/{src/features → features}/owned-ui/customization.d.ts +1 -1
- package/dist/{src/features → features}/owned-ui/customization.js +1 -1
- package/dist/{src/features → features}/owned-ui/diagnostics.d.ts +1 -1
- package/dist/{src/features → features}/owned-ui/run.d.ts +2 -2
- package/dist/{src/features → features}/owned-ui/settings-app.d.ts +3 -3
- package/dist/{src/features → features}/owned-ui/settings-app.js +1 -1
- package/dist/{src/features → features}/workspace/capabilities.d.ts +1 -1
- package/dist/{src/features → features}/workspace/reducer.d.ts +1 -1
- package/dist/{src/features → features}/workspace/reducer.js +1 -1
- package/dist/{src/features → features}/workspace/router.d.ts +1 -1
- package/dist/{src/features → features}/workspace/store.d.ts +1 -1
- package/dist/{src/foundation → foundation}/launch-guardian/main.js +8 -2
- package/dist/foundation/lifecycle/paths.d.ts +28 -0
- package/dist/{src/foundation → foundation}/lifecycle/paths.js +21 -0
- package/dist/{src/foundation → foundation}/native-host-protocol/messages.d.ts +1 -1
- package/dist/{src/foundation → foundation}/native-host-protocol/messages.js +1 -1
- package/dist/{src/foundation → foundation}/release/bootstrap.js +42 -10
- package/dist/foundation/release/endpoints.d.ts +20 -0
- package/dist/foundation/release/endpoints.js +50 -0
- package/dist/{src/foundation → foundation}/release/index.d.ts +1 -0
- package/dist/{src/foundation → foundation}/release/index.js +1 -0
- package/dist/{src/foundation → foundation}/release/release-gc.d.ts +4 -1
- package/dist/{src/foundation → foundation}/release/release-gc.js +9 -1
- package/dist/{src/foundation → foundation}/release/update.d.ts +9 -1
- package/dist/{src/foundation → foundation}/release/update.js +69 -35
- package/dist/{src/foundation → foundation}/storage/control-store.d.ts +1 -1
- package/dist/{src/foundation → foundation}/storage/control-store.js +1 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/backpressure.d.ts +1 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/backpressure.js +1 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/commands.d.ts +1 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/commands.js +1 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/handshake.d.ts +1 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/handshake.js +1 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/reconnection.d.ts +1 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/reconnection.js +1 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/state.d.ts +1 -1
- package/dist/{src/foundation → foundation}/structured-agent-runtime/state.js +1 -1
- package/dist/foundation/supervision/index.d.ts +3 -0
- package/dist/foundation/supervision/index.js +3 -0
- package/dist/{src/foundation → foundation}/supervision/main.js +11 -5
- package/dist/foundation/supervision/paths.d.ts +1 -0
- package/dist/foundation/supervision/paths.js +1 -0
- package/dist/{src/foundation → foundation}/supervision/server.d.ts +18 -1
- package/dist/{src/foundation → foundation}/supervision/server.js +52 -1
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/components.d.ts +1 -1
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/conformance.js +2 -2
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-extension-ui.d.ts +1 -1
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-footer-status.d.ts +1 -1
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-presenters-transcript.d.ts +1 -1
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-presenters-transcript.js +1 -1
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-selectors-dialogs.d.ts +1 -1
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-shared-facade.d.ts +1 -1
- package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-footer.d.ts +1 -1
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/adapter.d.ts +2 -2
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/adapter.js +113 -16
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/conformance.js +2 -2
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/model-auth-integration.d.ts +1 -1
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.d.ts +1 -1
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.js +1 -1
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/resource-extension-integration.d.ts +1 -1
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/session-integration.d.ts +1 -1
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/session-integration.js +1 -1
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/settings-integration.d.ts +1 -1
- package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflow-controllers.d.ts +1 -1
- package/dist/{src/foundation/pi-owned-ui-integration → integrations/pi/owned-ui}/route-host.d.ts +1 -1
- package/dist/{src/foundation/pi-owned-ui-integration/session-shell.d.ts → integrations/pi/owned-ui/session-shell-root.d.ts} +13 -46
- package/dist/integrations/pi/owned-ui/session-shell-root.js +722 -0
- package/dist/integrations/pi/owned-ui/session-shell.d.ts +46 -0
- package/dist/{src/foundation/pi-owned-ui-integration → integrations/pi/owned-ui}/session-shell.js +24 -704
- package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/presentation-adapter.d.ts +1 -1
- package/dist/native/darwin-arm64/manifest.json +1 -1
- package/dist/native/linux-x64/manifest.json +1 -1
- package/dist/native/win32-x64/manifest.json +2 -2
- package/dist/native/win32-x64/process-guardian.exe +0 -0
- package/dist/{src/foundation/ui-apps → ui/apps}/contracts.d.ts +1 -1
- package/dist/{src/foundation/ui-apps → ui/apps}/host.d.ts +1 -1
- package/dist/{src/foundation/ui-apps → ui/apps}/host.js +1 -1
- package/dist/{src/foundation/owned-ui-settings → ui/settings}/session.d.ts +1 -1
- package/docs/architecture/boundaries.md +8 -8
- package/docs/architecture/project-structure.md +52 -29
- package/docs/architecture/toolchain.md +5 -5
- package/docs/ci-release-runbook.md +76 -79
- package/docs/features/launch-profiles.md +7 -9
- package/docs/manual-owned-ui-checkpoint.md +52 -0
- package/docs/manual-terminal-colour-check.md +1 -1
- package/package.json +24 -22
- package/dist/src/composition/index.d.ts +0 -48
- package/dist/src/composition/index.js +0 -258
- package/dist/src/foundation/lifecycle/paths.d.ts +0 -10
- package/dist/src/foundation/supervision/index.d.ts +0 -3
- package/dist/src/foundation/supervision/index.js +0 -3
- package/dist/src/foundation/supervision/paths.d.ts +0 -1
- package/dist/src/foundation/supervision/paths.js +0 -1
- package/docs/manual-transparent-checkpoint.md +0 -53
- /package/dist/{src/cli → cli}/capabilities.d.ts +0 -0
- /package/dist/{src/cli → cli}/capabilities.js +0 -0
- /package/dist/{src/cli → cli}/dispatch.d.ts +0 -0
- /package/dist/{src/cli → cli}/index.d.ts +0 -0
- /package/dist/{src/cli → cli}/index.js +0 -0
- /package/dist/{src/cli → cli}/version-stats.d.ts +0 -0
- /package/dist/{src/cli → cli}/version.d.ts +0 -0
- /package/dist/{src/cli → cli}/version.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/capability-ports.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/agent-engine-contracts → contracts/agent-engine}/domain-validation.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/domain.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/index.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/model.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/package-ports.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/ports.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/serialization.js +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.d.ts +0 -0
- /package/dist/{src/foundation/agent-engine-contracts → contracts/agent-engine}/validation.js +0 -0
- /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.d.ts +0 -0
- /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/extension-ui.js +0 -0
- /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/index.d.ts +0 -0
- /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/index.js +0 -0
- /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.d.ts +0 -0
- /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/model.js +0 -0
- /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/validation.d.ts +0 -0
- /package/dist/{src/foundation/owned-ui-contracts → contracts/owned-ui}/validation.js +0 -0
- /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.d.ts +0 -0
- /package/dist/{src/foundation/presentation-contracts → contracts/presentation}/index.js +0 -0
- /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/index.d.ts +0 -0
- /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/index.js +0 -0
- /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.d.ts +0 -0
- /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/model.js +0 -0
- /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.d.ts +0 -0
- /package/dist/{src/foundation/workspace-contracts → contracts/workspace}/validation.js +0 -0
- /package/dist/{src/features → features}/launch/development-launch.d.ts +0 -0
- /package/dist/{src/features → features}/launch/development-launch.js +0 -0
- /package/dist/{src/features → features}/launch/index.d.ts +0 -0
- /package/dist/{src/features → features}/launch/index.js +0 -0
- /package/dist/{src/features → features}/launch/initialize-profile.d.ts +0 -0
- /package/dist/{src/features → features}/launch/initialize-profile.js +0 -0
- /package/dist/{src/features → features}/launch/intent.d.ts +0 -0
- /package/dist/{src/features → features}/launch/intent.js +0 -0
- /package/dist/{src/features → features}/launch/prepare-launch.d.ts +0 -0
- /package/dist/{src/features → features}/launch/prepare-launch.js +0 -0
- /package/dist/{src/features → features}/launch/profile-paths.d.ts +0 -0
- /package/dist/{src/features → features}/launch/profile-paths.js +0 -0
- /package/dist/{src/features → features}/launch/profiles.d.ts +0 -0
- /package/dist/{src/features → features}/launch/profiles.js +0 -0
- /package/dist/{src/features → features}/launch/runtime-selection.d.ts +0 -0
- /package/dist/{src/features → features}/launch/runtime-selection.js +0 -0
- /package/dist/{src/features → features}/owned-ui/diagnostics.js +0 -0
- /package/dist/{src/features → features}/owned-ui/index.d.ts +0 -0
- /package/dist/{src/features → features}/owned-ui/index.js +0 -0
- /package/dist/{src/features → features}/owned-ui/run.js +0 -0
- /package/dist/{src/features → features}/workspace/capabilities.js +0 -0
- /package/dist/{src/features → features}/workspace/index.d.ts +0 -0
- /package/dist/{src/features → features}/workspace/index.js +0 -0
- /package/dist/{src/features → features}/workspace/presentation.d.ts +0 -0
- /package/dist/{src/features → features}/workspace/presentation.js +0 -0
- /package/dist/{src/features → features}/workspace/reconciliation.d.ts +0 -0
- /package/dist/{src/features → features}/workspace/reconciliation.js +0 -0
- /package/dist/{src/features → features}/workspace/router.js +0 -0
- /package/dist/{src/features → features}/workspace/store.js +0 -0
- /package/dist/{src/foundation → foundation}/launch-guardian/index.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/launch-guardian/index.js +0 -0
- /package/dist/{src/foundation → foundation}/launch-guardian/main.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/commands.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/commands.js +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/index.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/index.js +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/launch-instance.js +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/model.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/lifecycle/model.js +0 -0
- /package/dist/{src/foundation → foundation}/native-host-protocol/codec.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/native-host-protocol/codec.js +0 -0
- /package/dist/{src/foundation → foundation}/native-host-protocol/evidence.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/native-host-protocol/evidence.js +0 -0
- /package/dist/{src/foundation → foundation}/native-host-protocol/index.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/native-host-protocol/index.js +0 -0
- /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/native-host-protocol/proof-gate.js +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/artifact.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/artifact.js +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/contracts.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/contracts.js +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/index.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/index.js +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/linux-process-inspector.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/linux-process-inspector.js +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/native-guardian-containment.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/native-guardian-containment.js +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/windows-process-inspector.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/process-containment/windows-process-inspector.js +0 -0
- /package/dist/{src/foundation → foundation}/protocol/client.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/protocol/client.js +0 -0
- /package/dist/{src/foundation → foundation}/protocol/index.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/protocol/index.js +0 -0
- /package/dist/{src/foundation → foundation}/protocol/messages.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/protocol/messages.js +0 -0
- /package/dist/{src/foundation → foundation}/release/bootstrap.d.ts +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/cohort-state.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/release/cohort-state.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/release-store.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/release/release-store.js +0 -0
- /package/dist/{src/foundation → foundation}/release/release.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/release/release.js +0 -0
- /package/dist/{src/foundation → foundation}/release/stable-release.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/release/stable-release.js +0 -0
- /package/dist/{src/foundation → foundation}/release/update-transaction.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/release/update-transaction.js +0 -0
- /package/dist/{src/foundation → foundation}/storage/index.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/storage/index.js +0 -0
- /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.d.ts +0 -0
- /package/dist/{src/foundation → foundation}/structured-agent-runtime/index.js +0 -0
- /package/dist/{src/foundation → foundation}/supervision/main.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/components.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/conformance.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/index.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/index.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/resources/builtin-themes.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-components.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-components.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-editor-autocomplete.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-editor-autocomplete.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-extension-ui.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-footer-status.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-selectors-dialogs.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/shell-shared-facade.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/theme.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/adjacent/core/keybindings.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/adjacent/core/keybindings.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/countdown-timer.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/custom-entry.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/custom-entry.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/daxnuts.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/earendil-announcement.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/earendil-announcement.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/extension-editor.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/first-time-setup.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/markdown-transform.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/mermaid.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/owned-editor.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/owned-editor.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/scoped-models-selector.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/scoped-models-selector.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-footer.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector-search.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/session-selector.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/skill-invocation-message.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/status-indicator.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/tree-selector.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/components/trust-selector.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/external-editor.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/model-search.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme-controller.js +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.d.ts +0 -0
- /package/dist/{src/foundation/pi-component-adapter → integrations/pi/components}/upstream/theme/theme.js +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/conformance.d.ts +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/index.d.ts +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/index.js +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/model-auth-integration.js +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/pi-settings-metadata.json +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.d.ts +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/public-main-entry.js +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/resource-extension-integration.js +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/runtime-integration.d.ts +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/runtime-integration.js +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/settings-integration.js +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflow-controllers.js +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflows.d.ts +0 -0
- /package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflows.js +0 -0
- /package/dist/{src/foundation/pi-owned-ui-integration → integrations/pi/owned-ui}/index.d.ts +0 -0
- /package/dist/{src/foundation/pi-owned-ui-integration → integrations/pi/owned-ui}/index.js +0 -0
- /package/dist/{src/foundation/pi-owned-ui-integration → integrations/pi/owned-ui}/route-host.js +0 -0
- /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/adapter.d.ts +0 -0
- /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/adapter.js +0 -0
- /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.d.ts +0 -0
- /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/conformance.js +0 -0
- /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/contracts.d.ts +0 -0
- /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/contracts.js +0 -0
- /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/index.d.ts +0 -0
- /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/index.js +0 -0
- /package/dist/{src/foundation/pi-tui-runtime-adapter → integrations/pi/tui-runtime}/presentation-adapter.js +0 -0
- /package/dist/{src/product-identity.d.ts → product-identity.d.ts} +0 -0
- /package/dist/{src/product-identity.js → product-identity.js} +0 -0
- /package/dist/{src/product-identity.json → product-identity.json} +0 -0
- /package/dist/{src/foundation/ui-apps → ui/apps}/contracts.js +0 -0
- /package/dist/{src/foundation/ui-apps → ui/apps}/index.d.ts +0 -0
- /package/dist/{src/foundation/ui-apps → ui/apps}/index.js +0 -0
- /package/dist/{src/foundation/ui-apps → ui/apps}/registry.d.ts +0 -0
- /package/dist/{src/foundation/ui-apps → ui/apps}/registry.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/dialog-panel.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/frame.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/frame.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/index.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/index.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}/line-input.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/line-input.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/list-block.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/list-block.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/list-view.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/list-view.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/mouse.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/mouse.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}/scrollbar.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/scrollbar.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/shortcuts.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/shortcuts.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/spans.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/spans.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/status-line.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/status-line.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/stepper.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/stepper.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/surface.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/surface.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/text.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/text.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/theme.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/theme.js +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/value-menu.d.ts +0 -0
- /package/dist/{src/foundation/ui-components → ui/components}/value-menu.js +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/declarations.d.ts +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/declarations.js +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/index.d.ts +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/index.js +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/migrations.d.ts +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/migrations.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
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/sections.d.ts +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/sections.js +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/session.js +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/store.d.ts +0 -0
- /package/dist/{src/foundation/owned-ui-settings → ui/settings}/store.js +0 -0
|
@@ -3,9 +3,9 @@ import { mkdir, rm, writeFile } from "node:fs/promises";
|
|
|
3
3
|
import { tmpdir } from "node:os";
|
|
4
4
|
import { dirname, join, resolve } from "node:path";
|
|
5
5
|
import { promisify } from "node:util";
|
|
6
|
-
import { PRODUCT_IDENTITY } from "
|
|
6
|
+
import { PRODUCT_IDENTITY } from "../../../product-identity.js";
|
|
7
7
|
import { copyToClipboard, DefaultPackageManager, getAgentDir, ProjectTrustStore, SessionManager, } from "@earendil-works/pi-coding-agent";
|
|
8
|
-
import { OWNED_UI_EXTENSION_CONTRACT_VERSION, OWNED_UI_EXTENSION_RENDER_CALLBACKS, OWNED_UI_EXTENSION_UI_CALLBACKS, OWNED_UI_EXTENSION_UI_PROPERTIES, assertOwnedUiCommand, assertOwnedUiExtensionUiPort, assertOwnedUiSnapshot, } from "
|
|
8
|
+
import { OWNED_UI_EXTENSION_CONTRACT_VERSION, OWNED_UI_EXTENSION_RENDER_CALLBACKS, OWNED_UI_EXTENSION_UI_CALLBACKS, OWNED_UI_EXTENSION_UI_PROPERTIES, assertOwnedUiCommand, assertOwnedUiExtensionUiPort, assertOwnedUiSnapshot, } from "../../../contracts/owned-ui/index.js";
|
|
9
9
|
import { PINNED_PI_SETTINGS_CALLBACKS, PINNED_PI_WORKFLOW_COMMAND_NAMES, } from "./workflows.js";
|
|
10
10
|
import { createPiRuntimeIntegration } from "./runtime-integration.js";
|
|
11
11
|
import { PiSessionCommandIntegration } from "./session-integration.js";
|
|
@@ -17,6 +17,7 @@ const execFileAsync = promisify(execFile);
|
|
|
17
17
|
* batch.
|
|
18
18
|
*/
|
|
19
19
|
const EVENT_DELIVERY_BATCH = 16;
|
|
20
|
+
const TOOL_UPDATE_COALESCE_MS = 50;
|
|
20
21
|
const DEFAULT_SURFACE = {
|
|
21
22
|
columns: 100,
|
|
22
23
|
rows: 32,
|
|
@@ -64,6 +65,9 @@ export class PiEngineAdapter {
|
|
|
64
65
|
#messageBlockIds = new WeakMap();
|
|
65
66
|
#messageFallbackIds = new Map();
|
|
66
67
|
#toolBlockIds = new Map();
|
|
68
|
+
#pendingToolUpdates = new Map();
|
|
69
|
+
#toolUpdateFlush = null;
|
|
70
|
+
#usageCache;
|
|
67
71
|
#nextBlockSequence = 0;
|
|
68
72
|
#diagnostics = [];
|
|
69
73
|
#eventQueue = [];
|
|
@@ -162,6 +166,7 @@ export class PiEngineAdapter {
|
|
|
162
166
|
return () => this.#listeners.delete(listener);
|
|
163
167
|
}
|
|
164
168
|
async flushEvents() {
|
|
169
|
+
this.#flushPendingToolUpdates();
|
|
165
170
|
while (this.#eventQueueProcessing)
|
|
166
171
|
await this.#eventQueueProcessing;
|
|
167
172
|
}
|
|
@@ -742,7 +747,7 @@ export class PiEngineAdapter {
|
|
|
742
747
|
...this.#status,
|
|
743
748
|
diagnostics: [...this.#status.diagnostics],
|
|
744
749
|
badges: [...this.#status.badges],
|
|
745
|
-
usage: this.#readUsage(),
|
|
750
|
+
usage: this.#usageCache ??= this.#readUsage(),
|
|
746
751
|
footer: {
|
|
747
752
|
branch: this.#gitBranch,
|
|
748
753
|
sessionName: this.#session?.sessionManager?.getSessionName() ?? null,
|
|
@@ -808,6 +813,11 @@ export class PiEngineAdapter {
|
|
|
808
813
|
if (this.#disposed)
|
|
809
814
|
return;
|
|
810
815
|
this.#disposed = true;
|
|
816
|
+
if (this.#toolUpdateFlush !== null) {
|
|
817
|
+
clearTimeout(this.#toolUpdateFlush);
|
|
818
|
+
this.#toolUpdateFlush = null;
|
|
819
|
+
}
|
|
820
|
+
this.#pendingToolUpdates.clear();
|
|
811
821
|
this.#extensionBound = false;
|
|
812
822
|
this.#extensionUi = undefined;
|
|
813
823
|
this.#extensionShutdown = undefined;
|
|
@@ -1467,6 +1477,10 @@ export class PiEngineAdapter {
|
|
|
1467
1477
|
#handlePiEvent(event) {
|
|
1468
1478
|
if (!isRecord(event) || typeof event.type !== "string")
|
|
1469
1479
|
return;
|
|
1480
|
+
// Usage moves at message and lifecycle boundaries, not with stream chunks, so the
|
|
1481
|
+
// two streaming event kinds keep the memo and everything else drops it.
|
|
1482
|
+
if (event.type !== "message_update" && event.type !== "tool_execution_update")
|
|
1483
|
+
this.#usageCache = undefined;
|
|
1470
1484
|
switch (event.type) {
|
|
1471
1485
|
case "agent_start":
|
|
1472
1486
|
this.#agentRunActive = true;
|
|
@@ -1476,14 +1490,16 @@ export class PiEngineAdapter {
|
|
|
1476
1490
|
this.#upsertMessageBlock(event.message, "live");
|
|
1477
1491
|
return;
|
|
1478
1492
|
case "message_update": {
|
|
1479
|
-
const
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1493
|
+
const delta = isRecord(event.assistantMessageEvent) && typeof event.assistantMessageEvent.delta === "string"
|
|
1494
|
+
? event.assistantMessageEvent.delta
|
|
1495
|
+
: undefined;
|
|
1496
|
+
// The delta is folded in before the block is stored, so a chunk is one update to
|
|
1497
|
+
// one block rather than a store without the delta followed by a store with it.
|
|
1498
|
+
const blocks = this.#messageBlocks(event.message, "live", this.#transcript.length);
|
|
1499
|
+
for (const [index, block] of blocks.entries()) {
|
|
1500
|
+
this.#upsertTranscriptBlock(index === 0 && delta !== undefined && !block.text.endsWith(delta)
|
|
1501
|
+
? { ...block, text: `${block.text}${delta}` }
|
|
1502
|
+
: block);
|
|
1487
1503
|
}
|
|
1488
1504
|
return;
|
|
1489
1505
|
}
|
|
@@ -1498,10 +1514,17 @@ export class PiEngineAdapter {
|
|
|
1498
1514
|
}
|
|
1499
1515
|
return;
|
|
1500
1516
|
case "tool_execution_start":
|
|
1501
|
-
case "
|
|
1502
|
-
|
|
1517
|
+
case "tool_execution_end": {
|
|
1518
|
+
// The end supersedes any update still waiting on the coalescing timer.
|
|
1519
|
+
const toolCallId = stringValue(event.toolCallId);
|
|
1520
|
+
if (toolCallId !== undefined)
|
|
1521
|
+
this.#pendingToolUpdates.delete(toolCallId);
|
|
1503
1522
|
this.#upsertToolExecutionBlock(event);
|
|
1504
1523
|
return;
|
|
1524
|
+
}
|
|
1525
|
+
case "tool_execution_update":
|
|
1526
|
+
this.#coalesceToolExecutionUpdate(event);
|
|
1527
|
+
return;
|
|
1505
1528
|
case "agent_settled":
|
|
1506
1529
|
case "agent_end": {
|
|
1507
1530
|
if (event.type === "agent_end" && event.willRetry === true)
|
|
@@ -1638,7 +1661,13 @@ export class PiEngineAdapter {
|
|
|
1638
1661
|
}
|
|
1639
1662
|
}
|
|
1640
1663
|
}
|
|
1641
|
-
|
|
1664
|
+
// An authoritative rebuild restates most of what is already there. Reusing the block
|
|
1665
|
+
// that already says it keeps its revision, and with it the rows the shell rendered for
|
|
1666
|
+
// it — otherwise every turn that ends re-renders the whole session.
|
|
1667
|
+
this.#setTranscript(blocks.map(block => {
|
|
1668
|
+
const existing = this.#transcriptBlock(block.id);
|
|
1669
|
+
return existing !== undefined && sameBlockContent(existing, block) ? existing : block;
|
|
1670
|
+
}));
|
|
1642
1671
|
}
|
|
1643
1672
|
#upsertMessageBlock(message, status) {
|
|
1644
1673
|
const blocks = this.#messageBlocks(message, status, this.#transcript.length);
|
|
@@ -1787,6 +1816,35 @@ export class PiEngineAdapter {
|
|
|
1787
1816
|
}
|
|
1788
1817
|
return blocks;
|
|
1789
1818
|
}
|
|
1819
|
+
/**
|
|
1820
|
+
* A busy tool streams far more output chunks than a terminal frame can show, and every
|
|
1821
|
+
* chunk restates the whole accumulated output. Keeping only the newest chunk per tool
|
|
1822
|
+
* and applying it on a short timer bounds the per-command work by frames rather than
|
|
1823
|
+
* by chunks, which is what keeps typed input and the spinner alive under the stream.
|
|
1824
|
+
*/
|
|
1825
|
+
#coalesceToolExecutionUpdate(event) {
|
|
1826
|
+
const toolCallId = stringValue(event.toolCallId);
|
|
1827
|
+
if (!toolCallId)
|
|
1828
|
+
return;
|
|
1829
|
+
this.#pendingToolUpdates.set(toolCallId, event);
|
|
1830
|
+
this.#toolUpdateFlush ??= setTimeout(() => {
|
|
1831
|
+
this.#toolUpdateFlush = null;
|
|
1832
|
+
if (!this.#disposed)
|
|
1833
|
+
this.#flushPendingToolUpdates();
|
|
1834
|
+
}, TOOL_UPDATE_COALESCE_MS);
|
|
1835
|
+
}
|
|
1836
|
+
#flushPendingToolUpdates() {
|
|
1837
|
+
if (this.#toolUpdateFlush !== null) {
|
|
1838
|
+
clearTimeout(this.#toolUpdateFlush);
|
|
1839
|
+
this.#toolUpdateFlush = null;
|
|
1840
|
+
}
|
|
1841
|
+
if (this.#pendingToolUpdates.size === 0)
|
|
1842
|
+
return;
|
|
1843
|
+
const pending = [...this.#pendingToolUpdates.values()];
|
|
1844
|
+
this.#pendingToolUpdates.clear();
|
|
1845
|
+
for (const update of pending)
|
|
1846
|
+
this.#upsertToolExecutionBlock(update);
|
|
1847
|
+
}
|
|
1790
1848
|
#upsertToolExecutionBlock(event) {
|
|
1791
1849
|
const toolCallId = stringValue(event.toolCallId);
|
|
1792
1850
|
if (!toolCallId)
|
|
@@ -1806,7 +1864,9 @@ export class PiEngineAdapter {
|
|
|
1806
1864
|
toolCallId,
|
|
1807
1865
|
toolName: stringValue(event.toolName) ?? "unknown",
|
|
1808
1866
|
arguments: jsonSummary(event.args),
|
|
1809
|
-
result
|
|
1867
|
+
// A partial result repeats the whole accumulated output on every chunk;
|
|
1868
|
+
// summarizing it each time would cost quadratic work over the stream.
|
|
1869
|
+
result: ended ? jsonSummary(source) : { summary: "", json: null },
|
|
1810
1870
|
partialResult: event.type === "tool_execution_update",
|
|
1811
1871
|
argsComplete: ended,
|
|
1812
1872
|
isError: event.isError === true,
|
|
@@ -1815,8 +1875,14 @@ export class PiEngineAdapter {
|
|
|
1815
1875
|
}
|
|
1816
1876
|
#upsertTranscriptBlock(block) {
|
|
1817
1877
|
const index = this.#transcriptIndex.get(block.id);
|
|
1818
|
-
if (index !== undefined)
|
|
1878
|
+
if (index !== undefined) {
|
|
1879
|
+
const existing = this.#transcript[index];
|
|
1880
|
+
// Nothing to tell the shell about a block that repeats itself, and keeping the
|
|
1881
|
+
// revision keeps the rows it already rendered.
|
|
1882
|
+
if (existing !== undefined && sameBlockContent(existing, block))
|
|
1883
|
+
return;
|
|
1819
1884
|
this.#transcript[index] = block;
|
|
1885
|
+
}
|
|
1820
1886
|
else {
|
|
1821
1887
|
this.#transcriptIndex.set(block.id, this.#transcript.length);
|
|
1822
1888
|
this.#transcript.push(block);
|
|
@@ -1883,6 +1949,7 @@ export class PiEngineAdapter {
|
|
|
1883
1949
|
this.#emitEvent({ type: "diagnostic", diagnostic });
|
|
1884
1950
|
}
|
|
1885
1951
|
#emitView() {
|
|
1952
|
+
this.#usageCache = undefined;
|
|
1886
1953
|
this.#viewRevision += 1;
|
|
1887
1954
|
this.#emitEvent({ type: "session-view", view: this.view() });
|
|
1888
1955
|
}
|
|
@@ -2388,6 +2455,36 @@ function compactResourceLabel(path) {
|
|
|
2388
2455
|
const segments = path.replaceAll("\\", "/").split("/").filter(Boolean);
|
|
2389
2456
|
return segments.at(-1) ?? path;
|
|
2390
2457
|
}
|
|
2458
|
+
/**
|
|
2459
|
+
* Whether two blocks say the same thing. A block that says what it already said is not a
|
|
2460
|
+
* new revision: the shell renders a block once per revision, so bumping one it did not
|
|
2461
|
+
* need re-renders it for nothing.
|
|
2462
|
+
*/
|
|
2463
|
+
function sameBlockContent(left, right) {
|
|
2464
|
+
return left.kind === right.kind
|
|
2465
|
+
&& left.status === right.status
|
|
2466
|
+
&& left.title === right.title
|
|
2467
|
+
&& left.text === right.text
|
|
2468
|
+
&& sameValue(left.payload, right.payload);
|
|
2469
|
+
}
|
|
2470
|
+
function sameValue(left, right) {
|
|
2471
|
+
if (left === right)
|
|
2472
|
+
return true;
|
|
2473
|
+
if (typeof left !== typeof right || left === null || right === null)
|
|
2474
|
+
return false;
|
|
2475
|
+
if (Array.isArray(left) || Array.isArray(right)) {
|
|
2476
|
+
if (!Array.isArray(left) || !Array.isArray(right) || left.length !== right.length)
|
|
2477
|
+
return false;
|
|
2478
|
+
return left.every((value, index) => sameValue(value, right[index]));
|
|
2479
|
+
}
|
|
2480
|
+
if (typeof left !== "object")
|
|
2481
|
+
return false;
|
|
2482
|
+
const leftKeys = Object.keys(left);
|
|
2483
|
+
const rightRecord = right;
|
|
2484
|
+
if (leftKeys.length !== Object.keys(rightRecord).length)
|
|
2485
|
+
return false;
|
|
2486
|
+
return leftKeys.every(key => Object.hasOwn(rightRecord, key) && sameValue(left[key], rightRecord[key]));
|
|
2487
|
+
}
|
|
2391
2488
|
function textFromContent(content) {
|
|
2392
2489
|
if (typeof content === "string")
|
|
2393
2490
|
return content;
|
|
@@ -2,8 +2,8 @@ import { mkdtemp, rm } from "node:fs/promises";
|
|
|
2
2
|
import { tmpdir } from "node:os";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { createAgentSessionFromServices, createAgentSessionRuntime, createAgentSessionServices, ModelRuntime, SessionManager, VERSION, } from "@earendil-works/pi-coding-agent";
|
|
5
|
-
import { OWNED_UI_CONTRACT_VERSION } from "
|
|
6
|
-
import { PRODUCT_IDENTITY } from "
|
|
5
|
+
import { OWNED_UI_CONTRACT_VERSION } from "../../../contracts/owned-ui/index.js";
|
|
6
|
+
import { PRODUCT_IDENTITY } from "../../../product-identity.js";
|
|
7
7
|
export const REQUIRED_PI_CAPABILITY_OPERATIONS = Object.freeze({
|
|
8
8
|
"public-exports": ["services.create", "session.create", "runtime.create"],
|
|
9
9
|
"session-lifecycle": ["session.new", "session.resume", "session.rebind", "session.dispose"],
|
package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/model-auth-integration.d.ts
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ModelRuntime } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import type { AgentAuthenticationPort, AgentModelDescriptor, AgentModelPort } from "
|
|
2
|
+
import type { AgentAuthenticationPort, AgentModelDescriptor, AgentModelPort } from "../../../contracts/agent-engine/index.js";
|
|
3
3
|
export type PiDocumentedModelRuntime = Pick<ModelRuntime, "getAvailableSnapshot" | "getModel" | "getProvider" | "hasConfiguredAuth" | "refresh" | "logout">;
|
|
4
4
|
export interface PiModelAuthenticationOptions {
|
|
5
5
|
readonly runtime: PiDocumentedModelRuntime;
|
package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.d.ts
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AgentPackagesPort, type AgentPackagesPortInput } from "
|
|
1
|
+
import { type AgentPackagesPort, type AgentPackagesPortInput } from "../../../contracts/agent-engine/index.js";
|
|
2
2
|
/**
|
|
3
3
|
* Pinned Pi's package manager already takes the profile root as an argument, so
|
|
4
4
|
* this binds it to the root A1 chose rather than to whatever the configuration-root
|
package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/package-integration.js
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
2
|
import { DefaultPackageManager, ModelRuntime, SettingsManager } from "@earendil-works/pi-coding-agent";
|
|
3
|
-
import { agentPackageOutcome, } from "
|
|
3
|
+
import { agentPackageOutcome, } from "../../../contracts/agent-engine/index.js";
|
|
4
4
|
const MODEL_REFRESH_TIMEOUT_MS = 15_000;
|
|
5
5
|
/**
|
|
6
6
|
* Pinned Pi's package manager already takes the profile root as an argument, so
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AgentSession } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import type { AgentExtensionBinding, AgentExtensionFailure, AgentExtensionPort, AgentResourceDescriptor, AgentResourcesPort, AgentSessionMetadata } from "
|
|
2
|
+
import type { AgentExtensionBinding, AgentExtensionFailure, AgentExtensionPort, AgentResourceDescriptor, AgentResourcesPort, AgentSessionMetadata } from "../../../contracts/agent-engine/index.js";
|
|
3
3
|
export interface PiResourceExtensionOptions {
|
|
4
4
|
readonly session: AgentSession;
|
|
5
5
|
readonly bindUi: () => Promise<void>;
|
package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/session-integration.d.ts
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AgentSession, AgentSessionEvent } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import { type AgentCommandOutcome, type AgentEvent } from "
|
|
2
|
+
import { type AgentCommandOutcome, type AgentEvent } from "../../../contracts/agent-engine/index.js";
|
|
3
3
|
export interface PiDocumentedSessionCommands {
|
|
4
4
|
readonly isStreaming: AgentSession["isStreaming"];
|
|
5
5
|
readonly isRetrying: AgentSession["isRetrying"];
|
package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/settings-integration.d.ts
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SettingsManager } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import type { AgentJsonValue, AgentSettingDescriptor, AgentSettingsPort } from "
|
|
2
|
+
import type { AgentJsonValue, AgentSettingDescriptor, AgentSettingsPort } from "../../../contracts/agent-engine/index.js";
|
|
3
3
|
/**
|
|
4
4
|
* Values only the running engine knows: the themes installed on this machine and
|
|
5
5
|
* the thinking levels this session supports. The boundary asks for them as it is
|
package/dist/{src/foundation/pi-engine-adapter → integrations/pi/engine}/workflow-controllers.d.ts
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AgentJsonValue, AgentWorkflowDescriptor, AgentWorkflowPort } from "
|
|
1
|
+
import type { AgentJsonValue, AgentWorkflowDescriptor, AgentWorkflowPort } from "../../../contracts/agent-engine/index.js";
|
|
2
2
|
import { type PiWorkflowRoute } from "./workflows.js";
|
|
3
3
|
export type WorkflowCapability = "prompt" | "abort" | "compact" | "bash" | "models.read" | "models.write" | "auth.login" | "auth.logout" | "settings.read" | "settings.write" | "resources.read" | "resources.reload" | "session.read" | "session.new" | "session.resume" | "session.fork" | "session.tree" | "session.import" | "clipboard.write" | "export.write" | "share.write" | "process.quit" | "diagnostics.read";
|
|
4
4
|
export interface WorkflowControllerResult {
|
package/dist/{src/foundation/pi-owned-ui-integration → integrations/pi/owned-ui}/route-host.d.ts
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PaneMouseEvent } from "
|
|
1
|
+
import type { PaneMouseEvent } from "../../../ui/components/index.js";
|
|
2
2
|
/**
|
|
3
3
|
* The seam between the pinned shell and A1-owned screens. The shell asks whether
|
|
4
4
|
* a route is claimed, mounts whatever surface it is handed, and forwards keys to
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { OwnedUiSessionViewModel
|
|
1
|
+
import type { OwnedUiSessionViewModel } from "../../../contracts/owned-ui/index.js";
|
|
2
2
|
import type { UiRouteHost } from "./route-host.js";
|
|
3
|
-
import { type
|
|
4
|
-
import { type PiShellComponentPort, type PiShellEditorPort, type PiShellExtensionRendererResolver, type PiShellHeaderOptions, type PiShellHeaderPort, type PiShellLoadedResourcesPort, type
|
|
5
|
-
import {
|
|
6
|
-
type OwnedUiBackendPort = PiEngineAdapter;
|
|
7
|
-
type OwnedUiTerminalPort = PiTuiTerminalPort;
|
|
3
|
+
import { type PiEngineAdapter, type PiWorkflowResult } from "../engine/index.js";
|
|
4
|
+
import { type PiShellComponentPort, type PiShellEditorPort, type PiShellExtensionRendererResolver, type PiShellHeaderOptions, type PiShellHeaderPort, type PiShellLoadedResourcesPort, type PiShellResourceEntry, type PiShellTranscriptComponentPort } from "../components/index.js";
|
|
5
|
+
import { type PiTuiComponentPort, type PiTuiLayoutNode, type PiTuiTerminalPort } from "../tui-runtime/index.js";
|
|
6
|
+
export type OwnedUiBackendPort = PiEngineAdapter;
|
|
7
|
+
export type OwnedUiTerminalPort = PiTuiTerminalPort;
|
|
8
8
|
type OwnedUiStartupOptions = PiShellHeaderOptions;
|
|
9
9
|
export interface OwnedUiSessionShellOptions {
|
|
10
10
|
readonly backend: OwnedUiBackendPort;
|
|
@@ -39,6 +39,12 @@ export declare class OwnedUiSessionShellRoot implements PiTuiComponentPort {
|
|
|
39
39
|
readonly onDequeue?: () => void;
|
|
40
40
|
}, startup?: PiShellHeaderOptions, agentDir?: string, extensionRenderers?: PiShellExtensionRendererResolver);
|
|
41
41
|
update(view: OwnedUiSessionViewModel): void;
|
|
42
|
+
/**
|
|
43
|
+
* Applies one block: its component is created or updated in place and the order grows
|
|
44
|
+
* only when the block is new. A streamed chunk costs one component update rather than a
|
|
45
|
+
* walk of the whole transcript.
|
|
46
|
+
*/
|
|
47
|
+
applyTranscriptBlock(block: OwnedUiSessionViewModel["transcript"][number]): void;
|
|
42
48
|
render(width: number): readonly string[];
|
|
43
49
|
layoutRoot(): PiTuiLayoutNode;
|
|
44
50
|
transcriptComponent(id: string): PiShellTranscriptComponentPort | undefined;
|
|
@@ -63,44 +69,5 @@ export declare class OwnedUiSessionShellRoot implements PiTuiComponentPort {
|
|
|
63
69
|
setFocused(focused: boolean): void;
|
|
64
70
|
dispose(): void;
|
|
65
71
|
}
|
|
66
|
-
export declare
|
|
67
|
-
#private;
|
|
68
|
-
readonly backend: OwnedUiBackendPort;
|
|
69
|
-
readonly root: OwnedUiSessionShellRoot;
|
|
70
|
-
readonly runtime: PiTuiRuntimeAdapter;
|
|
71
|
-
constructor(options: OwnedUiSessionShellOptions);
|
|
72
|
-
view(): OwnedUiSessionViewModel;
|
|
73
|
-
start(): void;
|
|
74
|
-
onView(listener: (view: OwnedUiSessionViewModel) => void): () => void;
|
|
75
|
-
waitUntilStopped(): Promise<void>;
|
|
76
|
-
submit(text: string): Promise<AdapterCommandResult>;
|
|
77
|
-
clearOrExit(now?: number): Promise<AdapterCommandResult>;
|
|
78
|
-
interrupt(): Promise<AdapterCommandResult>;
|
|
79
|
-
abort(): Promise<AdapterCommandResult>;
|
|
80
|
-
retry(): Promise<AdapterCommandResult>;
|
|
81
|
-
compact(): Promise<AdapterCommandResult>;
|
|
82
|
-
newSession(): Promise<AdapterCommandResult>;
|
|
83
|
-
resumeSession(sessionPath: string): Promise<AdapterCommandResult>;
|
|
84
|
-
setModel(providerId: string, modelId: string): Promise<AdapterCommandResult>;
|
|
85
|
-
setThinkingLevel(thinkingLevel: OwnedUiThinkingLevel): Promise<AdapterCommandResult>;
|
|
86
|
-
cycleThinkingLevel(): Promise<AdapterCommandResult>;
|
|
87
|
-
cycleModel(direction: "forward" | "backward"): Promise<AdapterCommandResult>;
|
|
88
|
-
queueFollowUp(): Promise<AdapterCommandResult>;
|
|
89
|
-
restoreQueuedInput(): void;
|
|
90
|
-
showSelector(title: string, options: readonly PiShellSelectorOption[], onSelect: (id: string) => void, onCancel?: () => void): PiTuiOverlayHandle;
|
|
91
|
-
showModelSelector(): void;
|
|
92
|
-
showForkSelector(): void;
|
|
93
|
-
showLogoutSelector(): Promise<void>;
|
|
94
|
-
showLoginMethodSelector(providerReference: string): void;
|
|
95
|
-
showTreeSelector(initialSelectedId?: string): void;
|
|
96
|
-
showLoginAuthTypeSelector(): void;
|
|
97
|
-
showLoginProviderSelector(authType: "oauth" | "api_key"): void;
|
|
98
|
-
showSessionSelector(): void;
|
|
99
|
-
showSettingsSelector(): void;
|
|
100
|
-
shutdown(): Promise<AdapterCommandResult>;
|
|
101
|
-
runWorkflow(request: PiWorkflowRequest): Promise<AdapterCommandResult>;
|
|
102
|
-
showTrustSelector(): void;
|
|
103
|
-
showScopedModelsSelector(): void;
|
|
104
|
-
dispose(): Promise<void>;
|
|
105
|
-
}
|
|
72
|
+
export declare function shellResourceEntries(backend: OwnedUiBackendPort): readonly PiShellResourceEntry[];
|
|
106
73
|
export {};
|