spawnfile 0.1.12 → 0.1.14
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 +58 -12
- package/dist/audit/auditCli.d.ts +19 -0
- package/dist/audit/auditCli.js +63 -0
- package/dist/audit/checks.d.ts +100 -0
- package/dist/audit/checks.js +279 -0
- package/dist/audit/checksShared.d.ts +74 -0
- package/dist/audit/checksShared.js +37 -0
- package/dist/audit/generateAudit.d.ts +19 -0
- package/dist/audit/generateAudit.js +122 -0
- package/dist/audit/index.d.ts +4 -0
- package/dist/audit/index.js +4 -0
- package/dist/audit/readAudit.d.ts +50 -0
- package/dist/audit/readAudit.js +59 -0
- package/dist/audit/types.d.ts +40 -0
- package/dist/audit/types.js +8 -0
- package/dist/auth/credentialEnvFile.d.ts +11 -0
- package/dist/auth/credentialEnvFile.js +60 -0
- package/dist/auth/credentialProvisioning.d.ts +15 -0
- package/dist/auth/credentialProvisioning.js +75 -0
- package/dist/auth/credentialProvisioningReceipt.d.ts +28 -0
- package/dist/auth/credentialProvisioningReceipt.js +70 -0
- package/dist/auth/credentialProvisioningRequest.d.ts +51 -0
- package/dist/auth/credentialProvisioningRequest.js +169 -0
- package/dist/auth/credentialWorldBindings.d.ts +21 -0
- package/dist/auth/credentialWorldBindings.js +104 -0
- package/dist/auth/index.d.ts +7 -0
- package/dist/auth/index.js +7 -0
- package/dist/auth/paths.d.ts +11 -0
- package/dist/auth/paths.js +21 -0
- package/dist/auth/runtimeCredentials.js +18 -2
- package/dist/auth/targetSecretSourceAuthor.d.ts +18 -0
- package/dist/auth/targetSecretSourceAuthor.js +52 -0
- package/dist/auth/targetSecretSourceFsPublish.d.ts +15 -0
- package/dist/auth/targetSecretSourceFsPublish.js +49 -0
- package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +16 -0
- package/dist/auth/targetSecretSourceFsPublishImmutable.js +435 -0
- package/dist/auth/targetSecretSourceFsRead.d.ts +14 -0
- package/dist/auth/targetSecretSourceFsRead.js +198 -0
- package/dist/auth/targetSecretSourceGrant.d.ts +16 -0
- package/dist/auth/targetSecretSourceGrant.js +99 -0
- package/dist/auth/targetSecretSourceGrantRecords.d.ts +84 -0
- package/dist/auth/targetSecretSourceGrantRecords.js +214 -0
- package/dist/auth/targetSecretSourceLifecycle.d.ts +30 -0
- package/dist/auth/targetSecretSourceLifecycle.js +52 -0
- package/dist/auth/targetSecretSourceOwnerEntropy.d.ts +6 -0
- package/dist/auth/targetSecretSourceOwnerEntropy.js +28 -0
- package/dist/auth/targetSecretSourceRecordCommon.d.ts +14 -0
- package/dist/auth/targetSecretSourceRecordCommon.js +100 -0
- package/dist/auth/targetSecretSourceRecordPublish.d.ts +10 -0
- package/dist/auth/targetSecretSourceRecordPublish.js +104 -0
- package/dist/auth/targetSecretSourceResolver.d.ts +10 -0
- package/dist/auth/targetSecretSourceResolver.js +137 -0
- package/dist/auth/targetSecretSourceRevoke.d.ts +20 -0
- package/dist/auth/targetSecretSourceRevoke.js +92 -0
- package/dist/auth/targetSecretSourceRotate.d.ts +19 -0
- package/dist/auth/targetSecretSourceRotate.js +121 -0
- package/dist/auth/targetSecretSourceVersionRecords.d.ts +49 -0
- package/dist/auth/targetSecretSourceVersionRecords.js +166 -0
- package/dist/cli/artifactsCommands.d.ts +27 -0
- package/dist/cli/artifactsCommands.js +132 -0
- package/dist/cli/authCommands.d.ts +5 -0
- package/dist/cli/authCommands.js +221 -0
- package/dist/cli/compileBuildCommands.d.ts +3 -0
- package/dist/cli/compileBuildCommands.js +35 -0
- package/dist/cli/containerBundleCommand.d.ts +6 -0
- package/dist/cli/containerBundleCommand.js +116 -0
- package/dist/cli/devCommands.d.ts +3 -0
- package/dist/cli/devCommands.js +115 -0
- package/dist/cli/downCommand.d.ts +25 -0
- package/dist/cli/downCommand.js +134 -0
- package/dist/cli/index.js +6 -3
- package/dist/cli/lifecycleCommands.d.ts +1 -1
- package/dist/cli/lifecycleCommands.js +11 -179
- package/dist/cli/lifecycleMachine.d.ts +19 -0
- package/dist/cli/lifecycleMachine.js +78 -0
- package/dist/cli/lifecyclePlan.d.ts +35 -0
- package/dist/cli/lifecyclePlan.js +240 -0
- package/dist/cli/lifecyclePlanningCommands.d.ts +3 -0
- package/dist/cli/lifecyclePlanningCommands.js +30 -0
- package/dist/cli/runCli.d.ts +15 -2
- package/dist/cli/runCli.js +31 -71
- package/dist/cli/runPublishCommands.d.ts +3 -0
- package/dist/cli/runPublishCommands.js +70 -0
- package/dist/cli/statusCommand.d.ts +3 -32
- package/dist/cli/statusCommand.js +37 -233
- package/dist/cli/statusCommandLive.d.ts +20 -0
- package/dist/cli/statusCommandLive.js +188 -0
- package/dist/cli/statusCommandOptions.d.ts +40 -0
- package/dist/cli/statusCommandOptions.js +42 -0
- package/dist/cli/targetCliRoute.d.ts +2 -0
- package/dist/cli/targetCliRoute.js +30 -0
- package/dist/cli/targetCommands.d.ts +33 -0
- package/dist/cli/targetCommands.js +257 -0
- package/dist/cli/targetComposedPreparationCommand.d.ts +6 -0
- package/dist/cli/targetComposedPreparationCommand.js +39 -0
- package/dist/cli/targetDefaultArtifactAuthority.d.ts +5 -0
- package/dist/cli/targetDefaultArtifactAuthority.js +28 -0
- package/dist/cli/targetDefaultAuthorities.d.ts +53 -0
- package/dist/cli/targetDefaultAuthorities.js +210 -0
- package/dist/cli/targetDefaultConfig.d.ts +68 -0
- package/dist/cli/targetDefaultConfig.js +317 -0
- package/dist/cli/targetDefaultConfigStdin.d.ts +13 -0
- package/dist/cli/targetDefaultConfigStdin.js +215 -0
- package/dist/cli/targetDefaultEnvelope.d.ts +1 -0
- package/dist/cli/targetDefaultEnvelope.js +13 -0
- package/dist/cli/targetDefaultHandlerFactory.d.ts +28 -0
- package/dist/cli/targetDefaultHandlerFactory.js +247 -0
- package/dist/cli/targetDefaultHandlers.d.ts +21 -0
- package/dist/cli/targetDefaultHandlers.js +72 -0
- package/dist/cli/targetDefaultJournalAuthority.d.ts +35 -0
- package/dist/cli/targetDefaultJournalAuthority.js +135 -0
- package/dist/cli/targetDefaultWorldClock.d.ts +4 -0
- package/dist/cli/targetDefaultWorldClock.js +14 -0
- package/dist/cli/targetDefaultWorldQueries.d.ts +5 -0
- package/dist/cli/targetDefaultWorldQueries.js +11 -0
- package/dist/cli/targetDefaultWorldReadiness.d.ts +4 -0
- package/dist/cli/targetDefaultWorldReadiness.js +17 -0
- package/dist/cli/targetEvidenceHelperResolution.d.ts +14 -0
- package/dist/cli/targetEvidenceHelperResolution.js +23 -0
- package/dist/cli/targetLookupCli.d.ts +3 -0
- package/dist/cli/targetLookupCli.js +31 -0
- package/dist/cli/targetLookupCommands.d.ts +12 -0
- package/dist/cli/targetLookupCommands.js +69 -0
- package/dist/cli/targetOperationDispatch.d.ts +58 -0
- package/dist/cli/targetOperationDispatch.js +21 -0
- package/dist/cli/targetReceiptOutput.d.ts +14 -0
- package/dist/cli/targetReceiptOutput.js +21 -0
- package/dist/cli/targetRequestFile.d.ts +14 -0
- package/dist/cli/targetRequestFile.js +63 -0
- package/dist/cli/targetSecretSourceInput.d.ts +28 -0
- package/dist/cli/targetSecretSourceInput.js +121 -0
- package/dist/cli/targetWorldClockCommand.d.ts +10 -0
- package/dist/cli/targetWorldClockCommand.js +42 -0
- package/dist/cli/targetWorldClockCrossProcess.test-helper.d.ts +13 -0
- package/dist/cli/targetWorldClockCrossProcess.test-helper.js +109 -0
- package/dist/cli/targetWorldReadinessCommand.d.ts +10 -0
- package/dist/cli/targetWorldReadinessCommand.js +43 -0
- package/dist/cli/upCommand.d.ts +3 -0
- package/dist/cli/upCommand.js +133 -0
- package/dist/cli/upImageCommand.d.ts +11 -0
- package/dist/cli/upImageCommand.js +41 -0
- package/dist/cli/upLifecycleInvocation.d.ts +41 -0
- package/dist/cli/upLifecycleInvocation.js +48 -0
- package/dist/cli/upLifecycleRecovery.d.ts +4 -0
- package/dist/cli/upLifecycleRecovery.js +53 -0
- package/dist/compiler/agentNodeMerge.d.ts +2 -0
- package/dist/compiler/agentNodeMerge.js +79 -0
- package/dist/compiler/agentSurfaces.js +11 -1
- package/dist/compiler/buildCompilePlan.js +17 -0
- package/dist/compiler/buildCompilePlanAgent.d.ts +11 -0
- package/dist/compiler/buildCompilePlanAgent.js +56 -0
- package/dist/compiler/buildCompilePlanTeams.d.ts +1 -0
- package/dist/compiler/buildCompilePlanTeams.js +4 -1
- package/dist/compiler/buildCompilePlanTraversal.js +75 -82
- package/dist/compiler/buildProject.d.ts +20 -1
- package/dist/compiler/buildProject.js +121 -7
- package/dist/compiler/compilePlanHelpers.js +2 -0
- package/dist/compiler/compileProject.d.ts +15 -0
- package/dist/compiler/compileProject.js +29 -75
- package/dist/compiler/compileProjectPolicy.d.ts +5 -0
- package/dist/compiler/compileProjectPolicy.js +21 -0
- package/dist/compiler/compileProjectReports.d.ts +9 -0
- package/dist/compiler/compileProjectReports.js +52 -0
- package/dist/compiler/containerArtifactSummaries.d.ts +7 -0
- package/dist/compiler/containerArtifactSummaries.js +138 -0
- package/dist/compiler/containerArtifacts.d.ts +10 -0
- package/dist/compiler/containerArtifacts.js +126 -125
- package/dist/compiler/containerArtifactsPlans.d.ts +5 -3
- package/dist/compiler/containerArtifactsPlans.js +31 -118
- package/dist/compiler/containerArtifactsRender.d.ts +3 -1
- package/dist/compiler/containerArtifactsRender.js +40 -81
- package/dist/compiler/containerArtifactsTypes.d.ts +12 -0
- package/dist/compiler/containerConfigEnvRender.d.ts +3 -0
- package/dist/compiler/containerConfigEnvRender.js +54 -0
- package/dist/compiler/containerEntrypointRender.d.ts +1 -0
- package/dist/compiler/containerEntrypointRender.js +60 -53
- package/dist/compiler/containerEntrypointShell.d.ts +5 -0
- package/dist/compiler/containerEntrypointShell.js +29 -0
- package/dist/compiler/containerPackageOverrides.d.ts +27 -0
- package/dist/compiler/containerPackageOverrides.js +63 -0
- package/dist/compiler/containerPackageRender.d.ts +15 -0
- package/dist/compiler/containerPackageRender.js +63 -0
- package/dist/compiler/containerTargetPlanResolution.d.ts +20 -0
- package/dist/compiler/containerTargetPlanResolution.js +97 -0
- package/dist/compiler/containerTargetResources.js +3 -1
- package/dist/compiler/daimonTelemetryArtifacts.d.ts +22 -0
- package/dist/compiler/daimonTelemetryArtifacts.js +61 -0
- package/dist/compiler/dockerBuildContext.d.ts +16 -0
- package/dist/compiler/dockerBuildContext.js +159 -0
- package/dist/compiler/dockerBuildSkip.d.ts +30 -0
- package/dist/compiler/dockerBuildSkip.js +81 -0
- package/dist/compiler/index.d.ts +4 -0
- package/dist/compiler/index.js +4 -0
- package/dist/compiler/memoryArtifacts.d.ts +26 -0
- package/dist/compiler/memoryArtifacts.js +134 -0
- package/dist/compiler/memoryResolution.d.ts +4 -0
- package/dist/compiler/memoryResolution.js +147 -0
- package/dist/compiler/modelEnv.d.ts +2 -0
- package/dist/compiler/modelEnv.js +6 -0
- package/dist/compiler/moltnetAllowedWakeSendersValidation.d.ts +2 -0
- package/dist/compiler/moltnetAllowedWakeSendersValidation.js +42 -0
- package/dist/compiler/moltnetArtifactPaths.d.ts +26 -0
- package/dist/compiler/moltnetArtifactPaths.js +49 -0
- package/dist/compiler/moltnetArtifactTypes.d.ts +46 -0
- package/dist/compiler/moltnetArtifactTypes.js +1 -0
- package/dist/compiler/moltnetArtifacts.d.ts +2 -40
- package/dist/compiler/moltnetArtifacts.js +56 -95
- package/dist/compiler/moltnetBinaries.d.ts +21 -1
- package/dist/compiler/moltnetBinaries.js +156 -28
- package/dist/compiler/moltnetClientConfig.js +18 -2
- package/dist/compiler/moltnetConfigLowering.d.ts +16 -1
- package/dist/compiler/moltnetConfigLowering.js +67 -5
- package/dist/compiler/moltnetExternalParticipantArtifact.d.ts +38 -0
- package/dist/compiler/moltnetExternalParticipantArtifact.js +188 -0
- package/dist/compiler/moltnetNodeConfig.js +7 -2
- package/dist/compiler/moltnetReleaseAuthority.d.ts +17 -0
- package/dist/compiler/moltnetReleaseAuthority.js +73 -0
- package/dist/compiler/moltnetReleaseDownload.d.ts +12 -0
- package/dist/compiler/moltnetReleaseDownload.js +85 -0
- package/dist/compiler/moltnetRepresentativeResolution.d.ts +1 -0
- package/dist/compiler/moltnetRepresentativeResolution.js +16 -2
- package/dist/compiler/moltnetResolution.js +72 -20
- package/dist/compiler/moltnetRoomMemberships.js +37 -9
- package/dist/compiler/moltnetRuntimeConfig.js +11 -0
- package/dist/compiler/moltnetServerPlans.d.ts +9 -0
- package/dist/compiler/moltnetServerPlans.js +132 -0
- package/dist/compiler/organizationIdentity.d.ts +27 -0
- package/dist/compiler/organizationIdentity.js +297 -0
- package/dist/compiler/organizationReadyEvidence.d.ts +49 -0
- package/dist/compiler/organizationReadyEvidence.js +261 -0
- package/dist/compiler/projectManifestGraph.d.ts +4 -0
- package/dist/compiler/projectManifestGraph.js +24 -0
- package/dist/compiler/runProject.d.ts +4 -0
- package/dist/compiler/runProject.js +37 -22
- package/dist/compiler/runProjectAuth.d.ts +7 -1
- package/dist/compiler/runProjectAuth.js +87 -9
- package/dist/compiler/runProjectDocker.d.ts +7 -0
- package/dist/compiler/runProjectDocker.js +187 -19
- package/dist/compiler/runProjectLifecycle.d.ts +7 -0
- package/dist/compiler/runProjectLifecycle.js +40 -0
- package/dist/compiler/syncProjectAuth.js +4 -1
- package/dist/compiler/teamContextActiveEnvironments.d.ts +13 -0
- package/dist/compiler/teamContextActiveEnvironments.js +255 -0
- package/dist/compiler/teamContextSupport.js +32 -40
- package/dist/compiler/teamContextTypes.d.ts +2 -0
- package/dist/compiler/types.d.ts +82 -1
- package/dist/compiler/upProject.d.ts +5 -0
- package/dist/compiler/upProject.js +257 -20
- package/dist/compiler/upReceipt.d.ts +36 -0
- package/dist/compiler/upReceipt.js +82 -0
- package/dist/compiler/updateProjectModels.js +42 -60
- package/dist/compiler/updateProjectRuntime.js +22 -35
- package/dist/compiler/updateProjectSurfaces.js +53 -47
- package/dist/compiler/worldBindings.d.ts +39 -0
- package/dist/compiler/worldBindings.js +247 -0
- package/dist/compiler/worldBindingsFile.d.ts +5 -0
- package/dist/compiler/worldBindingsFile.js +162 -0
- package/dist/deployment/artifactsExport.d.ts +49 -0
- package/dist/deployment/artifactsExport.js +217 -0
- package/dist/deployment/artifactsExportDocker.d.ts +48 -0
- package/dist/deployment/artifactsExportDocker.js +91 -0
- package/dist/deployment/artifactsExportPlan.d.ts +24 -0
- package/dist/deployment/artifactsExportPlan.js +135 -0
- package/dist/deployment/artifactsExportTypes.d.ts +50 -0
- package/dist/deployment/artifactsExportTypes.js +52 -0
- package/dist/deployment/buildImageCacheStore.d.ts +23 -0
- package/dist/deployment/buildImageCacheStore.js +54 -0
- package/dist/deployment/deploymentLifecycleCorrelation.d.ts +11 -0
- package/dist/deployment/deploymentLifecycleCorrelation.js +33 -0
- package/dist/deployment/dockerInspect.d.ts +9 -0
- package/dist/deployment/dockerInspect.js +24 -1
- package/dist/deployment/dockerLabels.d.ts +2 -0
- package/dist/deployment/dockerLabels.js +2 -0
- package/dist/deployment/dockerLogs.js +2 -10
- package/dist/deployment/dockerManager.d.ts +51 -0
- package/dist/deployment/dockerManager.js +118 -1
- package/dist/deployment/dockerProbeGateway.js +64 -5
- package/dist/deployment/dockerRecover.d.ts +17 -0
- package/dist/deployment/dockerRecover.js +137 -0
- package/dist/deployment/dockerTeardown.d.ts +32 -0
- package/dist/deployment/dockerTeardown.js +61 -0
- package/dist/deployment/downDeployment.d.ts +34 -0
- package/dist/deployment/downDeployment.js +147 -0
- package/dist/deployment/downReceiptTypes.d.ts +21 -0
- package/dist/deployment/downReceiptTypes.js +30 -0
- package/dist/deployment/index.d.ts +17 -0
- package/dist/deployment/index.js +18 -0
- package/dist/deployment/lifecycleCompletion.d.ts +37 -0
- package/dist/deployment/lifecycleCompletion.js +236 -0
- package/dist/deployment/lifecycleCompletionContracts.d.ts +158 -0
- package/dist/deployment/lifecycleCompletionContracts.js +106 -0
- package/dist/deployment/lifecycleCompletionHeartbeat.d.ts +2 -0
- package/dist/deployment/lifecycleCompletionHeartbeat.js +50 -0
- package/dist/deployment/lifecycleCompletionLookup.d.ts +18 -0
- package/dist/deployment/lifecycleCompletionLookup.js +88 -0
- package/dist/deployment/lifecycleCompletionOwner.d.ts +8 -0
- package/dist/deployment/lifecycleCompletionOwner.js +31 -0
- package/dist/deployment/lifecycleCompletionParsing.d.ts +12 -0
- package/dist/deployment/lifecycleCompletionParsing.js +108 -0
- package/dist/deployment/lifecycleCompletionPaths.d.ts +9 -0
- package/dist/deployment/lifecycleCompletionPaths.js +16 -0
- package/dist/deployment/lifecycleCompletionPublication.d.ts +5 -0
- package/dist/deployment/lifecycleCompletionPublication.js +35 -0
- package/dist/deployment/lifecycleCompletionRecovery.d.ts +21 -0
- package/dist/deployment/lifecycleCompletionRecovery.js +56 -0
- package/dist/deployment/lifecycleCompletionRoot.d.ts +21 -0
- package/dist/deployment/lifecycleCompletionRoot.js +243 -0
- package/dist/deployment/lifecycleCompletionStore.d.ts +6 -0
- package/dist/deployment/lifecycleCompletionStore.js +151 -0
- package/dist/deployment/organizationHandoffAuthorityFsClient.d.ts +17 -0
- package/dist/deployment/organizationHandoffAuthorityFsClient.js +132 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorker.d.ts +1 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorker.js +285 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.d.ts +1 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.js +26 -0
- package/dist/deployment/organizationHandoffAuthorityStore.d.ts +41 -0
- package/dist/deployment/organizationHandoffAuthorityStore.js +348 -0
- package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +76 -0
- package/dist/deployment/organizationHandoffAuthorityTypes.js +148 -0
- package/dist/deployment/organizationHandoffTypes.d.ts +29 -0
- package/dist/deployment/organizationHandoffTypes.js +80 -0
- package/dist/deployment/organizationReady.d.ts +52 -0
- package/dist/deployment/organizationReady.js +200 -0
- package/dist/deployment/privateArtifactsExport.d.ts +18 -0
- package/dist/deployment/privateArtifactsExport.js +80 -0
- package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.d.ts +8 -0
- package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.js +60 -0
- package/dist/deployment/record.d.ts +26 -1
- package/dist/deployment/record.js +49 -4
- package/dist/deployment/simfileFixtureBoundary.test-helper.d.ts +8 -0
- package/dist/deployment/simfileFixtureBoundary.test-helper.js +103 -0
- package/dist/deployment/target.d.ts +1 -35
- package/dist/deployment/target.js +1 -96
- package/dist/deployment/upReceiptTypes.d.ts +111 -0
- package/dist/deployment/upReceiptTypes.js +164 -0
- package/dist/dev/activity.d.ts +14 -0
- package/dist/dev/activity.js +48 -0
- package/dist/dev/docker.d.ts +16 -0
- package/dist/dev/docker.js +71 -0
- package/dist/dev/index.d.ts +2 -0
- package/dist/dev/index.js +2 -0
- package/dist/dev/project.d.ts +35 -0
- package/dist/dev/project.js +170 -0
- package/dist/distribution/buildDistributionReport.d.ts +2 -1
- package/dist/distribution/buildDistributionReport.js +2 -1
- package/dist/distribution/distributionReportSchema.d.ts +5 -0
- package/dist/distribution/distributionReportSchema.js +7 -2
- package/dist/distribution/index.d.ts +2 -2
- package/dist/distribution/index.js +1 -1
- package/dist/distribution/types.d.ts +7 -0
- package/dist/distribution/types.js +1 -0
- package/dist/filesystem/paths.js +10 -1
- package/dist/ledger/causalConformanceCli.d.ts +1 -0
- package/dist/ledger/causalConformanceCli.js +41 -0
- package/dist/ledger/causeNamespace.d.ts +8 -0
- package/dist/ledger/causeNamespace.js +24 -0
- package/dist/ledger/conformance.d.ts +83 -0
- package/dist/ledger/conformance.js +259 -0
- package/dist/ledger/emitters.d.ts +76 -0
- package/dist/ledger/emitters.js +188 -0
- package/dist/ledger/index.d.ts +4 -0
- package/dist/ledger/index.js +4 -0
- package/dist/ledger/principal.d.ts +96 -0
- package/dist/ledger/principal.js +121 -0
- package/dist/manifest/externalParticipantSchemas.d.ts +18 -0
- package/dist/manifest/externalParticipantSchemas.js +17 -0
- package/dist/manifest/index.d.ts +1 -0
- package/dist/manifest/index.js +1 -0
- package/dist/manifest/inlineAgentMember.d.ts +2 -0
- package/dist/manifest/inlineAgentMember.js +9 -0
- package/dist/manifest/loadManifest.js +14 -8
- package/dist/manifest/mcpSchemas.d.ts +17 -0
- package/dist/manifest/mcpSchemas.js +41 -0
- package/dist/manifest/memorySchemas.d.ts +245 -0
- package/dist/manifest/memorySchemas.js +148 -0
- package/dist/manifest/renderSpawnfile.js +22 -131
- package/dist/manifest/renderSpawnfileNetworks.js +9 -2
- package/dist/manifest/renderSpawnfileSurfaces.d.ts +2 -0
- package/dist/manifest/renderSpawnfileSurfaces.js +134 -0
- package/dist/manifest/schemas.d.ts +1868 -99
- package/dist/manifest/schemas.js +78 -32
- package/dist/manifest/surfaceSchemas.d.ts +17 -0
- package/dist/manifest/surfaceSchemas.js +24 -1
- package/dist/manifest/teamNetworkAccessSchemas.d.ts +1 -1
- package/dist/manifest/teamNetworkAuthSchemas.d.ts +48 -0
- package/dist/manifest/teamNetworkAuthSchemas.js +103 -0
- package/dist/manifest/teamNetworkSchemas.d.ts +8 -187
- package/dist/manifest/teamNetworkSchemas.js +3 -317
- package/dist/manifest/teamNetworkServerSchemas.d.ts +150 -0
- package/dist/manifest/teamNetworkServerSchemas.js +199 -0
- package/dist/ownership/siblingBuildFreshness.d.ts +20 -0
- package/dist/ownership/siblingBuildFreshness.js +20 -0
- package/dist/ownership/simfileRunOperatorInputs.d.ts +103 -0
- package/dist/ownership/simfileRunOperatorInputs.js +139 -0
- package/dist/report/types.d.ts +142 -0
- package/dist/runtime/common.d.ts +37 -0
- package/dist/runtime/common.js +56 -1
- package/dist/runtime/container.d.ts +29 -1
- package/dist/runtime/container.js +127 -11
- package/dist/runtime/containerPackageOverrides.d.ts +37 -0
- package/dist/runtime/containerPackageOverrides.js +33 -0
- package/dist/runtime/index.d.ts +2 -0
- package/dist/runtime/index.js +2 -0
- package/dist/runtime/install.d.ts +1 -1
- package/dist/runtime/install.js +43 -1
- package/dist/runtime/mnemeMcp.d.ts +15 -0
- package/dist/runtime/mnemeMcp.js +109 -0
- package/dist/runtime/openclaw/adapter.js +15 -4
- package/dist/runtime/openclaw/mcp.d.ts +10 -0
- package/dist/runtime/openclaw/mcp.js +69 -0
- package/dist/runtime/openclaw/runAuth.js +2 -2
- package/dist/runtime/openclaw/scaffold.js +1 -1
- package/dist/runtime/openclaw/schedules.d.ts +38 -0
- package/dist/runtime/openclaw/schedules.js +74 -0
- package/dist/runtime/pi/adapter.d.ts +4 -0
- package/dist/runtime/pi/adapter.js +231 -0
- package/dist/runtime/pi/appActivitySource.d.ts +1 -0
- package/dist/runtime/pi/appActivitySource.js +199 -0
- package/dist/runtime/pi/appAgentConfig.d.ts +11 -0
- package/dist/runtime/pi/appAgentConfig.js +264 -0
- package/dist/runtime/pi/appCliEnginesSource.d.ts +1 -0
- package/dist/runtime/pi/appCliEnginesSource.js +183 -0
- package/dist/runtime/pi/appCliSource.d.ts +1 -0
- package/dist/runtime/pi/appCliSource.js +353 -0
- package/dist/runtime/pi/appControlSource.d.ts +1 -0
- package/dist/runtime/pi/appControlSource.js +390 -0
- package/dist/runtime/pi/appControlWakeIdentitySource.d.ts +1 -0
- package/dist/runtime/pi/appControlWakeIdentitySource.js +19 -0
- package/dist/runtime/pi/appCoreSource.d.ts +4 -0
- package/dist/runtime/pi/appCoreSource.js +244 -0
- package/dist/runtime/pi/appPreludeSource.d.ts +1 -0
- package/dist/runtime/pi/appPreludeSource.js +191 -0
- package/dist/runtime/pi/appScheduleSource.d.ts +1 -0
- package/dist/runtime/pi/appScheduleSource.js +80 -0
- package/dist/runtime/pi/appScriptedEngine.d.ts +31 -0
- package/dist/runtime/pi/appScriptedEngine.js +42 -0
- package/dist/runtime/pi/appSource.d.ts +4 -0
- package/dist/runtime/pi/appSource.js +12 -0
- package/dist/runtime/pi/appTemplate.d.ts +14 -0
- package/dist/runtime/pi/appTemplate.js +27 -0
- package/dist/runtime/pi/appTemplateTypes.d.ts +64 -0
- package/dist/runtime/pi/appTemplateTypes.js +18 -0
- package/dist/runtime/pi/appWakeContextSource.d.ts +1 -0
- package/dist/runtime/pi/appWakeContextSource.js +398 -0
- package/dist/runtime/pi/containerTargets.d.ts +4 -0
- package/dist/runtime/pi/containerTargets.js +57 -0
- package/dist/runtime/pi/runAuth.d.ts +2 -0
- package/dist/runtime/pi/runAuth.js +185 -0
- package/dist/runtime/pi/testHelpers.d.ts +2 -0
- package/dist/runtime/pi/testHelpers.js +40 -0
- package/dist/runtime/picoclaw/adapter.js +23 -27
- package/dist/runtime/picoclaw/mcp.d.ts +4 -0
- package/dist/runtime/picoclaw/mcp.js +43 -0
- package/dist/runtime/picoclaw/memory.d.ts +7 -0
- package/dist/runtime/picoclaw/memory.js +17 -0
- package/dist/runtime/picoclaw/runAuth.js +1 -1
- package/dist/runtime/picoclaw/scaffold.js +1 -1
- package/dist/runtime/picoclaw/schedules.d.ts +26 -0
- package/dist/runtime/picoclaw/schedules.js +62 -3
- package/dist/runtime/registry.js +3 -0
- package/dist/runtime/scheduleUtils.d.ts +2 -0
- package/dist/runtime/scheduleUtils.js +15 -0
- package/dist/runtime/types.d.ts +26 -2
- package/dist/shared/errors.d.ts +1 -1
- package/dist/shared/errors.js +2 -2
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.js +1 -0
- package/dist/shared/redaction.d.ts +2 -0
- package/dist/shared/redaction.js +10 -0
- package/dist/status/buildStatus.d.ts +1 -0
- package/dist/status/buildStatus.js +2 -0
- package/dist/status/compileReport.d.ts +22 -0
- package/dist/status/compileReport.js +16 -2
- package/dist/status/compiledProbeCollection.d.ts +21 -0
- package/dist/status/compiledProbeCollection.js +27 -0
- package/dist/status/deployments.js +5 -12
- package/dist/status/imageStatusReport.js +6 -0
- package/dist/status/index.d.ts +3 -0
- package/dist/status/index.js +3 -0
- package/dist/status/lifecycleProbes.d.ts +19 -0
- package/dist/status/lifecycleProbes.js +174 -0
- package/dist/status/moltnetProbes.d.ts +7 -8
- package/dist/status/moltnetProbes.js +27 -198
- package/dist/status/moltnetWiringProbes.d.ts +19 -0
- package/dist/status/moltnetWiringProbes.js +178 -0
- package/dist/target/cleanupRun.d.ts +41 -0
- package/dist/target/cleanupRun.js +139 -0
- package/dist/target/cleanupRunDocker.d.ts +16 -0
- package/dist/target/cleanupRunDocker.js +66 -0
- package/dist/target/cleanupRunDocker.test-helper.d.ts +67 -0
- package/dist/target/cleanupRunDocker.test-helper.js +238 -0
- package/dist/target/cleanupRunDockerPreflight.d.ts +17 -0
- package/dist/target/cleanupRunDockerPreflight.js +224 -0
- package/dist/target/composedPreparation.d.ts +205 -0
- package/dist/target/composedPreparation.js +223 -0
- package/dist/target/containerBundle.d.ts +82 -0
- package/dist/target/containerBundle.js +243 -0
- package/dist/target/containerBundleArchive.d.ts +31 -0
- package/dist/target/containerBundleArchive.js +140 -0
- package/dist/target/containerBundleAuthority.d.ts +25 -0
- package/dist/target/containerBundleAuthority.js +65 -0
- package/dist/target/containerBundleContracts.d.ts +114 -0
- package/dist/target/containerBundleContracts.js +173 -0
- package/dist/target/containerBundleFilesystemStore.d.ts +3 -0
- package/dist/target/containerBundleFilesystemStore.js +247 -0
- package/dist/target/containerBundlePolicy.d.ts +33 -0
- package/dist/target/containerBundlePolicy.js +64 -0
- package/dist/target/containerBundleStore.d.ts +127 -0
- package/dist/target/containerBundleStore.js +284 -0
- package/dist/target/contracts.d.ts +538 -0
- package/dist/target/contracts.js +373 -0
- package/dist/target/dockerArtifactIdentityTypes.d.ts +56 -0
- package/dist/target/dockerArtifactIdentityTypes.js +1 -0
- package/dist/target/dockerArtifactInspection.d.ts +40 -0
- package/dist/target/dockerArtifactInspection.js +125 -0
- package/dist/target/dockerArtifacts.d.ts +21 -0
- package/dist/target/dockerArtifacts.js +110 -0
- package/dist/target/dockerArtifactsProvider.d.ts +41 -0
- package/dist/target/dockerArtifactsProvider.js +449 -0
- package/dist/target/dockerCommandExecutor.d.ts +27 -0
- package/dist/target/dockerCommandExecutor.js +200 -0
- package/dist/target/dockerCommandExecutorCore.d.ts +34 -0
- package/dist/target/dockerCommandExecutorCore.js +273 -0
- package/dist/target/dockerContainerBundleBuilder.d.ts +8 -0
- package/dist/target/dockerContainerBundleBuilder.js +256 -0
- package/dist/target/dockerContextSnapshot.d.ts +21 -0
- package/dist/target/dockerContextSnapshot.js +158 -0
- package/dist/target/dockerEndpointFingerprint.d.ts +1 -0
- package/dist/target/dockerEndpointFingerprint.js +9 -0
- package/dist/target/dockerPreparedArtifact.d.ts +48 -0
- package/dist/target/dockerPreparedArtifact.js +131 -0
- package/dist/target/dockerProjectionJson.d.ts +1 -0
- package/dist/target/dockerProjectionJson.js +80 -0
- package/dist/target/dockerPublicArtifactSnapshot.d.ts +17 -0
- package/dist/target/dockerPublicArtifactSnapshot.js +99 -0
- package/dist/target/dockerResources.d.ts +26 -0
- package/dist/target/dockerResources.js +162 -0
- package/dist/target/dockerResourcesProvider.d.ts +44 -0
- package/dist/target/dockerResourcesProvider.js +207 -0
- package/dist/target/dockerSecrets.d.ts +39 -0
- package/dist/target/dockerSecrets.js +249 -0
- package/dist/target/dockerSecretsAuthority.d.ts +26 -0
- package/dist/target/dockerSecretsAuthority.js +216 -0
- package/dist/target/dockerSecretsLifecycle.d.ts +25 -0
- package/dist/target/dockerSecretsLifecycle.js +133 -0
- package/dist/target/dockerSecretsProvider.d.ts +68 -0
- package/dist/target/dockerSecretsProvider.js +329 -0
- package/dist/target/dockerTarget.d.ts +52 -0
- package/dist/target/dockerTarget.js +48 -0
- package/dist/target/dockerTargetBinding.d.ts +14 -0
- package/dist/target/dockerTargetBinding.js +96 -0
- package/dist/target/dockerWorldClock.d.ts +17 -0
- package/dist/target/dockerWorldClock.js +111 -0
- package/dist/target/dockerWorldReadiness.d.ts +17 -0
- package/dist/target/dockerWorldReadiness.js +119 -0
- package/dist/target/dockerWorldService.d.ts +23 -0
- package/dist/target/dockerWorldService.js +216 -0
- package/dist/target/dockerWorldServiceAuthority.d.ts +80 -0
- package/dist/target/dockerWorldServiceAuthority.js +182 -0
- package/dist/target/dockerWorldServiceLifecycle.d.ts +41 -0
- package/dist/target/dockerWorldServiceLifecycle.js +275 -0
- package/dist/target/dockerWorldServiceProvider.d.ts +60 -0
- package/dist/target/dockerWorldServiceProvider.js +318 -0
- package/dist/target/dockerWorldServiceStore.d.ts +73 -0
- package/dist/target/dockerWorldServiceStore.js +367 -0
- package/dist/target/evidenceExport.d.ts +55 -0
- package/dist/target/evidenceExport.js +518 -0
- package/dist/target/evidenceExportArchive.d.ts +10 -0
- package/dist/target/evidenceExportArchive.js +302 -0
- package/dist/target/evidenceExportContract.d.ts +27 -0
- package/dist/target/evidenceExportContract.js +40 -0
- package/dist/target/evidenceExportOperationsTestKit.d.ts +87 -0
- package/dist/target/evidenceExportOperationsTestKit.js +312 -0
- package/dist/target/evidenceExportProvider.d.ts +85 -0
- package/dist/target/evidenceExportProvider.js +187 -0
- package/dist/target/evidenceExportPublicationTypes.d.ts +16 -0
- package/dist/target/evidenceExportPublicationTypes.js +1 -0
- package/dist/target/evidenceExportStore.d.ts +70 -0
- package/dist/target/evidenceExportStore.js +498 -0
- package/dist/target/evidenceExportStorePublication.d.ts +7 -0
- package/dist/target/evidenceExportStorePublication.js +395 -0
- package/dist/target/handles.d.ts +20 -0
- package/dist/target/handles.js +56 -0
- package/dist/target/index.d.ts +12 -0
- package/dist/target/index.js +11 -0
- package/dist/target/journal.d.ts +59 -0
- package/dist/target/journal.js +529 -0
- package/dist/target/journalFilesystem.d.ts +3 -0
- package/dist/target/journalFilesystem.js +111 -0
- package/dist/target/journalRoot.d.ts +4 -0
- package/dist/target/journalRoot.js +6 -0
- package/dist/target/organizationAttachment.d.ts +23 -0
- package/dist/target/organizationAttachment.js +263 -0
- package/dist/target/organizationAttachmentAuthority.d.ts +65 -0
- package/dist/target/organizationAttachmentAuthority.js +161 -0
- package/dist/target/organizationAttachmentLifecycle.d.ts +17 -0
- package/dist/target/organizationAttachmentLifecycle.js +101 -0
- package/dist/target/organizationAttachmentProvider.d.ts +76 -0
- package/dist/target/organizationAttachmentProvider.js +289 -0
- package/dist/target/organizationAttachmentStore.d.ts +51 -0
- package/dist/target/organizationAttachmentStore.js +316 -0
- package/dist/target/publicArtifactSnapshot.d.ts +41 -0
- package/dist/target/publicArtifactSnapshot.js +150 -0
- package/dist/target/topologyActivation.d.ts +51 -0
- package/dist/target/topologyActivation.js +149 -0
- package/dist/target/topologyAttestation.d.ts +37 -0
- package/dist/target/topologyAttestation.js +300 -0
- package/dist/target/topologyAttestationErrors.d.ts +1 -0
- package/dist/target/topologyAttestationErrors.js +1 -0
- package/dist/target/worldClock.d.ts +60 -0
- package/dist/target/worldClock.js +129 -0
- package/dist/target/worldReadiness.d.ts +103 -0
- package/dist/target/worldReadiness.js +153 -0
- package/moltnet-releases.json +20 -0
- package/package.json +29 -8
- package/runtimes.yaml +28 -27
- package/dist/runtime/openclaw/scaffold-assets/CLAUDE.md +0 -5
- package/dist/runtime/picoclaw/scaffold-assets/CLAUDE.md +0 -5
- /package/dist/runtime/openclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
- /package/dist/runtime/picoclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
import { Buffer } from "node:buffer";
|
|
2
|
+
import { randomBytes, randomUUID } from "node:crypto";
|
|
3
|
+
import { constants } from "node:fs";
|
|
4
|
+
import { link, lstat, open, unlink } from "node:fs/promises";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { EVIDENCE_EXPORT_ERROR } from "./evidenceExportProvider.js";
|
|
7
|
+
export const MAX_BYTES = 65_536;
|
|
8
|
+
const fail = () => { throw new Error(EVIDENCE_EXPORT_ERROR); };
|
|
9
|
+
const validDestinationKey = (value) => value !== null && /^[0-9a-f]{64}$/u.test(value);
|
|
10
|
+
const unlinkOwnedTemporary = async (temporary, owned) => {
|
|
11
|
+
if (!owned)
|
|
12
|
+
return;
|
|
13
|
+
let current;
|
|
14
|
+
try {
|
|
15
|
+
current = await lstat(temporary);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
if (error.code === "ENOENT")
|
|
19
|
+
return;
|
|
20
|
+
return fail();
|
|
21
|
+
}
|
|
22
|
+
if (!current.isFile() || current.isSymbolicLink() || current.dev !== owned.dev || current.ino !== owned.ino)
|
|
23
|
+
return fail();
|
|
24
|
+
try {
|
|
25
|
+
await unlink(temporary);
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
if (error.code !== "ENOENT")
|
|
29
|
+
return fail();
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const sync = async (directory) => {
|
|
33
|
+
const handle = await open(directory, constants.O_RDONLY);
|
|
34
|
+
try {
|
|
35
|
+
await handle.sync();
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
await handle.close();
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const readDestinationKey = async (file, links, options, isPending = false, includePendingHook = true) => {
|
|
42
|
+
let info;
|
|
43
|
+
try {
|
|
44
|
+
info = await lstat(file);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (error.code === "ENOENT")
|
|
48
|
+
return null;
|
|
49
|
+
return fail();
|
|
50
|
+
}
|
|
51
|
+
if (!info.isFile() ||
|
|
52
|
+
info.isSymbolicLink() ||
|
|
53
|
+
!links.includes(info.nlink) ||
|
|
54
|
+
info.uid !== (process.getuid?.() ?? -1) ||
|
|
55
|
+
info.size > MAX_BYTES ||
|
|
56
|
+
(info.mode & 0o777) !== 0o600) {
|
|
57
|
+
return fail();
|
|
58
|
+
}
|
|
59
|
+
if (isPending && includePendingHook)
|
|
60
|
+
await options?.afterDestinationKeyPendingLstatBeforeOpen?.();
|
|
61
|
+
let handle;
|
|
62
|
+
try {
|
|
63
|
+
handle = await open(file, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (isPending && error.code === "ENOENT")
|
|
67
|
+
return null;
|
|
68
|
+
return fail();
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
const current = await handle.stat();
|
|
72
|
+
if (!current.isFile() ||
|
|
73
|
+
!links.includes(current.nlink) ||
|
|
74
|
+
current.uid !== (process.getuid?.() ?? -1) ||
|
|
75
|
+
current.size > MAX_BYTES ||
|
|
76
|
+
(current.mode & 0o777) !== 0o600 ||
|
|
77
|
+
current.dev !== info.dev ||
|
|
78
|
+
current.ino !== info.ino)
|
|
79
|
+
return fail();
|
|
80
|
+
return Object.freeze({
|
|
81
|
+
bytes: await handle.readFile({ encoding: "utf8" }),
|
|
82
|
+
dev: current.dev,
|
|
83
|
+
ino: current.ino,
|
|
84
|
+
nlink: current.nlink,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
if (isPending && error.code === "ENOENT")
|
|
89
|
+
return null;
|
|
90
|
+
return fail();
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
await handle.close().catch(() => undefined);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
export const publishImmutable = async (root, fileName, content, joinExisting = false, options) => {
|
|
97
|
+
if (Buffer.byteLength(content, "utf8") > MAX_BYTES)
|
|
98
|
+
return fail();
|
|
99
|
+
const file = path.join(root, fileName);
|
|
100
|
+
for (let attempt = 0; attempt < 24; attempt += 1) {
|
|
101
|
+
const prior = await readDestinationKey(file, [1, 2], options);
|
|
102
|
+
if (prior !== null) {
|
|
103
|
+
if (prior.bytes !== content && !joinExisting)
|
|
104
|
+
return fail();
|
|
105
|
+
if (prior.nlink === 1)
|
|
106
|
+
return;
|
|
107
|
+
if (prior.nlink === 2) {
|
|
108
|
+
if (options?.afterImmutableTransientRead)
|
|
109
|
+
await options.afterImmutableTransientRead();
|
|
110
|
+
await sync(root);
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
return fail();
|
|
114
|
+
}
|
|
115
|
+
const temporary = path.join(root, `.${fileName}.${process.pid}.${randomUUID()}.tmp`);
|
|
116
|
+
let handle;
|
|
117
|
+
let owned;
|
|
118
|
+
try {
|
|
119
|
+
await options?.beforeImmutableTempOpen?.(temporary);
|
|
120
|
+
handle = await open(temporary, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY | constants.O_NOFOLLOW, 0o600);
|
|
121
|
+
const opened = await handle.stat();
|
|
122
|
+
if (!opened.isFile() || opened.isSymbolicLink())
|
|
123
|
+
return fail();
|
|
124
|
+
owned = { dev: opened.dev, ino: opened.ino };
|
|
125
|
+
await options?.afterImmutableTempIdentity?.(temporary);
|
|
126
|
+
await handle.chmod(0o600);
|
|
127
|
+
await handle.writeFile(content, "utf8");
|
|
128
|
+
await handle.sync();
|
|
129
|
+
const info = await handle.stat();
|
|
130
|
+
if (!info.isFile() || info.isSymbolicLink() || info.uid !== (process.getuid?.() ?? -1) || (info.mode & 0o777) !== 0o600 || info.dev !== owned.dev || info.ino !== owned.ino)
|
|
131
|
+
return fail();
|
|
132
|
+
await handle.close();
|
|
133
|
+
handle = undefined;
|
|
134
|
+
await sync(root);
|
|
135
|
+
await link(temporary, file);
|
|
136
|
+
await sync(root);
|
|
137
|
+
if (options?.afterImmutableFinalLinkBeforeTempUnlink)
|
|
138
|
+
await options.afterImmutableFinalLinkBeforeTempUnlink();
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
const code = error.code;
|
|
142
|
+
if (code === "EEXIST") {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
return fail();
|
|
146
|
+
}
|
|
147
|
+
finally {
|
|
148
|
+
if (handle)
|
|
149
|
+
await handle.close().catch(() => undefined);
|
|
150
|
+
await unlinkOwnedTemporary(temporary, owned);
|
|
151
|
+
await sync(root);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return fail();
|
|
155
|
+
};
|
|
156
|
+
const writeKeyPending = async (root, pending, options) => {
|
|
157
|
+
const temporary = path.join(root, `.destination-hmac.${process.pid}.${randomUUID()}.tmp`);
|
|
158
|
+
const value = randomBytes(32).toString("hex");
|
|
159
|
+
let handle;
|
|
160
|
+
let identity;
|
|
161
|
+
let owned;
|
|
162
|
+
try {
|
|
163
|
+
await options?.beforeDestinationKeyTempOpen?.(temporary);
|
|
164
|
+
handle = await open(temporary, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY | constants.O_NOFOLLOW, 0o600);
|
|
165
|
+
const opened = await handle.stat();
|
|
166
|
+
if (!opened.isFile() || opened.isSymbolicLink())
|
|
167
|
+
return fail();
|
|
168
|
+
identity = { dev: opened.dev, ino: opened.ino };
|
|
169
|
+
await options?.afterDestinationKeyTempIdentity?.(temporary);
|
|
170
|
+
await handle.chmod(0o600);
|
|
171
|
+
await handle.writeFile(value, "utf8");
|
|
172
|
+
await handle.sync();
|
|
173
|
+
const info = await handle.stat();
|
|
174
|
+
if (!info.isFile() || info.isSymbolicLink() || info.uid !== (process.getuid?.() ?? -1) || (info.mode & 0o777) !== 0o600 || info.size > MAX_BYTES || info.dev !== identity.dev || info.ino !== identity.ino)
|
|
175
|
+
return fail();
|
|
176
|
+
await handle.close();
|
|
177
|
+
handle = undefined;
|
|
178
|
+
owned = Object.freeze({ bytes: value, dev: info.dev, ino: info.ino, nlink: info.nlink });
|
|
179
|
+
await sync(root);
|
|
180
|
+
try {
|
|
181
|
+
await link(temporary, pending);
|
|
182
|
+
await sync(root);
|
|
183
|
+
await options?.afterDestinationKeyPendingLinkBeforeTempUnlink?.();
|
|
184
|
+
return owned;
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
if (error.code !== "EEXIST")
|
|
188
|
+
return fail();
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
if (error.code === "EEXIST")
|
|
194
|
+
return null;
|
|
195
|
+
return fail();
|
|
196
|
+
}
|
|
197
|
+
finally {
|
|
198
|
+
if (handle)
|
|
199
|
+
await handle.close().catch(() => undefined);
|
|
200
|
+
await unlinkOwnedTemporary(temporary, identity);
|
|
201
|
+
await sync(root);
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
const sameDestinationSnapshot = (left, right) => {
|
|
205
|
+
return left.bytes === right.bytes && left.dev === right.dev && left.ino === right.ino;
|
|
206
|
+
};
|
|
207
|
+
const destination = async (root, options) => {
|
|
208
|
+
const file = path.join(root, ".destination-hmac.key");
|
|
209
|
+
const pending = path.join(root, ".destination-hmac.pending");
|
|
210
|
+
const validLinks = [1, 2, 3];
|
|
211
|
+
const finalGeneration = async () => readDestinationKey(file, validLinks, options);
|
|
212
|
+
const pendingGeneration = async () => readDestinationKey(pending, validLinks, options, true);
|
|
213
|
+
const convergentRead = async () => readDestinationKey(file, [1, 2, 3], options);
|
|
214
|
+
const unlinkExactDestinationPending = async (snapshot) => {
|
|
215
|
+
const current = await readDestinationKey(pending, validLinks, options, true, false);
|
|
216
|
+
if (current === null || !sameDestinationSnapshot(current, snapshot))
|
|
217
|
+
return false;
|
|
218
|
+
try {
|
|
219
|
+
await unlink(pending);
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
if (error.code === "ENOENT")
|
|
223
|
+
return false;
|
|
224
|
+
fail();
|
|
225
|
+
}
|
|
226
|
+
await sync(root);
|
|
227
|
+
return true;
|
|
228
|
+
};
|
|
229
|
+
const unlinkOwnedDestinationPending = async () => {
|
|
230
|
+
if (owned === null)
|
|
231
|
+
return false;
|
|
232
|
+
const removed = await unlinkExactDestinationPending(owned);
|
|
233
|
+
if (removed)
|
|
234
|
+
owned = null;
|
|
235
|
+
return removed;
|
|
236
|
+
};
|
|
237
|
+
let owned = null;
|
|
238
|
+
for (let attempt = 0; attempt < 24; attempt += 1) {
|
|
239
|
+
const currentFinal = await finalGeneration();
|
|
240
|
+
if (currentFinal !== null) {
|
|
241
|
+
if (!validDestinationKey(currentFinal.bytes))
|
|
242
|
+
return fail();
|
|
243
|
+
if (options?.afterDestinationKeyFinalSnapshot)
|
|
244
|
+
await options.afterDestinationKeyFinalSnapshot();
|
|
245
|
+
const staged = await pendingGeneration();
|
|
246
|
+
if (staged === null) {
|
|
247
|
+
const repaired = await convergentRead();
|
|
248
|
+
if (repaired === null || !sameDestinationSnapshot(repaired, currentFinal))
|
|
249
|
+
continue;
|
|
250
|
+
if (repaired.nlink === 1)
|
|
251
|
+
return Buffer.from(repaired.bytes, "hex");
|
|
252
|
+
if (repaired.nlink === 2)
|
|
253
|
+
continue;
|
|
254
|
+
return fail();
|
|
255
|
+
}
|
|
256
|
+
if (!validDestinationKey(staged.bytes))
|
|
257
|
+
return fail();
|
|
258
|
+
if (owned !== null && !sameDestinationSnapshot(owned, staged)) {
|
|
259
|
+
await unlinkExactDestinationPending(owned);
|
|
260
|
+
owned = null;
|
|
261
|
+
}
|
|
262
|
+
if (!sameDestinationSnapshot(staged, currentFinal)) {
|
|
263
|
+
const repaired = await convergentRead();
|
|
264
|
+
if (repaired === null || !sameDestinationSnapshot(repaired, currentFinal))
|
|
265
|
+
continue;
|
|
266
|
+
if (repaired.nlink === 1) {
|
|
267
|
+
if (owned !== null) {
|
|
268
|
+
const removed = await unlinkExactDestinationPending(owned);
|
|
269
|
+
if (removed)
|
|
270
|
+
owned = null;
|
|
271
|
+
}
|
|
272
|
+
continue;
|
|
273
|
+
}
|
|
274
|
+
if (repaired.nlink === 2 || repaired.nlink === 3)
|
|
275
|
+
continue;
|
|
276
|
+
return fail();
|
|
277
|
+
}
|
|
278
|
+
if (owned === null && staged.nlink !== 3)
|
|
279
|
+
owned = staged;
|
|
280
|
+
await unlinkOwnedDestinationPending();
|
|
281
|
+
const repaired = await convergentRead();
|
|
282
|
+
if (repaired === null || !sameDestinationSnapshot(repaired, currentFinal))
|
|
283
|
+
continue;
|
|
284
|
+
if (repaired.nlink === 1) {
|
|
285
|
+
await options?.afterDestinationKeyRecovered?.();
|
|
286
|
+
return Buffer.from(currentFinal.bytes, "hex");
|
|
287
|
+
}
|
|
288
|
+
if (repaired.nlink === 2 || repaired.nlink === 3) {
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
return fail();
|
|
292
|
+
}
|
|
293
|
+
if (options?.afterDestinationKeyInitialFinalAbsent)
|
|
294
|
+
await options.afterDestinationKeyInitialFinalAbsent();
|
|
295
|
+
let staged = await pendingGeneration();
|
|
296
|
+
if (staged === null) {
|
|
297
|
+
const created = await writeKeyPending(root, pending, options);
|
|
298
|
+
if (created === null)
|
|
299
|
+
continue;
|
|
300
|
+
owned = created;
|
|
301
|
+
staged = created;
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
if (!validDestinationKey(staged.bytes))
|
|
305
|
+
return fail();
|
|
306
|
+
if (staged.nlink === 3) {
|
|
307
|
+
if (owned !== null) {
|
|
308
|
+
const ownedRemoved = await unlinkExactDestinationPending(owned);
|
|
309
|
+
if (ownedRemoved)
|
|
310
|
+
owned = null;
|
|
311
|
+
}
|
|
312
|
+
continue;
|
|
313
|
+
}
|
|
314
|
+
if (owned === null) {
|
|
315
|
+
owned = staged;
|
|
316
|
+
}
|
|
317
|
+
else if (!sameDestinationSnapshot(owned, staged)) {
|
|
318
|
+
await unlinkExactDestinationPending(owned);
|
|
319
|
+
owned = null;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
if (owned !== null && (staged.nlink === 1 || staged.nlink === 2)) {
|
|
323
|
+
try {
|
|
324
|
+
await options?.beforeDestinationKeyLink?.();
|
|
325
|
+
}
|
|
326
|
+
catch {
|
|
327
|
+
return fail();
|
|
328
|
+
}
|
|
329
|
+
const raced = await finalGeneration();
|
|
330
|
+
if (raced !== null) {
|
|
331
|
+
if (!validDestinationKey(raced.bytes) || !sameDestinationSnapshot(raced, owned)) {
|
|
332
|
+
const removed = await unlinkExactDestinationPending(owned);
|
|
333
|
+
if (removed)
|
|
334
|
+
owned = null;
|
|
335
|
+
continue;
|
|
336
|
+
}
|
|
337
|
+
if (raced.nlink === 1) {
|
|
338
|
+
if (owned !== null) {
|
|
339
|
+
const removed = await unlinkExactDestinationPending(owned);
|
|
340
|
+
if (removed)
|
|
341
|
+
owned = null;
|
|
342
|
+
}
|
|
343
|
+
return Buffer.from(raced.bytes, "hex");
|
|
344
|
+
}
|
|
345
|
+
if (raced.nlink === 2 || raced.nlink === 3)
|
|
346
|
+
continue;
|
|
347
|
+
return fail();
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
try {
|
|
351
|
+
await link(pending, file);
|
|
352
|
+
await sync(root);
|
|
353
|
+
await options?.afterDestinationKeyPendingLink?.();
|
|
354
|
+
if (owned !== null) {
|
|
355
|
+
try {
|
|
356
|
+
await options?.afterDestinationKeyLinkBeforePendingUnlink?.();
|
|
357
|
+
}
|
|
358
|
+
catch {
|
|
359
|
+
return fail();
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
catch (error) {
|
|
364
|
+
const code = error.code;
|
|
365
|
+
if (code !== "EEXIST" && code !== "ENOENT")
|
|
366
|
+
return fail();
|
|
367
|
+
if (owned !== null) {
|
|
368
|
+
await unlinkExactDestinationPending(owned);
|
|
369
|
+
owned = null;
|
|
370
|
+
}
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
const healed = await convergentRead();
|
|
374
|
+
if (healed === null || !sameDestinationSnapshot(healed, staged))
|
|
375
|
+
continue;
|
|
376
|
+
if (healed.nlink === 1) {
|
|
377
|
+
if (owned !== null) {
|
|
378
|
+
const removed = await unlinkExactDestinationPending(owned);
|
|
379
|
+
if (removed)
|
|
380
|
+
owned = null;
|
|
381
|
+
}
|
|
382
|
+
return Buffer.from(healed.bytes, "hex");
|
|
383
|
+
}
|
|
384
|
+
if (healed.nlink === 2 || healed.nlink === 3) {
|
|
385
|
+
if (owned !== null && !sameDestinationSnapshot(owned, healed)) {
|
|
386
|
+
await unlinkExactDestinationPending(owned);
|
|
387
|
+
owned = null;
|
|
388
|
+
}
|
|
389
|
+
continue;
|
|
390
|
+
}
|
|
391
|
+
return fail();
|
|
392
|
+
}
|
|
393
|
+
return fail();
|
|
394
|
+
};
|
|
395
|
+
export { destination as destinationKey };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type OpaqueTargetHandle, type SelectedTargetReceipt, type TargetResourceReceipt, type TargetResourceRequest, type TargetTopologyReceipt } from "./contracts.js";
|
|
2
|
+
export type TargetDigest = `sha256:${string}`;
|
|
3
|
+
export type TargetDigestDomain = "journal-identity" | "operation-handle" | "pending-receipt" | "receipt" | "request";
|
|
4
|
+
export declare const createTargetRequestDigest: (raw: unknown) => TargetDigest;
|
|
5
|
+
export declare const createTargetReceiptDigest: (raw: unknown) => TargetDigest;
|
|
6
|
+
export declare const createTargetOperationHandle: (journalIdentity: TargetDigest, rawRequest: unknown) => OpaqueTargetHandle;
|
|
7
|
+
export declare const createCanonicalTargetReceiptBytes: (raw: unknown) => string;
|
|
8
|
+
export declare const createCanonicalSelectedTargetReceiptBytes: (raw: unknown) => string;
|
|
9
|
+
export declare const createCanonicalTargetOperationLookupBytes: (raw: unknown) => string;
|
|
10
|
+
export declare const createTargetTopologyAttestationRequestDigest: (raw: unknown) => TargetDigest;
|
|
11
|
+
export declare const createTargetTopologyReceiptDigest: (raw: unknown) => TargetDigest;
|
|
12
|
+
export declare const createCanonicalTargetTopologyReceiptBytes: (raw: unknown) => string;
|
|
13
|
+
export declare const createTargetJournalIdentity: (input: {
|
|
14
|
+
context: unknown;
|
|
15
|
+
descriptor_digest: unknown;
|
|
16
|
+
run_id: unknown;
|
|
17
|
+
selected_target: unknown;
|
|
18
|
+
}) => TargetDigest;
|
|
19
|
+
export declare const createPendingReceiptDigest: (operationHandle: unknown, requestDigest: unknown) => TargetDigest;
|
|
20
|
+
export type { OpaqueTargetHandle, SelectedTargetReceipt, TargetResourceReceipt, TargetResourceRequest, TargetTopologyReceipt };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { assertOrdinaryJsonGraph, parseOpaqueTargetHandle, parseRunId, parseSelectedTargetReceipt, parseTargetOperationLookup, parseTargetResourceJournal, parseTargetResourceReceipt, parseTargetResourceRequest, parseTargetTopologyAttestationRequest, parseTargetTopologyReceipt, TARGET_JOURNAL_VERSION } from "./contracts.js";
|
|
3
|
+
const canonicalJson = (value) => {
|
|
4
|
+
assertOrdinaryJsonGraph(value);
|
|
5
|
+
if (Array.isArray(value))
|
|
6
|
+
return `[${value.map(canonicalJson).join(",")}]`;
|
|
7
|
+
if (value !== null && typeof value === "object") {
|
|
8
|
+
const record = value;
|
|
9
|
+
return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${canonicalJson(record[key])}`).join(",")}}`;
|
|
10
|
+
}
|
|
11
|
+
return JSON.stringify(value);
|
|
12
|
+
};
|
|
13
|
+
const createCanonicalTargetDigest = (domain, value) => `sha256:${createHash("sha256")
|
|
14
|
+
.update(`spawnfile.target-resource.${domain}.v1\0`, "utf8").update(canonicalJson(value), "utf8").digest("hex")}`;
|
|
15
|
+
/* T1 owns the digest grammar; this surrogate parses one through its journal field. */
|
|
16
|
+
const parseTargetDigest = (raw) => parseTargetResourceJournal({
|
|
17
|
+
descriptor_digest: raw, entries: [], revision: 0, run_id: "a",
|
|
18
|
+
selected_target: { fingerprint: `sha256:${"0".repeat(32)}`, handle: "opaque_0000000000000000" },
|
|
19
|
+
version: TARGET_JOURNAL_VERSION
|
|
20
|
+
}).descriptor_digest;
|
|
21
|
+
const parseContext = (raw) => {
|
|
22
|
+
if (typeof raw !== "string" || !/^[a-z][a-z0-9_-]{0,63}$/u.test(raw))
|
|
23
|
+
throw new TypeError("invalid target journal context");
|
|
24
|
+
return raw;
|
|
25
|
+
};
|
|
26
|
+
export const createTargetRequestDigest = (raw) => createCanonicalTargetDigest("request", parseTargetResourceRequest(raw));
|
|
27
|
+
export const createTargetReceiptDigest = (raw) => {
|
|
28
|
+
const receipt = parseTargetResourceReceipt(raw);
|
|
29
|
+
const { receipt_digest: _receiptDigest, ...body } = receipt;
|
|
30
|
+
return createCanonicalTargetDigest("receipt", body);
|
|
31
|
+
};
|
|
32
|
+
export const createTargetOperationHandle = (journalIdentity, rawRequest) => {
|
|
33
|
+
const request = parseTargetResourceRequest(rawRequest);
|
|
34
|
+
const identity = parseTargetDigest(journalIdentity);
|
|
35
|
+
return parseOpaqueTargetHandle(`opaque_${createCanonicalTargetDigest("operation-handle", { journal_identity: identity, request }).slice("sha256:".length)}`);
|
|
36
|
+
};
|
|
37
|
+
export const createCanonicalTargetReceiptBytes = (raw) => canonicalJson(parseTargetResourceReceipt(raw));
|
|
38
|
+
export const createCanonicalSelectedTargetReceiptBytes = (raw) => canonicalJson(parseSelectedTargetReceipt(raw));
|
|
39
|
+
export const createCanonicalTargetOperationLookupBytes = (raw) => canonicalJson(parseTargetOperationLookup(raw));
|
|
40
|
+
const createTopologyDigest = (domain, value) => `sha256:${createHash("sha256")
|
|
41
|
+
.update(`spawnfile.target-topology-${domain}.v1\0`, "utf8")
|
|
42
|
+
.update(canonicalJson(value), "utf8").digest("hex")}`;
|
|
43
|
+
export const createTargetTopologyAttestationRequestDigest = (raw) => createTopologyDigest("request", parseTargetTopologyAttestationRequest(raw));
|
|
44
|
+
export const createTargetTopologyReceiptDigest = (raw) => {
|
|
45
|
+
const receipt = parseTargetTopologyReceipt(raw);
|
|
46
|
+
const { receipt_digest: _receiptDigest, ...body } = receipt;
|
|
47
|
+
return createTopologyDigest("receipt", body);
|
|
48
|
+
};
|
|
49
|
+
export const createCanonicalTargetTopologyReceiptBytes = (raw) => canonicalJson(parseTargetTopologyReceipt(raw));
|
|
50
|
+
export const createTargetJournalIdentity = (input) => createCanonicalTargetDigest("journal-identity", {
|
|
51
|
+
context: parseContext(input.context), descriptor_digest: parseTargetDigest(input.descriptor_digest),
|
|
52
|
+
run_id: parseRunId(input.run_id), selected_target: parseSelectedTargetReceipt(input.selected_target)
|
|
53
|
+
});
|
|
54
|
+
export const createPendingReceiptDigest = (operationHandle, requestDigest) => createCanonicalTargetDigest("pending-receipt", {
|
|
55
|
+
operation_handle: parseOpaqueTargetHandle(operationHandle), request_digest: parseTargetDigest(requestDigest)
|
|
56
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from "./cleanupRun.js";
|
|
2
|
+
export * from "./composedPreparation.js";
|
|
3
|
+
export * from "./contracts.js";
|
|
4
|
+
export * from "./dockerTarget.js";
|
|
5
|
+
export * from "./handles.js";
|
|
6
|
+
export * from "./publicArtifactSnapshot.js";
|
|
7
|
+
export * from "./topologyActivation.js";
|
|
8
|
+
export * from "./worldReadiness.js";
|
|
9
|
+
export * from "./worldClock.js";
|
|
10
|
+
export { initializeTargetJournal, lookupTargetOperation, openExistingTargetJournal, openTargetJournal, setTargetJournalFilesystemForTests } from "./journal.js";
|
|
11
|
+
export { resolveTargetJournalRoot } from "./journalRoot.js";
|
|
12
|
+
export type { InitializeTargetJournalOptions, LookupTargetOperationOptions, TargetJournalClaim, TargetJournalLookupStore, TargetJournalReservation, TargetJournalStore } from "./journal.js";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./cleanupRun.js";
|
|
2
|
+
export * from "./composedPreparation.js";
|
|
3
|
+
export * from "./contracts.js";
|
|
4
|
+
export * from "./dockerTarget.js";
|
|
5
|
+
export * from "./handles.js";
|
|
6
|
+
export * from "./publicArtifactSnapshot.js";
|
|
7
|
+
export * from "./topologyActivation.js";
|
|
8
|
+
export * from "./worldReadiness.js";
|
|
9
|
+
export * from "./worldClock.js";
|
|
10
|
+
export { initializeTargetJournal, lookupTargetOperation, openExistingTargetJournal, openTargetJournal, setTargetJournalFilesystemForTests } from "./journal.js";
|
|
11
|
+
export { resolveTargetJournalRoot } from "./journalRoot.js";
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type OpaqueTargetHandle, type TargetOperationLookup, type TargetResourceJournal, type TargetResourceReceipt } from "./contracts.js";
|
|
2
|
+
import { type TargetDigest } from "./handles.js";
|
|
3
|
+
export interface InitializeTargetJournalOptions {
|
|
4
|
+
context: unknown;
|
|
5
|
+
descriptorDigest: unknown;
|
|
6
|
+
root?: string;
|
|
7
|
+
runId: unknown;
|
|
8
|
+
selectedTarget: unknown;
|
|
9
|
+
}
|
|
10
|
+
export interface TargetJournalClaim {
|
|
11
|
+
readonly operationHandle: OpaqueTargetHandle;
|
|
12
|
+
readonly requestDigest: TargetDigest;
|
|
13
|
+
}
|
|
14
|
+
export type TargetJournalReservation = {
|
|
15
|
+
readonly kind: "owner";
|
|
16
|
+
readonly claim: TargetJournalClaim;
|
|
17
|
+
} | {
|
|
18
|
+
readonly kind: "pending";
|
|
19
|
+
readonly claim: TargetJournalClaim;
|
|
20
|
+
} | {
|
|
21
|
+
readonly kind: "replay";
|
|
22
|
+
readonly receipt: TargetResourceReceipt;
|
|
23
|
+
readonly receiptBytes: string;
|
|
24
|
+
};
|
|
25
|
+
export interface TargetJournalStore {
|
|
26
|
+
complete(claim: TargetJournalClaim, raw: unknown): Promise<{
|
|
27
|
+
readonly receipt: TargetResourceReceipt;
|
|
28
|
+
readonly receiptBytes: string;
|
|
29
|
+
}>;
|
|
30
|
+
read(): Promise<TargetResourceJournal>;
|
|
31
|
+
reserve(raw: unknown): Promise<TargetJournalReservation>;
|
|
32
|
+
resolveCompletedReceipt(claim: TargetJournalClaim): Promise<{
|
|
33
|
+
readonly receipt: TargetResourceReceipt;
|
|
34
|
+
readonly receiptBytes: string;
|
|
35
|
+
} | null>;
|
|
36
|
+
withLifecycleLease<Result>(action: () => Promise<Result>): Promise<Result>;
|
|
37
|
+
}
|
|
38
|
+
export interface TargetJournalLookupStore {
|
|
39
|
+
lookup(raw: unknown): Promise<TargetOperationLookup>;
|
|
40
|
+
}
|
|
41
|
+
export interface LookupTargetOperationOptions {
|
|
42
|
+
context: unknown;
|
|
43
|
+
request: unknown;
|
|
44
|
+
root?: string;
|
|
45
|
+
}
|
|
46
|
+
interface JournalFilesystem {
|
|
47
|
+
syncDirectory(directory: string): Promise<void>;
|
|
48
|
+
}
|
|
49
|
+
/** Test seam for observing the required post-replacement directory sync. */
|
|
50
|
+
export declare const setTargetJournalFilesystemForTests: (replacement: JournalFilesystem) => (() => void);
|
|
51
|
+
export declare const initializeTargetJournal: (options: InitializeTargetJournalOptions) => Promise<TargetJournalStore>;
|
|
52
|
+
/** Internal full authority for target-owned lifecycle recovery. Not barrel-exported. */
|
|
53
|
+
export declare const openExistingTargetJournalAuthority: (options: InitializeTargetJournalOptions) => Promise<TargetJournalStore>;
|
|
54
|
+
/** Public read-only facade over one already-existing journal. */
|
|
55
|
+
export declare const openExistingTargetJournal: (options: InitializeTargetJournalOptions) => Promise<TargetJournalLookupStore>;
|
|
56
|
+
/** Looks up one exact original mutation without creating, locking, or modifying owner state. */
|
|
57
|
+
export declare const lookupTargetOperation: (options: LookupTargetOperationOptions) => Promise<TargetOperationLookup>;
|
|
58
|
+
export declare const openTargetJournal: (options: InitializeTargetJournalOptions) => Promise<TargetJournalStore>;
|
|
59
|
+
export {};
|