@timurproko/a1 0.2.7-dev.1249 → 0.2.7-dev.1255
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 +11 -36
- package/bin/cli.js +2 -17
- package/bin/ui.js +10 -51
- package/dist/app/session-shell/clipboard-diagnostics.d.ts +2 -2
- package/dist/app/session-shell/clipboard-image.d.ts +0 -1
- package/dist/app/session-shell/clipboard-image.js +1 -1
- package/dist/app/session-shell/dialog-coordinator.d.ts +6 -5
- package/dist/app/session-shell/dialog-coordinator.js +3 -4
- package/dist/app/session-shell/dock-chrome.d.ts +11 -6
- package/dist/app/session-shell/dock-chrome.js +5 -8
- package/dist/app/session-shell/editor-hyperlink-budget.d.ts +0 -2
- package/dist/app/session-shell/editor-hyperlink-budget.js +1 -1
- package/dist/app/session-shell/exit-notice.d.ts +3 -3
- package/dist/app/session-shell/exit-notice.js +10 -10
- package/dist/app/session-shell/extension-surface.d.ts +8 -7
- package/dist/app/session-shell/helper-pool.d.ts +3 -4
- package/dist/app/session-shell/helper-pool.js +1 -1
- package/dist/app/session-shell/image-preparation-client.d.ts +4 -3
- package/dist/app/session-shell/image-preparation.d.ts +0 -2
- package/dist/app/session-shell/image-preparation.js +2 -2
- package/dist/app/session-shell/image-source.d.ts +2 -3
- package/dist/app/session-shell/image-source.js +2 -2
- package/dist/app/session-shell/input-surface-switch.d.ts +9 -7
- package/dist/app/session-shell/input-surface-switch.js +1 -2
- package/dist/app/session-shell/login-interaction.d.ts +5 -4
- package/dist/app/session-shell/login-interaction.js +2 -3
- package/dist/app/session-shell/paste-executor.d.ts +4 -8
- package/dist/app/session-shell/paste-executor.js +2 -2
- package/dist/app/session-shell/paste-protocol.d.ts +2 -2
- package/dist/app/session-shell/path-chip-presentation.d.ts +0 -5
- package/dist/app/session-shell/path-chip-presentation.js +3 -3
- package/dist/app/session-shell/prompt-chips.d.ts +8 -7
- package/dist/app/session-shell/prompt-history-controller.d.ts +3 -3
- package/dist/app/session-shell/prompt-submission.d.ts +7 -6
- package/dist/app/session-shell/prompt-submission.js +7 -28
- package/dist/app/session-shell/quit-outro-effects.d.ts +3 -3
- package/dist/app/session-shell/quit-outro-effects.js +1 -4
- package/dist/app/session-shell/quit-outro.d.ts +9 -12
- package/dist/app/session-shell/quit-outro.js +11 -11
- package/dist/app/session-shell/response-copy-protocol.d.ts +3 -2
- package/dist/app/session-shell/response-copy-transport.d.ts +2 -14
- package/dist/app/session-shell/response-copy-transport.js +2 -3
- package/dist/app/session-shell/session-lifecycle.d.ts +3 -3
- package/dist/app/session-shell/session-lifecycle.js +2 -4
- package/dist/app/session-shell/session-shell-root.d.ts +74 -120
- package/dist/app/session-shell/session-shell-root.js +82 -115
- package/dist/app/session-shell/session-shell.d.ts +13 -16
- package/dist/app/session-shell/session-shell.js +149 -314
- package/dist/app/session-shell/session-viewport-controller.d.ts +7 -6
- package/dist/app/session-shell/session-viewport-controller.js +5 -8
- package/dist/app/session-shell/settings-bindings.d.ts +24 -2
- package/dist/app/session-shell/settings-bindings.js +24 -0
- package/dist/app/session-shell/share-operation.d.ts +3 -3
- package/dist/app/session-shell/share-operation.js +4 -6
- package/dist/app/session-shell/shell-clipboard.d.ts +59 -0
- package/dist/app/session-shell/shell-clipboard.js +119 -0
- package/dist/app/session-shell/shell-editor-factory.d.ts +8 -4
- package/dist/app/session-shell/shell-editor-factory.js +13 -15
- package/dist/app/session-shell/shell-host.d.ts +16 -17
- package/dist/app/session-shell/shell-host.js +20 -37
- package/dist/app/session-shell/shell-layout.d.ts +2 -2
- package/dist/app/session-shell/shell-prompt-suggestions.d.ts +26 -0
- package/dist/app/session-shell/shell-prompt-suggestions.js +48 -0
- package/dist/app/session-shell/suggestion-surface.d.ts +1 -6
- package/dist/app/session-shell/suggestion-surface.js +1 -1
- package/dist/app/session-shell/system-clipboard.d.ts +2 -14
- package/dist/app/session-shell/system-clipboard.js +2 -7
- package/dist/app/session-shell/transcript-document.d.ts +12 -10
- package/dist/app/session-shell/transcript-document.js +15 -41
- package/dist/app/session-shell/viewport-layout.d.ts +2 -2
- package/dist/app/session-shell/workflow-output.d.ts +5 -3
- package/dist/app/session-shell/workflow-output.js +13 -15
- package/dist/app/session-shell/workflow-router.d.ts +1 -3
- package/dist/app/session-shell/workflow-router.js +1 -4
- package/dist/cli/dispatch.d.ts +1 -11
- package/dist/cli/dispatch.js +5 -92
- package/dist/cli/package-messages.d.ts +0 -1
- package/dist/cli/package-messages.js +1 -1
- package/dist/cli/session-context.d.ts +1 -1
- package/dist/cli/session-context.js +5 -7
- package/dist/cli/uninstall.d.ts +4 -7
- package/dist/cli/uninstall.js +6 -35
- package/dist/cli/version-stats.js +4 -7
- package/dist/composition/owned-settings.d.ts +2 -2
- package/dist/composition/owned-settings.js +0 -4
- package/dist/composition/owned-ui.d.ts +3 -25
- package/dist/composition/owned-ui.js +37 -113
- package/dist/composition/reference-selection-options.d.ts +1 -1
- package/dist/composition/reference-selection-options.js +1 -1
- package/dist/composition/release-update-observation.d.ts +4 -4
- package/dist/composition/release-update-observation.js +17 -47
- package/dist/composition/session-backend.d.ts +0 -1
- package/dist/composition/session-runtime-registry.d.ts +5 -4
- package/dist/composition/settings-route-host.d.ts +0 -7
- package/dist/composition/settings-route-host.js +7 -20
- package/dist/composition/settings-search-input.d.ts +2 -1
- package/dist/composition/startup-route.d.ts +2 -3
- package/dist/composition/startup-route.js +2 -3
- package/dist/contracts/owned-ui/extension-ui.d.ts +2 -1
- package/dist/contracts/owned-ui/index.d.ts +2 -1
- package/dist/contracts/owned-ui/model.d.ts +0 -3
- package/dist/contracts/owned-ui/session-presenters.d.ts +3 -0
- package/dist/contracts/owned-ui/session-workflows.d.ts +1 -4
- package/dist/contracts/owned-ui/shell-components.d.ts +543 -0
- package/dist/contracts/presentation/component.d.ts +17 -0
- package/dist/contracts/presentation/component.js +8 -0
- package/dist/contracts/presentation/index.d.ts +6 -15
- package/dist/contracts/presentation/index.js +2 -0
- package/dist/contracts/presentation/terminal.d.ts +290 -0
- package/dist/contracts/presentation/theme.d.ts +46 -0
- package/dist/features/launch/development-launch.js +1 -2
- package/dist/features/launch/index.d.ts +1 -1
- package/dist/features/launch/intent.d.ts +1 -3
- package/dist/features/launch/intent.js +2 -4
- package/dist/features/launch/runtime-selection.d.ts +2 -2
- package/dist/features/launch/runtime-selection.js +2 -2
- package/dist/features/launch/session-context.d.ts +2 -2
- package/dist/features/owned-ui/project-trust-prompt.d.ts +2 -2
- package/dist/features/owned-ui/project-trust-prompt.js +1 -1
- package/dist/features/owned-ui/reference-screen-app.d.ts +0 -2
- package/dist/features/owned-ui/reference-screen-app.js +2 -9
- package/dist/features/owned-ui/release-note-state.d.ts +2 -1
- package/dist/features/owned-ui/settings-app.d.ts +0 -6
- package/dist/features/owned-ui/settings-app.js +42 -254
- package/dist/features/owned-ui/settings-edits.d.ts +31 -0
- package/dist/features/owned-ui/settings-edits.js +139 -0
- package/dist/features/owned-ui/settings-scroll-rail.d.ts +29 -0
- package/dist/features/owned-ui/settings-scroll-rail.js +79 -0
- package/dist/features/owned-ui/settings-search-input.d.ts +2 -1
- package/dist/features/prompt-history/service.d.ts +3 -2
- package/dist/foundation/launch-context/index.d.ts +0 -12
- package/dist/foundation/launch-context/index.js +0 -26
- package/dist/foundation/lifecycle/claim-gate.d.ts +9 -0
- package/dist/foundation/lifecycle/claim-gate.js +37 -0
- package/dist/foundation/lifecycle/index.d.ts +5 -9
- package/dist/foundation/lifecycle/index.js +3 -4
- package/dist/foundation/lifecycle/model.d.ts +2 -59
- package/dist/foundation/lifecycle/model.js +0 -35
- package/dist/foundation/lifecycle/paths.d.ts +0 -24
- package/dist/foundation/lifecycle/paths.js +0 -40
- package/dist/foundation/lifecycle/process-liveness.d.ts +8 -0
- package/dist/foundation/lifecycle/process-liveness.js +18 -0
- package/dist/foundation/lifecycle/session-claim-lock.d.ts +1 -1
- package/dist/foundation/lifecycle/session-claim-lock.js +2 -2
- package/dist/foundation/lifecycle/session-repository-context.d.ts +6 -6
- package/dist/foundation/lifecycle/session-repository-context.js +2 -3
- package/dist/foundation/release/automatic-update.d.ts +6 -17
- package/dist/foundation/release/automatic-update.js +23 -44
- package/dist/foundation/release/bootstrap.d.ts +2 -25
- package/dist/foundation/release/bootstrap.js +37 -348
- package/dist/foundation/release/dependency-certification.d.ts +1 -2
- package/dist/foundation/release/dependency-certification.js +1 -1
- package/dist/foundation/release/early-accent.d.ts +2 -2
- package/dist/foundation/release/early-accent.js +1 -1
- package/dist/foundation/release/index.d.ts +10 -17
- package/dist/foundation/release/index.js +7 -11
- package/dist/foundation/release/latest-release.d.ts +3 -19
- package/dist/foundation/release/latest-release.js +11 -12
- package/dist/foundation/release/ordinary-launch-selection.d.ts +1 -1
- package/dist/foundation/release/ordinary-launch-selection.js +1 -1
- package/dist/foundation/release/process-liveness.d.ts +2 -0
- package/dist/foundation/release/process-liveness.js +12 -0
- package/dist/foundation/release/release-gc.d.ts +13 -10
- package/dist/foundation/release/release-gc.js +37 -101
- package/dist/foundation/release/{cohort-state.d.ts → release-state.d.ts} +44 -69
- package/dist/foundation/release/{cohort-state.js → release-state.js} +38 -70
- package/dist/foundation/release/release-store.d.ts +2 -2
- package/dist/foundation/release/release-store.js +2 -2
- package/dist/foundation/release/restart-certification.js +1 -1
- package/dist/foundation/release/update-activation.d.ts +2 -9
- package/dist/foundation/release/update-activation.js +30 -45
- package/dist/foundation/release/update-execution-lease.d.ts +2 -3
- package/dist/foundation/release/update-execution-lease.js +2 -2
- package/dist/foundation/release/update-launch.d.ts +2 -4
- package/dist/foundation/release/update-launch.js +0 -7
- package/dist/foundation/release/update-recovery.js +1 -1
- package/dist/foundation/release/update-transaction.d.ts +1 -1
- package/dist/foundation/release/update-transaction.js +5 -2
- package/dist/foundation/release/update.d.ts +2 -12
- package/dist/foundation/release/update.js +37 -214
- package/dist/foundation/session-writer-lock/index.d.ts +14 -6
- package/dist/foundation/session-writer-lock/index.js +48 -103
- package/dist/foundation/startup/startup-budget.d.ts +5 -5
- package/dist/foundation/startup/startup-budget.js +2 -2
- package/dist/foundation/startup/startup-runtime.d.ts +1 -1
- package/dist/foundation/terminal-cleanup/exit-notice.d.ts +6 -0
- package/dist/foundation/terminal-cleanup/exit-notice.js +36 -0
- package/dist/foundation/terminal-cleanup/index.d.ts +2 -1
- package/dist/foundation/terminal-cleanup/index.js +2 -1
- package/dist/foundation/terminal-cleanup/terminal-reset.d.ts +0 -5
- package/dist/foundation/terminal-cleanup/terminal-reset.js +0 -5
- package/dist/integrations/pi/components/editor-interaction.d.ts +4 -12
- package/dist/integrations/pi/components/index.d.ts +15 -9
- package/dist/integrations/pi/components/index.js +9 -5
- package/dist/integrations/pi/components/lazy-selectors.d.ts +2 -10
- package/dist/integrations/pi/components/lazy-selectors.js +1 -1
- package/dist/integrations/pi/components/modal-frame.d.ts +5 -22
- package/dist/integrations/pi/components/modal-frame.js +3 -23
- package/dist/integrations/pi/components/owned-editor-ux.d.ts +4 -3
- package/dist/integrations/pi/components/prompt-input-port.d.ts +2 -19
- package/dist/integrations/pi/components/resources/builtin-themes.d.ts +2 -1
- package/dist/integrations/pi/components/shell-editor-autocomplete.d.ts +3 -2
- package/dist/integrations/pi/components/shell-editor-autocomplete.js +1 -4
- package/dist/integrations/pi/components/shell-footer-status.d.ts +3 -3
- package/dist/integrations/pi/components/shell-footer-status.js +5 -4
- package/dist/integrations/pi/components/shell-hotkey-sections.js +1 -1
- package/dist/integrations/pi/components/shell-presenters-info.d.ts +6 -8
- package/dist/integrations/pi/components/shell-presenters-info.js +6 -19
- package/dist/integrations/pi/components/shell-presenters-transcript.d.ts +1 -1
- package/dist/integrations/pi/components/shell-presenters-transcript.js +1 -1
- package/dist/integrations/pi/components/shell-session-info-reference.d.ts +2 -1
- package/dist/integrations/pi/components/shell-shared-facade.d.ts +33 -229
- package/dist/integrations/pi/components/shell-shared-facade.js +8 -1
- package/dist/integrations/pi/components/skills-command.d.ts +1 -9
- package/dist/integrations/pi/components/skills-command.js +5 -5
- package/dist/integrations/pi/components/submitted-prompt-adapter.d.ts +2 -5
- package/dist/integrations/pi/components/submitted-prompt-adapter.js +2 -16
- package/dist/integrations/pi/components/theme.d.ts +9 -2
- package/dist/integrations/pi/components/theme.js +17 -2
- package/dist/integrations/pi/components/thinking-selector-dialog.d.ts +2 -1
- package/dist/integrations/pi/components/upstream/adjacent/core/keybindings.d.ts +2 -2
- package/dist/integrations/pi/components/upstream/components/session-footer.d.ts +1 -2
- package/dist/integrations/pi/components/upstream/components/session-footer.js +6 -8
- package/dist/integrations/pi/engine/adapter.d.ts +3 -6
- package/dist/integrations/pi/engine/adapter.js +4 -28
- package/dist/integrations/pi/engine/changelog.d.ts +2 -2
- package/dist/integrations/pi/engine/changelog.js +3 -3
- package/dist/integrations/pi/engine/compaction-progress.d.ts +2 -3
- package/dist/integrations/pi/engine/compaction-progress.js +1 -1
- package/dist/integrations/pi/engine/conformance.d.ts +2 -1
- package/dist/integrations/pi/engine/default-model-setting.d.ts +0 -2
- package/dist/integrations/pi/engine/default-model-setting.js +1 -2
- package/dist/integrations/pi/engine/diagnostics-state.d.ts +0 -1
- package/dist/integrations/pi/engine/diagnostics-state.js +0 -14
- package/dist/integrations/pi/engine/event-delivery.d.ts +2 -1
- package/dist/integrations/pi/engine/extension-ui-binding.d.ts +2 -1
- package/dist/integrations/pi/engine/host.js +2 -2
- package/dist/integrations/pi/engine/message-values.d.ts +0 -1
- package/dist/integrations/pi/engine/message-values.js +1 -1
- package/dist/integrations/pi/engine/pending-delivery.d.ts +0 -4
- package/dist/integrations/pi/engine/pending-delivery.js +3 -3
- package/dist/integrations/pi/engine/ports.d.ts +7 -1
- package/dist/integrations/pi/engine/ports.js +4 -0
- package/dist/integrations/pi/engine/project-trust-preflight.d.ts +2 -1
- package/dist/integrations/pi/engine/prompt-suggestions.d.ts +3 -3
- package/dist/integrations/pi/engine/prompt-suggestions.js +0 -40
- package/dist/integrations/pi/engine/provider-authentication.d.ts +1 -1
- package/dist/integrations/pi/engine/public-main-entry.d.ts +1 -5
- package/dist/integrations/pi/engine/public-main-entry.js +1 -1
- package/dist/integrations/pi/engine/repository-pr-rest.d.ts +1 -9
- package/dist/integrations/pi/engine/repository-pr-rest.js +2 -2
- package/dist/integrations/pi/engine/repository-pr.d.ts +1 -3
- package/dist/integrations/pi/engine/repository-pr.js +1 -1
- package/dist/integrations/pi/engine/resource-catalog.d.ts +2 -1
- package/dist/integrations/pi/engine/session-integration.d.ts +1 -1
- package/dist/integrations/pi/engine/session-runtime.d.ts +4 -3
- package/dist/integrations/pi/engine/session-runtime.js +0 -2
- package/dist/integrations/pi/engine/settings-bridge.d.ts +0 -2
- package/dist/integrations/pi/engine/settings-bridge.js +1 -1
- package/dist/integrations/pi/engine/settings-port.d.ts +3 -2
- package/dist/integrations/pi/engine/transcript-projection.d.ts +2 -1
- package/dist/integrations/pi/engine/workflow-contexts.d.ts +1 -1
- package/dist/integrations/pi/engine/workflow-runner.d.ts +1 -1
- package/dist/integrations/pi/engine/workflow-runner.js +1 -1
- package/dist/integrations/pi/engine/workflow-support.d.ts +0 -6
- package/dist/integrations/pi/engine/workflow-support.js +4 -18
- package/dist/integrations/pi/engine/workflows.d.ts +5 -5
- package/dist/integrations/pi/session-presenters/components.d.ts +3 -0
- package/dist/integrations/pi/session-presenters/components.js +75 -0
- package/dist/integrations/pi/session-presenters/index.d.ts +1 -0
- package/dist/integrations/pi/session-presenters/index.js +1 -0
- package/dist/integrations/pi/session-presenters/presentation.d.ts +3 -0
- package/dist/integrations/pi/session-presenters/presentation.js +10 -0
- package/dist/integrations/pi/session-presenters/presenters.d.ts +2 -1
- package/dist/integrations/pi/session-presenters/presenters.js +3 -1
- package/dist/integrations/pi/tui-runtime/adapter.d.ts +2 -2
- package/dist/integrations/pi/tui-runtime/adapter.js +23 -32
- package/dist/integrations/pi/tui-runtime/contracts.d.ts +22 -166
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +5 -40
- package/dist/integrations/pi/tui-runtime/index.d.ts +1 -0
- package/dist/integrations/pi/tui-runtime/index.js +1 -0
- package/dist/integrations/pi/tui-runtime/input-presentation-coordinator.d.ts +4 -6
- package/dist/integrations/pi/tui-runtime/overlay-geometry.d.ts +2 -8
- package/dist/integrations/pi/tui-runtime/overlay-geometry.js +3 -9
- package/dist/integrations/pi/tui-runtime/runtime-factory.d.ts +3 -0
- package/dist/integrations/pi/tui-runtime/runtime-factory.js +11 -0
- package/dist/product-identity.d.ts +4 -6
- package/dist/product-identity.js +6 -11
- package/dist/product-identity.json +1 -40
- package/dist/runtime-payload-inventory.json +0 -3
- package/dist/ui/components/index.d.ts +4 -4
- package/dist/ui/components/index.js +2 -2
- package/dist/ui/components/selection-copy.d.ts +0 -1
- package/dist/ui/components/selection-copy.js +0 -12
- package/dist/ui/components/submitted-prompt.d.ts +3 -13
- package/dist/ui/components/submitted-prompt.js +8 -41
- package/dist/ui/components/theme.d.ts +4 -19
- package/dist/ui/components/theme.js +6 -0
- package/dist/ui/components/transcript-viewport.d.ts +1 -3
- package/dist/ui/components/transcript-viewport.js +1 -4
- package/dist/ui/settings/declarations.d.ts +2 -97
- package/dist/ui/settings/declarations.js +2 -78
- package/dist/ui/settings/early-accent.js +1 -1
- package/dist/ui/settings/index.d.ts +3 -5
- package/dist/ui/settings/index.js +2 -3
- package/dist/ui/settings/manager.d.ts +0 -4
- package/dist/ui/settings/manager.js +6 -62
- package/dist/ui/settings/resolution.d.ts +6 -18
- package/dist/ui/settings/resolution.js +4 -103
- package/dist/ui/settings/sections.d.ts +0 -4
- package/dist/ui/settings/sections.js +1 -1
- package/docs/architecture/boundaries.md +23 -40
- package/docs/architecture/code-documentation.md +2 -2
- package/docs/architecture/internal-naming.md +11 -17
- package/docs/architecture/project-structure.md +13 -16
- package/docs/architecture/resource-and-data-policy.md +16 -31
- package/docs/architecture/toolchain.md +14 -19
- package/docs/architecture/ui-reference-provenance.md +2 -2
- package/docs/ci-release-runbook.md +5 -5
- package/docs/features/launch-profiles.md +11 -17
- package/docs/features/prompt-history.md +10 -11
- package/docs/local-worktree-cleanup.md +28 -1
- package/docs/manual-owned-ui-checkpoint.md +0 -1
- package/docs/validation.md +5 -11
- package/docs/worktree-link-recovery.md +6 -6
- package/package.json +7 -20
- package/bin/guardian.js +0 -42
- package/bin/supervisor.js +0 -7
- package/bin/tab-launch-context.d.ts +0 -27
- package/bin/tab-launch-context.js +0 -94
- package/dist/app/session-shell/resident-tab-coordinator.d.ts +0 -38
- package/dist/app/session-shell/resident-tab-coordinator.js +0 -77
- package/dist/cli/tabs-request.d.ts +0 -7
- package/dist/cli/tabs.d.ts +0 -14
- package/dist/cli/tabs.js +0 -151
- package/dist/composition/resident-tab-bridge.d.ts +0 -41
- package/dist/composition/resident-tab-bridge.js +0 -209
- package/dist/composition/utility-tab.d.ts +0 -28
- package/dist/composition/utility-tab.js +0 -244
- package/dist/features/owned-ui/plus-menu-dialog.d.ts +0 -28
- package/dist/features/owned-ui/plus-menu-dialog.js +0 -89
- package/dist/features/resident-tab/auto-name.d.ts +0 -11
- package/dist/features/resident-tab/auto-name.js +0 -44
- package/dist/features/resident-tab/index.d.ts +0 -5
- package/dist/features/resident-tab/index.js +0 -7
- package/dist/features/resident-tab/shortcut-bindings-file.d.ts +0 -8
- package/dist/features/resident-tab/shortcut-bindings-file.js +0 -40
- package/dist/features/resident-tab/shortcut-declarations.d.ts +0 -13
- package/dist/features/resident-tab/shortcut-declarations.js +0 -26
- package/dist/features/resident-tab/shortcut-projection.d.ts +0 -29
- package/dist/features/resident-tab/shortcut-projection.js +0 -64
- package/dist/features/resident-tab/status-deriver.d.ts +0 -10
- package/dist/features/resident-tab/status-deriver.js +0 -12
- package/dist/foundation/launch-guardian/exit-watcher.d.ts +0 -14
- package/dist/foundation/launch-guardian/exit-watcher.js +0 -103
- package/dist/foundation/launch-guardian/index.d.ts +0 -2
- package/dist/foundation/launch-guardian/index.js +0 -1
- package/dist/foundation/launch-guardian/main.d.ts +0 -39
- package/dist/foundation/launch-guardian/main.js +0 -232
- package/dist/foundation/lifecycle/commands.d.ts +0 -40
- package/dist/foundation/lifecycle/launch-instance.d.ts +0 -46
- package/dist/foundation/lifecycle/launch-instance.js +0 -134
- package/dist/foundation/lifecycle/native-claim-gate.d.ts +0 -5
- package/dist/foundation/lifecycle/native-claim-gate.js +0 -41
- package/dist/foundation/lifecycle/supervisor-startup.d.ts +0 -30
- package/dist/foundation/lifecycle/supervisor-startup.js +0 -106
- package/dist/foundation/process-containment/addon-containment.d.ts +0 -20
- package/dist/foundation/process-containment/addon-containment.js +0 -139
- package/dist/foundation/process-containment/addon-process-inspector.d.ts +0 -11
- package/dist/foundation/process-containment/addon-process-inspector.js +0 -36
- package/dist/foundation/process-containment/addon.d.ts +0 -47
- package/dist/foundation/process-containment/addon.js +0 -57
- package/dist/foundation/process-containment/artifact.d.ts +0 -1
- package/dist/foundation/process-containment/artifact.js +0 -35
- package/dist/foundation/process-containment/contracts.d.ts +0 -33
- package/dist/foundation/process-containment/contracts.js +0 -35
- package/dist/foundation/process-containment/index.d.ts +0 -9
- package/dist/foundation/process-containment/index.js +0 -7
- package/dist/foundation/process-containment/linux-process-inspector.d.ts +0 -7
- package/dist/foundation/process-containment/linux-process-inspector.js +0 -27
- package/dist/foundation/process-containment/native-process-inspector.d.ts +0 -4
- package/dist/foundation/process-containment/native-process-inspector.js +0 -21
- package/dist/foundation/protocol/client.d.ts +0 -18
- package/dist/foundation/protocol/client.js +0 -130
- package/dist/foundation/protocol/index.d.ts +0 -3
- package/dist/foundation/protocol/index.js +0 -2
- package/dist/foundation/protocol/messages.d.ts +0 -90
- package/dist/foundation/protocol/messages.js +0 -100
- package/dist/foundation/release/cohort-selection.d.ts +0 -33
- package/dist/foundation/release/cohort-selection.js +0 -67
- package/dist/foundation/release/endpoint-lock.d.ts +0 -2
- package/dist/foundation/release/endpoint-lock.js +0 -37
- package/dist/foundation/release/endpoint-recovery.d.ts +0 -10
- package/dist/foundation/release/endpoint-recovery.js +0 -45
- package/dist/foundation/release/endpoints.d.ts +0 -32
- package/dist/foundation/release/endpoints.js +0 -152
- package/dist/foundation/release/prepared-update-activation.d.ts +0 -3
- package/dist/foundation/release/prepared-update-activation.js +0 -27
- package/dist/foundation/release/process-cleanup.d.ts +0 -14
- package/dist/foundation/release/process-cleanup.js +0 -76
- package/dist/foundation/release/supervisor-identity.d.ts +0 -15
- package/dist/foundation/release/supervisor-identity.js +0 -63
- package/dist/foundation/resident-tabs/boot-identity.d.ts +0 -6
- package/dist/foundation/resident-tabs/boot-identity.js +0 -16
- package/dist/foundation/resident-tabs/bounded-host-command.d.ts +0 -20
- package/dist/foundation/resident-tabs/bounded-host-command.js +0 -62
- package/dist/foundation/resident-tabs/bridge-client.d.ts +0 -73
- package/dist/foundation/resident-tabs/bridge-client.js +0 -327
- package/dist/foundation/resident-tabs/continuity.d.ts +0 -12
- package/dist/foundation/resident-tabs/continuity.js +0 -63
- package/dist/foundation/resident-tabs/doctor.d.ts +0 -28
- package/dist/foundation/resident-tabs/doctor.js +0 -166
- package/dist/foundation/resident-tabs/draft-checkpoint.d.ts +0 -27
- package/dist/foundation/resident-tabs/draft-checkpoint.js +0 -145
- package/dist/foundation/resident-tabs/ensure-terminal-host.d.ts +0 -36
- package/dist/foundation/resident-tabs/ensure-terminal-host.js +0 -151
- package/dist/foundation/resident-tabs/fault-injection.d.ts +0 -8
- package/dist/foundation/resident-tabs/fault-injection.js +0 -26
- package/dist/foundation/resident-tabs/fixture-control.d.ts +0 -7
- package/dist/foundation/resident-tabs/fixture-control.js +0 -35
- package/dist/foundation/resident-tabs/host-entry.js +0 -17
- package/dist/foundation/resident-tabs/index.d.ts +0 -15
- package/dist/foundation/resident-tabs/index.js +0 -10
- package/dist/foundation/resident-tabs/maintenance.d.ts +0 -39
- package/dist/foundation/resident-tabs/maintenance.js +0 -75
- package/dist/foundation/resident-tabs/progress-observation-schema.d.ts +0 -34
- package/dist/foundation/resident-tabs/progress-observation-schema.js +0 -1
- package/dist/foundation/resident-tabs/progress-observation.d.ts +0 -4
- package/dist/foundation/resident-tabs/progress-observation.js +0 -150
- package/dist/foundation/resident-tabs/prompt-journal.d.ts +0 -63
- package/dist/foundation/resident-tabs/prompt-journal.js +0 -213
- package/dist/foundation/resident-tabs/protocol.d.ts +0 -12
- package/dist/foundation/resident-tabs/protocol.js +0 -195
- package/dist/foundation/resident-tabs/recovery.d.ts +0 -26
- package/dist/foundation/resident-tabs/recovery.js +0 -205
- package/dist/foundation/resident-tabs/release-holds.d.ts +0 -28
- package/dist/foundation/resident-tabs/release-holds.js +0 -78
- package/dist/foundation/resident-tabs/routes.d.ts +0 -5
- package/dist/foundation/resident-tabs/routes.js +0 -5
- package/dist/foundation/resident-tabs/routing.d.ts +0 -11
- package/dist/foundation/resident-tabs/routing.js +0 -10
- package/dist/foundation/resident-tabs/runtime-control.d.ts +0 -38
- package/dist/foundation/resident-tabs/runtime-control.js +0 -74
- package/dist/foundation/resident-tabs/session-sync.d.ts +0 -14
- package/dist/foundation/resident-tabs/session-sync.js +0 -37
- package/dist/foundation/resident-tabs/settings.d.ts +0 -16
- package/dist/foundation/resident-tabs/settings.js +0 -60
- package/dist/foundation/resident-tabs/terminal-host-artifact.d.ts +0 -14
- package/dist/foundation/resident-tabs/terminal-host-artifact.js +0 -78
- package/dist/foundation/resident-tabs/zip-archive.d.ts +0 -9
- package/dist/foundation/resident-tabs/zip-archive.js +0 -56
- package/dist/foundation/storage/control-store.d.ts +0 -20
- package/dist/foundation/storage/control-store.js +0 -331
- package/dist/foundation/storage/index.d.ts +0 -1
- package/dist/foundation/storage/index.js +0 -1
- package/dist/foundation/supervision/index.d.ts +0 -3
- package/dist/foundation/supervision/index.js +0 -3
- package/dist/foundation/supervision/main.d.ts +0 -1
- package/dist/foundation/supervision/main.js +0 -86
- package/dist/foundation/supervision/paths.d.ts +0 -1
- package/dist/foundation/supervision/paths.js +0 -1
- package/dist/foundation/supervision/server.d.ts +0 -46
- package/dist/foundation/supervision/server.js +0 -611
- package/dist/integrations/pi/components/components.d.ts +0 -4
- package/dist/integrations/pi/components/components.js +0 -48
- package/dist/integrations/pi/components/conformance.d.ts +0 -18
- package/dist/integrations/pi/components/conformance.js +0 -70
- package/dist/integrations/pi/components/shell-components.d.ts +0 -7
- package/dist/integrations/pi/components/shell-components.js +0 -7
- package/dist/integrations/pi/components/upstream/theme/theme-controller.d.ts +0 -33
- package/dist/integrations/pi/components/upstream/theme/theme-controller.js +0 -114
- package/dist/integrations/pi/engine/offline-settings-port.d.ts +0 -23
- package/dist/integrations/pi/engine/offline-settings-port.js +0 -54
- package/dist/native/darwin-arm64/manifest.json +0 -23
- package/dist/native/darwin-arm64/process-guardian.node +0 -0
- package/dist/native/darwin-arm64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -10500
- package/dist/native/darwin-arm64/terminal-host.manifest.json +0 -46
- package/dist/native/darwin-arm64/terminal-host.node +0 -0
- package/dist/native/darwin-x64/manifest.json +0 -23
- package/dist/native/darwin-x64/process-guardian.node +0 -0
- package/dist/native/darwin-x64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -10737
- package/dist/native/darwin-x64/terminal-host.manifest.json +0 -46
- package/dist/native/darwin-x64/terminal-host.node +0 -0
- package/dist/native/linux-x64/manifest.json +0 -23
- package/dist/native/linux-x64/process-guardian.node +0 -0
- package/dist/native/linux-x64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -11226
- package/dist/native/linux-x64/terminal-host.manifest.json +0 -46
- package/dist/native/linux-x64/terminal-host.node +0 -0
- package/dist/native/win32-x64/manifest.json +0 -23
- package/dist/native/win32-x64/process-guardian.node +0 -0
- package/dist/native/win32-x64/terminal-host-THIRD-PARTY-NOTICES.txt +0 -10757
- package/dist/native/win32-x64/terminal-host.manifest.json +0 -46
- package/dist/native/win32-x64/terminal-host.node +0 -0
- package/dist/ui/settings/migrations.d.ts +0 -19
- package/dist/ui/settings/migrations.js +0 -209
- package/dist/ui/settings/progress-palette.generated.d.ts +0 -139
- package/dist/ui/settings/progress-palette.generated.js +0 -139
- package/docs/architecture/evidence/resident-tabs/linux-x64.md +0 -37
- package/docs/architecture/evidence/resident-tabs/macos-arm64.md +0 -36
- package/docs/architecture/evidence/resident-tabs/macos-x64.md +0 -35
- package/docs/architecture/evidence/resident-tabs/windows-x64.md +0 -36
- package/docs/architecture/evidence/terminal-host-spike/manual-one-pane-terminal-host.md +0 -70
- package/docs/architecture/evidence/terminal-host-spike/manual-two-by-two-basic-terminal-host.md +0 -32
- package/docs/architecture/evidence/terminal-host-spike/milestone-baseline.json +0 -115
- package/docs/architecture/evidence/terminal-host-spike/owned-ui-foundation-prerequisite.json +0 -48
- package/docs/architecture/evidence/terminal-host-spike/terminal-host-provenance.json +0 -125
- package/docs/architecture/evidence/terminal-host-spike/terminal-host-task-5-1.json +0 -56
- package/docs/architecture/evidence/terminal-host-spike/terminal-host-task-5-3.json +0 -174
- package/docs/architecture/evidence/terminal-host-spike/terminal-spike-acceptance-record.json +0 -18
- package/docs/architecture/native-fixture-isolation.md +0 -23
- package/docs/architecture/process-guardian-provenance.md +0 -36
- package/docs/architecture/resident-tabs-requirements.md +0 -18
- package/docs/architecture/resident-tabs.md +0 -668
- package/docs/architecture/terminal-host-proof-gate.md +0 -34
- package/docs/architecture/terminal-host-provenance.md +0 -81
- package/docs/architecture/terminal-host-spike-evidence.md +0 -39
- package/docs/launch-recovery.md +0 -23
- package/docs/manual-launch-instance-acceptance.md +0 -43
- package/docs/manual-resident-tabs-acceptance.md +0 -51
- /package/dist/{cli/tabs-request.js → contracts/owned-ui/shell-components.js} +0 -0
- /package/dist/{foundation/release → contracts/presentation}/progress-palette.generated.d.ts +0 -0
- /package/dist/{foundation/release → contracts/presentation}/progress-palette.generated.js +0 -0
- /package/dist/{foundation/lifecycle/commands.js → contracts/presentation/terminal.js} +0 -0
- /package/dist/{foundation/resident-tabs/host-entry.d.ts → contracts/presentation/theme.js} +0 -0
package/README.md
CHANGED
|
@@ -53,19 +53,19 @@ The installer needs Node.js 22.19 or later. When npm's global folder is not writ
|
|
|
53
53
|
|
|
54
54
|
## Launch
|
|
55
55
|
|
|
56
|
-
Launch A1 (profile: `~/.a1/agent`):
|
|
56
|
+
Launch A1, one agent in this terminal (profile: `~/.a1/agent`):
|
|
57
57
|
|
|
58
58
|
```text
|
|
59
59
|
a1
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
Resume a saved session:
|
|
63
63
|
|
|
64
64
|
```text
|
|
65
|
-
a1
|
|
65
|
+
a1 --session <id>
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
When a
|
|
68
|
+
When a session exits, A1 prints the `a1 --session <id>` command that resumes it; a custom session store is included in the printed command. Closing the terminal ends the agent, as it does for Pi.
|
|
69
69
|
|
|
70
70
|
Show all commands:
|
|
71
71
|
|
|
@@ -73,7 +73,7 @@ Show all commands:
|
|
|
73
73
|
a1 help
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
-
Show the current and latest versions:
|
|
76
|
+
Show the current version and the latest Develop and Release versions, from either installed channel:
|
|
77
77
|
|
|
78
78
|
```text
|
|
79
79
|
a1 version
|
|
@@ -87,30 +87,6 @@ a1 pi
|
|
|
87
87
|
|
|
88
88
|
<p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/separator-dark.svg"><img src="docs/assets/readme/separator.svg" alt="" width="280"></picture></p>
|
|
89
89
|
|
|
90
|
-
## Tabs
|
|
91
|
-
|
|
92
|
-
Tabs keep running after their terminal closes. List them, or stop one; its session stays resumable:
|
|
93
|
-
|
|
94
|
-
```text
|
|
95
|
-
a1 tabs
|
|
96
|
-
a1 tabs stop <id>
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
Stop every tab and the resident host when you are finished with them (not required to run `a1 solo`):
|
|
100
|
-
|
|
101
|
-
```text
|
|
102
|
-
a1 tabs host stop
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
Show host health, or write a redacted diagnostic bundle:
|
|
106
|
-
|
|
107
|
-
```text
|
|
108
|
-
a1 tabs host status
|
|
109
|
-
a1 tabs doctor
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
<p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/separator-dark.svg"><img src="docs/assets/readme/separator.svg" alt="" width="280"></picture></p>
|
|
113
|
-
|
|
114
90
|
## Update
|
|
115
91
|
|
|
116
92
|
Update on the channel you already use (release stays on release, develop stays on develop):
|
|
@@ -157,17 +133,16 @@ npm x -y -- @timurproko/a1-install
|
|
|
157
133
|
|
|
158
134
|
The **Update** setting controls release discovery:
|
|
159
135
|
|
|
160
|
-
- **Auto** (default) checks the running release's stable or development channel at startup and every 15 minutes while open. It silently installs a verified update, then shows `Update installed, restart to update` above the editor; existing sessions keep running
|
|
161
|
-
- **Notify** checks at startup (at most daily), keeps the `Update Available` notice, and leaves installation manual.
|
|
136
|
+
- **Auto** (default) checks the running release's stable or development channel at startup and every 15 minutes while open. It silently installs a verified update, then shows `Update installed, restart to update` above the editor; existing sessions keep running on their release, and the next `a1` starts the new one.
|
|
162
137
|
- **No** performs no update check; updates remain available through the commands above.
|
|
163
138
|
|
|
164
|
-
`A1_SKIP_VERSION_CHECK=1` disables
|
|
139
|
+
`A1_SKIP_VERSION_CHECK=1` disables Auto discovery. Manual stable, development, and exact-version update commands remain available in every mode.
|
|
165
140
|
|
|
166
141
|
<p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/separator-dark.svg"><img src="docs/assets/readme/separator.svg" alt="" width="280"></picture></p>
|
|
167
142
|
|
|
168
143
|
## Uninstall
|
|
169
144
|
|
|
170
|
-
Remove A1 from this machine. It
|
|
145
|
+
Remove A1 from this machine. It asks before deleting your sessions and settings in `~/.a1`:
|
|
171
146
|
|
|
172
147
|
```text
|
|
173
148
|
a1 uninstall
|
|
@@ -217,7 +192,7 @@ a1 update npm:pi-mcp-adapter
|
|
|
217
192
|
|
|
218
193
|
## Develop
|
|
219
194
|
|
|
220
|
-
A source build needs Node.js, npm,
|
|
195
|
+
A source build needs Node.js, npm, and git. The product is pure TypeScript; there is no native toolchain to install.
|
|
221
196
|
|
|
222
197
|
Install exact locked dependencies:
|
|
223
198
|
|
|
@@ -225,7 +200,7 @@ Install exact locked dependencies:
|
|
|
225
200
|
npm ci
|
|
226
201
|
```
|
|
227
202
|
|
|
228
|
-
Compile TypeScript
|
|
203
|
+
Compile TypeScript into `dist`:
|
|
229
204
|
|
|
230
205
|
```text
|
|
231
206
|
npm run build
|
|
@@ -255,7 +230,7 @@ Complete non-physical suite:
|
|
|
255
230
|
npm run test:full
|
|
256
231
|
```
|
|
257
232
|
|
|
258
|
-
Report Node, npm, git,
|
|
233
|
+
Report Node, npm, git, GitHub CLI, and dependency readiness; after fixing anything it lists, rerun the same build command:
|
|
259
234
|
|
|
260
235
|
```text
|
|
261
236
|
npm run doctor
|
package/bin/cli.js
CHANGED
|
@@ -55,23 +55,8 @@ process.exitCode = await dispatchCli(process.argv.slice(2), {
|
|
|
55
55
|
return await runPackageCommand(request, { createPort: createPiPackagesPort });
|
|
56
56
|
},
|
|
57
57
|
sessionContext: async request => {
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
import("../dist/foundation/process-containment/native-process-inspector.js"),
|
|
61
|
-
import("../dist/foundation/launch-context/index.js"),
|
|
62
|
-
]);
|
|
63
|
-
const launch = readLaunchContext(process.env);
|
|
64
|
-
let inspector;
|
|
65
|
-
return await runSessionContextCommand(request, {
|
|
66
|
-
inspectProcess: async pid => {
|
|
67
|
-
inspector ??= createNativeProcessInspector(process.env, process.platform, launch.releaseRoot);
|
|
68
|
-
return (await inspector).observe(pid);
|
|
69
|
-
},
|
|
70
|
-
});
|
|
71
|
-
},
|
|
72
|
-
tabs: async request => {
|
|
73
|
-
const { runTabsCommand } = await import("../dist/cli/tabs.js");
|
|
74
|
-
return await runTabsCommand(request, { packageRoot: fileURLToPath(packageRoot) });
|
|
58
|
+
const { runSessionContextCommand } = await import("../dist/cli/session-context.js");
|
|
59
|
+
return await runSessionContextCommand(request);
|
|
75
60
|
},
|
|
76
61
|
uninstall: async request => {
|
|
77
62
|
const [{ runUninstall }, { createInterface }] = await Promise.all([
|
package/bin/ui.js
CHANGED
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
// Security: this helper has no A1, Pi, tool, or extension dependency and erases credentials before those modules load.
|
|
4
|
-
const { assignFreshSessionRuntimeId, consumeTabLaunchContext, formatResidentFallbackNotice, waitForStandbyPromotion } = await import("./tab-launch-context.js");
|
|
5
|
-
const { uiArguments, tabCredentials, tabDataDir, tabIncarnation, tabStandby } = consumeTabLaunchContext(process.argv.slice(2), process.env);
|
|
6
|
-
|
|
7
3
|
// Invariant: one terminal module identity per process, decided before any A1 or Pi module loads.
|
|
8
4
|
const { installPinnedPiTuiResolver } = await import("./module-resolver.js");
|
|
9
5
|
installPinnedPiTuiResolver(new URL("..", import.meta.url).pathname.replace(/^\/(.:)/, "$1").replace(/\/$/, ""));
|
|
10
|
-
const utilityRoute = tabCredentials === undefined
|
|
11
|
-
? null
|
|
12
|
-
: (await import("../dist/foundation/resident-tabs/routes.js")).residentUtilityRoute(tabCredentials.tabId);
|
|
13
6
|
const startup = await import("../dist/foundation/startup/startup-runtime.js");
|
|
14
7
|
startup.enableEnvironmentCompileCache(process.env);
|
|
15
|
-
const {
|
|
8
|
+
const { readLaunchContext } = await import("../dist/foundation/launch-context/index.js");
|
|
16
9
|
const launchContext = readLaunchContext(process.env, "profile");
|
|
17
10
|
const profile = launchContext.launchProfile;
|
|
18
11
|
if (profile === undefined) throw new Error("A1 launch profile is missing");
|
|
@@ -21,17 +14,16 @@ if (profile === "a1") {
|
|
|
21
14
|
import("node:crypto"),
|
|
22
15
|
import("../dist/product-identity.js"),
|
|
23
16
|
]);
|
|
24
|
-
|
|
17
|
+
// Invariant: every UI process is its own session runtime, never one inherited from a parent shell.
|
|
18
|
+
process.env[PRODUCT_IDENTITY.environment.sessionRuntimeId] = randomUUID();
|
|
25
19
|
}
|
|
26
20
|
const { installFatalExit } = await import("../dist/foundation/terminal-cleanup/fatal-exit.js");
|
|
27
21
|
const { resolveProductPaths } = await import("../dist/foundation/lifecycle/paths.js");
|
|
28
|
-
const {
|
|
22
|
+
const { join } = await import("node:path");
|
|
29
23
|
/** @type {{ dispose(): void | Promise<unknown> } | undefined} */
|
|
30
24
|
let runningApplication;
|
|
31
25
|
const fatal = profile === "a1" ? installFatalExit({
|
|
32
|
-
directory:
|
|
33
|
-
? join(resolveProductPaths().runtimeDir, "crashes")
|
|
34
|
-
: join(dirname(tabDataDir), "diagnostics"),
|
|
26
|
+
directory: join(resolveProductPaths().runtimeDir, "crashes"),
|
|
35
27
|
...(launchContext.releaseId === undefined ? {} : { releaseId: launchContext.releaseId }),
|
|
36
28
|
dispose: () => runningApplication?.dispose(),
|
|
37
29
|
}) : undefined;
|
|
@@ -49,21 +41,7 @@ const assertPiTuiIdentity = () => identity.assertSinglePiTuiModuleAtLaunch(
|
|
|
49
41
|
(/** @type {string} */ message) => process.stderr.write(message),
|
|
50
42
|
);
|
|
51
43
|
|
|
52
|
-
|
|
53
|
-
if (profile !== "a1" || tabCredentials === undefined) throw new Error("utility tabs require the normal A1 tab profile");
|
|
54
|
-
await startup.markStartupPhase(process.env, "ui-entry");
|
|
55
|
-
assertPiTuiIdentity();
|
|
56
|
-
const utility = await import("../dist/composition/utility-tab.js");
|
|
57
|
-
await startup.markStartupPhase(process.env, "ui-modules-loaded");
|
|
58
|
-
const bridge = new (await import("../dist/foundation/resident-tabs/bridge-client.js")).TabBridgeClient({ credentials: tabCredentials });
|
|
59
|
-
completeRun(utility.runUtilityTab({
|
|
60
|
-
route: utilityRoute,
|
|
61
|
-
bridge,
|
|
62
|
-
cwd: process.cwd(),
|
|
63
|
-
profileId: profile,
|
|
64
|
-
onApplication: application => { runningApplication = application; },
|
|
65
|
-
}), utility.terminateOwnedUiProcess);
|
|
66
|
-
} else {
|
|
44
|
+
{
|
|
67
45
|
const descriptor = await import("../dist/foundation/startup/startup-descriptor.js");
|
|
68
46
|
// Performance: begin the exact Agent launch graph together while the trace write is pending.
|
|
69
47
|
// Direct owned-module entries avoid evaluating unrelated barrel exports before first paint.
|
|
@@ -78,40 +56,21 @@ if (utilityRoute !== null) {
|
|
|
78
56
|
{ composeOwnedUi },
|
|
79
57
|
] = await modules;
|
|
80
58
|
|
|
81
|
-
if (tabStandby) await waitForStandbyPromotion(process.stdin, tabDataDir === undefined ? undefined : join(tabDataDir, "standby-promote"));
|
|
82
59
|
assertPiTuiIdentity();
|
|
83
60
|
await startup.markStartupPhase(process.env, "ui-modules-loaded");
|
|
84
61
|
|
|
85
|
-
const sessionSelection = parseSessionSelection(
|
|
62
|
+
const sessionSelection = parseSessionSelection(process.argv.slice(2));
|
|
86
63
|
completeRun(Promise.resolve().then(async () => {
|
|
87
|
-
const tab = tabCredentials === undefined ? undefined : {
|
|
88
|
-
bridge: new (await import("../dist/foundation/resident-tabs/bridge-client.js")).TabBridgeClient({ credentials: tabCredentials }),
|
|
89
|
-
dataDir: /** @type {string} */ (tabDataDir),
|
|
90
|
-
incarnation: /** @type {number} */ (tabIncarnation),
|
|
91
|
-
};
|
|
92
64
|
if (sessionSelection && profile !== "a1") throw new Error("session selection requires the normal A1 profile");
|
|
93
65
|
return runSelectedInteractiveRuntime(profile, {
|
|
94
|
-
ownedUi: async (profileId,
|
|
95
|
-
const processInspector = ownedSurfaces
|
|
96
|
-
? await import("../dist/foundation/process-containment/native-process-inspector.js")
|
|
97
|
-
.then(module => module.createNativeProcessInspector(process.env, process.platform, launchContext.releaseRoot))
|
|
98
|
-
.catch(() => null)
|
|
99
|
-
: null;
|
|
66
|
+
ownedUi: async (profileId, productMode) => {
|
|
100
67
|
const { application, settings } = await composeOwnedUi({
|
|
101
68
|
cwd: process.cwd(),
|
|
102
69
|
profileId,
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
...(hidesTabSettings(launchContext) ? { hideTabSettings: true } : {}),
|
|
106
|
-
soloResumeHint: profile === "a1" && launchContext.launchMode === "solo",
|
|
107
|
-
...(processInspector === null ? {} : { inspectProcess: pid => processInspector.observe(pid) }),
|
|
108
|
-
projectTrustPrompt: createConsoleProjectTrustPrompt({ presentation: profile === "a1" ? "bare" : "comparison" }),
|
|
70
|
+
productMode,
|
|
71
|
+
projectTrustPrompt: createConsoleProjectTrustPrompt({ productMode }),
|
|
109
72
|
sessionForkPrompt: createConsoleSessionForkPrompt(),
|
|
110
73
|
...(sessionSelection === undefined ? {} : { sessionSelection }),
|
|
111
|
-
...(tab === undefined ? {} : { tab }),
|
|
112
|
-
...(launchContext.residentFallback === undefined ? {} : {
|
|
113
|
-
residentFallbackNotice: formatResidentFallbackNotice(launchContext.residentFallback),
|
|
114
|
-
}),
|
|
115
74
|
});
|
|
116
75
|
runningApplication = application;
|
|
117
76
|
return await runOwnedUi({ application, ...(settings === null ? {} : { settings }) });
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TerminalInputDiagnosticsEvent } from "../../contracts/presentation/index.js";
|
|
2
2
|
import type { ResponseCopyEvent } from "./response-copy-protocol.js";
|
|
3
3
|
import type { PasteEvent } from "./paste-protocol.js";
|
|
4
4
|
/** Opt-in scalar-only snapshots, bounded to 128 rows and one pending asynchronous write. */
|
|
@@ -9,7 +9,7 @@ export declare class ClipboardDiagnosticCapture {
|
|
|
9
9
|
constructor(destination: string, write?: (file: string, data: string) => Promise<void>);
|
|
10
10
|
copy(event: ResponseCopyEvent): void;
|
|
11
11
|
paste(event: PasteEvent): void;
|
|
12
|
-
runtime(event:
|
|
12
|
+
runtime(event: TerminalInputDiagnosticsEvent): void;
|
|
13
13
|
/** Explicit test/evidence boundary; the interactive UI never waits for disk diagnostics. */
|
|
14
14
|
flush(): Promise<void>;
|
|
15
15
|
dispose(): void;
|
|
@@ -8,4 +8,3 @@ export interface ClipboardImageData {
|
|
|
8
8
|
* that Node's permissive base64 decoder would otherwise partially accept.
|
|
9
9
|
*/
|
|
10
10
|
export declare function canonicalizeClipboardImage(image: ClipboardImageData, source?: boolean): ClipboardImageData | null;
|
|
11
|
-
export declare function canonicalizeStandardBase64(value: string, source?: boolean): string | null;
|
|
@@ -10,7 +10,7 @@ export function canonicalizeClipboardImage(image, source = false) {
|
|
|
10
10
|
const data = canonicalizeStandardBase64(image.data, source);
|
|
11
11
|
return data === null ? null : { data, mimeType: image.mimeType };
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
function canonicalizeStandardBase64(value, source = false) {
|
|
14
14
|
if (typeof value !== "string" || value.length === 0)
|
|
15
15
|
return null;
|
|
16
16
|
const maximum = source ? Math.ceil(MAX_SOURCE_IMAGE_BYTES / 3) * 4 : MAX_IMAGE_DATA_BYTES;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
import type { OwnedUiShellComponents, OwnedUiShellSelectorOption } from "../../contracts/owned-ui/index.js";
|
|
2
|
+
import type { TerminalOverlayHandle } from "../../contracts/presentation/index.js";
|
|
1
3
|
import type { OwnedUiCommandResult, OwnedUiDialog } from "../../contracts/owned-ui/index.js";
|
|
2
4
|
import type { UiRouteHost, UiRouteInput } from "../../ui/apps/contracts.js";
|
|
3
|
-
import type { PiShellSelectorOption } from "../../integrations/pi/components/shell-shared-facade.js";
|
|
4
|
-
import type { PiTuiOverlayHandle } from "../../integrations/pi/tui-runtime/contracts.js";
|
|
5
5
|
import type { OwnedUiPresenterTerminal } from "./shell-host.js";
|
|
6
6
|
import type { OwnedUiSessionShellOptions, OwnedUiSessionShellRoot } from "./session-shell-root.js";
|
|
7
7
|
type StartupRoute = NonNullable<OwnedUiSessionShellOptions["engine"]["startupRoute"]>;
|
|
8
|
-
|
|
8
|
+
interface SessionDialogPorts {
|
|
9
9
|
readonly terminal: Pick<OwnedUiPresenterTerminal, "running" | "hasOverlay" | "showOverlay" | "openRoute" | "requestRender">;
|
|
10
|
-
readonly root: Pick<OwnedUiSessionShellRoot, "
|
|
10
|
+
readonly root: Pick<OwnedUiSessionShellRoot, "chrome" | "setInputSurface" | "usesDefaultInputSurface">;
|
|
11
11
|
readonly routeHost: UiRouteHost | null;
|
|
12
|
+
readonly dialogs: Pick<OwnedUiShellComponents["dialogs"], "dialog" | "selector">;
|
|
12
13
|
readonly disposed: () => boolean;
|
|
13
14
|
/** A route, or the interrupt chord over it, asked to leave A1. */
|
|
14
15
|
readonly exit: () => void;
|
|
@@ -26,7 +27,7 @@ export declare class SessionDialogCoordinator {
|
|
|
26
27
|
constructor(ports: SessionDialogPorts);
|
|
27
28
|
/** Clears the replacement input surface a selector put in the dock; the shared close action of every dock selector. */
|
|
28
29
|
readonly closeInputSurface: () => void;
|
|
29
|
-
showSelector(title: string, options: readonly
|
|
30
|
+
showSelector(title: string, options: readonly OwnedUiShellSelectorOption[], onSelect: (id: string) => void, onCancel?: () => void): TerminalOverlayHandle;
|
|
30
31
|
/** Mirrors the backend's pending dialog; locally owned routes and selectors are left alone when it has none. */
|
|
31
32
|
syncBackend(dialog: OwnedUiDialog | null): void;
|
|
32
33
|
openRoute(route: string, input?: UiRouteInput, onClosed?: () => void | Promise<void>): OwnedUiCommandResult;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { createPiShellDialog, createPiShellSelector } from "../../integrations/pi/components/shell-selectors-dialogs.js";
|
|
2
1
|
const OVERLAY_OPTIONS = { width: "70%", maxHeight: "80%", anchor: "center", inputCoordination: "owned" };
|
|
3
2
|
const STARTUP_ROUTE_RETRY_MS = 25;
|
|
4
3
|
/**
|
|
@@ -26,7 +25,7 @@ export class SessionDialogCoordinator {
|
|
|
26
25
|
this.#handle?.hide();
|
|
27
26
|
this.#source = "local";
|
|
28
27
|
this.#id = undefined;
|
|
29
|
-
const component =
|
|
28
|
+
const component = this.#ports.dialogs.selector({
|
|
30
29
|
title,
|
|
31
30
|
options,
|
|
32
31
|
onSelect: id => {
|
|
@@ -57,7 +56,7 @@ export class SessionDialogCoordinator {
|
|
|
57
56
|
return;
|
|
58
57
|
this.#handle?.hide();
|
|
59
58
|
this.#source = "backend";
|
|
60
|
-
const component =
|
|
59
|
+
const component = this.#ports.dialogs.dialog(dialog, { onSelect: () => this.#close(), onCancel: () => this.#close() });
|
|
61
60
|
this.#handle = this.#ports.terminal.showOverlay(component, OVERLAY_OPTIONS);
|
|
62
61
|
this.#id = dialog.id;
|
|
63
62
|
}
|
|
@@ -67,7 +66,7 @@ export class SessionDialogCoordinator {
|
|
|
67
66
|
return { outcome: "failed", diagnostic: `route is unavailable: ${route}` };
|
|
68
67
|
if (!this.#ports.terminal.running)
|
|
69
68
|
return { outcome: "failed", diagnostic: "runtime is not active" };
|
|
70
|
-
this.#ports.root.dismissNotice();
|
|
69
|
+
this.#ports.root.chrome.dismissNotice();
|
|
71
70
|
this.#handle?.hide();
|
|
72
71
|
this.#source = "route";
|
|
73
72
|
const handle = this.#ports.terminal.openRoute(surface, {
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import type { ImageAttachmentError, OwnedUiSessionViewModel } from "../../contracts/owned-ui/index.js";
|
|
1
|
+
import type { ImageAttachmentError, OwnedUiSessionViewModel, OwnedUiShellComponents, OwnedUiShellReleaseUpdateBanner } from "../../contracts/owned-ui/index.js";
|
|
2
|
+
import type { ThemeSource } from "../../contracts/presentation/index.js";
|
|
2
3
|
import type { TranscriptViewportFrame } from "../../ui/components/transcript-viewport.js";
|
|
3
|
-
import { type PiShellReleaseUpdateBanner } from "../../integrations/pi/components/shell-presenters-info.js";
|
|
4
4
|
import type { SessionViewportController } from "./session-viewport-controller.js";
|
|
5
|
-
|
|
5
|
+
interface DockNotice {
|
|
6
6
|
readonly kind: "status" | "warning" | "error" | "new-session";
|
|
7
7
|
readonly message: string;
|
|
8
8
|
readonly errorCode?: ImageAttachmentError["code"];
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
interface DockChromePorts {
|
|
11
|
+
readonly theme: ThemeSource;
|
|
12
|
+
readonly components: Pick<OwnedUiShellComponents, "chrome" | "info" | "text">;
|
|
13
|
+
/** Columns the pinned layout pads command output with. */
|
|
14
|
+
readonly outputPad: 0 | 1;
|
|
11
15
|
/** Chrome changed; the root invalidates its chrome components. */
|
|
12
16
|
readonly invalidateChrome: () => void;
|
|
13
17
|
readonly requestRender: () => void;
|
|
@@ -30,6 +34,7 @@ export declare class DockChrome {
|
|
|
30
34
|
clearCopyAcknowledgement(requestRender: boolean): void;
|
|
31
35
|
renderCopyAcknowledgement(width: number): string | undefined;
|
|
32
36
|
renderPromptOverlay(diagnostics: OwnedUiSessionViewModel["diagnostics"], width: number): string | undefined;
|
|
33
|
-
renderReleaseBanner(diagnostics: OwnedUiSessionViewModel["diagnostics"], width: number):
|
|
34
|
-
locateReleaseClose(frame: TranscriptViewportFrame, banner:
|
|
37
|
+
renderReleaseBanner(diagnostics: OwnedUiSessionViewModel["diagnostics"], width: number): OwnedUiShellReleaseUpdateBanner | undefined;
|
|
38
|
+
locateReleaseClose(frame: TranscriptViewportFrame, banner: OwnedUiShellReleaseUpdateBanner | undefined, tailEnd: number, tailLength: number): void;
|
|
35
39
|
}
|
|
40
|
+
export {};
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import { COPY_ACKNOWLEDGEMENT_DURATION_MS } from "../../ui/components/selection-copy.js";
|
|
2
|
-
import { renderPiShellCommandMessage, renderPiShellReleaseUpdateBanner, renderPiShellStatusText, } from "../../integrations/pi/components/shell-presenters-info.js";
|
|
3
|
-
import { PINNED_PI_LAYOUT, piTheme } from "../../integrations/pi/components/upstream/theme/theme.js";
|
|
4
|
-
import { piShellTruncateToWidth, renderPiShellInstalledUpdateStatus } from "../../integrations/pi/components/shell-shared-facade.js";
|
|
5
2
|
import { parseReleaseUpdateDiagnostic } from "./transcript-document.js";
|
|
6
3
|
/**
|
|
7
4
|
* The transient chrome around bare A1's dock: the one command notice above the editor, the release
|
|
@@ -41,9 +38,9 @@ export class DockChrome {
|
|
|
41
38
|
return [];
|
|
42
39
|
if (notice.kind === "status") {
|
|
43
40
|
// Compatibility: Pi pads its status text by one cell regardless of the output pad setting.
|
|
44
|
-
return ["", ...
|
|
41
|
+
return ["", ...this.#ports.components.info.statusText(notice.message, width, this.#ports.outputPad)];
|
|
45
42
|
}
|
|
46
|
-
return
|
|
43
|
+
return this.#ports.components.info.commandMessage({
|
|
47
44
|
kind: notice.kind === "new-session" ? "accent" : notice.kind,
|
|
48
45
|
message: notice.message,
|
|
49
46
|
}, width, outputPad);
|
|
@@ -78,14 +75,14 @@ export class DockChrome {
|
|
|
78
75
|
renderCopyAcknowledgement(width) {
|
|
79
76
|
if (this.#copyAcknowledgement === undefined || width <= 0)
|
|
80
77
|
return undefined;
|
|
81
|
-
return
|
|
78
|
+
return this.#ports.theme.current().fg("accent", this.#ports.components.text.truncateToWidth(this.#copyAcknowledgement, width));
|
|
82
79
|
}
|
|
83
80
|
renderPromptOverlay(diagnostics, width) {
|
|
84
81
|
const acknowledgement = this.renderCopyAcknowledgement(width);
|
|
85
82
|
if (acknowledgement !== undefined)
|
|
86
83
|
return acknowledgement;
|
|
87
84
|
if (diagnostics.some(diagnostic => diagnostic.code === "release-update-installed")) {
|
|
88
|
-
return
|
|
85
|
+
return this.#ports.components.chrome.installedUpdateStatus(width) || undefined;
|
|
89
86
|
}
|
|
90
87
|
return undefined;
|
|
91
88
|
}
|
|
@@ -96,7 +93,7 @@ export class DockChrome {
|
|
|
96
93
|
const release = diagnostic === undefined ? null : parseReleaseUpdateDiagnostic(diagnostic.message);
|
|
97
94
|
if (release === null)
|
|
98
95
|
return undefined;
|
|
99
|
-
return
|
|
96
|
+
return this.#ports.components.chrome.releaseUpdateBanner(release, width, this.#ports.viewport.tailControlHovered(this.#releaseCloseTarget));
|
|
100
97
|
}
|
|
101
98
|
locateReleaseClose(frame, banner, tailEnd, tailLength) {
|
|
102
99
|
// Invariant: the tail is the document suffix, so the control's document row is fixed relative to its
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/** Aggregate explicit URL-chip metadata allowance for one owned editor decoration pass. */
|
|
2
|
-
export declare const EDITOR_HYPERLINK_METADATA_BYTES: number;
|
|
3
1
|
/** Accounts complete OSC 8 controls before construction, without scanning oversized backing URLs. */
|
|
4
2
|
export declare class EditorHyperlinkBudget {
|
|
5
3
|
#private;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Aggregate explicit URL-chip metadata allowance for one owned editor decoration pass. */
|
|
2
|
-
|
|
2
|
+
const EDITOR_HYPERLINK_METADATA_BYTES = 64 * 1024;
|
|
3
3
|
const CLOSE_BYTES = 7;
|
|
4
4
|
const PAIR_BYTES = CLOSE_BYTES * 2;
|
|
5
5
|
/** Accounts complete OSC 8 controls before construction, without scanning oversized backing URLs. */
|
|
@@ -10,9 +10,9 @@ export interface ExitNoticeSource {
|
|
|
10
10
|
}) => void): () => void;
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
interface ArmedExitNotice {
|
|
14
14
|
clear(): void;
|
|
15
15
|
}
|
|
16
|
-
export declare function uncleanExitNoticeLines(resume: SessionResumeCommandMetadata | null, soloResumeHint?: boolean): string[];
|
|
17
16
|
/** Arms the notice and keeps its resume command following the bound session until cleared. */
|
|
18
|
-
export declare function armExitNotice(source: ExitNoticeSource, path: string
|
|
17
|
+
export declare function armExitNotice(source: ExitNoticeSource, path: string): ArmedExitNotice;
|
|
18
|
+
export {};
|
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The runtime's half of the unclean-exit protocol with the
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* The runtime's half of the unclean-exit protocol with the launcher. While the notice is armed,
|
|
3
|
+
* the launcher treats the runtime's end as unclean: it restores the terminal and prints these
|
|
4
|
+
* lines, so a killed session still leaves its resume command behind. A clean shutdown clears the
|
|
5
|
+
* notice after the terminal is restored.
|
|
6
6
|
*/
|
|
7
7
|
import { renameSync, rmSync, writeFileSync } from "node:fs";
|
|
8
8
|
import { PRODUCT_IDENTITY } from "../../product-identity.js";
|
|
9
9
|
import { formatSessionResumeCommand } from "./session-lifecycle.js";
|
|
10
|
-
|
|
10
|
+
function uncleanExitNoticeLines(resume) {
|
|
11
11
|
return [
|
|
12
12
|
`${PRODUCT_IDENTITY.displayName} was stopped unexpectedly.`,
|
|
13
|
-
...(resume === null ? [] : [`To resume this session: ${formatSessionResumeCommand(resume
|
|
13
|
+
...(resume === null ? [] : [`To resume this session: ${formatSessionResumeCommand(resume)}`]),
|
|
14
14
|
];
|
|
15
15
|
}
|
|
16
16
|
/** Arms the notice and keeps its resume command following the bound session until cleared. */
|
|
17
|
-
export function armExitNotice(source, path
|
|
17
|
+
export function armExitNotice(source, path) {
|
|
18
18
|
let current = null;
|
|
19
19
|
let cleared = false;
|
|
20
20
|
let generation = source.identity.sessionGeneration;
|
|
21
21
|
const write = () => {
|
|
22
22
|
if (cleared)
|
|
23
23
|
return;
|
|
24
|
-
// Protocol: plain text only; the
|
|
25
|
-
const text = `${uncleanExitNoticeLines(source.identity.currentSessionResumeMetadata()
|
|
24
|
+
// Protocol: plain text only; the launcher strips control characters, so styling would be lost.
|
|
25
|
+
const text = `${uncleanExitNoticeLines(source.identity.currentSessionResumeMetadata()).join("\n")}\n`;
|
|
26
26
|
if (text === current)
|
|
27
27
|
return;
|
|
28
28
|
try {
|
|
29
|
-
// Invariant: the
|
|
29
|
+
// Invariant: the launcher may read at any instant, so it sees the previous or the next notice, never half of one.
|
|
30
30
|
const temporary = `${path}.${process.pid}.tmp`;
|
|
31
31
|
writeFileSync(temporary, text, { mode: 0o600 });
|
|
32
32
|
renameSync(temporary, path);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import type { OwnedUiShellComponentPort } from "../../contracts/owned-ui/index.js";
|
|
1
2
|
import type { OwnedUiSessionViewModel } from "../../contracts/owned-ui/index.js";
|
|
2
|
-
|
|
3
|
-
export type ExtensionWidgetPlacement = "aboveEditor" | "belowEditor";
|
|
3
|
+
type ExtensionWidgetPlacement = "aboveEditor" | "belowEditor";
|
|
4
4
|
/**
|
|
5
5
|
* What extensions draw into the shell: a header that replaces the built-in one, a footer, widgets
|
|
6
6
|
* above and below the editor, footer statuses, and a working message. It owns those components and
|
|
@@ -8,15 +8,15 @@ export type ExtensionWidgetPlacement = "aboveEditor" | "belowEditor";
|
|
|
8
8
|
*/
|
|
9
9
|
export declare class ExtensionSurface {
|
|
10
10
|
#private;
|
|
11
|
-
get header():
|
|
12
|
-
get footer():
|
|
11
|
+
get header(): OwnedUiShellComponentPort | null;
|
|
12
|
+
get footer(): OwnedUiShellComponentPort | null;
|
|
13
13
|
get working(): {
|
|
14
14
|
readonly message: string | undefined;
|
|
15
15
|
readonly visible: boolean;
|
|
16
16
|
};
|
|
17
|
-
placeWidget(key: string, component:
|
|
18
|
-
replaceHeader(component:
|
|
19
|
-
replaceFooter(component:
|
|
17
|
+
placeWidget(key: string, component: OwnedUiShellComponentPort | null, placement: ExtensionWidgetPlacement): void;
|
|
18
|
+
replaceHeader(component: OwnedUiShellComponentPort | null): void;
|
|
19
|
+
replaceFooter(component: OwnedUiShellComponentPort | null): void;
|
|
20
20
|
setStatus(key: string, text: string | undefined): void;
|
|
21
21
|
setWorking(message: string | undefined, visible: boolean): void;
|
|
22
22
|
statuses(): Map<string, string>;
|
|
@@ -28,3 +28,4 @@ export declare class ExtensionSurface {
|
|
|
28
28
|
reset(): void;
|
|
29
29
|
dispose(): void;
|
|
30
30
|
}
|
|
31
|
+
export {};
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import type { ChildProcess } from "node:child_process";
|
|
2
|
-
|
|
3
|
-
export declare const HELPER_SPARE_IDLE_MS: number;
|
|
4
|
-
export interface SpareHelper {
|
|
2
|
+
interface SpareHelper {
|
|
5
3
|
readonly child: ChildProcess;
|
|
6
4
|
/** Whether the helper already announced itself; the taker must then send the first request itself. */
|
|
7
5
|
readonly ready: boolean;
|
|
8
6
|
}
|
|
9
|
-
|
|
7
|
+
interface HelperPoolOptions {
|
|
10
8
|
readonly fork: () => ChildProcess;
|
|
11
9
|
/** Stops a spare that is no longer wanted; the paste helper needs its process group killed on POSIX. */
|
|
12
10
|
readonly stop: (child: ChildProcess) => void;
|
|
@@ -29,3 +27,4 @@ export declare class HelperPool {
|
|
|
29
27
|
/** Stops the held spare and refuses further warming. */
|
|
30
28
|
dispose(): void;
|
|
31
29
|
}
|
|
30
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** How long an unused spare helper may idle before it is stopped so a background session holds no extra process. */
|
|
2
|
-
|
|
2
|
+
const HELPER_SPARE_IDLE_MS = 5 * 60_000;
|
|
3
3
|
/** Holds one idle IPC helper; requests take it, and exits, expiry, or use trigger replacement. */
|
|
4
4
|
export class HelperPool {
|
|
5
5
|
#fork;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { OwnedUiShellClipboardContent } from "../../contracts/owned-ui/index.js";
|
|
2
2
|
import type { ImagePreparationLimits, PreparedImage } from "./image-preparation.js";
|
|
3
3
|
import type { ImageWorkerRequest } from "./image-worker.js";
|
|
4
|
-
|
|
4
|
+
type PreparedClipboardContent = {
|
|
5
5
|
readonly kind: "text";
|
|
6
6
|
readonly text: string;
|
|
7
7
|
} | ({
|
|
@@ -14,7 +14,8 @@ export interface ImagePasteJob {
|
|
|
14
14
|
/** Owns bounded paste acquisition and one off-thread conversion, canceled on session disposal. */
|
|
15
15
|
export declare class ImagePreparationClient {
|
|
16
16
|
#private;
|
|
17
|
-
start(read?: (signal: AbortSignal) => Promise<
|
|
17
|
+
start(read?: (signal: AbortSignal) => Promise<OwnedUiShellClipboardContent | null>, limits?: ImagePreparationLimits): ImagePasteJob;
|
|
18
18
|
dispose(): Promise<void>;
|
|
19
19
|
}
|
|
20
20
|
export declare function runImageWorker<T>(request: ImageWorkerRequest, signal: AbortSignal): Promise<T>;
|
|
21
|
+
export {};
|
|
@@ -10,8 +10,6 @@ export interface PreparedImage {
|
|
|
10
10
|
readonly height: number;
|
|
11
11
|
readonly transformed: boolean;
|
|
12
12
|
}
|
|
13
|
-
export declare const IMAGE_TARGET_BASE64_BYTES: number;
|
|
14
|
-
export declare const IMAGE_TARGET_DECODED_BYTES: number;
|
|
15
13
|
export declare function prepareImage(source: {
|
|
16
14
|
readonly data: string;
|
|
17
15
|
readonly mimeType: string;
|
|
@@ -2,8 +2,8 @@ import { isMainThread } from "node:worker_threads";
|
|
|
2
2
|
import { ImageAttachmentError } from "../../contracts/owned-ui/index.js";
|
|
3
3
|
import { canonicalizeClipboardImage } from "./clipboard-image.js";
|
|
4
4
|
import { sourceImageInfo } from "./image-source.js";
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
const IMAGE_TARGET_BASE64_BYTES = 4.5 * 1024 * 1024;
|
|
6
|
+
const IMAGE_TARGET_DECODED_BYTES = 5 * 1024 * 1024;
|
|
7
7
|
export async function prepareImage(source, limits = {}) {
|
|
8
8
|
// Performance: an async signature does not move synchronous WASM work off the interactive thread.
|
|
9
9
|
if (isMainThread)
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
export declare const MAX_SOURCE_IMAGE_BYTES: number;
|
|
2
|
-
export declare const MAX_SOURCE_PIXELS = 40000000;
|
|
3
|
-
export declare const MAX_SOURCE_DIMENSION = 32768;
|
|
4
2
|
export declare const IMAGE_PREPARATION_MS = 15000;
|
|
5
|
-
|
|
3
|
+
interface ImageSourceInfo {
|
|
6
4
|
readonly width: number;
|
|
7
5
|
readonly height: number;
|
|
8
6
|
readonly mimeType: string;
|
|
@@ -11,3 +9,4 @@ export interface ImageSourceInfo {
|
|
|
11
9
|
}
|
|
12
10
|
export declare function assertSourceBytes(length: number): void;
|
|
13
11
|
export declare function sourceImageInfo(bytes: Uint8Array, mimeType: string): ImageSourceInfo;
|
|
12
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ImageAttachmentError } from "../../contracts/owned-ui/index.js";
|
|
2
2
|
export const MAX_SOURCE_IMAGE_BYTES = 20 * 1024 * 1024;
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
const MAX_SOURCE_PIXELS = 40_000_000;
|
|
4
|
+
const MAX_SOURCE_DIMENSION = 32_768;
|
|
5
5
|
export const IMAGE_PREPARATION_MS = 15_000;
|
|
6
6
|
export function assertSourceBytes(length) {
|
|
7
7
|
if (length > MAX_SOURCE_IMAGE_BYTES)
|