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,316 @@
|
|
|
1
|
+
import { Buffer } from "node:buffer";
|
|
2
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
3
|
+
import { constants } from "node:fs";
|
|
4
|
+
import { chmod, link, lstat, mkdir, open, unlink } from "node:fs/promises";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { assertOrdinaryJsonGraph, parseOpaqueTargetHandle } from "./contracts.js";
|
|
7
|
+
import { ORGANIZATION_ATTACHMENT_ERROR, createDockerOrganizationAttachmentSpec, parseOrganizationContainerId } from "./organizationAttachmentProvider.js";
|
|
8
|
+
import { parseOrganizationAttachmentResolution } from "./organizationAttachmentAuthority.js";
|
|
9
|
+
const RESOLUTION_VERSION = "spawnfile.target-organization-attachment.private-resolution.v1";
|
|
10
|
+
const ATTACHMENT_VERSION = "spawnfile.target-organization-attachment.private-binding.v1";
|
|
11
|
+
const MUTATION_ADMISSION_VERSION = "spawnfile.target-organization-attachment.private-mutation-admission.v1";
|
|
12
|
+
const MAX_RECORD_BYTES = 32_768;
|
|
13
|
+
const DIGEST_PATTERN = /^sha256:[a-f0-9]{64}$/u;
|
|
14
|
+
const NAME_PATTERN = /^spfn_[a-f0-9]{58}$/u;
|
|
15
|
+
const fail = () => { throw new Error(ORGANIZATION_ATTACHMENT_ERROR); };
|
|
16
|
+
const ordinary = (raw) => {
|
|
17
|
+
try {
|
|
18
|
+
assertOrdinaryJsonGraph(raw);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return fail();
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
const bytes = (value) => Buffer.byteLength(value, "utf8");
|
|
25
|
+
const exactRecord = (value) => value !== null && typeof value === "object" && !Array.isArray(value)
|
|
26
|
+
&& Object.getPrototypeOf(value) === Object.prototype;
|
|
27
|
+
const exactKeys = (value, expected) => {
|
|
28
|
+
const actual = Object.keys(value).sort();
|
|
29
|
+
const sorted = [...expected].sort();
|
|
30
|
+
return actual.length === sorted.length
|
|
31
|
+
&& actual.every((key, index) => key === sorted[index]);
|
|
32
|
+
};
|
|
33
|
+
const exactStringRecord = (raw) => {
|
|
34
|
+
if (!exactRecord(raw))
|
|
35
|
+
return fail();
|
|
36
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
37
|
+
if (typeof value !== "string" || key.length < 1 || key.length > 128
|
|
38
|
+
|| value.length < 1 || value.length > 128)
|
|
39
|
+
return fail();
|
|
40
|
+
}
|
|
41
|
+
return Object.freeze({ ...raw });
|
|
42
|
+
};
|
|
43
|
+
const same = (left, right) => JSON.stringify(left) === JSON.stringify(right);
|
|
44
|
+
const key = (domain, value) => createHash("sha256")
|
|
45
|
+
.update(`spawnfile.target-organization-attachment.${domain}.v1\0`, "utf8")
|
|
46
|
+
.update(value, "utf8")
|
|
47
|
+
.digest("hex");
|
|
48
|
+
export const createOrganizationAttachmentBinding = (input) => {
|
|
49
|
+
const resolution = parseOrganizationAttachmentResolution(input.resolution);
|
|
50
|
+
const networkId = parseOrganizationContainerId(input.networkId);
|
|
51
|
+
if (!DIGEST_PATTERN.test(input.dataNetworkRequestDigest))
|
|
52
|
+
return fail();
|
|
53
|
+
const expected = createDockerOrganizationAttachmentSpec({
|
|
54
|
+
containerId: resolution.network_attachment.container_id,
|
|
55
|
+
dataNetworkOperationHandle: input.dataNetworkOperationHandle,
|
|
56
|
+
dataNetworkRequestDigest: input.dataNetworkRequestDigest,
|
|
57
|
+
deploymentLabels: resolution.network_attachment.deployment_labels,
|
|
58
|
+
operationHandle: resolution.authorization.operation_handle,
|
|
59
|
+
organizationHandoffHandle: resolution.authorization.organization_handoff_handle,
|
|
60
|
+
requestDigest: resolution.authorization.request_digest,
|
|
61
|
+
runId: resolution.authorization.run_id,
|
|
62
|
+
selectedTargetHandle: resolution.authorization.selected_target.handle
|
|
63
|
+
});
|
|
64
|
+
if (!same(expected, input.spec))
|
|
65
|
+
return fail();
|
|
66
|
+
return Object.freeze({
|
|
67
|
+
attachment_handle: expected.resultHandle,
|
|
68
|
+
data_network: Object.freeze({
|
|
69
|
+
handle: expected.network.resultHandle,
|
|
70
|
+
id: networkId,
|
|
71
|
+
labels: expected.network.labels,
|
|
72
|
+
name: expected.network.name,
|
|
73
|
+
operation_handle: parseOpaqueTargetHandle(input.dataNetworkOperationHandle),
|
|
74
|
+
request_digest: input.dataNetworkRequestDigest
|
|
75
|
+
}),
|
|
76
|
+
receipt_labels: expected.receiptLabels,
|
|
77
|
+
resolution,
|
|
78
|
+
version: ATTACHMENT_VERSION
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
export const parseOrganizationAttachmentBinding = (raw) => {
|
|
82
|
+
ordinary(raw);
|
|
83
|
+
if (!exactRecord(raw) || !exactKeys(raw, [
|
|
84
|
+
"attachment_handle", "data_network", "receipt_labels", "resolution", "version"
|
|
85
|
+
]) || raw.version !== ATTACHMENT_VERSION || !exactRecord(raw.data_network)
|
|
86
|
+
|| !exactKeys(raw.data_network, [
|
|
87
|
+
"handle", "id", "labels", "name", "operation_handle", "request_digest"
|
|
88
|
+
]) || typeof raw.data_network.name !== "string"
|
|
89
|
+
|| !NAME_PATTERN.test(raw.data_network.name)
|
|
90
|
+
|| typeof raw.data_network.request_digest !== "string"
|
|
91
|
+
|| !DIGEST_PATTERN.test(raw.data_network.request_digest))
|
|
92
|
+
return fail();
|
|
93
|
+
const resolution = parseOrganizationAttachmentResolution(raw.resolution);
|
|
94
|
+
const spec = createDockerOrganizationAttachmentSpec({
|
|
95
|
+
containerId: resolution.network_attachment.container_id,
|
|
96
|
+
dataNetworkOperationHandle: parseOpaqueTargetHandle(raw.data_network.operation_handle),
|
|
97
|
+
dataNetworkRequestDigest: raw.data_network.request_digest,
|
|
98
|
+
deploymentLabels: resolution.network_attachment.deployment_labels,
|
|
99
|
+
operationHandle: resolution.authorization.operation_handle,
|
|
100
|
+
organizationHandoffHandle: resolution.authorization.organization_handoff_handle,
|
|
101
|
+
requestDigest: resolution.authorization.request_digest,
|
|
102
|
+
runId: resolution.authorization.run_id,
|
|
103
|
+
selectedTargetHandle: resolution.authorization.selected_target.handle
|
|
104
|
+
});
|
|
105
|
+
const networkLabels = exactStringRecord(raw.data_network.labels);
|
|
106
|
+
const receiptLabels = exactStringRecord(raw.receipt_labels);
|
|
107
|
+
if (raw.attachment_handle !== spec.resultHandle
|
|
108
|
+
|| raw.data_network.handle !== spec.network.resultHandle
|
|
109
|
+
|| raw.data_network.name !== spec.network.name
|
|
110
|
+
|| !same(networkLabels, spec.network.labels)
|
|
111
|
+
|| !same(receiptLabels, spec.receiptLabels))
|
|
112
|
+
return fail();
|
|
113
|
+
return Object.freeze({
|
|
114
|
+
attachment_handle: parseOpaqueTargetHandle(raw.attachment_handle),
|
|
115
|
+
data_network: Object.freeze({
|
|
116
|
+
handle: parseOpaqueTargetHandle(raw.data_network.handle),
|
|
117
|
+
id: parseOrganizationContainerId(raw.data_network.id),
|
|
118
|
+
labels: networkLabels,
|
|
119
|
+
name: raw.data_network.name,
|
|
120
|
+
operation_handle: parseOpaqueTargetHandle(raw.data_network.operation_handle),
|
|
121
|
+
request_digest: raw.data_network.request_digest
|
|
122
|
+
}),
|
|
123
|
+
receipt_labels: receiptLabels,
|
|
124
|
+
resolution,
|
|
125
|
+
version: ATTACHMENT_VERSION
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
export const createOrganizationAttachmentMutationAdmission = (input) => {
|
|
129
|
+
const binding = parseOrganizationAttachmentBinding(input.binding);
|
|
130
|
+
if (input.operation !== "attach_organization" && input.operation !== "detach_organization"
|
|
131
|
+
|| !DIGEST_PATTERN.test(input.requestDigest))
|
|
132
|
+
return fail();
|
|
133
|
+
const operationHandle = parseOpaqueTargetHandle(input.operationHandle);
|
|
134
|
+
if (input.operation === "attach_organization"
|
|
135
|
+
&& (operationHandle !== binding.resolution.authorization.operation_handle
|
|
136
|
+
|| input.requestDigest !== binding.resolution.authorization.request_digest))
|
|
137
|
+
return fail();
|
|
138
|
+
return Object.freeze({
|
|
139
|
+
attachment_handle: binding.attachment_handle,
|
|
140
|
+
container_id: binding.resolution.network_attachment.container_id,
|
|
141
|
+
data_network_id: binding.data_network.id,
|
|
142
|
+
operation: input.operation,
|
|
143
|
+
operation_handle: operationHandle,
|
|
144
|
+
request_digest: input.requestDigest,
|
|
145
|
+
version: MUTATION_ADMISSION_VERSION
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
const parseMutationAdmission = (raw) => {
|
|
149
|
+
ordinary(raw);
|
|
150
|
+
if (!exactRecord(raw) || !exactKeys(raw, [
|
|
151
|
+
"attachment_handle", "container_id", "data_network_id", "operation",
|
|
152
|
+
"operation_handle", "request_digest", "version"
|
|
153
|
+
]) || raw.version !== MUTATION_ADMISSION_VERSION
|
|
154
|
+
|| raw.operation !== "attach_organization" && raw.operation !== "detach_organization"
|
|
155
|
+
|| typeof raw.request_digest !== "string" || !DIGEST_PATTERN.test(raw.request_digest)) {
|
|
156
|
+
return fail();
|
|
157
|
+
}
|
|
158
|
+
return Object.freeze({
|
|
159
|
+
attachment_handle: parseOpaqueTargetHandle(raw.attachment_handle),
|
|
160
|
+
container_id: parseOrganizationContainerId(raw.container_id),
|
|
161
|
+
data_network_id: parseOrganizationContainerId(raw.data_network_id),
|
|
162
|
+
operation: raw.operation,
|
|
163
|
+
operation_handle: parseOpaqueTargetHandle(raw.operation_handle),
|
|
164
|
+
request_digest: raw.request_digest,
|
|
165
|
+
version: MUTATION_ADMISSION_VERSION
|
|
166
|
+
});
|
|
167
|
+
};
|
|
168
|
+
const checkRoot = async (raw) => {
|
|
169
|
+
if (typeof raw !== "string" || raw.length < 1 || bytes(raw) > 4_096)
|
|
170
|
+
return fail();
|
|
171
|
+
const root = path.resolve(raw);
|
|
172
|
+
const parsed = path.parse(root);
|
|
173
|
+
let current = parsed.root;
|
|
174
|
+
for (const part of root.slice(parsed.root.length).split(path.sep).filter(Boolean)) {
|
|
175
|
+
current = path.join(current, part);
|
|
176
|
+
let stats;
|
|
177
|
+
try {
|
|
178
|
+
stats = await lstat(current);
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
if (error.code !== "ENOENT")
|
|
182
|
+
return fail();
|
|
183
|
+
await mkdir(current, { mode: 0o700 }).catch((mkdirError) => {
|
|
184
|
+
if (mkdirError.code !== "EEXIST")
|
|
185
|
+
return fail();
|
|
186
|
+
});
|
|
187
|
+
stats = await lstat(current).catch(fail);
|
|
188
|
+
}
|
|
189
|
+
if (!stats.isDirectory() || stats.isSymbolicLink())
|
|
190
|
+
return fail();
|
|
191
|
+
}
|
|
192
|
+
await chmod(root, 0o700).catch(fail);
|
|
193
|
+
return root;
|
|
194
|
+
};
|
|
195
|
+
const readPrivate = async (filePath) => {
|
|
196
|
+
let stats;
|
|
197
|
+
try {
|
|
198
|
+
stats = await lstat(filePath);
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
if (error.code === "ENOENT")
|
|
202
|
+
return null;
|
|
203
|
+
return fail();
|
|
204
|
+
}
|
|
205
|
+
if (!stats.isFile() || stats.isSymbolicLink() || stats.size > MAX_RECORD_BYTES
|
|
206
|
+
|| (stats.mode & 0o077) !== 0)
|
|
207
|
+
return fail();
|
|
208
|
+
let handle;
|
|
209
|
+
try {
|
|
210
|
+
handle = await open(filePath, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
return fail();
|
|
214
|
+
}
|
|
215
|
+
try {
|
|
216
|
+
const current = await handle.stat();
|
|
217
|
+
if (!current.isFile() || current.size > MAX_RECORD_BYTES || (current.mode & 0o077) !== 0)
|
|
218
|
+
return fail();
|
|
219
|
+
return await handle.readFile({ encoding: "utf8" });
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
return fail();
|
|
223
|
+
}
|
|
224
|
+
finally {
|
|
225
|
+
await handle.close().catch(() => undefined);
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
const syncDirectory = async (directory) => {
|
|
229
|
+
const handle = await open(directory, constants.O_RDONLY);
|
|
230
|
+
try {
|
|
231
|
+
await handle.sync();
|
|
232
|
+
}
|
|
233
|
+
finally {
|
|
234
|
+
await handle.close();
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
const createImmutable = async (root, fileName, content) => {
|
|
238
|
+
if (bytes(content) > MAX_RECORD_BYTES)
|
|
239
|
+
return fail();
|
|
240
|
+
const finalPath = path.join(root, fileName);
|
|
241
|
+
const existing = await readPrivate(finalPath);
|
|
242
|
+
if (existing !== null) {
|
|
243
|
+
if (existing !== content)
|
|
244
|
+
return fail();
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
const temporaryPath = path.join(root, `.${fileName}.${process.pid}.${randomUUID()}.tmp`);
|
|
248
|
+
let handle;
|
|
249
|
+
try {
|
|
250
|
+
handle = await open(temporaryPath, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY | constants.O_NOFOLLOW, 0o600);
|
|
251
|
+
await handle.chmod(0o600);
|
|
252
|
+
await handle.writeFile(content, "utf8");
|
|
253
|
+
await handle.sync();
|
|
254
|
+
await handle.close();
|
|
255
|
+
handle = undefined;
|
|
256
|
+
try {
|
|
257
|
+
await link(temporaryPath, finalPath);
|
|
258
|
+
await syncDirectory(root);
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
if (error.code !== "EEXIST")
|
|
262
|
+
throw error;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
finally {
|
|
266
|
+
if (handle)
|
|
267
|
+
await handle.close().catch(() => undefined);
|
|
268
|
+
await unlink(temporaryPath).catch((error) => {
|
|
269
|
+
if (error.code !== "ENOENT")
|
|
270
|
+
throw error;
|
|
271
|
+
});
|
|
272
|
+
await syncDirectory(root);
|
|
273
|
+
}
|
|
274
|
+
if (await readPrivate(finalPath) !== content)
|
|
275
|
+
return fail();
|
|
276
|
+
};
|
|
277
|
+
class FileOrganizationAttachmentAuthorityStore {
|
|
278
|
+
#root;
|
|
279
|
+
constructor(root) { this.#root = root; }
|
|
280
|
+
async bindResolution(raw) {
|
|
281
|
+
const resolution = parseOrganizationAttachmentResolution(raw);
|
|
282
|
+
const content = JSON.stringify({ resolution, version: RESOLUTION_VERSION });
|
|
283
|
+
const fileName = `${key("resolution", resolution.authorization.organization_handoff_handle)}.resolution.json`;
|
|
284
|
+
await createImmutable(this.#root, fileName, content);
|
|
285
|
+
}
|
|
286
|
+
async bindAttachment(raw) {
|
|
287
|
+
const binding = parseOrganizationAttachmentBinding(raw);
|
|
288
|
+
const fileName = `${key("binding", binding.attachment_handle)}.attachment.json`;
|
|
289
|
+
await createImmutable(this.#root, fileName, JSON.stringify(binding));
|
|
290
|
+
}
|
|
291
|
+
async bindMutationAdmission(raw) {
|
|
292
|
+
const admission = parseMutationAdmission(raw);
|
|
293
|
+
const fileName = `${key("mutation-admission", admission.operation_handle)}.admission.json`;
|
|
294
|
+
await createImmutable(this.#root, fileName, JSON.stringify(admission));
|
|
295
|
+
}
|
|
296
|
+
async loadAttachment(handle) {
|
|
297
|
+
const parsed = parseOpaqueTargetHandle(handle);
|
|
298
|
+
const fileName = `${key("binding", parsed)}.attachment.json`;
|
|
299
|
+
const content = await readPrivate(path.join(this.#root, fileName));
|
|
300
|
+
if (content === null)
|
|
301
|
+
return fail();
|
|
302
|
+
try {
|
|
303
|
+
return parseOrganizationAttachmentBinding(JSON.parse(content));
|
|
304
|
+
}
|
|
305
|
+
catch {
|
|
306
|
+
return fail();
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
async requireMutationAdmission(raw) {
|
|
310
|
+
const admission = parseMutationAdmission(raw);
|
|
311
|
+
const fileName = `${key("mutation-admission", admission.operation_handle)}.admission.json`;
|
|
312
|
+
if (await readPrivate(path.join(this.#root, fileName)) !== JSON.stringify(admission))
|
|
313
|
+
return fail();
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
export const initializeOrganizationAttachmentAuthorityStore = async (root) => new FileOrganizationAttachmentAuthorityStore(await checkRoot(root));
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const TARGET_PUBLIC_ARTIFACT_SNAPSHOT_REQUEST_VERSION: "spawnfile.target-public-artifact-snapshot.request.v1";
|
|
3
|
+
export declare const TARGET_PUBLIC_ARTIFACT_SNAPSHOT_VERSION: "spawnfile.target-public-artifact-snapshot.v1";
|
|
4
|
+
export declare const TARGET_PUBLIC_ARTIFACT_ROOT: "/tmp/spawnfile-public";
|
|
5
|
+
export declare const MAX_TARGET_PUBLIC_ARTIFACT_BYTES = 131072;
|
|
6
|
+
export declare const targetPublicArtifactSnapshotRequestSchema: z.ZodObject<{
|
|
7
|
+
artifact: z.ZodObject<{
|
|
8
|
+
id: z.ZodString;
|
|
9
|
+
max_bytes: z.ZodNumber;
|
|
10
|
+
media_type: z.ZodString;
|
|
11
|
+
path: z.ZodString;
|
|
12
|
+
}, z.core.$strict>;
|
|
13
|
+
descriptor_digest: z.ZodString;
|
|
14
|
+
run_id: z.ZodPipe<z.ZodString, z.ZodTransform<import("./contracts.js").RunId, string>>;
|
|
15
|
+
selected_target: z.ZodObject<{
|
|
16
|
+
fingerprint: z.ZodString;
|
|
17
|
+
handle: z.ZodPipe<z.ZodString, z.ZodTransform<import("./contracts.js").OpaqueTargetHandle, string>>;
|
|
18
|
+
}, z.core.$strict>;
|
|
19
|
+
version: z.ZodLiteral<"spawnfile.target-public-artifact-snapshot.request.v1">;
|
|
20
|
+
world_service_handle: z.ZodPipe<z.ZodString, z.ZodTransform<import("./contracts.js").OpaqueTargetHandle, string>>;
|
|
21
|
+
}, z.core.$strict>;
|
|
22
|
+
export declare const targetPublicArtifactSnapshotSchema: z.ZodObject<{
|
|
23
|
+
artifact_id: z.ZodString;
|
|
24
|
+
content_base64: z.ZodString;
|
|
25
|
+
content_digest: z.ZodString;
|
|
26
|
+
media_type: z.ZodString;
|
|
27
|
+
request_digest: z.ZodString;
|
|
28
|
+
run_id: z.ZodPipe<z.ZodString, z.ZodTransform<import("./contracts.js").RunId, string>>;
|
|
29
|
+
size_bytes: z.ZodNumber;
|
|
30
|
+
version: z.ZodLiteral<"spawnfile.target-public-artifact-snapshot.v1">;
|
|
31
|
+
}, z.core.$strict>;
|
|
32
|
+
export type TargetPublicArtifactSnapshotRequest = z.infer<typeof targetPublicArtifactSnapshotRequestSchema>;
|
|
33
|
+
export type TargetPublicArtifactSnapshot = z.infer<typeof targetPublicArtifactSnapshotSchema>;
|
|
34
|
+
export declare const parseTargetPublicArtifactSnapshotRequest: (raw: unknown) => TargetPublicArtifactSnapshotRequest;
|
|
35
|
+
export declare const parseTargetPublicArtifactSnapshot: (raw: unknown) => TargetPublicArtifactSnapshot;
|
|
36
|
+
export declare const createTargetPublicArtifactSnapshotRequestDigest: (raw: unknown) => `sha256:${string}`;
|
|
37
|
+
export declare const createTargetPublicArtifactSnapshot: (input: {
|
|
38
|
+
readonly content: Uint8Array;
|
|
39
|
+
readonly request: TargetPublicArtifactSnapshotRequest;
|
|
40
|
+
}) => TargetPublicArtifactSnapshot;
|
|
41
|
+
export declare const createCanonicalTargetPublicArtifactSnapshotBytes: (raw: unknown) => string;
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { Buffer } from "node:buffer";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import { types as nodeTypes } from "node:util";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { assertOrdinaryJsonGraph, opaqueTargetHandleSchema, runIdSchema, selectedTargetSchema } from "./contracts.js";
|
|
6
|
+
export const TARGET_PUBLIC_ARTIFACT_SNAPSHOT_REQUEST_VERSION = "spawnfile.target-public-artifact-snapshot.request.v1";
|
|
7
|
+
export const TARGET_PUBLIC_ARTIFACT_SNAPSHOT_VERSION = "spawnfile.target-public-artifact-snapshot.v1";
|
|
8
|
+
export const TARGET_PUBLIC_ARTIFACT_ROOT = "/tmp/spawnfile-public";
|
|
9
|
+
export const MAX_TARGET_PUBLIC_ARTIFACT_BYTES = 131_072;
|
|
10
|
+
const digestSchema = z.string().regex(/^sha256:[0-9a-f]{64}$/u);
|
|
11
|
+
const identifierSchema = z.string().regex(/^[a-z][a-z0-9_-]{0,63}$/u);
|
|
12
|
+
const mediaTypeSchema = z.string()
|
|
13
|
+
.max(127)
|
|
14
|
+
.regex(/^[a-z][a-z0-9!#$&^_.+-]*\/[a-z0-9][a-z0-9!#$&^_.+-]*$/u);
|
|
15
|
+
const publicPathSchema = z.string().max(255)
|
|
16
|
+
.regex(/^\/tmp\/spawnfile-public\/[A-Za-z0-9][A-Za-z0-9._/-]*$/u)
|
|
17
|
+
.refine((value) => !value.includes("//") && !value.endsWith("/")
|
|
18
|
+
&& !value.split("/").some((part) => part === "." || part === ".."));
|
|
19
|
+
export const targetPublicArtifactSnapshotRequestSchema = z.object({
|
|
20
|
+
artifact: z.object({
|
|
21
|
+
id: identifierSchema,
|
|
22
|
+
max_bytes: z.number().int().min(1).max(MAX_TARGET_PUBLIC_ARTIFACT_BYTES),
|
|
23
|
+
media_type: mediaTypeSchema,
|
|
24
|
+
path: publicPathSchema
|
|
25
|
+
}).strict(),
|
|
26
|
+
descriptor_digest: digestSchema,
|
|
27
|
+
run_id: runIdSchema,
|
|
28
|
+
selected_target: selectedTargetSchema,
|
|
29
|
+
version: z.literal(TARGET_PUBLIC_ARTIFACT_SNAPSHOT_REQUEST_VERSION),
|
|
30
|
+
world_service_handle: opaqueTargetHandleSchema
|
|
31
|
+
}).strict();
|
|
32
|
+
export const targetPublicArtifactSnapshotSchema = z.object({
|
|
33
|
+
artifact_id: identifierSchema,
|
|
34
|
+
content_base64: z.string().max(Math.ceil(MAX_TARGET_PUBLIC_ARTIFACT_BYTES / 3) * 4),
|
|
35
|
+
content_digest: digestSchema,
|
|
36
|
+
media_type: mediaTypeSchema,
|
|
37
|
+
request_digest: digestSchema,
|
|
38
|
+
run_id: runIdSchema,
|
|
39
|
+
size_bytes: z.number().int().min(0).max(MAX_TARGET_PUBLIC_ARTIFACT_BYTES),
|
|
40
|
+
version: z.literal(TARGET_PUBLIC_ARTIFACT_SNAPSHOT_VERSION)
|
|
41
|
+
}).strict().superRefine((value, context) => {
|
|
42
|
+
let bytes;
|
|
43
|
+
try {
|
|
44
|
+
bytes = Buffer.from(value.content_base64, "base64");
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "invalid base64 content" });
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (bytes.toString("base64") !== value.content_base64
|
|
51
|
+
|| bytes.byteLength !== value.size_bytes
|
|
52
|
+
|| `sha256:${createHash("sha256").update(bytes).digest("hex")}` !== value.content_digest) {
|
|
53
|
+
context.addIssue({ code: z.ZodIssueCode.custom, message: "artifact content mismatch" });
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
const canonicalJsonValue = (value) => {
|
|
57
|
+
if (Array.isArray(value))
|
|
58
|
+
return `[${value.map(canonicalJsonValue).join(",")}]`;
|
|
59
|
+
if (value !== null && typeof value === "object") {
|
|
60
|
+
const record = value;
|
|
61
|
+
return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${canonicalJsonValue(record[key])}`).join(",")}}`;
|
|
62
|
+
}
|
|
63
|
+
return JSON.stringify(value);
|
|
64
|
+
};
|
|
65
|
+
const canonicalJson = (value) => {
|
|
66
|
+
assertOrdinaryJsonGraph(value);
|
|
67
|
+
return canonicalJsonValue(value);
|
|
68
|
+
};
|
|
69
|
+
/*
|
|
70
|
+
* Public artifact snapshots are deliberately one flat envelope. Their base64
|
|
71
|
+
* payload can be larger than the generic JSON graph's aggregate 64 KiB string
|
|
72
|
+
* allowance, so admit that one field without relaxing the shared graph guard.
|
|
73
|
+
* Descriptor inspection happens before Zod is allowed to read any property.
|
|
74
|
+
*/
|
|
75
|
+
const assertOrdinaryPublicArtifactSnapshot = (raw) => {
|
|
76
|
+
try {
|
|
77
|
+
if (raw === null || typeof raw !== "object" || Array.isArray(raw)
|
|
78
|
+
|| nodeTypes.isProxy(raw))
|
|
79
|
+
throw new Error();
|
|
80
|
+
const prototype = Object.getPrototypeOf(raw);
|
|
81
|
+
if (prototype !== Object.prototype && prototype !== null)
|
|
82
|
+
throw new Error();
|
|
83
|
+
const keys = Reflect.ownKeys(raw);
|
|
84
|
+
if (keys.length > 8)
|
|
85
|
+
throw new Error();
|
|
86
|
+
let ordinaryStringBytes = 0;
|
|
87
|
+
for (const key of keys) {
|
|
88
|
+
if (typeof key !== "string")
|
|
89
|
+
throw new Error();
|
|
90
|
+
const descriptor = Object.getOwnPropertyDescriptor(raw, key);
|
|
91
|
+
if (!descriptor || !("value" in descriptor) || !descriptor.enumerable) {
|
|
92
|
+
throw new Error();
|
|
93
|
+
}
|
|
94
|
+
ordinaryStringBytes += Buffer.byteLength(key, "utf8");
|
|
95
|
+
const value = descriptor.value;
|
|
96
|
+
if (typeof value === "string") {
|
|
97
|
+
if (key === "content_base64") {
|
|
98
|
+
if (Buffer.byteLength(value, "utf8")
|
|
99
|
+
> Math.ceil(MAX_TARGET_PUBLIC_ARTIFACT_BYTES / 3) * 4)
|
|
100
|
+
throw new Error();
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
ordinaryStringBytes += Buffer.byteLength(value, "utf8");
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else if (typeof value === "number") {
|
|
107
|
+
if (!Number.isFinite(value))
|
|
108
|
+
throw new Error();
|
|
109
|
+
}
|
|
110
|
+
else if (value !== null && typeof value !== "boolean") {
|
|
111
|
+
throw new Error();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (ordinaryStringBytes > 65_536)
|
|
115
|
+
throw new Error();
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
throw new TypeError("invalid JSON-like graph");
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
export const parseTargetPublicArtifactSnapshotRequest = (raw) => {
|
|
122
|
+
assertOrdinaryJsonGraph(raw);
|
|
123
|
+
return targetPublicArtifactSnapshotRequestSchema.parse(raw);
|
|
124
|
+
};
|
|
125
|
+
export const parseTargetPublicArtifactSnapshot = (raw) => {
|
|
126
|
+
assertOrdinaryPublicArtifactSnapshot(raw);
|
|
127
|
+
return targetPublicArtifactSnapshotSchema.parse(raw);
|
|
128
|
+
};
|
|
129
|
+
export const createTargetPublicArtifactSnapshotRequestDigest = (raw) => `sha256:${createHash("sha256")
|
|
130
|
+
.update("spawnfile.target-public-artifact-snapshot.request.v1\0", "utf8")
|
|
131
|
+
.update(canonicalJson(parseTargetPublicArtifactSnapshotRequest(raw)), "utf8")
|
|
132
|
+
.digest("hex")}`;
|
|
133
|
+
export const createTargetPublicArtifactSnapshot = (input) => {
|
|
134
|
+
const request = parseTargetPublicArtifactSnapshotRequest(input.request);
|
|
135
|
+
const bytes = Buffer.from(input.content);
|
|
136
|
+
if (bytes.byteLength > request.artifact.max_bytes) {
|
|
137
|
+
throw new TypeError("Public artifact exceeds its declared bound");
|
|
138
|
+
}
|
|
139
|
+
return parseTargetPublicArtifactSnapshot({
|
|
140
|
+
artifact_id: request.artifact.id,
|
|
141
|
+
content_base64: bytes.toString("base64"),
|
|
142
|
+
content_digest: `sha256:${createHash("sha256").update(bytes).digest("hex")}`,
|
|
143
|
+
media_type: request.artifact.media_type,
|
|
144
|
+
request_digest: createTargetPublicArtifactSnapshotRequestDigest(request),
|
|
145
|
+
run_id: request.run_id,
|
|
146
|
+
size_bytes: bytes.byteLength,
|
|
147
|
+
version: TARGET_PUBLIC_ARTIFACT_SNAPSHOT_VERSION
|
|
148
|
+
});
|
|
149
|
+
};
|
|
150
|
+
export const createCanonicalTargetPublicArtifactSnapshotBytes = (raw) => canonicalJsonValue(parseTargetPublicArtifactSnapshot(raw));
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type TargetTopologyReceipt } from "./contracts.js";
|
|
3
|
+
import { type DockerWorldServiceExecutor } from "./dockerWorldServiceProvider.js";
|
|
4
|
+
import type { WorldServiceBinding } from "./dockerWorldServiceStore.js";
|
|
5
|
+
export declare const WORLD_SERVICE_ACTIVATION_VERSION: "spawnfile.world-service-activation.v1";
|
|
6
|
+
export declare const TARGET_TOPOLOGY_ACTIVATION_RECEIPT_VERSION: "spawnfile.target-topology-activation-receipt.v1";
|
|
7
|
+
export declare const WORLD_SERVICE_ACTIVATION_RELATIVE_PATH: ".spawnfile/world-service-activated.v1";
|
|
8
|
+
declare const markerSchema: z.ZodObject<{
|
|
9
|
+
bundle_digest: z.ZodString;
|
|
10
|
+
run_id: z.ZodString;
|
|
11
|
+
state: z.ZodLiteral<"activated">;
|
|
12
|
+
topology_receipt_digest: z.ZodString;
|
|
13
|
+
topology_request_digest: z.ZodString;
|
|
14
|
+
version: z.ZodLiteral<"spawnfile.world-service-activation.v1">;
|
|
15
|
+
}, z.core.$strict>;
|
|
16
|
+
declare const receiptSchema: z.ZodObject<{
|
|
17
|
+
activation_digest: z.ZodString;
|
|
18
|
+
bundle_digest: z.ZodString;
|
|
19
|
+
receipt_digest: z.ZodString;
|
|
20
|
+
run_id: z.ZodString;
|
|
21
|
+
state: z.ZodLiteral<"activated">;
|
|
22
|
+
topology_receipt_digest: z.ZodString;
|
|
23
|
+
topology_request_digest: z.ZodString;
|
|
24
|
+
version: z.ZodLiteral<"spawnfile.target-topology-activation-receipt.v1">;
|
|
25
|
+
}, z.core.$strict>;
|
|
26
|
+
export type WorldServiceActivation = z.infer<typeof markerSchema>;
|
|
27
|
+
export type TargetTopologyActivationReceipt = z.infer<typeof receiptSchema>;
|
|
28
|
+
export interface TargetTopologyActivationResult {
|
|
29
|
+
readonly receipt: TargetTopologyActivationReceipt;
|
|
30
|
+
readonly receiptBytes: string;
|
|
31
|
+
}
|
|
32
|
+
export declare const parseWorldServiceActivation: (raw: unknown) => WorldServiceActivation;
|
|
33
|
+
export declare const parseTargetTopologyActivationReceipt: (raw: unknown) => TargetTopologyActivationReceipt;
|
|
34
|
+
export declare const createCanonicalWorldServiceActivationBytes: (raw: unknown) => string;
|
|
35
|
+
export declare const createCanonicalTargetTopologyActivationReceiptBytes: (raw: unknown) => string;
|
|
36
|
+
export declare const createWorldServiceActivationDigest: (raw: unknown) => string;
|
|
37
|
+
export declare const createTargetTopologyActivationReceiptDigest: (raw: unknown) => string;
|
|
38
|
+
/**
|
|
39
|
+
* Publishes the owner-only lifecycle release through the service's existing
|
|
40
|
+
* evidence mount. Docker copies exact canonical bytes; no provider traffic or
|
|
41
|
+
* agent-reachable endpoint participates in activation.
|
|
42
|
+
*/
|
|
43
|
+
export declare const activateDockerWorldService: (input: {
|
|
44
|
+
readonly executor: DockerWorldServiceExecutor;
|
|
45
|
+
readonly signal?: AbortSignal;
|
|
46
|
+
readonly target: readonly string[];
|
|
47
|
+
readonly timeoutMs: number;
|
|
48
|
+
readonly topology: TargetTopologyReceipt;
|
|
49
|
+
readonly world: WorldServiceBinding;
|
|
50
|
+
}) => Promise<TargetTopologyActivationResult>;
|
|
51
|
+
export {};
|