@timurproko/a1 0.1.0 → 0.1.1-dev.2
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 +8 -6
- package/bin/a1-ui.js +24 -0
- package/bin/{addone.js → a1.js} +2 -2
- package/dist/src/cli/dispatch.d.ts +4 -5
- package/dist/src/cli/dispatch.js +11 -11
- package/dist/src/cli/index.d.ts +0 -1
- package/dist/src/cli/index.js +0 -1
- package/dist/src/cli/version-stats.d.ts +0 -1
- package/dist/src/cli/version-stats.js +27 -23
- package/dist/src/cli/version.d.ts +1 -2
- package/dist/src/cli/version.js +4 -4
- package/dist/src/composition/index.d.ts +22 -0
- package/dist/src/composition/index.js +166 -0
- package/dist/src/composition/transparent-runtime.d.ts +6 -0
- package/dist/src/composition/transparent-runtime.js +19 -0
- package/dist/src/features/launch/development-launch.d.ts +0 -1
- package/dist/src/features/launch/development-launch.js +12 -11
- package/dist/src/features/launch/index.d.ts +0 -1
- package/dist/src/features/launch/index.js +0 -1
- package/dist/src/features/launch/initialize-profile.d.ts +1 -2
- package/dist/src/features/launch/initialize-profile.js +1 -2
- package/dist/src/features/launch/intent.d.ts +0 -1
- package/dist/src/features/launch/intent.js +0 -1
- package/dist/src/features/launch/prepare-launch.d.ts +2 -3
- package/dist/src/features/launch/prepare-launch.js +3 -4
- package/dist/src/features/launch/profile-paths.d.ts +2 -3
- package/dist/src/features/launch/profile-paths.js +9 -8
- package/dist/src/features/launch/profiles.d.ts +2 -3
- package/dist/src/features/launch/profiles.js +5 -6
- package/dist/src/features/launch/runtime-selection.d.ts +1 -2
- package/dist/src/features/launch/runtime-selection.js +1 -2
- package/dist/src/features/owned-ui/customization.d.ts +5 -3
- package/dist/src/features/owned-ui/customization.js +2 -4
- package/dist/src/features/owned-ui/diagnostics.d.ts +0 -1
- package/dist/src/features/owned-ui/diagnostics.js +0 -1
- package/dist/src/features/owned-ui/index.d.ts +0 -2
- package/dist/src/features/owned-ui/index.js +0 -2
- package/dist/src/features/owned-ui/run.d.ts +3 -7
- package/dist/src/features/owned-ui/run.js +7 -15
- package/dist/src/features/workspace/capabilities.d.ts +0 -1
- package/dist/src/features/workspace/capabilities.js +0 -1
- package/dist/src/features/workspace/index.d.ts +0 -1
- package/dist/src/features/workspace/index.js +0 -1
- package/dist/src/features/workspace/presentation.d.ts +1 -2
- package/dist/src/features/workspace/presentation.js +5 -4
- package/dist/src/features/workspace/reconciliation.d.ts +0 -1
- package/dist/src/features/workspace/reconciliation.js +0 -1
- package/dist/src/features/workspace/reducer.d.ts +0 -1
- package/dist/src/features/workspace/reducer.js +0 -1
- package/dist/src/features/workspace/router.d.ts +0 -1
- package/dist/src/features/workspace/router.js +0 -1
- package/dist/src/features/workspace/store.d.ts +0 -1
- package/dist/src/features/workspace/store.js +0 -1
- package/dist/src/foundation/agent-engine-contracts/capability-ports.d.ts +95 -0
- package/dist/src/foundation/agent-engine-contracts/capability-ports.js +35 -0
- package/dist/src/foundation/agent-engine-contracts/domain-validation.d.ts +12 -0
- package/dist/src/foundation/agent-engine-contracts/domain-validation.js +89 -0
- package/dist/src/foundation/agent-engine-contracts/domain.d.ts +90 -0
- package/dist/src/foundation/agent-engine-contracts/domain.js +1 -0
- package/dist/src/foundation/agent-engine-contracts/index.d.ts +7 -0
- package/dist/src/foundation/agent-engine-contracts/index.js +7 -0
- package/dist/src/foundation/agent-engine-contracts/model.d.ts +78 -0
- package/dist/src/foundation/agent-engine-contracts/model.js +1 -0
- package/dist/src/foundation/agent-engine-contracts/ports.d.ts +18 -0
- package/dist/src/foundation/agent-engine-contracts/ports.js +1 -0
- package/dist/src/foundation/agent-engine-contracts/serialization.d.ts +7 -0
- package/dist/src/foundation/agent-engine-contracts/serialization.js +58 -0
- package/dist/src/foundation/agent-engine-contracts/validation.d.ts +5 -0
- package/dist/src/foundation/agent-engine-contracts/validation.js +128 -0
- package/dist/src/foundation/lifecycle/index.d.ts +0 -1
- package/dist/src/foundation/lifecycle/index.js +0 -1
- package/dist/src/foundation/lifecycle/model.d.ts +1 -2
- package/dist/src/foundation/lifecycle/model.js +3 -3
- package/dist/src/foundation/lifecycle/paths.d.ts +2 -3
- package/dist/src/foundation/lifecycle/paths.js +32 -16
- package/dist/src/foundation/native-host-protocol/codec.d.ts +0 -1
- package/dist/src/foundation/native-host-protocol/codec.js +0 -1
- package/dist/src/foundation/native-host-protocol/evidence.d.ts +2 -3
- package/dist/src/foundation/native-host-protocol/evidence.js +4 -4
- package/dist/src/foundation/native-host-protocol/index.d.ts +0 -1
- package/dist/src/foundation/native-host-protocol/index.js +0 -1
- package/dist/src/foundation/native-host-protocol/messages.d.ts +1 -2
- package/dist/src/foundation/native-host-protocol/messages.js +2 -2
- package/dist/src/foundation/native-host-protocol/proof-gate.d.ts +0 -1
- package/dist/src/foundation/native-host-protocol/proof-gate.js +0 -1
- package/dist/src/foundation/owned-ui-contracts/extension-ui.d.ts +0 -1
- package/dist/src/foundation/owned-ui-contracts/extension-ui.js +0 -1
- package/dist/src/foundation/owned-ui-contracts/index.d.ts +0 -1
- package/dist/src/foundation/owned-ui-contracts/index.js +0 -1
- package/dist/src/foundation/owned-ui-contracts/model.d.ts +0 -1
- package/dist/src/foundation/owned-ui-contracts/model.js +0 -1
- package/dist/src/foundation/owned-ui-contracts/validation.d.ts +0 -1
- package/dist/src/foundation/owned-ui-contracts/validation.js +0 -1
- package/dist/src/foundation/pi-component-adapter/components.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/components.js +0 -1
- package/dist/src/foundation/pi-component-adapter/conformance.d.ts +1 -1
- package/dist/src/foundation/pi-component-adapter/conformance.js +10 -4
- package/dist/src/foundation/pi-component-adapter/index.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/index.js +0 -1
- package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.d.ts +165 -0
- package/dist/src/foundation/pi-component-adapter/resources/builtin-themes.js +166 -0
- package/dist/src/foundation/pi-component-adapter/shell-components.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-components.js +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js +10 -13
- package/dist/src/foundation/pi-component-adapter/shell-extension-ui.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-extension-ui.js +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-footer-status.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-footer-status.js +5 -62
- package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.js +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-shared-facade.js +0 -1
- package/dist/src/foundation/pi-component-adapter/theme.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/theme.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js +3 -27
- package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.d.ts +18 -0
- package/dist/src/foundation/pi-component-adapter/upstream/components/owned-editor.js +55 -0
- package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.d.ts +10 -0
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-footer.js +120 -0
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.d.ts +1 -2
- package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.js +1 -2
- package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/external-editor.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/external-editor.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/model-search.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/model-search.js +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.js +1 -2
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.d.ts +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.js +18 -15
- package/dist/src/foundation/pi-engine-adapter/adapter.d.ts +2 -202
- package/dist/src/foundation/pi-engine-adapter/adapter.js +76 -174
- package/dist/src/foundation/pi-engine-adapter/conformance.d.ts +24 -1
- package/dist/src/foundation/pi-engine-adapter/conformance.js +60 -15
- package/dist/src/foundation/pi-engine-adapter/index.d.ts +6 -1
- package/dist/src/foundation/pi-engine-adapter/index.js +6 -1
- package/dist/src/foundation/pi-engine-adapter/model-auth-integration.d.ts +30 -0
- package/dist/src/foundation/pi-engine-adapter/model-auth-integration.js +61 -0
- package/dist/src/foundation/pi-engine-adapter/public-main-entry.d.ts +5 -0
- package/dist/src/foundation/pi-engine-adapter/public-main-entry.js +18 -0
- package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.d.ts +31 -0
- package/dist/src/foundation/pi-engine-adapter/resource-extension-integration.js +80 -0
- package/dist/src/foundation/pi-engine-adapter/runtime-integration.d.ts +18 -0
- package/dist/src/foundation/pi-engine-adapter/runtime-integration.js +32 -0
- package/dist/src/foundation/pi-engine-adapter/session-integration.d.ts +43 -0
- package/dist/src/foundation/pi-engine-adapter/session-integration.js +97 -0
- package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +17 -0
- package/dist/src/foundation/pi-engine-adapter/settings-integration.js +85 -0
- package/dist/src/foundation/pi-engine-adapter/workflow-controllers.d.ts +20 -0
- package/dist/src/foundation/pi-engine-adapter/workflow-controllers.js +48 -0
- package/dist/src/foundation/pi-engine-adapter/workflows.d.ts +0 -1
- package/dist/src/foundation/pi-engine-adapter/workflows.js +0 -1
- package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +1 -0
- package/dist/src/foundation/pi-owned-ui-integration/index.js +1 -0
- package/dist/src/{features/owned-ui/pi-session-shell.d.ts → foundation/pi-owned-ui-integration/session-shell.d.ts} +17 -14
- package/dist/src/{features/owned-ui/pi-session-shell.js → foundation/pi-owned-ui-integration/session-shell.js} +59 -60
- package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts +0 -1
- package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js +0 -1
- package/dist/src/foundation/pi-tui-runtime-adapter/conformance.d.ts +8 -4
- package/dist/src/foundation/pi-tui-runtime-adapter/conformance.js +22 -9
- package/dist/src/foundation/pi-tui-runtime-adapter/contracts.d.ts +0 -2
- package/dist/src/foundation/pi-tui-runtime-adapter/contracts.js +1 -2
- package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts +1 -1
- package/dist/src/foundation/pi-tui-runtime-adapter/index.js +1 -1
- package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.d.ts +4 -0
- package/dist/src/foundation/pi-tui-runtime-adapter/presentation-adapter.js +48 -0
- package/dist/src/foundation/presentation-contracts/index.d.ts +96 -0
- package/dist/src/foundation/presentation-contracts/index.js +38 -0
- package/dist/src/foundation/protocol/client.d.ts +0 -1
- package/dist/src/foundation/protocol/client.js +0 -1
- package/dist/src/foundation/protocol/index.d.ts +0 -1
- package/dist/src/foundation/protocol/index.js +0 -1
- package/dist/src/foundation/protocol/messages.d.ts +1 -2
- package/dist/src/foundation/protocol/messages.js +2 -2
- package/dist/src/foundation/release/bootstrap.d.ts +0 -1
- package/dist/src/foundation/release/bootstrap.js +55 -22
- package/dist/src/foundation/release/cohort-selection.d.ts +0 -1
- package/dist/src/foundation/release/cohort-selection.js +0 -1
- package/dist/src/foundation/release/cohort-state.d.ts +3 -2
- package/dist/src/foundation/release/cohort-state.js +5 -4
- package/dist/src/foundation/release/concurrency.d.ts +1 -0
- package/dist/src/foundation/release/concurrency.js +17 -0
- package/dist/src/foundation/release/development-preview-release.d.ts +2 -2
- package/dist/src/foundation/release/development-preview-release.js +3 -2
- package/dist/src/foundation/release/index.d.ts +0 -1
- package/dist/src/foundation/release/index.js +0 -1
- package/dist/src/foundation/release/process-cleanup.d.ts +0 -1
- package/dist/src/foundation/release/process-cleanup.js +0 -1
- package/dist/src/foundation/release/release-gc.d.ts +0 -1
- package/dist/src/foundation/release/release-gc.js +0 -1
- package/dist/src/foundation/release/release-store.d.ts +24 -6
- package/dist/src/foundation/release/release-store.js +56 -21
- package/dist/src/foundation/release/release.d.ts +5 -6
- package/dist/src/foundation/release/release.js +21 -19
- package/dist/src/foundation/release/stable-release.d.ts +2 -2
- package/dist/src/foundation/release/stable-release.js +6 -5
- package/dist/src/foundation/release/update-transaction.d.ts +2 -2
- package/dist/src/foundation/release/update-transaction.js +8 -7
- package/dist/src/foundation/release/update.d.ts +2 -3
- package/dist/src/foundation/release/update.js +31 -29
- package/dist/src/foundation/storage/control-store.d.ts +0 -1
- package/dist/src/foundation/storage/control-store.js +28 -7
- package/dist/src/foundation/storage/index.d.ts +0 -1
- package/dist/src/foundation/storage/index.js +0 -1
- package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts +0 -1
- package/dist/src/foundation/structured-agent-runtime/backpressure.js +0 -1
- package/dist/src/foundation/structured-agent-runtime/commands.d.ts +0 -1
- package/dist/src/foundation/structured-agent-runtime/commands.js +0 -1
- package/dist/src/foundation/structured-agent-runtime/handshake.d.ts +2 -3
- package/dist/src/foundation/structured-agent-runtime/handshake.js +13 -13
- package/dist/src/foundation/structured-agent-runtime/index.d.ts +0 -1
- package/dist/src/foundation/structured-agent-runtime/index.js +0 -1
- package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts +0 -1
- package/dist/src/foundation/structured-agent-runtime/reconnection.js +0 -1
- package/dist/src/foundation/structured-agent-runtime/state.d.ts +0 -1
- package/dist/src/foundation/structured-agent-runtime/state.js +0 -1
- package/dist/src/foundation/supervision/index.d.ts +1 -2
- package/dist/src/foundation/supervision/index.js +1 -2
- package/dist/src/foundation/supervision/main.d.ts +0 -1
- package/dist/src/foundation/supervision/main.js +11 -10
- package/dist/src/foundation/supervision/paths.d.ts +1 -2
- package/dist/src/foundation/supervision/paths.js +1 -2
- package/dist/src/foundation/supervision/server.d.ts +3 -4
- package/dist/src/foundation/supervision/server.js +7 -6
- package/dist/src/foundation/transparent-terminal/command-resolution.d.ts +0 -1
- package/dist/src/foundation/transparent-terminal/command-resolution.js +0 -1
- package/dist/src/foundation/transparent-terminal/foreground-broker.d.ts +0 -1
- package/dist/src/foundation/transparent-terminal/foreground-broker.js +0 -1
- package/dist/src/foundation/transparent-terminal/index.d.ts +1 -1
- package/dist/src/foundation/transparent-terminal/index.js +1 -1
- package/dist/src/foundation/transparent-terminal/main.d.ts +3 -4
- package/dist/src/foundation/transparent-terminal/main.js +8 -21
- package/dist/src/foundation/transparent-terminal/native-launcher.d.ts +0 -1
- package/dist/src/foundation/transparent-terminal/native-launcher.js +0 -1
- package/dist/src/foundation/workspace-contracts/index.d.ts +0 -1
- package/dist/src/foundation/workspace-contracts/index.js +0 -1
- package/dist/src/foundation/workspace-contracts/model.d.ts +0 -1
- package/dist/src/foundation/workspace-contracts/model.js +0 -1
- package/dist/src/foundation/workspace-contracts/validation.d.ts +0 -1
- package/dist/src/foundation/workspace-contracts/validation.js +0 -1
- package/dist/src/product-identity.d.ts +37 -0
- package/dist/src/product-identity.js +149 -0
- package/dist/src/product-identity.json +96 -0
- package/docs/architecture/boundaries.md +2 -2
- package/docs/architecture/project-structure.md +2 -2
- package/docs/architecture/resource-and-data-policy.md +1 -1
- package/docs/architecture/terminal-host-proof-gate.md +2 -2
- package/docs/architecture/terminal-host-provenance.md +3 -3
- package/docs/architecture/terminal-host-spike-evidence.md +1 -1
- package/docs/architecture/toolchain.md +33 -7
- package/docs/features/launch-profiles.md +6 -6
- package/docs/manual-pi-boundary-candidate.md +33 -0
- package/docs/manual-transparent-checkpoint.md +11 -11
- package/package.json +10 -3
- package/bin/addone-ui.js +0 -20
- package/dist/src/cli/dispatch.d.ts.map +0 -1
- package/dist/src/cli/dispatch.js.map +0 -1
- package/dist/src/cli/index.d.ts.map +0 -1
- package/dist/src/cli/index.js.map +0 -1
- package/dist/src/cli/version-stats.d.ts.map +0 -1
- package/dist/src/cli/version-stats.js.map +0 -1
- package/dist/src/cli/version.d.ts.map +0 -1
- package/dist/src/cli/version.js.map +0 -1
- package/dist/src/features/launch/development-launch.d.ts.map +0 -1
- package/dist/src/features/launch/development-launch.js.map +0 -1
- package/dist/src/features/launch/index.d.ts.map +0 -1
- package/dist/src/features/launch/index.js.map +0 -1
- package/dist/src/features/launch/initialize-profile.d.ts.map +0 -1
- package/dist/src/features/launch/initialize-profile.js.map +0 -1
- package/dist/src/features/launch/intent.d.ts.map +0 -1
- package/dist/src/features/launch/intent.js.map +0 -1
- package/dist/src/features/launch/prepare-launch.d.ts.map +0 -1
- package/dist/src/features/launch/prepare-launch.js.map +0 -1
- package/dist/src/features/launch/profile-paths.d.ts.map +0 -1
- package/dist/src/features/launch/profile-paths.js.map +0 -1
- package/dist/src/features/launch/profiles.d.ts.map +0 -1
- package/dist/src/features/launch/profiles.js.map +0 -1
- package/dist/src/features/launch/runtime-selection.d.ts.map +0 -1
- package/dist/src/features/launch/runtime-selection.js.map +0 -1
- package/dist/src/features/owned-ui/customization.d.ts.map +0 -1
- package/dist/src/features/owned-ui/customization.js.map +0 -1
- package/dist/src/features/owned-ui/diagnostics.d.ts.map +0 -1
- package/dist/src/features/owned-ui/diagnostics.js.map +0 -1
- package/dist/src/features/owned-ui/index.d.ts.map +0 -1
- package/dist/src/features/owned-ui/index.js.map +0 -1
- package/dist/src/features/owned-ui/pi-session-shell.d.ts.map +0 -1
- package/dist/src/features/owned-ui/pi-session-shell.js.map +0 -1
- package/dist/src/features/owned-ui/run.d.ts.map +0 -1
- package/dist/src/features/owned-ui/run.js.map +0 -1
- package/dist/src/features/workspace/capabilities.d.ts.map +0 -1
- package/dist/src/features/workspace/capabilities.js.map +0 -1
- package/dist/src/features/workspace/index.d.ts.map +0 -1
- package/dist/src/features/workspace/index.js.map +0 -1
- package/dist/src/features/workspace/presentation.d.ts.map +0 -1
- package/dist/src/features/workspace/presentation.js.map +0 -1
- package/dist/src/features/workspace/reconciliation.d.ts.map +0 -1
- package/dist/src/features/workspace/reconciliation.js.map +0 -1
- package/dist/src/features/workspace/reducer.d.ts.map +0 -1
- package/dist/src/features/workspace/reducer.js.map +0 -1
- package/dist/src/features/workspace/router.d.ts.map +0 -1
- package/dist/src/features/workspace/router.js.map +0 -1
- package/dist/src/features/workspace/store.d.ts.map +0 -1
- package/dist/src/features/workspace/store.js.map +0 -1
- package/dist/src/foundation/lifecycle/index.d.ts.map +0 -1
- package/dist/src/foundation/lifecycle/index.js.map +0 -1
- package/dist/src/foundation/lifecycle/model.d.ts.map +0 -1
- package/dist/src/foundation/lifecycle/model.js.map +0 -1
- package/dist/src/foundation/lifecycle/paths.d.ts.map +0 -1
- package/dist/src/foundation/lifecycle/paths.js.map +0 -1
- package/dist/src/foundation/native-host-protocol/codec.d.ts.map +0 -1
- package/dist/src/foundation/native-host-protocol/codec.js.map +0 -1
- package/dist/src/foundation/native-host-protocol/evidence.d.ts.map +0 -1
- package/dist/src/foundation/native-host-protocol/evidence.js.map +0 -1
- package/dist/src/foundation/native-host-protocol/index.d.ts.map +0 -1
- package/dist/src/foundation/native-host-protocol/index.js.map +0 -1
- package/dist/src/foundation/native-host-protocol/messages.d.ts.map +0 -1
- package/dist/src/foundation/native-host-protocol/messages.js.map +0 -1
- package/dist/src/foundation/native-host-protocol/proof-gate.d.ts.map +0 -1
- package/dist/src/foundation/native-host-protocol/proof-gate.js.map +0 -1
- package/dist/src/foundation/owned-ui-contracts/extension-ui.d.ts.map +0 -1
- package/dist/src/foundation/owned-ui-contracts/extension-ui.js.map +0 -1
- package/dist/src/foundation/owned-ui-contracts/index.d.ts.map +0 -1
- package/dist/src/foundation/owned-ui-contracts/index.js.map +0 -1
- package/dist/src/foundation/owned-ui-contracts/model.d.ts.map +0 -1
- package/dist/src/foundation/owned-ui-contracts/model.js.map +0 -1
- package/dist/src/foundation/owned-ui-contracts/validation.d.ts.map +0 -1
- package/dist/src/foundation/owned-ui-contracts/validation.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/components.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/components.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/conformance.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/conformance.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/index.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/index.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-components.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-components.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-editor-autocomplete.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-extension-ui.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-extension-ui.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-footer-status.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-footer-status.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-presenters-transcript.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-shared-facade.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/shell-shared-facade.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/theme.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/theme.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/adjacent/core/keybindings.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/countdown-timer.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/custom-entry.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/daxnuts.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/earendil-announcement.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/extension-editor.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/first-time-setup.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/markdown-transform.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/mermaid.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/scoped-models-selector.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector-search.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/session-selector.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/skill-invocation-message.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/status-indicator.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/tree-selector.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/components/trust-selector.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/external-editor.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/external-editor.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/model-search.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/model-search.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme-controller.js.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.d.ts.map +0 -1
- package/dist/src/foundation/pi-component-adapter/upstream/theme/theme.js.map +0 -1
- package/dist/src/foundation/pi-engine-adapter/adapter.d.ts.map +0 -1
- package/dist/src/foundation/pi-engine-adapter/adapter.js.map +0 -1
- package/dist/src/foundation/pi-engine-adapter/conformance.d.ts.map +0 -1
- package/dist/src/foundation/pi-engine-adapter/conformance.js.map +0 -1
- package/dist/src/foundation/pi-engine-adapter/index.d.ts.map +0 -1
- package/dist/src/foundation/pi-engine-adapter/index.js.map +0 -1
- package/dist/src/foundation/pi-engine-adapter/workflows.d.ts.map +0 -1
- package/dist/src/foundation/pi-engine-adapter/workflows.js.map +0 -1
- package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts.map +0 -1
- package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js.map +0 -1
- package/dist/src/foundation/pi-tui-runtime-adapter/conformance.d.ts.map +0 -1
- package/dist/src/foundation/pi-tui-runtime-adapter/conformance.js.map +0 -1
- package/dist/src/foundation/pi-tui-runtime-adapter/contracts.d.ts.map +0 -1
- package/dist/src/foundation/pi-tui-runtime-adapter/contracts.js.map +0 -1
- package/dist/src/foundation/pi-tui-runtime-adapter/index.d.ts.map +0 -1
- package/dist/src/foundation/pi-tui-runtime-adapter/index.js.map +0 -1
- package/dist/src/foundation/protocol/client.d.ts.map +0 -1
- package/dist/src/foundation/protocol/client.js.map +0 -1
- package/dist/src/foundation/protocol/index.d.ts.map +0 -1
- package/dist/src/foundation/protocol/index.js.map +0 -1
- package/dist/src/foundation/protocol/messages.d.ts.map +0 -1
- package/dist/src/foundation/protocol/messages.js.map +0 -1
- package/dist/src/foundation/release/bootstrap.d.ts.map +0 -1
- package/dist/src/foundation/release/bootstrap.js.map +0 -1
- package/dist/src/foundation/release/cohort-selection.d.ts.map +0 -1
- package/dist/src/foundation/release/cohort-selection.js.map +0 -1
- package/dist/src/foundation/release/cohort-state.d.ts.map +0 -1
- package/dist/src/foundation/release/cohort-state.js.map +0 -1
- package/dist/src/foundation/release/development-preview-release.d.ts.map +0 -1
- package/dist/src/foundation/release/development-preview-release.js.map +0 -1
- package/dist/src/foundation/release/index.d.ts.map +0 -1
- package/dist/src/foundation/release/index.js.map +0 -1
- package/dist/src/foundation/release/process-cleanup.d.ts.map +0 -1
- package/dist/src/foundation/release/process-cleanup.js.map +0 -1
- package/dist/src/foundation/release/release-gc.d.ts.map +0 -1
- package/dist/src/foundation/release/release-gc.js.map +0 -1
- package/dist/src/foundation/release/release-store.d.ts.map +0 -1
- package/dist/src/foundation/release/release-store.js.map +0 -1
- package/dist/src/foundation/release/release.d.ts.map +0 -1
- package/dist/src/foundation/release/release.js.map +0 -1
- package/dist/src/foundation/release/stable-release.d.ts.map +0 -1
- package/dist/src/foundation/release/stable-release.js.map +0 -1
- package/dist/src/foundation/release/update-transaction.d.ts.map +0 -1
- package/dist/src/foundation/release/update-transaction.js.map +0 -1
- package/dist/src/foundation/release/update.d.ts.map +0 -1
- package/dist/src/foundation/release/update.js.map +0 -1
- package/dist/src/foundation/storage/control-store.d.ts.map +0 -1
- package/dist/src/foundation/storage/control-store.js.map +0 -1
- package/dist/src/foundation/storage/index.d.ts.map +0 -1
- package/dist/src/foundation/storage/index.js.map +0 -1
- package/dist/src/foundation/structured-agent-runtime/backpressure.d.ts.map +0 -1
- package/dist/src/foundation/structured-agent-runtime/backpressure.js.map +0 -1
- package/dist/src/foundation/structured-agent-runtime/commands.d.ts.map +0 -1
- package/dist/src/foundation/structured-agent-runtime/commands.js.map +0 -1
- package/dist/src/foundation/structured-agent-runtime/handshake.d.ts.map +0 -1
- package/dist/src/foundation/structured-agent-runtime/handshake.js.map +0 -1
- package/dist/src/foundation/structured-agent-runtime/index.d.ts.map +0 -1
- package/dist/src/foundation/structured-agent-runtime/index.js.map +0 -1
- package/dist/src/foundation/structured-agent-runtime/reconnection.d.ts.map +0 -1
- package/dist/src/foundation/structured-agent-runtime/reconnection.js.map +0 -1
- package/dist/src/foundation/structured-agent-runtime/state.d.ts.map +0 -1
- package/dist/src/foundation/structured-agent-runtime/state.js.map +0 -1
- package/dist/src/foundation/supervision/index.d.ts.map +0 -1
- package/dist/src/foundation/supervision/index.js.map +0 -1
- package/dist/src/foundation/supervision/main.d.ts.map +0 -1
- package/dist/src/foundation/supervision/main.js.map +0 -1
- package/dist/src/foundation/supervision/paths.d.ts.map +0 -1
- package/dist/src/foundation/supervision/paths.js.map +0 -1
- package/dist/src/foundation/supervision/server.d.ts.map +0 -1
- package/dist/src/foundation/supervision/server.js.map +0 -1
- package/dist/src/foundation/transparent-terminal/command-resolution.d.ts.map +0 -1
- package/dist/src/foundation/transparent-terminal/command-resolution.js.map +0 -1
- package/dist/src/foundation/transparent-terminal/foreground-broker.d.ts.map +0 -1
- package/dist/src/foundation/transparent-terminal/foreground-broker.js.map +0 -1
- package/dist/src/foundation/transparent-terminal/index.d.ts.map +0 -1
- package/dist/src/foundation/transparent-terminal/index.js.map +0 -1
- package/dist/src/foundation/transparent-terminal/main.d.ts.map +0 -1
- package/dist/src/foundation/transparent-terminal/main.js.map +0 -1
- package/dist/src/foundation/transparent-terminal/native-launcher.d.ts.map +0 -1
- package/dist/src/foundation/transparent-terminal/native-launcher.js.map +0 -1
- package/dist/src/foundation/workspace-contracts/index.d.ts.map +0 -1
- package/dist/src/foundation/workspace-contracts/index.js.map +0 -1
- package/dist/src/foundation/workspace-contracts/model.d.ts.map +0 -1
- package/dist/src/foundation/workspace-contracts/model.js.map +0 -1
- package/dist/src/foundation/workspace-contracts/validation.d.ts.map +0 -1
- package/dist/src/foundation/workspace-contracts/validation.js.map +0 -1
- /package/bin/{addone-supervisor.js → a1-supervisor.js} +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare const PREVIEW_RELEASE_SCHEMA: string;
|
|
1
2
|
export interface DevelopmentPreviewCandidate {
|
|
2
3
|
readonly version: string;
|
|
3
4
|
readonly requiresVersionCommit: boolean;
|
|
@@ -27,7 +28,7 @@ export interface UncertifiedDevelopmentPreviewEvidenceInput {
|
|
|
27
28
|
readonly recordedAt: string;
|
|
28
29
|
}
|
|
29
30
|
export interface UncertifiedDevelopmentPreviewEvidence extends UncertifiedDevelopmentPreviewEvidenceInput {
|
|
30
|
-
readonly schema:
|
|
31
|
+
readonly schema: typeof PREVIEW_RELEASE_SCHEMA;
|
|
31
32
|
readonly channel: "next";
|
|
32
33
|
readonly certificationStatus: "uncertified-development-preview";
|
|
33
34
|
readonly terminalCapability: "owned-ui";
|
|
@@ -46,4 +47,3 @@ export declare function selectDevelopmentPreviewCandidate(currentVersion: string
|
|
|
46
47
|
export declare function publishDevelopmentPreviewWithRecovery(publish: () => Promise<void>, verify: () => Promise<void>): Promise<DevelopmentPreviewPublishResult>;
|
|
47
48
|
export declare function verifyDevelopmentPreviewRegistry(version: string, observe: () => Promise<DevelopmentPreviewRegistryState>, repairNextTag: () => Promise<void>, options?: DevelopmentPreviewVerificationOptions): Promise<void>;
|
|
48
49
|
export declare function developmentPreviewTarballName(packageName: string, version: string): string;
|
|
49
|
-
//# sourceMappingURL=development-preview-release.d.ts.map
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { compare, inc, prerelease, valid } from "semver";
|
|
2
|
+
import { PRODUCT_IDENTITY } from "../../product-identity.js";
|
|
3
|
+
export const PREVIEW_RELEASE_SCHEMA = PRODUCT_IDENTITY.evidence.previewReleaseSchema;
|
|
2
4
|
export function createUncertifiedDevelopmentPreviewEvidence(input) {
|
|
3
5
|
const prereleaseParts = prerelease(input.version);
|
|
4
6
|
if (valid(input.version) === null || prereleaseParts?.[0] !== "dev") {
|
|
5
7
|
throw new Error(`uncertified preview requires a development prerelease: ${input.version}`);
|
|
6
8
|
}
|
|
7
9
|
return {
|
|
8
|
-
schema:
|
|
10
|
+
schema: PREVIEW_RELEASE_SCHEMA,
|
|
9
11
|
channel: "next",
|
|
10
12
|
certificationStatus: "uncertified-development-preview",
|
|
11
13
|
terminalCapability: "owned-ui",
|
|
@@ -110,4 +112,3 @@ export function developmentPreviewTarballName(packageName, version) {
|
|
|
110
112
|
throw new Error(`invalid package name: ${packageName}`);
|
|
111
113
|
return `${unscopedName}-${version}.tgz`;
|
|
112
114
|
}
|
|
113
|
-
//# sourceMappingURL=development-preview-release.js.map
|
|
@@ -12,4 +12,3 @@ export declare function cleanupVerifiedOwner(metadata: SupervisorEndpointMetadat
|
|
|
12
12
|
readonly allowLiveGenerations?: boolean;
|
|
13
13
|
readonly reason?: "stale-idle-owner" | "explicit-update" | "legacy-mutable-install";
|
|
14
14
|
}): Promise<CleanupDiagnostics>;
|
|
15
|
-
//# sourceMappingURL=process-cleanup.d.ts.map
|
|
@@ -3,4 +3,3 @@ import { CohortStateStore } from "./cohort-state.js";
|
|
|
3
3
|
* retention, process, agent, or migration reference. State is detached first;
|
|
4
4
|
* a filesystem failure can leave a safe orphan but never a dangling selector. */
|
|
5
5
|
export declare function collectRelease(store: CohortStateStore, dataDir: string, releaseId: string, externalReferences: readonly string[]): Promise<void>;
|
|
6
|
-
//# sourceMappingURL=release-gc.d.ts.map
|
|
@@ -1,11 +1,29 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
export declare const
|
|
3
|
-
export interface MaterializedRelease extends
|
|
1
|
+
import { type ReleaseIdentity } from "./release.js";
|
|
2
|
+
export declare const RELEASE_MANIFEST_FILENAME: string;
|
|
3
|
+
export interface MaterializedRelease extends ReleaseIdentity {
|
|
4
4
|
readonly releaseRoot: string;
|
|
5
5
|
}
|
|
6
|
-
export
|
|
6
|
+
export interface MaterializeReleaseOptions {
|
|
7
|
+
readonly onProgress?: (progress: {
|
|
8
|
+
readonly phase: "copying";
|
|
9
|
+
readonly fileCount: number;
|
|
10
|
+
}) => void;
|
|
11
|
+
}
|
|
12
|
+
export interface CertifiedReleaseRecord {
|
|
13
|
+
readonly releaseId: string;
|
|
14
|
+
readonly releaseRoot: string;
|
|
15
|
+
readonly packageVersion?: string;
|
|
16
|
+
readonly contentDigest: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function materializeRelease(packageRoot: string, dataDir: string, options?: MaterializeReleaseOptions): Promise<MaterializedRelease>;
|
|
7
19
|
export declare function readMaterializedRelease(releaseRoot: string): Promise<MaterializedRelease>;
|
|
8
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Load metadata for a release whose bytes were already certified by the
|
|
22
|
+
* current parent process or an authenticated live supervisor. Callers must
|
|
23
|
+
* establish one of those preconditions; untrusted releases require full
|
|
24
|
+
* verification.
|
|
25
|
+
*/
|
|
26
|
+
export declare function readCertifiedReleaseManifest(record: CertifiedReleaseRecord, selectedStoreRoot: string): Promise<MaterializedRelease>;
|
|
27
|
+
export declare function verifyMaterializedRelease(releaseRoot: string, expected?: ReleaseIdentity, selectedStoreRoot?: string): Promise<MaterializedRelease>;
|
|
9
28
|
export declare function assertImmutableExecutionRoot(release: MaterializedRelease, dataDir: string): Promise<void>;
|
|
10
29
|
export declare function resolveReleaseEntryPoint(release: MaterializedRelease, entryPoint: string): Promise<string>;
|
|
11
|
-
//# sourceMappingURL=release-store.d.ts.map
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { createHash, randomUUID } from "node:crypto";
|
|
2
2
|
import { chmod, copyFile, lstat, mkdir, readFile, realpath, rename, rm, writeFile } from "node:fs/promises";
|
|
3
3
|
import { dirname, isAbsolute, relative, resolve, sep } from "node:path";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
import { PRODUCT_PACKAGE_NAME, deriveReleaseIdentity, resolveWithin } from "./release.js";
|
|
5
|
+
import { PRODUCT_IDENTITY, PRODUCT_TEXT } from "../../product-identity.js";
|
|
6
|
+
import { mapWithConcurrency } from "./concurrency.js";
|
|
7
|
+
const RELEASE_FILE_IO_CONCURRENCY = 32;
|
|
8
|
+
export const RELEASE_MANIFEST_FILENAME = PRODUCT_IDENTITY.manifest.releaseFilename;
|
|
9
|
+
export async function materializeRelease(packageRoot, dataDir, options = {}) {
|
|
7
10
|
const identity = await deriveReleaseIdentity(packageRoot);
|
|
8
11
|
const storeRoot = resolve(dataDir, "releases");
|
|
9
12
|
await mkdir(storeRoot, { recursive: true, mode: 0o700 });
|
|
@@ -11,20 +14,31 @@ export async function materializeRelease(packageRoot, dataDir) {
|
|
|
11
14
|
const existing = await lstat(releaseRoot).catch(() => null);
|
|
12
15
|
if (existing)
|
|
13
16
|
return await verifyMaterializedRelease(releaseRoot, identity);
|
|
17
|
+
options.onProgress?.({ phase: "copying", fileCount: identity.files.length });
|
|
14
18
|
const candidate = resolveWithin(storeRoot, `.candidate-${identity.releaseId}-${randomUUID()}`);
|
|
15
19
|
await mkdir(candidate, { recursive: false, mode: 0o700 });
|
|
16
20
|
try {
|
|
17
|
-
|
|
21
|
+
const directories = [...new Set(identity.files.map(file => dirname(resolveWithin(candidate, file.path))))];
|
|
22
|
+
await mapWithConcurrency(directories, RELEASE_FILE_IO_CONCURRENCY, async (directory) => {
|
|
23
|
+
await mkdir(directory, { recursive: true, mode: 0o700 });
|
|
24
|
+
});
|
|
25
|
+
await mapWithConcurrency(identity.files, RELEASE_FILE_IO_CONCURRENCY, async (file) => {
|
|
18
26
|
const source = resolveWithin(identity.packageRoot, file.path);
|
|
19
27
|
const destination = resolveWithin(candidate, file.path);
|
|
20
|
-
await mkdir(dirname(destination), { recursive: true, mode: 0o700 });
|
|
21
28
|
await copyFile(source, destination);
|
|
22
29
|
await chmod(destination, file.executable ? 0o500 : 0o400);
|
|
30
|
+
});
|
|
31
|
+
await writeFile(resolve(candidate, RELEASE_MANIFEST_FILENAME), JSON.stringify(identity, null, 2), { mode: 0o400, flag: "wx" });
|
|
32
|
+
try {
|
|
33
|
+
await rename(candidate, releaseRoot);
|
|
23
34
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (!await lstat(releaseRoot).catch(() => null))
|
|
37
|
+
throw error;
|
|
38
|
+
await rm(candidate, { recursive: true, force: true });
|
|
39
|
+
return await verifyMaterializedRelease(releaseRoot, identity);
|
|
40
|
+
}
|
|
41
|
+
return { ...identity, releaseRoot: await realpath(releaseRoot) };
|
|
28
42
|
}
|
|
29
43
|
catch (error) {
|
|
30
44
|
await rm(candidate, { recursive: true, force: true });
|
|
@@ -33,14 +47,33 @@ export async function materializeRelease(packageRoot, dataDir) {
|
|
|
33
47
|
}
|
|
34
48
|
export async function readMaterializedRelease(releaseRoot) {
|
|
35
49
|
const canonical = await realpath(releaseRoot);
|
|
36
|
-
const manifest = JSON.parse(await readFile(resolve(canonical,
|
|
50
|
+
const manifest = JSON.parse(await readFile(resolve(canonical, RELEASE_MANIFEST_FILENAME), "utf8"));
|
|
37
51
|
return await verifyMaterializedRelease(canonical, manifest);
|
|
38
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Load metadata for a release whose bytes were already certified by the
|
|
55
|
+
* current parent process or an authenticated live supervisor. Callers must
|
|
56
|
+
* establish one of those preconditions; untrusted releases require full
|
|
57
|
+
* verification.
|
|
58
|
+
*/
|
|
59
|
+
export async function readCertifiedReleaseManifest(record, selectedStoreRoot) {
|
|
60
|
+
const canonical = await realpath(record.releaseRoot);
|
|
61
|
+
assertContained(await realpath(selectedStoreRoot), canonical, "release root is outside the selected release store");
|
|
62
|
+
const manifest = JSON.parse(await readFile(resolveWithin(canonical, RELEASE_MANIFEST_FILENAME), "utf8"));
|
|
63
|
+
validateManifest(manifest);
|
|
64
|
+
if (manifest.releaseId !== record.releaseId || manifest.contentDigest !== record.contentDigest
|
|
65
|
+
|| (record.packageVersion !== undefined && manifest.packageVersion !== record.packageVersion)) {
|
|
66
|
+
throw new Error(`certified release record differs from manifest for ${canonical}`);
|
|
67
|
+
}
|
|
68
|
+
if (canonical.split(sep).at(-1) !== manifest.releaseId)
|
|
69
|
+
throw new Error(`release directory does not match identity ${manifest.releaseId}`);
|
|
70
|
+
return { ...manifest, releaseRoot: canonical };
|
|
71
|
+
}
|
|
39
72
|
export async function verifyMaterializedRelease(releaseRoot, expected, selectedStoreRoot) {
|
|
40
73
|
const canonical = await realpath(releaseRoot);
|
|
41
74
|
if (selectedStoreRoot)
|
|
42
75
|
assertContained(await realpath(selectedStoreRoot), canonical, "release root is outside the selected release store");
|
|
43
|
-
const manifestPath = resolveWithin(canonical,
|
|
76
|
+
const manifestPath = resolveWithin(canonical, RELEASE_MANIFEST_FILENAME);
|
|
44
77
|
const manifest = JSON.parse(await readFile(manifestPath, "utf8"));
|
|
45
78
|
validateManifest(manifest);
|
|
46
79
|
if (expected && (manifest.releaseId !== expected.releaseId || manifest.contentDigest !== expected.contentDigest)) {
|
|
@@ -49,20 +82,23 @@ export async function verifyMaterializedRelease(releaseRoot, expected, selectedS
|
|
|
49
82
|
if (canonical.split(sep).at(-1) !== manifest.releaseId && !canonical.split(sep).at(-1)?.startsWith(`.candidate-${manifest.releaseId}-`)) {
|
|
50
83
|
throw new Error(`release directory does not match identity ${manifest.releaseId}`);
|
|
51
84
|
}
|
|
52
|
-
|
|
85
|
+
await mapWithConcurrency(manifest.files, RELEASE_FILE_IO_CONCURRENCY, async (file) => {
|
|
53
86
|
await verifyFile(canonical, file);
|
|
87
|
+
});
|
|
54
88
|
const recomputed = digestManifestFiles(manifest.files);
|
|
55
89
|
if (recomputed !== manifest.contentDigest)
|
|
56
90
|
throw new Error(`release content digest mismatch for ${manifest.releaseId}`);
|
|
57
91
|
return { ...manifest, releaseRoot: canonical };
|
|
58
92
|
}
|
|
59
93
|
export async function assertImmutableExecutionRoot(release, dataDir) {
|
|
60
|
-
await
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
94
|
+
const storeRoot = await realpath(resolve(dataDir, "releases"));
|
|
95
|
+
assertContained(storeRoot, release.releaseRoot, "release root is outside the selected release store");
|
|
96
|
+
const selectedRoot = process.env[PRODUCT_IDENTITY.environment.releaseRoot];
|
|
97
|
+
if (!selectedRoot)
|
|
98
|
+
throw new Error(PRODUCT_TEXT.diagnostic("persistent process has no immutable release root"));
|
|
99
|
+
const selected = await realpath(selectedRoot);
|
|
64
100
|
if (selected !== release.releaseRoot)
|
|
65
|
-
throw new Error("persistent
|
|
101
|
+
throw new Error(PRODUCT_TEXT.diagnostic("persistent process selected a different immutable release root"));
|
|
66
102
|
}
|
|
67
103
|
export async function resolveReleaseEntryPoint(release, entryPoint) {
|
|
68
104
|
const normalized = entryPoint.split("\\").join("/").replace(/^\.\//, "");
|
|
@@ -85,10 +121,10 @@ async function verifyFile(root, file) {
|
|
|
85
121
|
throw new Error(`release file digest mismatch: ${file.path}`);
|
|
86
122
|
}
|
|
87
123
|
function validateManifest(value) {
|
|
88
|
-
if (value.packageName !==
|
|
89
|
-
throw new Error("
|
|
124
|
+
if (value.packageName !== PRODUCT_PACKAGE_NAME || typeof value.packageVersion !== "string")
|
|
125
|
+
throw new Error(PRODUCT_TEXT.diagnostic("release manifest metadata is invalid"));
|
|
90
126
|
if (!/^[a-f0-9]{64}$/.test(value.contentDigest) || !/^[0-9A-Za-z.+_-]+-[a-f0-9]{20}$/.test(value.releaseId))
|
|
91
|
-
throw new Error("
|
|
127
|
+
throw new Error(PRODUCT_TEXT.diagnostic("release identity is invalid"));
|
|
92
128
|
if (!Array.isArray(value.files) || value.files.length === 0)
|
|
93
129
|
throw new Error("release manifest contains no files");
|
|
94
130
|
for (const file of value.files) {
|
|
@@ -112,4 +148,3 @@ function assertContained(parent, child, message) {
|
|
|
112
148
|
return;
|
|
113
149
|
throw new Error(`${message}: ${child}`);
|
|
114
150
|
}
|
|
115
|
-
//# sourceMappingURL=release-store.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const PRODUCT_PACKAGE_NAME: string;
|
|
2
2
|
export interface ReleaseFileIdentity {
|
|
3
3
|
readonly path: string;
|
|
4
4
|
readonly bytes: number;
|
|
5
5
|
readonly sha256: string;
|
|
6
6
|
readonly executable: boolean;
|
|
7
7
|
}
|
|
8
|
-
export interface
|
|
9
|
-
readonly packageName: typeof
|
|
8
|
+
export interface ReleaseIdentity {
|
|
9
|
+
readonly packageName: typeof PRODUCT_PACKAGE_NAME;
|
|
10
10
|
readonly packageVersion: string;
|
|
11
11
|
readonly contentDigest: string;
|
|
12
12
|
readonly releaseId: string;
|
|
@@ -14,11 +14,10 @@ export interface AddOneReleaseIdentity {
|
|
|
14
14
|
readonly files: readonly ReleaseFileIdentity[];
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
|
-
* Derive
|
|
17
|
+
* Derive release execution identity only from installed distribution metadata and
|
|
18
18
|
* bytes. The version remains display metadata; the digest selects executable
|
|
19
19
|
* content.
|
|
20
20
|
*/
|
|
21
|
-
export declare function deriveReleaseIdentity(packageRoot: string): Promise<
|
|
21
|
+
export declare function deriveReleaseIdentity(packageRoot: string): Promise<ReleaseIdentity>;
|
|
22
22
|
export declare function resolveWithin(root: string, candidate: string): string;
|
|
23
23
|
export declare function packageRootFromModule(moduleUrl: string): string;
|
|
24
|
-
//# sourceMappingURL=release.d.ts.map
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { lstat, readFile, readdir, realpath } from "node:fs/promises";
|
|
3
3
|
import { basename, dirname, isAbsolute, relative, resolve, sep } from "node:path";
|
|
4
|
-
|
|
4
|
+
import { PRODUCT_IDENTITY, PRODUCT_TEXT } from "../../product-identity.js";
|
|
5
|
+
import { mapWithConcurrency } from "./concurrency.js";
|
|
6
|
+
const RELEASE_FILE_IO_CONCURRENCY = 32;
|
|
7
|
+
export const PRODUCT_PACKAGE_NAME = PRODUCT_IDENTITY.packageName;
|
|
5
8
|
/**
|
|
6
|
-
* Derive
|
|
9
|
+
* Derive release execution identity only from installed distribution metadata and
|
|
7
10
|
* bytes. The version remains display metadata; the digest selects executable
|
|
8
11
|
* content.
|
|
9
12
|
*/
|
|
@@ -11,10 +14,10 @@ export async function deriveReleaseIdentity(packageRoot) {
|
|
|
11
14
|
const canonicalRoot = await realpath(packageRoot);
|
|
12
15
|
const manifestPath = resolve(canonicalRoot, "package.json");
|
|
13
16
|
const manifest = JSON.parse(await readFile(manifestPath, "utf8"));
|
|
14
|
-
if (manifest.name !==
|
|
15
|
-
throw new Error(`unexpected
|
|
17
|
+
if (manifest.name !== PRODUCT_PACKAGE_NAME)
|
|
18
|
+
throw new Error(`unexpected ${PRODUCT_TEXT.displayName} package name: ${String(manifest.name)}`);
|
|
16
19
|
if (typeof manifest.version !== "string" || manifest.version.length === 0)
|
|
17
|
-
throw new Error("
|
|
20
|
+
throw new Error(PRODUCT_TEXT.diagnostic("package metadata has no version"));
|
|
18
21
|
const roots = distributionRoots(manifest);
|
|
19
22
|
const paths = new Set(["package.json"]);
|
|
20
23
|
for (const root of roots) {
|
|
@@ -22,26 +25,26 @@ export async function deriveReleaseIdentity(packageRoot) {
|
|
|
22
25
|
await collectFiles(canonicalRoot, absolute, paths);
|
|
23
26
|
}
|
|
24
27
|
await collectDependencyClosure(canonicalRoot, canonicalRoot, manifest, paths, new Set());
|
|
25
|
-
const
|
|
26
|
-
|
|
28
|
+
const sortedPaths = [...paths].sort();
|
|
29
|
+
const files = await mapWithConcurrency(sortedPaths, RELEASE_FILE_IO_CONCURRENCY, async (path) => {
|
|
27
30
|
const absolute = resolveWithin(canonicalRoot, path);
|
|
28
31
|
const metadata = await lstat(absolute);
|
|
29
32
|
if (!metadata.isFile())
|
|
30
33
|
throw new Error(`release payload is not a regular file: ${path}`);
|
|
31
34
|
const bytes = await readFile(absolute);
|
|
32
|
-
|
|
35
|
+
return {
|
|
33
36
|
path: normalizeRelative(path),
|
|
34
37
|
bytes: bytes.length,
|
|
35
38
|
sha256: createHash("sha256").update(bytes).digest("hex"),
|
|
36
39
|
executable: (metadata.mode & 0o111) !== 0,
|
|
37
|
-
}
|
|
38
|
-
}
|
|
40
|
+
};
|
|
41
|
+
});
|
|
39
42
|
const digest = createHash("sha256");
|
|
40
43
|
for (const file of files)
|
|
41
44
|
digest.update(`${file.path}\0${file.bytes}\0${file.sha256}\0${file.executable ? 1 : 0}\n`);
|
|
42
45
|
const contentDigest = digest.digest("hex");
|
|
43
46
|
return {
|
|
44
|
-
packageName:
|
|
47
|
+
packageName: PRODUCT_PACKAGE_NAME,
|
|
45
48
|
packageVersion: manifest.version,
|
|
46
49
|
contentDigest,
|
|
47
50
|
releaseId: `${manifest.version}-${contentDigest.slice(0, 20)}`,
|
|
@@ -60,15 +63,15 @@ export function resolveWithin(root, candidate) {
|
|
|
60
63
|
}
|
|
61
64
|
function distributionRoots(manifest) {
|
|
62
65
|
if (!Array.isArray(manifest.files))
|
|
63
|
-
throw new Error("
|
|
66
|
+
throw new Error(PRODUCT_TEXT.diagnostic("package metadata has no distribution files list"));
|
|
64
67
|
const roots = manifest.files.map(value => {
|
|
65
68
|
if (typeof value !== "string" || value.length === 0)
|
|
66
|
-
throw new Error("
|
|
69
|
+
throw new Error(PRODUCT_TEXT.diagnostic("distribution file entry is invalid"));
|
|
67
70
|
const normalized = normalizeRelative(value);
|
|
68
71
|
if (normalized === "package.json")
|
|
69
72
|
return normalized;
|
|
70
73
|
if (isAbsolute(value) || normalized === ".." || normalized.startsWith("../"))
|
|
71
|
-
throw new Error(`
|
|
74
|
+
throw new Error(PRODUCT_TEXT.diagnostic(`distribution path escapes package root: ${value}`));
|
|
72
75
|
return normalized;
|
|
73
76
|
});
|
|
74
77
|
return [...new Set(roots)];
|
|
@@ -98,7 +101,7 @@ async function collectDependencyClosure(root, requesterRoot, manifest, output, v
|
|
|
98
101
|
if (!packagePath) {
|
|
99
102
|
if (optional.has(name))
|
|
100
103
|
continue;
|
|
101
|
-
throw new Error(`installed
|
|
104
|
+
throw new Error(`installed ${PRODUCT_TEXT.displayName} dependency is missing: ${name}`);
|
|
102
105
|
}
|
|
103
106
|
if (visited.has(packagePath))
|
|
104
107
|
continue;
|
|
@@ -130,7 +133,7 @@ function dependencyNames(value) {
|
|
|
130
133
|
if (value === undefined)
|
|
131
134
|
return [];
|
|
132
135
|
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
133
|
-
throw new Error("
|
|
136
|
+
throw new Error(PRODUCT_TEXT.diagnostic("dependency metadata is invalid"));
|
|
134
137
|
return Object.keys(value);
|
|
135
138
|
}
|
|
136
139
|
function normalizeRelative(path) {
|
|
@@ -139,13 +142,12 @@ function normalizeRelative(path) {
|
|
|
139
142
|
export function packageRootFromModule(moduleUrl) {
|
|
140
143
|
const url = new URL(moduleUrl);
|
|
141
144
|
if (url.protocol !== "file:")
|
|
142
|
-
throw new Error(`
|
|
145
|
+
throw new Error(PRODUCT_TEXT.diagnostic(`module URL must be a file URL: ${moduleUrl}`));
|
|
143
146
|
let directory = dirname(url.pathname.replace(/^\/(.:)/, "$1"));
|
|
144
147
|
while (basename(directory) !== "") {
|
|
145
148
|
if (basename(directory) === "dist")
|
|
146
149
|
return dirname(directory);
|
|
147
150
|
directory = dirname(directory);
|
|
148
151
|
}
|
|
149
|
-
throw new Error("could not
|
|
152
|
+
throw new Error(PRODUCT_TEXT.diagnostic("package root could not be derived from module URL"));
|
|
150
153
|
}
|
|
151
|
-
//# sourceMappingURL=release.js.map
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare const STABLE_RELEASE_SCHEMA: string;
|
|
1
2
|
export interface StableReleaseEvidenceInput {
|
|
2
3
|
readonly packageName: string;
|
|
3
4
|
readonly version: string;
|
|
@@ -9,7 +10,7 @@ export interface StableReleaseEvidenceInput {
|
|
|
9
10
|
readonly recordedAt: string;
|
|
10
11
|
}
|
|
11
12
|
export interface StableReleaseEvidence extends StableReleaseEvidenceInput {
|
|
12
|
-
readonly schema:
|
|
13
|
+
readonly schema: typeof STABLE_RELEASE_SCHEMA;
|
|
13
14
|
readonly channel: "latest";
|
|
14
15
|
}
|
|
15
16
|
export interface StableRegistryState {
|
|
@@ -27,4 +28,3 @@ export interface StableRegistryVerificationOptions {
|
|
|
27
28
|
}
|
|
28
29
|
export declare function createStableReleaseEvidence(input: StableReleaseEvidenceInput): StableReleaseEvidence;
|
|
29
30
|
export declare function verifyStableRegistry(expected: StableReleaseEvidence, observe: () => Promise<StableRegistryState>, options?: StableRegistryVerificationOptions): Promise<void>;
|
|
30
|
-
//# sourceMappingURL=stable-release.d.ts.map
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { prerelease, valid } from "semver";
|
|
2
|
-
import {
|
|
2
|
+
import { PRODUCT_PACKAGE_NAME } from "./release.js";
|
|
3
|
+
import { PRODUCT_IDENTITY } from "../../product-identity.js";
|
|
4
|
+
export const STABLE_RELEASE_SCHEMA = PRODUCT_IDENTITY.evidence.stableReleaseSchema;
|
|
3
5
|
export function createStableReleaseEvidence(input) {
|
|
4
|
-
if (input.packageName !==
|
|
6
|
+
if (input.packageName !== PRODUCT_PACKAGE_NAME)
|
|
5
7
|
throw new Error(`unexpected stable package: ${input.packageName}`);
|
|
6
8
|
if (valid(input.version) === null || prerelease(input.version) !== null)
|
|
7
9
|
throw new Error(`stable release requires an exact stable version: ${input.version}`);
|
|
@@ -11,7 +13,7 @@ export function createStableReleaseEvidence(input) {
|
|
|
11
13
|
throw new Error("stable release integrity is malformed");
|
|
12
14
|
if (!/^[a-f0-9]{40}$/.test(input.shasum))
|
|
13
15
|
throw new Error("stable release shasum is malformed");
|
|
14
|
-
return { schema:
|
|
16
|
+
return { schema: STABLE_RELEASE_SCHEMA, channel: "latest", ...input };
|
|
15
17
|
}
|
|
16
18
|
export async function verifyStableRegistry(expected, observe, options = {}) {
|
|
17
19
|
const attempts = options.attempts ?? 12;
|
|
@@ -28,11 +30,10 @@ export async function verifyStableRegistry(expected, observe, options = {}) {
|
|
|
28
30
|
&& state.integrity === expected.integrity
|
|
29
31
|
&& state.shasum === expected.shasum
|
|
30
32
|
&& state.bins.length === 1
|
|
31
|
-
&& state.bins[0] ===
|
|
33
|
+
&& state.bins[0] === PRODUCT_IDENTITY.commandName)
|
|
32
34
|
return;
|
|
33
35
|
if (attempt < attempts)
|
|
34
36
|
await delay(delayMs);
|
|
35
37
|
}
|
|
36
38
|
throw new Error(`npm latest did not match accepted ${expected.packageName}@${expected.version} after ${attempts} attempts: ${JSON.stringify(state)}`);
|
|
37
39
|
}
|
|
38
|
-
//# sourceMappingURL=stable-release.js.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
export declare const UPDATE_JOURNAL_SCHEMA: string;
|
|
1
2
|
import type { UpdateChannel } from "./update.js";
|
|
2
3
|
export type UpdateTransactionPhase = "shutdown-intent" | "ownership-released" | "package-installed" | "materialized" | "certified" | "active-reference-committed" | "supervisor-verified";
|
|
3
4
|
export interface UpdateTransaction {
|
|
4
|
-
readonly
|
|
5
|
+
readonly schema: typeof UPDATE_JOURNAL_SCHEMA;
|
|
5
6
|
readonly transactionId: string;
|
|
6
7
|
readonly channel: UpdateChannel;
|
|
7
8
|
readonly targetVersion: string;
|
|
@@ -28,4 +29,3 @@ export declare class UpdateTransactionStore {
|
|
|
28
29
|
finish(status: "completed" | "rolled-back" | "failed", error?: string | null): Promise<UpdateTransaction>;
|
|
29
30
|
clearCompleted(): Promise<void>;
|
|
30
31
|
}
|
|
31
|
-
//# sourceMappingURL=update-transaction.d.ts.map
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { mkdir, open, readFile, rename, rm } from "node:fs/promises";
|
|
3
3
|
import { dirname, resolve } from "node:path";
|
|
4
|
+
import { PRODUCT_IDENTITY, PRODUCT_TEXT } from "../../product-identity.js";
|
|
5
|
+
export const UPDATE_JOURNAL_SCHEMA = PRODUCT_IDENTITY.protocol.updateJournalSchema;
|
|
4
6
|
export class UpdateTransactionStore {
|
|
5
7
|
path;
|
|
6
8
|
constructor(dataDir) { this.path = resolve(dataDir, "update-transaction.json"); }
|
|
@@ -20,13 +22,13 @@ export class UpdateTransactionStore {
|
|
|
20
22
|
const current = await this.read();
|
|
21
23
|
if (current?.status === "active") {
|
|
22
24
|
if (current.targetVersion !== input.targetVersion || current.channel !== input.channel) {
|
|
23
|
-
throw new Error(`unfinished
|
|
25
|
+
throw new Error(PRODUCT_TEXT.diagnostic(`has unfinished update ${current.transactionId} targeting ${current.targetVersion}; reconcile it before starting ${input.targetVersion}`));
|
|
24
26
|
}
|
|
25
27
|
return current;
|
|
26
28
|
}
|
|
27
29
|
const now = new Date().toISOString();
|
|
28
30
|
return await this.#write({
|
|
29
|
-
|
|
31
|
+
schema: UPDATE_JOURNAL_SCHEMA,
|
|
30
32
|
transactionId: randomUUID(),
|
|
31
33
|
...input,
|
|
32
34
|
phase: "shutdown-intent",
|
|
@@ -45,7 +47,7 @@ export class UpdateTransactionStore {
|
|
|
45
47
|
async finish(status, error = null) {
|
|
46
48
|
const current = await this.read();
|
|
47
49
|
if (!current)
|
|
48
|
-
throw new Error(
|
|
50
|
+
throw new Error(`no ${PRODUCT_TEXT.displayName} update transaction is recorded`);
|
|
49
51
|
return await this.#write({ ...current, status, error, updatedAt: new Date().toISOString() });
|
|
50
52
|
}
|
|
51
53
|
async clearCompleted() {
|
|
@@ -56,7 +58,7 @@ export class UpdateTransactionStore {
|
|
|
56
58
|
async #requiredActive() {
|
|
57
59
|
const current = await this.read();
|
|
58
60
|
if (!current || current.status !== "active")
|
|
59
|
-
throw new Error(
|
|
61
|
+
throw new Error(`no active ${PRODUCT_TEXT.displayName} update transaction is recorded`);
|
|
60
62
|
return current;
|
|
61
63
|
}
|
|
62
64
|
async #write(value) {
|
|
@@ -79,10 +81,9 @@ function phaseOrder(phase) {
|
|
|
79
81
|
return ["shutdown-intent", "ownership-released", "package-installed", "materialized", "certified", "active-reference-committed", "supervisor-verified"].indexOf(phase);
|
|
80
82
|
}
|
|
81
83
|
function validate(value) {
|
|
82
|
-
if (value.
|
|
84
|
+
if (value.schema !== UPDATE_JOURNAL_SCHEMA || typeof value.transactionId !== "string" || !["stable", "next"].includes(value.channel)
|
|
83
85
|
|| typeof value.targetVersion !== "string" || typeof value.packageRoot !== "string" || typeof value.startedAt !== "string"
|
|
84
86
|
|| typeof value.updatedAt !== "string" || phaseOrder(value.phase) < 0 || !["active", "completed", "rolled-back", "failed"].includes(value.status)) {
|
|
85
|
-
throw new Error(
|
|
87
|
+
throw new Error(`invalid ${PRODUCT_TEXT.displayName} update transaction journal`);
|
|
86
88
|
}
|
|
87
89
|
}
|
|
88
|
-
//# sourceMappingURL=update-transaction.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type UpdateTransaction, type UpdateTransactionPhase } from "./update-transaction.js";
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const PRODUCT_PACKAGE: string;
|
|
3
3
|
export type UpdateChannel = "stable" | "next";
|
|
4
4
|
export interface ProcessRequest {
|
|
5
5
|
captureStdout: boolean;
|
|
@@ -50,6 +50,5 @@ export interface UpdateTransactionJournal {
|
|
|
50
50
|
clearCompleted(): Promise<void>;
|
|
51
51
|
}
|
|
52
52
|
export declare function createNpmProcessRunner(platform?: NodeJS.Platform): UpdateProcessRunner;
|
|
53
|
-
export declare function createUpdateLifecycleCoordinator(environment?: NodeJS.ProcessEnv, fileSystem?: UpdateFileSystem): UpdateLifecycleCoordinator;
|
|
53
|
+
export declare function createUpdateLifecycleCoordinator(environment?: NodeJS.ProcessEnv, fileSystem?: UpdateFileSystem, output?: UpdateOutput): UpdateLifecycleCoordinator;
|
|
54
54
|
export declare function runSelfUpdate(options: SelfUpdateOptions): Promise<number>;
|
|
55
|
-
//# sourceMappingURL=update.d.ts.map
|