@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
|
@@ -32,8 +32,8 @@ export { readVisibleHyperlinks } from "./visible-hyperlinks.js";
|
|
|
32
32
|
export type { VisibleHyperlinkRange, VisibleHyperlinkRow } from "./visible-hyperlinks.js";
|
|
33
33
|
export { renderStatusLine, statusText } from "./status-line.js";
|
|
34
34
|
export type { StatusLineInput } from "./status-line.js";
|
|
35
|
-
export { SUBMITTED_PROMPT_PREFIX_WIDTH, composeSubmittedPromptRows,
|
|
36
|
-
export type { SubmittedPromptLayout, SubmittedPromptStyle
|
|
35
|
+
export { SUBMITTED_PROMPT_PREFIX_WIDTH, composeSubmittedPromptRows, submittedPromptLayout } from "./submitted-prompt.js";
|
|
36
|
+
export type { SubmittedPromptLayout, SubmittedPromptStyle } from "./submitted-prompt.js";
|
|
37
37
|
export { numericValues, steppedValue, stepperEnds } from "./stepper.js";
|
|
38
38
|
export type { NumericRange } from "./stepper.js";
|
|
39
39
|
export { TranscriptViewport, assertTranscriptViewportFrameDescriptor } from "./transcript-viewport.js";
|
|
@@ -44,7 +44,7 @@ export { displayColumnSlice, displayWidth, displayWordColumnRange, faint, padToW
|
|
|
44
44
|
export type { DisplayColumnRange, DisplayColumnSlice } from "./text.js";
|
|
45
45
|
export { TEXT_SELECTION_MULTI_CLICK_MS, extendTextSelection, orderedTextSelection, paintTextSelection, plainTextBetweenColumns, pressTextSelection, releaseTextSelection, textSelectionLineExtendColumn, textSelectionPointAt, textSelectionText, usefulTextLineContent, } from "./text-selection.js";
|
|
46
46
|
export type { OrderedTextSelection, TextSelection, TextSelectionClick, TextSelectionLineContent, TextSelectionPoint, TextSelectionPressInput, } from "./text-selection.js";
|
|
47
|
-
export { PLAIN_THEME } from "./theme.js";
|
|
48
|
-
export type { UiTheme, UiThemeToken } from "./theme.js";
|
|
47
|
+
export { PLAIN_THEME, PLAIN_THEME_SOURCE } from "./theme.js";
|
|
48
|
+
export type { ThemeSource, UiTheme, UiThemeBackground, UiThemeToken } from "./theme.js";
|
|
49
49
|
export { menuRowAt, renderValueMenu, valueMenuFrame } from "./value-menu.js";
|
|
50
50
|
export type { ValueMenuAnchor, ValueMenuFrame, ValueMenuLayout, ValueMenuState } from "./value-menu.js";
|
|
@@ -16,11 +16,11 @@ export { GLOBAL_SCOPE, ShortcutRegistry, assembleShortcuts, assertNoShortcutConf
|
|
|
16
16
|
export { backgroundSgrSpan, heldNativeHyperlinkStyle, hyperlinkSgrSpan, hyperlinkTargetAtColumn, nativeHyperlinkStyle, overlaySpan } from "./spans.js";
|
|
17
17
|
export { readVisibleHyperlinks } from "./visible-hyperlinks.js";
|
|
18
18
|
export { renderStatusLine, statusText } from "./status-line.js";
|
|
19
|
-
export { SUBMITTED_PROMPT_PREFIX_WIDTH, composeSubmittedPromptRows,
|
|
19
|
+
export { SUBMITTED_PROMPT_PREFIX_WIDTH, composeSubmittedPromptRows, submittedPromptLayout } from "./submitted-prompt.js";
|
|
20
20
|
export { numericValues, steppedValue, stepperEnds } from "./stepper.js";
|
|
21
21
|
export { TranscriptViewport, assertTranscriptViewportFrameDescriptor } from "./transcript-viewport.js";
|
|
22
22
|
export { RAIL_COLUMNS, renderEmptyState, withScrollbarRail } from "./surface.js";
|
|
23
23
|
export { displayColumnSlice, displayWidth, displayWordColumnRange, faint, padToWidth, stripAnsi, truncateToWidth } from "./text.js";
|
|
24
24
|
export { TEXT_SELECTION_MULTI_CLICK_MS, extendTextSelection, orderedTextSelection, paintTextSelection, plainTextBetweenColumns, pressTextSelection, releaseTextSelection, textSelectionLineExtendColumn, textSelectionPointAt, textSelectionText, usefulTextLineContent, } from "./text-selection.js";
|
|
25
|
-
export { PLAIN_THEME } from "./theme.js";
|
|
25
|
+
export { PLAIN_THEME, PLAIN_THEME_SOURCE } from "./theme.js";
|
|
26
26
|
export { menuRowAt, renderValueMenu, valueMenuFrame } from "./value-menu.js";
|
|
@@ -19,6 +19,5 @@ export interface SelectionCopySnapshot {
|
|
|
19
19
|
readonly rejected?: "size";
|
|
20
20
|
}
|
|
21
21
|
export declare function selectionCopyLineContent(text: string, prompt: SelectionCopyPrompt): TextSelectionLineContent;
|
|
22
|
-
export declare function literalSelectionCopySnapshot(text: string, revision?: number): SelectionCopySnapshot | null;
|
|
23
22
|
/** Extracts one snapshot row with the existing grapheme/newline policy; run expensive rows off-thread. */
|
|
24
23
|
export declare function selectionCopyRowText(snapshot: Pick<SelectionCopySnapshot, "selection" | "literal">, row: SelectionCopyRow, index: number): string;
|
|
@@ -22,18 +22,6 @@ export function selectionCopyLineContent(text, prompt) {
|
|
|
22
22
|
return { from, to: from + 1 };
|
|
23
23
|
return usefulTextLineContent(plain, from);
|
|
24
24
|
}
|
|
25
|
-
export function literalSelectionCopySnapshot(text, revision = 0) {
|
|
26
|
-
if (text.trim().length === 0)
|
|
27
|
-
return null;
|
|
28
|
-
const selection = {
|
|
29
|
-
start: { line: 0, column: 0 },
|
|
30
|
-
end: { line: 0, column: Number.MAX_SAFE_INTEGER },
|
|
31
|
-
};
|
|
32
|
-
if (text.length > MAX_COPY_SOURCE_UNITS) {
|
|
33
|
-
return { literal: true, selection, revision, rows: [], sourceUnits: 0, rejected: "size" };
|
|
34
|
-
}
|
|
35
|
-
return { literal: true, selection, revision, rows: [{ text }], sourceUnits: text.length };
|
|
36
|
-
}
|
|
37
25
|
/** Extracts one snapshot row with the existing grapheme/newline policy; run expensive rows off-thread. */
|
|
38
26
|
export function selectionCopyRowText(snapshot, row, index) {
|
|
39
27
|
if (snapshot.literal)
|
|
@@ -1,26 +1,16 @@
|
|
|
1
|
-
export type UiTimeFormat = "20:00" | "8:00 PM";
|
|
2
|
-
/** Deterministic local hour/minute presentation shared by A1-owned time labels. */
|
|
3
|
-
export declare function formatLocalTime(source: Date | number, format?: UiTimeFormat): string | null;
|
|
4
1
|
/** Visible width of the submitted-prompt prefix (` ❯ `). */
|
|
5
2
|
export declare const SUBMITTED_PROMPT_PREFIX_WIDTH = 3;
|
|
6
3
|
export interface SubmittedPromptStyle {
|
|
7
4
|
readonly prefix?: (text: string) => string;
|
|
8
|
-
readonly timestamp?: (text: string) => string;
|
|
9
5
|
}
|
|
10
6
|
export interface SubmittedPromptLayout {
|
|
11
7
|
readonly contentWidth: number;
|
|
12
|
-
readonly timestamp: string | null;
|
|
13
8
|
}
|
|
14
|
-
/**
|
|
15
|
-
export declare function
|
|
16
|
-
/**
|
|
17
|
-
* Computes the width at which the prompt's Markdown body must be rendered.
|
|
18
|
-
* The timestamp is omitted rather than allowing it to crowd useful content.
|
|
19
|
-
*/
|
|
20
|
-
export declare function submittedPromptLayout(width: number, source?: Date | number | null, format?: UiTimeFormat): SubmittedPromptLayout;
|
|
9
|
+
/** Computes the width at which the prompt's Markdown body must be rendered. */
|
|
10
|
+
export declare function submittedPromptLayout(width: number): SubmittedPromptLayout;
|
|
21
11
|
/**
|
|
22
12
|
* Composes already-rendered prompt content into the compact submitted bar.
|
|
23
13
|
* Continuations align below the content, not below the prefix, and no row can
|
|
24
14
|
* exceed the supplied terminal width even when the content renderer misbehaves.
|
|
25
15
|
*/
|
|
26
|
-
export declare function composeSubmittedPromptRows(contentRows: readonly string[], width: number,
|
|
16
|
+
export declare function composeSubmittedPromptRows(contentRows: readonly string[], width: number, style?: SubmittedPromptStyle): readonly string[];
|
|
@@ -1,57 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
/** Deterministic local hour/minute presentation shared by A1-owned time labels. */
|
|
3
|
-
export function formatLocalTime(source, format = "8:00 PM") {
|
|
4
|
-
const date = source instanceof Date ? source : new Date(source);
|
|
5
|
-
if (!Number.isFinite(date.getTime()))
|
|
6
|
-
return null;
|
|
7
|
-
const hour = date.getHours();
|
|
8
|
-
const minute = String(date.getMinutes()).padStart(2, "0");
|
|
9
|
-
if (format === "20:00")
|
|
10
|
-
return `${String(hour).padStart(2, "0")}:${minute}`;
|
|
11
|
-
return `${hour % 12 || 12}:${minute} ${hour < 12 ? "AM" : "PM"}`;
|
|
12
|
-
}
|
|
1
|
+
import { truncateToWidth } from "./text.js";
|
|
13
2
|
/** Visible width of the submitted-prompt prefix (` ❯ `). */
|
|
14
3
|
export const SUBMITTED_PROMPT_PREFIX_WIDTH = 3;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export function formatSubmittedPromptTime(source, format = "8:00 PM") {
|
|
19
|
-
return formatLocalTime(source, format);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Computes the width at which the prompt's Markdown body must be rendered.
|
|
23
|
-
* The timestamp is omitted rather than allowing it to crowd useful content.
|
|
24
|
-
*/
|
|
25
|
-
export function submittedPromptLayout(width, source, format = "8:00 PM") {
|
|
26
|
-
const boundedWidth = Math.max(1, width);
|
|
27
|
-
const timestamp = source === undefined || source === null ? null : formatSubmittedPromptTime(source, format);
|
|
28
|
-
const timestampReserve = timestamp === null ? 0 : displayWidth(timestamp) + TIMESTAMP_MARGIN;
|
|
29
|
-
const canShowTimestamp = timestamp !== null
|
|
30
|
-
&& boundedWidth - SUBMITTED_PROMPT_PREFIX_WIDTH - timestampReserve >= MIN_USEFUL_CONTENT_WIDTH;
|
|
31
|
-
return {
|
|
32
|
-
contentWidth: Math.max(1, boundedWidth - SUBMITTED_PROMPT_PREFIX_WIDTH - (canShowTimestamp ? timestampReserve : 0)),
|
|
33
|
-
timestamp: canShowTimestamp ? timestamp : null,
|
|
34
|
-
};
|
|
4
|
+
/** Computes the width at which the prompt's Markdown body must be rendered. */
|
|
5
|
+
export function submittedPromptLayout(width) {
|
|
6
|
+
return { contentWidth: Math.max(1, Math.max(1, width) - SUBMITTED_PROMPT_PREFIX_WIDTH) };
|
|
35
7
|
}
|
|
36
8
|
/**
|
|
37
9
|
* Composes already-rendered prompt content into the compact submitted bar.
|
|
38
10
|
* Continuations align below the content, not below the prefix, and no row can
|
|
39
11
|
* exceed the supplied terminal width even when the content renderer misbehaves.
|
|
40
12
|
*/
|
|
41
|
-
export function composeSubmittedPromptRows(contentRows, width,
|
|
13
|
+
export function composeSubmittedPromptRows(contentRows, width, style = {}) {
|
|
42
14
|
if (width <= 0)
|
|
43
15
|
return [];
|
|
44
|
-
const layout = submittedPromptLayout(width
|
|
16
|
+
const layout = submittedPromptLayout(width);
|
|
45
17
|
const prefix = (style.prefix ?? identity)(" ❯ ");
|
|
46
|
-
|
|
18
|
+
return (contentRows.length === 0 ? [""] : contentRows).map((row, index) => {
|
|
47
19
|
const content = truncateToWidth(row, layout.contentWidth);
|
|
48
|
-
return `${index === 0 ? prefix : " ".repeat(SUBMITTED_PROMPT_PREFIX_WIDTH)}${content}
|
|
20
|
+
return truncateToWidth(`${index === 0 ? prefix : " ".repeat(SUBMITTED_PROMPT_PREFIX_WIDTH)}${content}`, width);
|
|
49
21
|
});
|
|
50
|
-
if (layout.timestamp !== null && rows[0] !== undefined) {
|
|
51
|
-
const gap = Math.max(1, width - displayWidth(rows[0]) - displayWidth(layout.timestamp));
|
|
52
|
-
rows[0] = `${rows[0]}${" ".repeat(gap)}${(style.timestamp ?? identity)(layout.timestamp)}`;
|
|
53
|
-
}
|
|
54
|
-
return rows.map(row => truncateToWidth(row, width));
|
|
55
22
|
}
|
|
56
23
|
function identity(text) {
|
|
57
24
|
return text;
|
|
@@ -1,21 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
fg(token: UiThemeToken, text: string): string;
|
|
4
|
-
bold(text: string): string;
|
|
5
|
-
/**
|
|
6
|
-
* The terminal's own foreground, left unpainted. What a list's own text is:
|
|
7
|
-
* a theme built for a light background would otherwise write near-black rows
|
|
8
|
-
* into a dark terminal, which is how the engine leaves its lists too.
|
|
9
|
-
*/
|
|
10
|
-
plain(text: string): string;
|
|
11
|
-
/** Optional palette preview used by controls that choose the active accent. */
|
|
12
|
-
accentPreview?(color: string, text: string): string | null;
|
|
13
|
-
/** Selection background for an active list item or floating-surface row. */
|
|
14
|
-
highlight(text: string): string;
|
|
15
|
-
/** A control that is present but cannot act: quieter than quiet text. */
|
|
16
|
-
disabled(text: string): string;
|
|
17
|
-
/** Background for a floating surface, so it reads as above the content. */
|
|
18
|
-
panel(text: string): string;
|
|
19
|
-
}
|
|
1
|
+
import type { ThemeSource, UiTheme, UiThemeBackground, UiThemeToken } from "../../contracts/presentation/index.js";
|
|
2
|
+
export type { ThemeSource, UiTheme, UiThemeBackground, UiThemeToken };
|
|
20
3
|
/** Renders every token as plain text. What tests assert against. */
|
|
21
4
|
export declare const PLAIN_THEME: UiTheme;
|
|
5
|
+
/** A theme source that never changes and paints nothing. */
|
|
6
|
+
export declare const PLAIN_THEME_SOURCE: ThemeSource;
|
|
@@ -6,4 +6,10 @@ export const PLAIN_THEME = Object.freeze({
|
|
|
6
6
|
highlight: (text) => text,
|
|
7
7
|
disabled: (text) => text,
|
|
8
8
|
panel: (text) => text,
|
|
9
|
+
background: (_token, text) => text,
|
|
10
|
+
});
|
|
11
|
+
/** A theme source that never changes and paints nothing. */
|
|
12
|
+
export const PLAIN_THEME_SOURCE = Object.freeze({
|
|
13
|
+
current: () => PLAIN_THEME,
|
|
14
|
+
onChange: () => () => { },
|
|
9
15
|
});
|
|
@@ -4,10 +4,8 @@ export interface TranscriptPromptAnchor {
|
|
|
4
4
|
readonly id: string;
|
|
5
5
|
readonly firstRow: number;
|
|
6
6
|
readonly lastRow: number;
|
|
7
|
-
/** The source first row, including its submitted-prompt styling
|
|
7
|
+
/** The source first row, including its submitted-prompt styling. */
|
|
8
8
|
readonly sourceRow: string;
|
|
9
|
-
/** Right-edge metadata cells omitted from semantic prompt copies. */
|
|
10
|
-
readonly copySuffixWidth?: number;
|
|
11
9
|
/** Optional source-styled row used only while prominent and not hovered. */
|
|
12
10
|
readonly prominentSourceRow?: string;
|
|
13
11
|
}
|
|
@@ -266,10 +266,7 @@ export class TranscriptViewport {
|
|
|
266
266
|
const dock = anchor?.kind === "dock" ? this.#copyableDockRows.get(anchor.fromBottom) : undefined;
|
|
267
267
|
if (prompt !== undefined && anchor?.kind === "document") {
|
|
268
268
|
const first = anchor.row === prompt.firstRow;
|
|
269
|
-
|
|
270
|
-
? truncateToWidth(row, Math.max(0, displayWidth(row) - (prompt.copySuffixWidth ?? 0)))
|
|
271
|
-
: row;
|
|
272
|
-
return selectionCopyLineContent(copyRow, first ? "first" : "continuation");
|
|
269
|
+
return selectionCopyLineContent(row, first ? "first" : "continuation");
|
|
273
270
|
}
|
|
274
271
|
// Invariant: the dock editor has no prefix; transcript prompts still carry chrome.
|
|
275
272
|
return dock?.prompt !== undefined ? usefulTextLineContent(row, 1) : usefulTextLineContent(row);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export declare const OWNED_UI_SETTINGS_VERSION = 20;
|
|
2
1
|
export type OwnedUiSettingValue = string | number | boolean;
|
|
3
2
|
export type OwnedUiSettingApplication = "live" | "restart";
|
|
4
3
|
export interface OwnedUiSettingDeclaration {
|
|
@@ -30,22 +29,10 @@ export declare const OWNED_SETTING_DECLARATIONS: Readonly<{
|
|
|
30
29
|
id: "generic";
|
|
31
30
|
title: "Generic";
|
|
32
31
|
}>;
|
|
33
|
-
description: "Auto checks the running channel every 15 minutes while open and installs verified updates silently
|
|
32
|
+
description: "Auto checks the running channel every 15 minutes while open and installs verified updates silently, then shows Update installed, restart to update; the next start runs it. Manual leaves updating to you (a1 update). Applies on next start.";
|
|
34
33
|
application: "restart";
|
|
35
34
|
defaultValue: "auto";
|
|
36
|
-
allowedValues: readonly ["auto", "
|
|
37
|
-
}>;
|
|
38
|
-
readonly timeFormat: Readonly<{
|
|
39
|
-
id: "timeFormat";
|
|
40
|
-
label: "Time format";
|
|
41
|
-
section: Readonly<{
|
|
42
|
-
id: "generic";
|
|
43
|
-
title: "Generic";
|
|
44
|
-
}>;
|
|
45
|
-
description: "Format used by submitted-prompt timestamps and the resident tab clock when Time is enabled.";
|
|
46
|
-
application: "live";
|
|
47
|
-
defaultValue: "8:00 PM";
|
|
48
|
-
allowedValues: readonly ["20:00", "8:00 PM"];
|
|
35
|
+
allowedValues: readonly ["auto", "manual"];
|
|
49
36
|
}>;
|
|
50
37
|
readonly accentColor: Readonly<{
|
|
51
38
|
id: "accentColor";
|
|
@@ -191,88 +178,6 @@ export declare const OWNED_SETTING_DECLARATIONS: Readonly<{
|
|
|
191
178
|
defaultValue: 8;
|
|
192
179
|
allowedValues: readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
|
|
193
180
|
}>;
|
|
194
|
-
readonly tabsPosition: Readonly<{
|
|
195
|
-
id: "tabsPosition";
|
|
196
|
-
label: "Position";
|
|
197
|
-
section: Readonly<{
|
|
198
|
-
id: "tabs";
|
|
199
|
-
title: "Tab Bar";
|
|
200
|
-
}>;
|
|
201
|
-
description: "Place the resident tab bar at the top or bottom of the terminal.";
|
|
202
|
-
application: "live";
|
|
203
|
-
defaultValue: "top";
|
|
204
|
-
allowedValues: readonly ["top", "bottom"];
|
|
205
|
-
}>;
|
|
206
|
-
readonly tabBarPlusMenu: Readonly<{
|
|
207
|
-
id: "tabBarPlusMenu";
|
|
208
|
-
label: "Plus menu";
|
|
209
|
-
section: Readonly<{
|
|
210
|
-
id: "tabs";
|
|
211
|
-
title: "Tab Bar";
|
|
212
|
-
}>;
|
|
213
|
-
description: "The tabs + offers. With only Agent, + adds an Agent at once; with more, it opens a menu; with none, + is hidden.";
|
|
214
|
-
application: "live";
|
|
215
|
-
defaultValue: "agent";
|
|
216
|
-
allowedValues: readonly ["", "agent", "settings", "changelog", "agent,settings", "agent,changelog", "settings,changelog", "agent,settings,changelog"];
|
|
217
|
-
flags: readonly (Readonly<{
|
|
218
|
-
key: "agent";
|
|
219
|
-
label: "Agent";
|
|
220
|
-
description: "Add a new Agent tab every time.";
|
|
221
|
-
}> | Readonly<{
|
|
222
|
-
key: "settings";
|
|
223
|
-
label: "Settings";
|
|
224
|
-
description: "Show the one Settings tab.";
|
|
225
|
-
}> | Readonly<{
|
|
226
|
-
key: "changelog";
|
|
227
|
-
label: "Changelog";
|
|
228
|
-
description: "Show the one Changelog tab.";
|
|
229
|
-
}>)[];
|
|
230
|
-
}>;
|
|
231
|
-
readonly tabBarRightItems: Readonly<{
|
|
232
|
-
id: "tabBarRightItems";
|
|
233
|
-
label: "Widgets";
|
|
234
|
-
section: Readonly<{
|
|
235
|
-
id: "tabs";
|
|
236
|
-
title: "Tab Bar";
|
|
237
|
-
}>;
|
|
238
|
-
description: "Choose whether the tab bar's right side shows the executing Version, Time, both, or neither.";
|
|
239
|
-
application: "live";
|
|
240
|
-
defaultValue: "version,time";
|
|
241
|
-
allowedValues: readonly ["", "version", "time", "version,time"];
|
|
242
|
-
flags: readonly (Readonly<{
|
|
243
|
-
key: "version";
|
|
244
|
-
label: "Version";
|
|
245
|
-
description: "Show the executing A1 version.";
|
|
246
|
-
}> | Readonly<{
|
|
247
|
-
key: "time";
|
|
248
|
-
label: "Time";
|
|
249
|
-
description: "Show the current time.";
|
|
250
|
-
}>)[];
|
|
251
|
-
}>;
|
|
252
|
-
readonly tabBarBackgroundStyle: Readonly<{
|
|
253
|
-
id: "tabBarBackgroundStyle";
|
|
254
|
-
label: "Background";
|
|
255
|
-
section: Readonly<{
|
|
256
|
-
id: "tabs";
|
|
257
|
-
title: "Tab Bar";
|
|
258
|
-
}>;
|
|
259
|
-
description: "Tab-bar canvas.";
|
|
260
|
-
application: "live";
|
|
261
|
-
defaultValue: "transparent";
|
|
262
|
-
allowedValues: readonly ["transparent", "black", "accent"];
|
|
263
|
-
}>;
|
|
264
|
-
readonly tabsAutoName: Readonly<{
|
|
265
|
-
id: "tabsAutoName";
|
|
266
|
-
label: "Auto name";
|
|
267
|
-
section: Readonly<{
|
|
268
|
-
id: "tabs";
|
|
269
|
-
title: "Tab Bar";
|
|
270
|
-
}>;
|
|
271
|
-
description: "Automatically name a new tab from its first completed turn with the tab's current model.";
|
|
272
|
-
application: "live";
|
|
273
|
-
defaultValue: true;
|
|
274
|
-
allowedValues: readonly [true, false];
|
|
275
|
-
}>;
|
|
276
181
|
}>;
|
|
277
182
|
export type OwnedSettingId = keyof typeof OWNED_SETTING_DECLARATIONS;
|
|
278
183
|
export type OwnedSettingValueOf<Id extends OwnedSettingId> = (typeof OWNED_SETTING_DECLARATIONS)[Id]["allowedValues"][number];
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export const OWNED_UI_SETTINGS_VERSION = 20;
|
|
2
1
|
const UI_ACCENT_COLOR_CHOICES = Object.freeze([
|
|
3
2
|
"blue", "purple", "cyan", "green", "orange", "pink",
|
|
4
3
|
]);
|
|
@@ -8,43 +7,15 @@ const GENERIC_SECTION = Object.freeze({ id: "generic", title: "Generic" });
|
|
|
8
7
|
const APPEARANCE_SECTION = Object.freeze({ id: "appearance", title: "Appearance" });
|
|
9
8
|
const SCROLL_SECTION = Object.freeze({ id: "scroll", title: "Scroll" });
|
|
10
9
|
const AGENT_SECTION = Object.freeze({ id: "agent", title: "Agent" });
|
|
11
|
-
const TABS_SECTION = Object.freeze({ id: "tabs", title: "Tab Bar" });
|
|
12
|
-
/** The tab kinds the strip's `+` can offer, in the order it shows them. */
|
|
13
|
-
const PLUS_MENU_KINDS = Object.freeze([
|
|
14
|
-
Object.freeze({ key: "agent", label: "Agent", description: "Add a new Agent tab every time." }),
|
|
15
|
-
Object.freeze({ key: "settings", label: "Settings", description: "Show the one Settings tab." }),
|
|
16
|
-
Object.freeze({ key: "changelog", label: "Changelog", description: "Show the one Changelog tab." }),
|
|
17
|
-
]);
|
|
18
|
-
/** Every enabled subset of the plus-menu kinds, each in kind order. */
|
|
19
|
-
const PLUS_MENU_VALUES = Object.freeze([
|
|
20
|
-
"", "agent", "settings", "changelog", "agent,settings", "agent,changelog", "settings,changelog", "agent,settings,changelog",
|
|
21
|
-
]);
|
|
22
|
-
/** The right-side strip items, in their fixed presentation order. */
|
|
23
|
-
const TAB_BAR_RIGHT_ITEMS = Object.freeze([
|
|
24
|
-
Object.freeze({ key: "version", label: "Version", description: "Show the executing A1 version." }),
|
|
25
|
-
Object.freeze({ key: "time", label: "Time", description: "Show the current time." }),
|
|
26
|
-
]);
|
|
27
|
-
const TAB_BAR_RIGHT_ITEM_VALUES = Object.freeze(["", "version", "time", "version,time"]);
|
|
28
10
|
export const OWNED_SETTING_DECLARATIONS = Object.freeze({
|
|
29
11
|
updateCheck: Object.freeze({
|
|
30
12
|
id: "updateCheck",
|
|
31
13
|
label: "Update",
|
|
32
14
|
section: GENERIC_SECTION,
|
|
33
|
-
description: "Auto checks the running channel every 15 minutes while open and installs verified updates silently
|
|
15
|
+
description: "Auto checks the running channel every 15 minutes while open and installs verified updates silently, then shows Update installed, restart to update; the next start runs it. Manual leaves updating to you (a1 update). Applies on next start.",
|
|
34
16
|
application: "restart",
|
|
35
17
|
defaultValue: "auto",
|
|
36
|
-
allowedValues: Object.freeze(["auto", "
|
|
37
|
-
}),
|
|
38
|
-
timeFormat: Object.freeze({
|
|
39
|
-
id: "timeFormat",
|
|
40
|
-
label: "Time format",
|
|
41
|
-
section: GENERIC_SECTION,
|
|
42
|
-
description: "Format used by submitted-prompt timestamps and the resident tab clock when Time is enabled.",
|
|
43
|
-
application: "live",
|
|
44
|
-
defaultValue: "8:00 PM",
|
|
45
|
-
allowedValues: Object.freeze([
|
|
46
|
-
"20:00", "8:00 PM",
|
|
47
|
-
]),
|
|
18
|
+
allowedValues: Object.freeze(["auto", "manual"]),
|
|
48
19
|
}),
|
|
49
20
|
accentColor: Object.freeze({
|
|
50
21
|
id: "accentColor",
|
|
@@ -156,53 +127,6 @@ export const OWNED_SETTING_DECLARATIONS = Object.freeze({
|
|
|
156
127
|
defaultValue: 8,
|
|
157
128
|
allowedValues: Object.freeze([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]),
|
|
158
129
|
}),
|
|
159
|
-
tabsPosition: Object.freeze({
|
|
160
|
-
id: "tabsPosition",
|
|
161
|
-
label: "Position",
|
|
162
|
-
section: TABS_SECTION,
|
|
163
|
-
description: "Place the resident tab bar at the top or bottom of the terminal.",
|
|
164
|
-
application: "live",
|
|
165
|
-
defaultValue: "top",
|
|
166
|
-
allowedValues: Object.freeze(["top", "bottom"]),
|
|
167
|
-
}),
|
|
168
|
-
tabBarPlusMenu: Object.freeze({
|
|
169
|
-
id: "tabBarPlusMenu",
|
|
170
|
-
label: "Plus menu",
|
|
171
|
-
section: TABS_SECTION,
|
|
172
|
-
description: "The tabs + offers. With only Agent, + adds an Agent at once; with more, it opens a menu; with none, + is hidden.",
|
|
173
|
-
application: "live",
|
|
174
|
-
defaultValue: "agent",
|
|
175
|
-
allowedValues: PLUS_MENU_VALUES,
|
|
176
|
-
flags: PLUS_MENU_KINDS,
|
|
177
|
-
}),
|
|
178
|
-
tabBarRightItems: Object.freeze({
|
|
179
|
-
id: "tabBarRightItems",
|
|
180
|
-
label: "Widgets",
|
|
181
|
-
section: TABS_SECTION,
|
|
182
|
-
description: "Choose whether the tab bar's right side shows the executing Version, Time, both, or neither.",
|
|
183
|
-
application: "live",
|
|
184
|
-
defaultValue: "version,time",
|
|
185
|
-
allowedValues: TAB_BAR_RIGHT_ITEM_VALUES,
|
|
186
|
-
flags: TAB_BAR_RIGHT_ITEMS,
|
|
187
|
-
}),
|
|
188
|
-
tabBarBackgroundStyle: Object.freeze({
|
|
189
|
-
id: "tabBarBackgroundStyle",
|
|
190
|
-
label: "Background",
|
|
191
|
-
section: TABS_SECTION,
|
|
192
|
-
description: "Tab-bar canvas.",
|
|
193
|
-
application: "live",
|
|
194
|
-
defaultValue: "transparent",
|
|
195
|
-
allowedValues: Object.freeze(["transparent", "black", "accent"]),
|
|
196
|
-
}),
|
|
197
|
-
tabsAutoName: Object.freeze({
|
|
198
|
-
id: "tabsAutoName",
|
|
199
|
-
label: "Auto name",
|
|
200
|
-
section: TABS_SECTION,
|
|
201
|
-
description: "Automatically name a new tab from its first completed turn with the tab's current model.",
|
|
202
|
-
application: "live",
|
|
203
|
-
defaultValue: true,
|
|
204
|
-
allowedValues: Object.freeze([true, false]),
|
|
205
|
-
}),
|
|
206
130
|
});
|
|
207
131
|
export const OWNED_UI_SETTING_DECLARATIONS = Object.freeze(Object.values(OWNED_SETTING_DECLARATIONS));
|
|
208
132
|
export function isOwnedSettingId(id) {
|
|
@@ -2,7 +2,7 @@ import { readFileSync, statSync } from "node:fs";
|
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { isAbsolute, join } from "node:path";
|
|
4
4
|
import { PRODUCT_IDENTITY } from "../../product-identity.js";
|
|
5
|
-
import { SHARED_PROGRESS_PALETTE } from "
|
|
5
|
+
import { SHARED_PROGRESS_PALETTE } from "../../contracts/presentation/index.js";
|
|
6
6
|
/** Global settings only: project resources must remain unavailable until trust is resolved. */
|
|
7
7
|
export function readPreTrustAccent(environment = process.env) {
|
|
8
8
|
try {
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
export { OWNED_SETTING_DECLARATIONS,
|
|
1
|
+
export { OWNED_SETTING_DECLARATIONS, OWNED_UI_SETTING_DECLARATIONS, assertOwnedUiSettingDeclarations, findOwnedUiSettingDeclaration, isOwnedSettingId, } from "./declarations.js";
|
|
2
2
|
export type { OwnedSettingId, OwnedSettingValueOf, OwnedUiSettingApplication, OwnedUiSettingDeclaration, OwnedUiSettingValue } from "./declarations.js";
|
|
3
|
-
export {
|
|
4
|
-
export type {
|
|
5
|
-
export { documentFrom, parseOwnedUiSettingsDocument, resolveOwnedUiSettings, settingValue } from "./resolution.js";
|
|
6
|
-
export type { OwnedUiResolvedSetting, OwnedUiSettingSource, OwnedUiSettingsDocument, OwnedUiSettingsNotice, OwnedUiSettingsNoticeCode, OwnedUiSettingsResolution, ResolveOwnedUiSettingsInput, } from "./resolution.js";
|
|
3
|
+
export { resolveOwnedUiSettings, settingValue } from "./resolution.js";
|
|
4
|
+
export type { OwnedUiResolvedSetting, OwnedUiSettingSource, OwnedUiSettingsNotice, OwnedUiSettingsNoticeCode, OwnedUiSettingsResolution, ResolveOwnedUiSettingsInput, } from "./resolution.js";
|
|
7
5
|
export { AGENT_SECTION_ID, buildOwnedUiSettingsSections, findOwnedUiSettingsEntry } from "./sections.js";
|
|
8
6
|
export type { AgentSettingsSnapshot, BuildOwnedUiSettingsSectionsInput, OwnedUiSettingsBackend, OwnedUiSettingsEntry, OwnedUiSettingsSection, } from "./sections.js";
|
|
9
7
|
export { OwnedSettingsManager } from "./manager.js";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export { OWNED_SETTING_DECLARATIONS,
|
|
2
|
-
export {
|
|
3
|
-
export { documentFrom, parseOwnedUiSettingsDocument, resolveOwnedUiSettings, settingValue } from "./resolution.js";
|
|
1
|
+
export { OWNED_SETTING_DECLARATIONS, OWNED_UI_SETTING_DECLARATIONS, assertOwnedUiSettingDeclarations, findOwnedUiSettingDeclaration, isOwnedSettingId, } from "./declarations.js";
|
|
2
|
+
export { resolveOwnedUiSettings, settingValue } from "./resolution.js";
|
|
4
3
|
export { AGENT_SECTION_ID, buildOwnedUiSettingsSections, findOwnedUiSettingsEntry } from "./sections.js";
|
|
5
4
|
export { OwnedSettingsManager } from "./manager.js";
|
|
6
5
|
export { assertProfileSettingsNamespaceAvailable, readProfileSettingsNamespace, repairProfileSettingsDocument, updateProfileSettingsNamespace, } from "./profile-document.js";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { AgentJsonValue, AgentSettingApplicationBoundary, AgentSettingsPort } from "../../contracts/agent-engine/index.js";
|
|
2
2
|
import { type OwnedSettingId, type OwnedSettingValueOf, type OwnedUiSettingDeclaration, type OwnedUiSettingValue } from "./declarations.js";
|
|
3
|
-
import { type OwnedUiSettingsMigration } from "./migrations.js";
|
|
4
3
|
import { type OwnedUiSettingsResolution } from "./resolution.js";
|
|
5
4
|
import { type OwnedUiSettingsBackend, type OwnedUiSettingsSection } from "./sections.js";
|
|
6
5
|
export interface OwnedSettingsManagerOptions {
|
|
@@ -11,10 +10,7 @@ export interface OwnedSettingsManagerOptions {
|
|
|
11
10
|
readonly profileId: string;
|
|
12
11
|
/** Product namespace; defaults to profileId for generic and hermetic consumers. */
|
|
13
12
|
readonly namespace?: string;
|
|
14
|
-
/** Former product configuration root, consulted only while the namespace is absent. */
|
|
15
|
-
readonly legacyConfigDir?: string;
|
|
16
13
|
readonly declarations?: readonly OwnedUiSettingDeclaration[];
|
|
17
|
-
readonly migrations?: readonly OwnedUiSettingsMigration[];
|
|
18
14
|
readonly agent?: AgentSettingsPort | null;
|
|
19
15
|
readonly agentProvider?: () => AgentSettingsPort | null;
|
|
20
16
|
readonly hiddenOwnedSettingIds?: readonly string[];
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { readFileSync } from "node:fs";
|
|
2
1
|
import path from "node:path";
|
|
3
2
|
import { assertAgentSettingDescriptor } from "../../contracts/agent-engine/index.js";
|
|
4
|
-
import { OWNED_SETTING_DECLARATIONS,
|
|
5
|
-
import {
|
|
6
|
-
import { parseOwnedUiSettingsDocument, resolveOwnedUiSettings, } from "./resolution.js";
|
|
3
|
+
import { OWNED_SETTING_DECLARATIONS, OWNED_UI_SETTING_DECLARATIONS, } from "./declarations.js";
|
|
4
|
+
import { resolveOwnedUiSettings, } from "./resolution.js";
|
|
7
5
|
import { buildOwnedUiSettingsSections, findOwnedUiSettingsEntry, } from "./sections.js";
|
|
8
6
|
import { readProfileSettingsNamespace, repairProfileSettingsDocument, updateProfileSettingsNamespace, } from "./profile-document.js";
|
|
9
7
|
const PROFILE_ID_PATTERN = /^[a-z][a-z0-9-]{0,63}$/;
|
|
@@ -16,10 +14,8 @@ const MAX_DOCUMENT_BYTES = 256 * 1024;
|
|
|
16
14
|
*/
|
|
17
15
|
export class OwnedSettingsManager {
|
|
18
16
|
#file;
|
|
19
|
-
#legacyFile;
|
|
20
17
|
#namespace;
|
|
21
18
|
#declarations;
|
|
22
|
-
#migrations;
|
|
23
19
|
#agent;
|
|
24
20
|
#agentProvider;
|
|
25
21
|
#listeners = new Set();
|
|
@@ -38,12 +34,8 @@ export class OwnedSettingsManager {
|
|
|
38
34
|
if (profileDir === undefined)
|
|
39
35
|
throw new Error("owned UI settings require a profile directory");
|
|
40
36
|
this.#file = path.join(path.resolve(profileDir), "settings.json");
|
|
41
|
-
this.#legacyFile = options.legacyConfigDir === undefined
|
|
42
|
-
? null
|
|
43
|
-
: path.join(path.resolve(options.legacyConfigDir), "settings", `${options.profileId}.json`);
|
|
44
37
|
this.#namespace = options.namespace ?? options.profileId;
|
|
45
38
|
this.#declarations = options.declarations ?? OWNED_UI_SETTING_DECLARATIONS;
|
|
46
|
-
this.#migrations = options.migrations ?? OWNED_UI_SETTINGS_MIGRATIONS;
|
|
47
39
|
this.#agent = options.agent ?? null;
|
|
48
40
|
this.#agentProvider = options.agentProvider ?? null;
|
|
49
41
|
this.#hiddenOwnedSettingIds = new Set(options.hiddenOwnedSettingIds ?? []);
|
|
@@ -74,53 +66,15 @@ export class OwnedSettingsManager {
|
|
|
74
66
|
if (Buffer.byteLength(JSON.stringify(shared.value), "utf8") > MAX_DOCUMENT_BYTES) {
|
|
75
67
|
return this.#resolveNamespace(null, `${this.#file} contains a ${this.#namespace} namespace exceeding the ${MAX_DOCUMENT_BYTES}-byte settings limit`);
|
|
76
68
|
}
|
|
77
|
-
return this.#
|
|
69
|
+
return this.#resolveNamespace(shared.value);
|
|
78
70
|
}
|
|
79
|
-
|
|
80
|
-
return this.#resolveNamespace(null, shared.detail);
|
|
81
|
-
return this.#readLegacy();
|
|
82
|
-
}
|
|
83
|
-
#resolveCompatibleNamespace(values) {
|
|
84
|
-
const compatibility = normalizeOwnedUiSettingsValues(values);
|
|
85
|
-
return compatibility.values === null
|
|
86
|
-
? this.#resolveNamespace(null, compatibility.failure ?? "product settings compatibility failed")
|
|
87
|
-
: this.#resolveNamespace(compatibility.values);
|
|
71
|
+
return this.#resolveNamespace(null, shared.status === "invalid" ? shared.detail : undefined);
|
|
88
72
|
}
|
|
89
73
|
#resolveNamespace(values, unreadableDetail) {
|
|
90
74
|
return resolveOwnedUiSettings({
|
|
91
75
|
declarations: this.#declarations,
|
|
92
|
-
|
|
93
|
-
document: values === null ? null : { version: OWNED_UI_SETTINGS_VERSION, values },
|
|
76
|
+
values,
|
|
94
77
|
...(unreadableDetail === undefined ? {} : { unreadableDetail }),
|
|
95
|
-
currentVersion: OWNED_UI_SETTINGS_VERSION,
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
#readLegacy() {
|
|
99
|
-
if (this.#legacyFile === null)
|
|
100
|
-
return this.#resolveNamespace(null);
|
|
101
|
-
let raw = null;
|
|
102
|
-
let unreadable = null;
|
|
103
|
-
try {
|
|
104
|
-
raw = readFileSync(this.#legacyFile, "utf8");
|
|
105
|
-
}
|
|
106
|
-
catch (error) {
|
|
107
|
-
if (!isMissing(error))
|
|
108
|
-
unreadable = `${this.#legacyFile} could not be read: ${describe(error)}`;
|
|
109
|
-
}
|
|
110
|
-
if (raw !== null && Buffer.byteLength(raw, "utf8") > MAX_DOCUMENT_BYTES) {
|
|
111
|
-
unreadable = `${this.#legacyFile} exceeds the ${MAX_DOCUMENT_BYTES}-byte settings limit and was ignored`;
|
|
112
|
-
raw = null;
|
|
113
|
-
}
|
|
114
|
-
const document = raw === null ? null : parseOwnedUiSettingsDocument(raw);
|
|
115
|
-
if (raw !== null && document === null && unreadable === null) {
|
|
116
|
-
unreadable = `${this.#legacyFile} is not a valid settings document and was ignored`;
|
|
117
|
-
}
|
|
118
|
-
return resolveOwnedUiSettings({
|
|
119
|
-
declarations: this.#declarations,
|
|
120
|
-
migrations: this.#migrations,
|
|
121
|
-
document,
|
|
122
|
-
...(unreadable === null ? {} : { unreadableDetail: unreadable }),
|
|
123
|
-
currentVersion: OWNED_UI_SETTINGS_VERSION,
|
|
124
78
|
});
|
|
125
79
|
}
|
|
126
80
|
async load() {
|
|
@@ -231,14 +185,7 @@ export class OwnedSettingsManager {
|
|
|
231
185
|
}
|
|
232
186
|
try {
|
|
233
187
|
updateProfileSettingsNamespace(this.#file, this.#namespace, current => {
|
|
234
|
-
|
|
235
|
-
if (current !== null) {
|
|
236
|
-
const compatibility = normalizeOwnedUiSettingsValues(current);
|
|
237
|
-
if (compatibility.values === null)
|
|
238
|
-
throw new Error(compatibility.failure ?? "product settings compatibility failed");
|
|
239
|
-
latest = this.#resolveNamespace(compatibility.values);
|
|
240
|
-
}
|
|
241
|
-
const next = compactValues(latest);
|
|
188
|
+
const next = compactValues(this.#resolveNamespace(current));
|
|
242
189
|
if (value === declaration.defaultValue)
|
|
243
190
|
delete next[id];
|
|
244
191
|
else
|
|
@@ -343,9 +290,6 @@ function compactValues(resolution) {
|
|
|
343
290
|
}
|
|
344
291
|
return values;
|
|
345
292
|
}
|
|
346
|
-
function isMissing(error) {
|
|
347
|
-
return typeof error === "object" && error !== null && error.code === "ENOENT";
|
|
348
|
-
}
|
|
349
293
|
function describe(error) {
|
|
350
294
|
return error instanceof Error ? error.message : String(error);
|
|
351
295
|
}
|