@timurproko/a1 0.2.7-dev.1249 → 0.2.7-dev.1252
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 +7 -48
- package/dist/app/session-shell/exit-notice.d.ts +2 -2
- package/dist/app/session-shell/exit-notice.js +10 -10
- package/dist/app/session-shell/prompt-submission.d.ts +2 -4
- package/dist/app/session-shell/prompt-submission.js +3 -23
- package/dist/app/session-shell/response-copy-transport.js +1 -2
- package/dist/app/session-shell/session-lifecycle.d.ts +1 -2
- package/dist/app/session-shell/session-lifecycle.js +2 -4
- package/dist/app/session-shell/session-shell-root.d.ts +0 -31
- package/dist/app/session-shell/session-shell-root.js +3 -4
- package/dist/app/session-shell/session-shell.js +6 -47
- package/dist/app/session-shell/session-viewport-controller.js +3 -6
- package/dist/app/session-shell/shell-host.js +2 -18
- package/dist/app/session-shell/transcript-document.d.ts +1 -2
- package/dist/app/session-shell/transcript-document.js +3 -28
- package/dist/app/session-shell/workflow-output.js +1 -1
- 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/session-context.js +5 -7
- package/dist/cli/uninstall.d.ts +1 -5
- package/dist/cli/uninstall.js +6 -35
- package/dist/cli/version-stats.js +4 -7
- package/dist/composition/owned-settings.d.ts +0 -1
- package/dist/composition/owned-settings.js +0 -1
- package/dist/composition/owned-ui.d.ts +2 -24
- package/dist/composition/owned-ui.js +11 -87
- 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 +3 -3
- package/dist/composition/settings-route-host.d.ts +0 -7
- package/dist/composition/settings-route-host.js +4 -10
- package/dist/composition/startup-route.d.ts +0 -1
- package/dist/composition/startup-route.js +0 -1
- package/dist/contracts/owned-ui/index.d.ts +1 -1
- package/dist/contracts/owned-ui/model.d.ts +0 -3
- package/dist/contracts/owned-ui/session-workflows.d.ts +1 -4
- package/dist/features/launch/development-launch.js +0 -1
- 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/session-context.d.ts +2 -2
- 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/settings-app.d.ts +0 -6
- package/dist/features/owned-ui/settings-app.js +5 -36
- 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 +8 -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 +1 -3
- package/dist/foundation/release/automatic-update.js +9 -30
- package/dist/foundation/release/bootstrap.d.ts +2 -25
- package/dist/foundation/release/bootstrap.js +33 -344
- package/dist/foundation/release/cohort-state.d.ts +21 -46
- package/dist/foundation/release/cohort-state.js +30 -62
- package/dist/foundation/release/dependency-certification.d.ts +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 +1 -2
- package/dist/foundation/release/latest-release.js +1 -2
- 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 +12 -9
- package/dist/foundation/release/release-gc.js +34 -98
- 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 +28 -43
- package/dist/foundation/release/update-execution-lease.js +1 -1
- package/dist/foundation/release/update-launch.d.ts +0 -2
- 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 -10
- package/dist/foundation/release/update.js +23 -200
- 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-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/index.d.ts +1 -1
- package/dist/integrations/pi/components/index.js +1 -1
- package/dist/integrations/pi/components/shell-editor-autocomplete.js +1 -4
- package/dist/integrations/pi/components/shell-footer-status.d.ts +1 -1
- package/dist/integrations/pi/components/shell-footer-status.js +2 -2
- package/dist/integrations/pi/components/shell-hotkey-sections.js +1 -1
- package/dist/integrations/pi/components/shell-presenters-info.d.ts +2 -5
- package/dist/integrations/pi/components/shell-presenters-info.js +4 -18
- 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-shared-facade.d.ts +0 -2
- 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/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 +0 -1
- package/dist/integrations/pi/engine/adapter.js +1 -16
- 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/prompt-suggestions.d.ts +0 -1
- package/dist/integrations/pi/engine/prompt-suggestions.js +0 -40
- package/dist/integrations/pi/engine/session-runtime.js +0 -2
- package/dist/integrations/pi/engine/workflow-runner.js +1 -1
- package/dist/integrations/pi/tui-runtime/adapter.d.ts +2 -2
- package/dist/integrations/pi/tui-runtime/adapter.js +2 -2
- 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 +2 -2
- package/dist/ui/components/index.js +1 -1
- package/dist/ui/components/submitted-prompt.d.ts +3 -13
- package/dist/ui/components/submitted-prompt.js +8 -41
- 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 +3 -97
- package/dist/ui/settings/declarations.js +3 -78
- package/dist/ui/settings/migrations.js +18 -2
- package/docs/architecture/boundaries.md +22 -39
- package/docs/architecture/code-documentation.md +2 -2
- package/docs/architecture/internal-naming.md +9 -17
- package/docs/architecture/project-structure.md +9 -14
- 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 -19
- 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-request.js +0 -1
- 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/commands.js +0 -1
- 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.d.ts +0 -1
- 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/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/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
|
@@ -1,27 +1,6 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
2
1
|
import { homedir, platform } from "node:os";
|
|
3
2
|
import { posix, win32 } from "node:path";
|
|
4
3
|
import { PRODUCT_IDENTITY } from "../../product-identity.js";
|
|
5
|
-
/**
|
|
6
|
-
* Endpoint identity for one release cohort. Two cohorts can be live at once — an update
|
|
7
|
-
* leaves a working session on the release it started on — so the name a supervisor listens
|
|
8
|
-
* on has to name the release as well as the runtime directory, or the two contend for one
|
|
9
|
-
* endpoint and replacing one means ending the other.
|
|
10
|
-
*
|
|
11
|
-
* An explicit endpoint override keeps its single endpoint: it is how an isolated run pins
|
|
12
|
-
* the address it is going to talk to.
|
|
13
|
-
*/
|
|
14
|
-
export function resolveCohortEndpoint(paths, releaseId, environment = process.env, hostPlatform = platform()) {
|
|
15
|
-
if (environment[PRODUCT_IDENTITY.environment.endpoint]) {
|
|
16
|
-
return { endpoint: paths.endpoint, endpointMetadataPath: paths.endpointMetadataPath };
|
|
17
|
-
}
|
|
18
|
-
const path = hostPlatform === "win32" ? win32 : posix;
|
|
19
|
-
const token = createHash("sha256").update(releaseId).digest("hex").slice(0, 16);
|
|
20
|
-
const endpoint = hostPlatform === "win32"
|
|
21
|
-
? `${paths.endpoint}-${token}`
|
|
22
|
-
: path.join(paths.endpointDirectory ?? paths.runtimeDir, `${token}-${PRODUCT_IDENTITY.endpoint.unixSocketFilename}`);
|
|
23
|
-
return { endpoint, endpointMetadataPath: path.join(paths.endpointsDir, `${token}.json`) };
|
|
24
|
-
}
|
|
25
4
|
export function resolveProductPaths(environment = process.env, hostPlatform = platform(), fallbackHome = homedir()) {
|
|
26
5
|
const windows = hostPlatform === "win32";
|
|
27
6
|
const path = windows ? win32 : posix;
|
|
@@ -29,8 +8,6 @@ export function resolveProductPaths(environment = process.env, hostPlatform = pl
|
|
|
29
8
|
const configOverride = environment[PRODUCT_IDENTITY.environment.configDir];
|
|
30
9
|
const dataOverride = environment[PRODUCT_IDENTITY.environment.dataDir];
|
|
31
10
|
const runtimeOverride = environment[PRODUCT_IDENTITY.environment.runtimeDir];
|
|
32
|
-
const databaseOverride = environment[PRODUCT_IDENTITY.environment.databasePath];
|
|
33
|
-
const endpointOverride = environment[PRODUCT_IDENTITY.environment.endpoint];
|
|
34
11
|
const configDir = path.resolve(configOverride
|
|
35
12
|
?? (windows
|
|
36
13
|
? path.join(environment.APPDATA ?? home, PRODUCT_IDENTITY.state.windowsControlDirectory)
|
|
@@ -45,26 +22,9 @@ export function resolveProductPaths(environment = process.env, hostPlatform = pl
|
|
|
45
22
|
: environment.XDG_RUNTIME_DIR
|
|
46
23
|
? path.join(environment.XDG_RUNTIME_DIR, PRODUCT_IDENTITY.state.unixControlDirectory)
|
|
47
24
|
: path.join(dataDir, "runtime")));
|
|
48
|
-
const namespace = createHash("sha256").update(runtimeDir.toLowerCase()).digest("hex").slice(0, 20);
|
|
49
|
-
// Platform: Darwin limits Unix-domain socket paths to roughly 104 bytes. Runtime roots
|
|
50
|
-
// under /var/folders can exceed that before the cohort suffix is added, so only socket
|
|
51
|
-
// files use a short owned namespace while metadata remains under the selected runtime.
|
|
52
|
-
const endpointDirectory = !endpointOverride && hostPlatform === "darwin"
|
|
53
|
-
? posix.join("/tmp", `${PRODUCT_IDENTITY.state.unixControlDirectory}-${namespace}`)
|
|
54
|
-
: null;
|
|
55
|
-
const endpoint = endpointOverride
|
|
56
|
-
?? (windows
|
|
57
|
-
? `\\\\.\\pipe\\${PRODUCT_IDENTITY.endpoint.windowsPipeStem}-${namespace}`
|
|
58
|
-
: path.join(endpointDirectory ?? runtimeDir, PRODUCT_IDENTITY.endpoint.unixSocketFilename));
|
|
59
25
|
return {
|
|
60
26
|
configDir,
|
|
61
27
|
dataDir,
|
|
62
28
|
runtimeDir,
|
|
63
|
-
databasePath: path.resolve(databaseOverride ?? path.join(dataDir, PRODUCT_IDENTITY.endpoint.databaseFilename)),
|
|
64
|
-
endpoint,
|
|
65
|
-
endpointMetadataPath: path.join(runtimeDir, PRODUCT_IDENTITY.endpoint.metadataFilename),
|
|
66
|
-
endpointsDir: path.join(runtimeDir, "endpoints"),
|
|
67
|
-
endpointDirectory,
|
|
68
|
-
supervisorLogPath: path.join(runtimeDir, PRODUCT_IDENTITY.endpoint.supervisorLogFilename),
|
|
69
29
|
};
|
|
70
30
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ProcessIdentity } from "./model.js";
|
|
2
|
+
/**
|
|
3
|
+
* The identity every record written by this build carries. Liveness is a pid probe, so the
|
|
4
|
+
* identity only distinguishes records this build wrote from records an older build left.
|
|
5
|
+
*/
|
|
6
|
+
export declare const PID_LIVENESS_IDENTITY = "pid-liveness";
|
|
7
|
+
/** Observe whether a process is running; a permission refusal still proves the pid exists. */
|
|
8
|
+
export declare function inspectLiveProcess(pid: number): Promise<ProcessIdentity | null>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The identity every record written by this build carries. Liveness is a pid probe, so the
|
|
3
|
+
* identity only distinguishes records this build wrote from records an older build left.
|
|
4
|
+
*/
|
|
5
|
+
export const PID_LIVENESS_IDENTITY = "pid-liveness";
|
|
6
|
+
/** Observe whether a process is running; a permission refusal still proves the pid exists. */
|
|
7
|
+
export async function inspectLiveProcess(pid) {
|
|
8
|
+
if (!Number.isSafeInteger(pid) || pid <= 0)
|
|
9
|
+
return null;
|
|
10
|
+
try {
|
|
11
|
+
process.kill(pid, 0);
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
if (!(error instanceof Error && "code" in error && error.code === "EPERM"))
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
return { pid, startIdentity: PID_LIVENESS_IDENTITY };
|
|
18
|
+
}
|
|
@@ -5,7 +5,7 @@ interface ClaimLockOptions {
|
|
|
5
5
|
/** Inventory is advisory and read-only, including when abandoned metadata needs recovery. */
|
|
6
6
|
export declare function claimMutationPending(directory: string): Promise<boolean>;
|
|
7
7
|
/**
|
|
8
|
-
* The persistent directory excludes legacy wx-file writers. Only
|
|
8
|
+
* The persistent directory excludes legacy wx-file writers. Only the gate beside the authority file
|
|
9
9
|
* permits upgraded mutations; owner.json is disposable evidence, never a liveness oracle.
|
|
10
10
|
* Never remove the barrier or authority file: doing so would create a second lock universe.
|
|
11
11
|
*/
|
|
@@ -2,7 +2,7 @@ import { randomUUID } from "node:crypto";
|
|
|
2
2
|
import { lstat, mkdir, open, readdir, realpath, rename, rm } from "node:fs/promises";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { setTimeout as delay } from "node:timers/promises";
|
|
5
|
-
import { tryAcquireClaimGate } from "./
|
|
5
|
+
import { tryAcquireClaimGate } from "./claim-gate.js";
|
|
6
6
|
const FILES = new Set(["owner.json", "owner.next", "recovery.json", "recovery.next"]);
|
|
7
7
|
/** Inventory is advisory and read-only, including when abandoned metadata needs recovery. */
|
|
8
8
|
export async function claimMutationPending(directory) {
|
|
@@ -19,7 +19,7 @@ export async function claimMutationPending(directory) {
|
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
* The persistent directory excludes legacy wx-file writers. Only
|
|
22
|
+
* The persistent directory excludes legacy wx-file writers. Only the gate beside the authority file
|
|
23
23
|
* permits upgraded mutations; owner.json is disposable evidence, never a liveness oracle.
|
|
24
24
|
* Never remove the barrier or authority file: doing so would create a second lock universe.
|
|
25
25
|
*/
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ProcessIdentity } from "./model.js";
|
|
2
2
|
/** Records without an agent id were written by a single-agent release and belong to its one agent. */
|
|
3
3
|
export declare const PRIMARY_SESSION_AGENT_ID = "primary";
|
|
4
4
|
export interface SessionRepositoryIdentity {
|
|
@@ -21,16 +21,16 @@ export interface SessionRepositoryContextOptions {
|
|
|
21
21
|
readonly runtimeId?: string;
|
|
22
22
|
/** Agent within the runtime that owns the claim; defaults to the primary agent. */
|
|
23
23
|
readonly agentId?: string;
|
|
24
|
-
readonly runtimeIdentity?:
|
|
25
|
-
readonly inspectProcess?: (pid: number) => Promise<
|
|
24
|
+
readonly runtimeIdentity?: ProcessIdentity;
|
|
25
|
+
readonly inspectProcess?: (pid: number) => Promise<ProcessIdentity | null>;
|
|
26
26
|
readonly lockTimeoutMs?: number;
|
|
27
27
|
}
|
|
28
28
|
/** Publish the exact live runtime that may acquire a delivery worktree. */
|
|
29
|
-
export declare function registerSessionRepositoryRuntime(identity: SessionRepositoryIdentity, runtimeId: string, runtimeIdentity:
|
|
29
|
+
export declare function registerSessionRepositoryRuntime(identity: SessionRepositoryIdentity, runtimeId: string, runtimeIdentity: ProcessIdentity, options?: SessionRepositoryContextOptions): Promise<void>;
|
|
30
30
|
/** Revalidate a durable association and acquire its live claim for this runtime's agent; sibling agents' claims stay. */
|
|
31
|
-
export declare function activateSessionRepositoryContext(identity: SessionRepositoryIdentity, runtimeId: string, runtimeIdentity:
|
|
31
|
+
export declare function activateSessionRepositoryContext(identity: SessionRepositoryIdentity, runtimeId: string, runtimeIdentity: ProcessIdentity, options?: SessionRepositoryContextOptions): Promise<SessionRepositoryContext | null>;
|
|
32
32
|
/** Release every agent's cooperative editing claims held by this exact runtime generation. */
|
|
33
|
-
export declare function releaseSessionRepositoryRuntime(runtimeId: string, runtimeIdentity:
|
|
33
|
+
export declare function releaseSessionRepositoryRuntime(runtimeId: string, runtimeIdentity: ProcessIdentity, options?: SessionRepositoryContextOptions): Promise<void>;
|
|
34
34
|
/** Persist one explicit same-repository worktree association after atomically claiming it. */
|
|
35
35
|
export declare function setSessionRepositoryContext(identity: SessionRepositoryIdentity, worktreePath: string, options?: SessionRepositoryContextOptions): Promise<SessionRepositoryContext>;
|
|
36
36
|
/** Remove only the association and live claim belonging to the supplied stable session/runtime. */
|
|
@@ -3,6 +3,7 @@ import { open, lstat, mkdir, readFile, readdir, realpath, rename, rm, writeFile
|
|
|
3
3
|
import { dirname, isAbsolute, join, resolve } from "node:path";
|
|
4
4
|
import { promisify } from "node:util";
|
|
5
5
|
import { PRODUCT_IDENTITY } from "../../product-identity.js";
|
|
6
|
+
import { inspectLiveProcess } from "./process-liveness.js";
|
|
6
7
|
import { resolveProductPaths } from "./paths.js";
|
|
7
8
|
import { claimMutationPending, withSessionClaimLock } from "./session-claim-lock.js";
|
|
8
9
|
const CONTEXT_SCHEMA = "a1-session-repository-context-v1";
|
|
@@ -512,9 +513,7 @@ function ownedBy(record, owner) {
|
|
|
512
513
|
return record.runtimeId === owner.runtimeId && record.agentId === owner.agentId;
|
|
513
514
|
}
|
|
514
515
|
function requireInspector(options) {
|
|
515
|
-
|
|
516
|
-
throw contextError("native process identity inspection is unavailable", "process-inspection-unavailable");
|
|
517
|
-
return options.inspectProcess;
|
|
516
|
+
return options.inspectProcess ?? inspectLiveProcess;
|
|
518
517
|
}
|
|
519
518
|
function processIdentityOf(record) {
|
|
520
519
|
return { pid: record.pid, startIdentity: record.startIdentity };
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { type AvailableRelease, type ReleaseChannel } from "./latest-release.js";
|
|
2
2
|
export declare const AUTOMATIC_UPDATE_STATE_SCHEMA = 1;
|
|
3
3
|
export declare const AUTOMATIC_UPDATE_RETRY_MS: number;
|
|
4
|
-
export declare const AUTOMATIC_UPDATE_ACTIVATION_RETRY_MS = 15000;
|
|
5
4
|
export declare const ACTIVE_RELEASE_FALLBACK_MS = 5000;
|
|
6
5
|
export interface AutomaticUpdateState {
|
|
7
6
|
readonly schema: typeof AUTOMATIC_UPDATE_STATE_SCHEMA;
|
|
8
7
|
readonly channel: ReleaseChannel;
|
|
9
8
|
readonly targetVersion: string;
|
|
10
|
-
readonly status: "running" | "
|
|
9
|
+
readonly status: "running" | "installed" | "failed";
|
|
11
10
|
readonly attemptedAt: number;
|
|
12
11
|
readonly updatedAt: number;
|
|
13
12
|
readonly installedVersion: string | null;
|
|
@@ -44,7 +43,6 @@ export interface AutomaticUpdateRequestOptions {
|
|
|
44
43
|
readonly packageRoot: string;
|
|
45
44
|
};
|
|
46
45
|
readonly activeVersion?: () => Promise<string | null>;
|
|
47
|
-
readonly onActivationBlocked?: (version: string | null) => void;
|
|
48
46
|
}
|
|
49
47
|
/** Start or observe one silent update and resolve with the active newer version once restart is useful. */
|
|
50
48
|
export declare function requestAutomaticUpdate(options: AutomaticUpdateRequestOptions): Promise<string | null>;
|
|
@@ -7,15 +7,14 @@ import { valid as validSemver } from "semver";
|
|
|
7
7
|
import { readLaunchContext } from "../launch-context/index.js";
|
|
8
8
|
import { resolveProductPaths } from "../lifecycle/index.js";
|
|
9
9
|
import { CohortStateStore } from "./cohort-state.js";
|
|
10
|
-
import { processIsAlive } from "./process-
|
|
10
|
+
import { processIsAlive } from "./process-liveness.js";
|
|
11
11
|
import { isNewerRelease, releaseChannelOf } from "./latest-release.js";
|
|
12
12
|
import { readCertifiedReleaseManifest, resolveReleaseEntryPoint } from "./release-store.js";
|
|
13
13
|
import { acquireUpdateExecutionLease, readUpdateExecutionOwner } from "./update-execution-lease.js";
|
|
14
14
|
import { UpdateTransactionStore } from "./update-transaction.js";
|
|
15
|
-
import { runSelfUpdate,
|
|
15
|
+
import { runSelfUpdate, UPDATE_ALREADY_RUNNING_EXIT_CODE } from "./update.js";
|
|
16
16
|
export const AUTOMATIC_UPDATE_STATE_SCHEMA = 1;
|
|
17
17
|
export const AUTOMATIC_UPDATE_RETRY_MS = 24 * 60 * 60_000;
|
|
18
|
-
export const AUTOMATIC_UPDATE_ACTIVATION_RETRY_MS = 15_000;
|
|
19
18
|
const AUTOMATIC_UPDATE_STATE_FILENAME = "automatic-update.json";
|
|
20
19
|
const MAX_STATE_BYTES = 16_384;
|
|
21
20
|
const OBSERVER_POLL_MS = 250;
|
|
@@ -37,6 +36,10 @@ export class AutomaticUpdateStateStore {
|
|
|
37
36
|
if (Buffer.byteLength(source, "utf8") > MAX_STATE_BYTES)
|
|
38
37
|
throw new Error("automatic update state is oversized");
|
|
39
38
|
const value = JSON.parse(source);
|
|
39
|
+
// Compatibility: a record left by an activation that waited on resident tabs says nothing
|
|
40
|
+
// about the next attempt, so it is read as no record at all.
|
|
41
|
+
if (value?.status === "blocked")
|
|
42
|
+
return null;
|
|
40
43
|
validateState(value);
|
|
41
44
|
return value;
|
|
42
45
|
}
|
|
@@ -183,14 +186,6 @@ export async function requestAutomaticUpdate(options) {
|
|
|
183
186
|
await store.write(existing).catch(() => undefined);
|
|
184
187
|
}
|
|
185
188
|
}
|
|
186
|
-
const blockedUpdatedAt = existing?.status === "blocked" && existing.channel === options.release.channel
|
|
187
|
-
&& existing.targetVersion === options.release.version ? existing.updatedAt : null;
|
|
188
|
-
const observedBlocked = blockedUpdatedAt !== null;
|
|
189
|
-
if (observedBlocked) {
|
|
190
|
-
options.onActivationBlocked?.(options.release.version);
|
|
191
|
-
if (now() - blockedUpdatedAt >= 0 && now() - blockedUpdatedAt < AUTOMATIC_UPDATE_ACTIVATION_RETRY_MS)
|
|
192
|
-
return null;
|
|
193
|
-
}
|
|
194
189
|
if (existing?.status === "failed" && existing.channel === options.release.channel && now() - existing.attemptedAt >= 0
|
|
195
190
|
&& now() - existing.attemptedAt < AUTOMATIC_UPDATE_RETRY_MS
|
|
196
191
|
&& !isNewerRelease(options.release.version, existing.targetVersion))
|
|
@@ -223,8 +218,6 @@ export async function requestAutomaticUpdate(options) {
|
|
|
223
218
|
// Invariant: no worker began this attempt. Do not invent a successful install or an owner.
|
|
224
219
|
await store.write(state({ packageRoot: worker.packageRoot, channel: options.release.channel,
|
|
225
220
|
targetVersion: options.release.version, dataDir: paths.dataDir }, "failed", now(), null, "worker-start-failed")).catch(() => undefined);
|
|
226
|
-
if (observedBlocked)
|
|
227
|
-
options.onActivationBlocked?.(null);
|
|
228
221
|
return null;
|
|
229
222
|
}
|
|
230
223
|
}
|
|
@@ -238,15 +231,8 @@ export async function requestAutomaticUpdate(options) {
|
|
|
238
231
|
if (installed !== null)
|
|
239
232
|
return installed;
|
|
240
233
|
const state = await store.read().catch(() => null);
|
|
241
|
-
if (state?.targetVersion === options.release.version && state.status === "
|
|
242
|
-
options.onActivationBlocked?.(state.targetVersion);
|
|
243
|
-
return null;
|
|
244
|
-
}
|
|
245
|
-
if (state?.targetVersion === options.release.version && state.status === "failed" && state.attemptedAt >= startedAt) {
|
|
246
|
-
if (observedBlocked)
|
|
247
|
-
options.onActivationBlocked?.(null);
|
|
234
|
+
if (state?.targetVersion === options.release.version && state.status === "failed" && state.attemptedAt >= startedAt)
|
|
248
235
|
return null;
|
|
249
|
-
}
|
|
250
236
|
const owner = await readUpdateExecutionOwner(paths.dataDir).catch(() => null);
|
|
251
237
|
if ((owner === null || !processIsAlive(owner.pid)) && now() - startedAt >= WORKER_START_GRACE_MS)
|
|
252
238
|
return null;
|
|
@@ -296,12 +282,6 @@ export async function runAutomaticUpdateWorker(argv, environment = process.env)
|
|
|
296
282
|
});
|
|
297
283
|
if (code === UPDATE_ALREADY_RUNNING_EXIT_CODE)
|
|
298
284
|
return 0;
|
|
299
|
-
if (code === UPDATE_ACTIVATION_BLOCKED_EXIT_CODE) {
|
|
300
|
-
await runningWrite;
|
|
301
|
-
if (acquired)
|
|
302
|
-
await store.write(state(parsed, "blocked", attemptedAt, null, "resident-continuity-blocked"));
|
|
303
|
-
return code;
|
|
304
|
-
}
|
|
305
285
|
if (code !== 0) {
|
|
306
286
|
await runningWrite;
|
|
307
287
|
if (acquired)
|
|
@@ -419,11 +399,10 @@ function parseWorkerArguments(argv) {
|
|
|
419
399
|
}
|
|
420
400
|
function validateState(value) {
|
|
421
401
|
if (value.schema !== AUTOMATIC_UPDATE_STATE_SCHEMA || (value.channel !== "stable" && value.channel !== "development")
|
|
422
|
-
|| validSemver(value.targetVersion) === null || !["running", "
|
|
402
|
+
|| validSemver(value.targetVersion) === null || !["running", "installed", "failed"].includes(value.status)
|
|
423
403
|
|| !Number.isFinite(value.attemptedAt) || !Number.isFinite(value.updatedAt)
|
|
424
404
|
|| (value.installedVersion !== null && validSemver(value.installedVersion) === null)
|
|
425
|
-
|| (value.failure !== null && (typeof value.failure !== "string" || value.failure.length > 512))
|
|
426
|
-
|| value.status === "blocked" && (value.installedVersion !== null || value.failure !== "resident-continuity-blocked")) {
|
|
405
|
+
|| (value.failure !== null && (typeof value.failure !== "string" || value.failure.length > 512))) {
|
|
427
406
|
throw new Error("invalid automatic update state");
|
|
428
407
|
}
|
|
429
408
|
}
|
|
@@ -1,49 +1,26 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { resolveProductPaths, type SessionSelection, type LaunchProfileId, type SupervisorStartupAttemptIdentity } from "../lifecycle/index.js";
|
|
3
|
-
import { cleanupProvenIdleOwner } from "./process-cleanup.js";
|
|
1
|
+
import { resolveProductPaths, type SessionSelection, type LaunchProfileId } from "../lifecycle/index.js";
|
|
4
2
|
import { type MaterializedRelease, type VerifyMaterializedReleaseOptions } from "./release-store.js";
|
|
5
|
-
import { type EnsureTerminalHostOptions, type EnsureTerminalHostResult } from "../resident-tabs/index.js";
|
|
6
3
|
export interface BootstrapOptions {
|
|
7
4
|
readonly packageRoot: string;
|
|
8
5
|
readonly launchIntent?: {
|
|
9
6
|
readonly kind: "interactive";
|
|
10
7
|
readonly profileId: LaunchProfileId;
|
|
11
|
-
readonly launchMode: "tabs" | "solo";
|
|
12
8
|
readonly sessionSelection?: SessionSelection;
|
|
13
9
|
};
|
|
14
10
|
readonly environment?: NodeJS.ProcessEnv;
|
|
15
11
|
readonly output?: Pick<NodeJS.WriteStream, "write">;
|
|
16
12
|
/** Optional package-resolution probe that excludes a damaged retained release. */
|
|
17
13
|
readonly releaseIsLaunchable?: (releaseRoot: string) => boolean;
|
|
18
|
-
/** Test seam for bounded maintenance scheduled
|
|
14
|
+
/** Test seam for bounded maintenance scheduled before the UI starts. */
|
|
19
15
|
readonly scheduleMaintenance?: (dataDir: string, paths: ReturnType<typeof resolveProductPaths>) => Promise<void>;
|
|
20
|
-
/** Test seam for resident launch routing before the guardian starts. */
|
|
21
|
-
readonly ensureTerminalHost?: (options: EnsureTerminalHostOptions) => Promise<EnsureTerminalHostResult>;
|
|
22
|
-
/** Test seam for whether this process's standard input and output are terminals; absent reads them. */
|
|
23
|
-
readonly interactiveTerminal?: boolean;
|
|
24
16
|
}
|
|
25
17
|
export declare function runBootstrap(options: BootstrapOptions): Promise<number>;
|
|
26
18
|
export declare function certifyMaterializedRelease(release: MaterializedRelease, dataDir: string, verification?: VerifyMaterializedReleaseOptions): Promise<string>;
|
|
27
19
|
/** Persist current-format evidence after an authenticated parent has certified the exact release. */
|
|
28
20
|
export declare function recordParentCertifiedRelease(release: MaterializedRelease, dataDir: string): Promise<string>;
|
|
29
|
-
export interface SupervisorStartupAttempt extends SupervisorStartupAttemptIdentity {
|
|
30
|
-
readonly childOutcome: Promise<{
|
|
31
|
-
readonly exitCode: number | null;
|
|
32
|
-
readonly signal: NodeJS.Signals | null;
|
|
33
|
-
}>;
|
|
34
|
-
}
|
|
35
|
-
/** Reuse a verified owner, or join the winner if another launch starts the same cohort first. */
|
|
36
|
-
export declare function ensureSupervisor(release: MaterializedRelease, environment: NodeJS.ProcessEnv): Promise<void>;
|
|
37
|
-
export declare function startSupervisor(release: MaterializedRelease, environment: NodeJS.ProcessEnv): Promise<SupervisorStartupAttempt>;
|
|
38
21
|
/**
|
|
39
22
|
* Hand a release the key set its own build reads. A retained pre-cutover release is
|
|
40
23
|
* still startable this way, which is what lets a launch fall back to the previous
|
|
41
24
|
* version instead of failing while an installation is being replaced.
|
|
42
25
|
*/
|
|
43
26
|
export declare function releaseEnvironment(environment: NodeJS.ProcessEnv, release: MaterializedRelease, profile?: LaunchProfileId): NodeJS.ProcessEnv;
|
|
44
|
-
export declare function waitForVerifiedEndpoint(path: string, release: MaterializedRelease, timeoutMs: number, startup?: SupervisorStartupAttempt): Promise<void>;
|
|
45
|
-
export declare function releaseVerifiedIdleOwner(metadata: SupervisorEndpointMetadata, dataDir: string, operations?: {
|
|
46
|
-
readonly waitForExit?: typeof waitForProcessExit;
|
|
47
|
-
readonly cleanup?: typeof cleanupProvenIdleOwner;
|
|
48
|
-
}): Promise<boolean>;
|
|
49
|
-
export declare function waitForProcessExit(pid: number, timeoutMs: number): Promise<void>;
|