spawnfile 0.1.13 → 0.1.17
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 +61 -121
- 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/importers.d.ts +10 -0
- package/dist/auth/importers.js +29 -4
- package/dist/auth/index.d.ts +9 -0
- package/dist/auth/index.js +8 -0
- package/dist/auth/paths.d.ts +12 -1
- package/dist/auth/paths.js +21 -0
- package/dist/auth/profileStore.js +9 -9
- package/dist/auth/targetSecretSourceAuthor.d.ts +18 -0
- package/dist/auth/targetSecretSourceAuthor.js +52 -0
- package/dist/auth/targetSecretSourceFsIdentity.d.ts +40 -0
- package/dist/auth/targetSecretSourceFsIdentity.js +42 -0
- package/dist/auth/targetSecretSourceFsPublish.d.ts +17 -0
- package/dist/auth/targetSecretSourceFsPublish.js +51 -0
- package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +17 -0
- package/dist/auth/targetSecretSourceFsPublishImmutable.js +468 -0
- package/dist/auth/targetSecretSourceFsRead.d.ts +14 -0
- package/dist/auth/targetSecretSourceFsRead.js +189 -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/auth/trainingAuth.d.ts +21 -0
- package/dist/auth/trainingAuth.js +86 -0
- package/dist/auth/types.d.ts +1 -1
- 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 +230 -0
- package/dist/cli/canaryCutoverCommand.d.ts +2 -0
- package/dist/cli/canaryCutoverCommand.js +30 -0
- package/dist/cli/capabilitiesCommand.d.ts +3 -0
- package/dist/cli/capabilitiesCommand.js +12 -0
- package/dist/cli/capabilitiesReceipt.d.ts +56 -0
- package/dist/cli/capabilitiesReceipt.js +56 -0
- package/dist/cli/compileBuildCommands.d.ts +3 -0
- package/dist/cli/compileBuildCommands.js +48 -0
- package/dist/cli/composedLifecycleContractSet.d.ts +21 -0
- package/dist/cli/composedLifecycleContractSet.js +204 -0
- package/dist/cli/containerBundleCommand.d.ts +6 -0
- package/dist/cli/containerBundleCommand.js +116 -0
- package/dist/cli/devCommands.js +2 -0
- package/dist/cli/downCommand.d.ts +25 -0
- package/dist/cli/downCommand.js +145 -0
- package/dist/cli/evidenceExportHelperCommand.d.ts +13 -0
- package/dist/cli/evidenceExportHelperCommand.js +51 -0
- package/dist/cli/index.js +15 -3
- package/dist/cli/lifecycleCommands.d.ts +1 -1
- package/dist/cli/lifecycleCommands.js +11 -181
- package/dist/cli/lifecycleMachine.d.ts +25 -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/paideiaDelegation.d.ts +17 -0
- package/dist/cli/paideiaDelegation.js +210 -0
- package/dist/cli/paideiaSupervisor.d.ts +17 -0
- package/dist/cli/paideiaSupervisor.js +48 -0
- package/dist/cli/productStateCloneCommand.d.ts +2 -0
- package/dist/cli/productStateCloneCommand.js +34 -0
- package/dist/cli/runCli.d.ts +19 -2
- package/dist/cli/runCli.js +58 -74
- package/dist/cli/runPublishCommands.d.ts +3 -0
- package/dist/cli/runPublishCommands.js +70 -0
- package/dist/cli/statusCommand.d.ts +3 -33
- package/dist/cli/statusCommand.js +19 -249
- 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 +30 -0
- package/dist/cli/targetCommands.js +227 -0
- package/dist/cli/targetComposedPreparationCommand.d.ts +6 -0
- package/dist/cli/targetComposedPreparationCommand.js +39 -0
- package/dist/cli/targetConfigPreparedPlan.d.ts +3 -0
- package/dist/cli/targetConfigPreparedPlan.js +74 -0
- package/dist/cli/targetConfigResolver.d.ts +3 -0
- package/dist/cli/targetConfigResolver.js +111 -0
- package/dist/cli/targetConfigResolverCommand.d.ts +6 -0
- package/dist/cli/targetConfigResolverCommand.js +43 -0
- package/dist/cli/targetConfigResolverContracts.d.ts +56 -0
- package/dist/cli/targetConfigResolverContracts.js +30 -0
- package/dist/cli/targetConfigResolverDocker.d.ts +4 -0
- package/dist/cli/targetConfigResolverDocker.js +47 -0
- package/dist/cli/targetConfigResolverValidation.d.ts +10 -0
- package/dist/cli/targetConfigResolverValidation.js +94 -0
- package/dist/cli/targetDefaultArtifactAuthority.d.ts +5 -0
- package/dist/cli/targetDefaultArtifactAuthority.js +28 -0
- package/dist/cli/targetDefaultAuthorities.d.ts +55 -0
- package/dist/cli/targetDefaultAuthorities.js +213 -0
- package/dist/cli/targetDefaultConfig.d.ts +75 -0
- package/dist/cli/targetDefaultConfig.js +334 -0
- package/dist/cli/targetDefaultConfigStdin.d.ts +13 -0
- package/dist/cli/targetDefaultConfigStdin.js +221 -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 +268 -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/targetProductionCommands.d.ts +5 -0
- package/dist/cli/targetProductionCommands.js +45 -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/targetWorldReadinessCommand.d.ts +10 -0
- package/dist/cli/targetWorldReadinessCommand.js +43 -0
- package/dist/cli/trainCommand.d.ts +3 -0
- package/dist/cli/trainCommand.js +61 -0
- package/dist/cli/upCommand.d.ts +3 -0
- package/dist/cli/upCommand.js +162 -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 +197 -0
- package/dist/cli/usageCommand.d.ts +40 -0
- package/dist/cli/usageCommand.js +284 -0
- package/dist/cli/usageCommandLive.d.ts +84 -0
- package/dist/cli/usageCommandLive.js +95 -0
- package/dist/cli/usageDeploymentSource.d.ts +9 -0
- package/dist/cli/usageDeploymentSource.js +22 -0
- package/dist/cli/workspaceResourceMigrationCommand.d.ts +8 -0
- package/dist/cli/workspaceResourceMigrationCommand.js +36 -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 +2 -1
- package/dist/compiler/buildCompilePlanTeams.js +9 -1
- package/dist/compiler/buildCompilePlanTraversal.js +75 -82
- package/dist/compiler/buildProject.d.ts +11 -0
- package/dist/compiler/buildProject.js +77 -2
- package/dist/compiler/compilePlanHelpers.js +5 -0
- package/dist/compiler/compileProject.d.ts +15 -0
- package/dist/compiler/compileProject.js +31 -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/compileProjectSupport.js +9 -0
- package/dist/compiler/containerArtifactSummaries.d.ts +7 -0
- package/dist/compiler/containerArtifactSummaries.js +138 -0
- package/dist/compiler/containerArtifacts.d.ts +12 -0
- package/dist/compiler/containerArtifacts.js +180 -127
- package/dist/compiler/containerArtifactsPlans.d.ts +5 -3
- package/dist/compiler/containerArtifactsPlans.js +54 -124
- package/dist/compiler/containerArtifactsRender.d.ts +5 -2
- package/dist/compiler/containerArtifactsRender.js +106 -70
- package/dist/compiler/containerArtifactsTypes.d.ts +20 -0
- package/dist/compiler/containerBackedMountRender.d.ts +56 -0
- package/dist/compiler/containerBackedMountRender.js +101 -0
- package/dist/compiler/containerConfigEnvRender.d.ts +3 -0
- package/dist/compiler/containerConfigEnvRender.js +54 -0
- package/dist/compiler/containerDaimonBrokerRender.d.ts +112 -0
- package/dist/compiler/containerDaimonBrokerRender.js +191 -0
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +38 -0
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +108 -0
- package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +172 -0
- package/dist/compiler/containerDaimonGrokWorkerRender.js +268 -0
- package/dist/compiler/containerDaimonOwnershipGuardRender.d.ts +12 -0
- package/dist/compiler/containerDaimonOwnershipGuardRender.js +191 -0
- package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +24 -0
- package/dist/compiler/containerDaimonUidEntrypointRender.js +297 -0
- package/dist/compiler/containerEntrypointRender.d.ts +8 -0
- package/dist/compiler/containerEntrypointRender.js +82 -72
- 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/containerPersistentMounts.d.ts +30 -0
- package/dist/compiler/containerPersistentMounts.js +66 -0
- package/dist/compiler/containerReadinessPaths.d.ts +1 -0
- package/dist/compiler/containerReadinessPaths.js +1 -0
- package/dist/compiler/containerRuntimeLinkMaterializer.d.ts +2 -0
- package/dist/compiler/containerRuntimeLinkMaterializer.js +12 -0
- package/dist/compiler/containerRuntimeReadinessRender.d.ts +7 -0
- package/dist/compiler/containerRuntimeReadinessRender.js +40 -0
- package/dist/compiler/containerStateOwnershipRender.d.ts +4 -0
- package/dist/compiler/containerStateOwnershipRender.js +75 -0
- package/dist/compiler/containerTargetPlanResolution.d.ts +20 -0
- package/dist/compiler/containerTargetPlanResolution.js +97 -0
- package/dist/compiler/containerTargetResources.d.ts +22 -1
- package/dist/compiler/containerTargetResources.js +94 -2
- package/dist/compiler/containerVolumeBootstrap.d.ts +3 -0
- package/dist/compiler/containerVolumeBootstrap.js +3 -0
- package/dist/compiler/containerWorkspaceResourceRender.js +49 -1
- package/dist/compiler/daimonTelemetryArtifacts.d.ts +22 -0
- package/dist/compiler/daimonTelemetryArtifacts.js +56 -0
- package/dist/compiler/deploymentLineage.d.ts +40 -0
- package/dist/compiler/deploymentLineage.js +50 -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 +7 -0
- package/dist/compiler/index.js +7 -0
- package/dist/compiler/initProject.d.ts +2 -0
- package/dist/compiler/initProject.js +39 -1
- package/dist/compiler/localMoltnetAuthority.d.ts +64 -0
- package/dist/compiler/localMoltnetAuthority.js +177 -0
- package/dist/compiler/memoryArtifacts.d.ts +26 -0
- package/dist/compiler/memoryArtifacts.js +210 -0
- package/dist/compiler/memoryResolution.d.ts +4 -0
- package/dist/compiler/memoryResolution.js +147 -0
- package/dist/compiler/modelEnv.d.ts +7 -0
- package/dist/compiler/modelEnv.js +13 -1
- package/dist/compiler/moltnetAllowedWakeSendersValidation.d.ts +2 -0
- package/dist/compiler/moltnetAllowedWakeSendersValidation.js +42 -0
- package/dist/compiler/moltnetArtifactPaths.d.ts +31 -0
- package/dist/compiler/moltnetArtifactPaths.js +51 -0
- package/dist/compiler/moltnetArtifactTypes.d.ts +56 -0
- package/dist/compiler/moltnetArtifactTypes.js +1 -0
- package/dist/compiler/moltnetArtifacts.d.ts +3 -41
- package/dist/compiler/moltnetArtifacts.js +87 -101
- package/dist/compiler/moltnetBinaries.d.ts +33 -4
- package/dist/compiler/moltnetBinaries.js +173 -26
- package/dist/compiler/moltnetClientConfig.js +7 -2
- package/dist/compiler/moltnetConfigLowering.d.ts +18 -1
- package/dist/compiler/moltnetConfigLowering.js +92 -6
- 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 +40 -0
- package/dist/compiler/moltnetReleaseAuthority.js +102 -0
- package/dist/compiler/moltnetReleaseDownload.d.ts +12 -0
- package/dist/compiler/moltnetReleaseDownload.js +85 -0
- package/dist/compiler/moltnetRepresentativeResolution.d.ts +2 -1
- package/dist/compiler/moltnetRepresentativeResolution.js +17 -3
- package/dist/compiler/moltnetResolution.js +67 -21
- package/dist/compiler/moltnetRoomMemberships.js +52 -9
- package/dist/compiler/moltnetRoomPolicyCompatibility.d.ts +1 -1
- package/dist/compiler/moltnetRoomPolicyCompatibility.js +3 -1
- package/dist/compiler/moltnetRuntimeConfig.d.ts +1 -1
- package/dist/compiler/moltnetRuntimeConfig.js +22 -2
- package/dist/compiler/moltnetServerPlans.d.ts +9 -0
- package/dist/compiler/moltnetServerPlans.js +151 -0
- package/dist/compiler/organizationExternalParticipants.d.ts +3 -0
- package/dist/compiler/organizationExternalParticipants.js +176 -0
- package/dist/compiler/organizationIdentity.d.ts +21 -0
- package/dist/compiler/organizationIdentity.js +64 -0
- package/dist/compiler/organizationIdentityGraph.d.ts +15 -0
- package/dist/compiler/organizationIdentityGraph.js +115 -0
- package/dist/compiler/organizationReadyEvidence.d.ts +57 -0
- package/dist/compiler/organizationReadyEvidence.js +281 -0
- package/dist/compiler/projectManifestGraph.d.ts +4 -0
- package/dist/compiler/projectManifestGraph.js +24 -0
- package/dist/compiler/runProject.d.ts +8 -2
- package/dist/compiler/runProject.js +62 -27
- package/dist/compiler/runProjectAuth.d.ts +10 -2
- package/dist/compiler/runProjectAuth.js +105 -11
- package/dist/compiler/runProjectDaimonCodexDocker.d.ts +3 -0
- package/dist/compiler/runProjectDaimonCodexDocker.js +36 -0
- package/dist/compiler/runProjectDocker.d.ts +11 -0
- package/dist/compiler/runProjectDocker.js +64 -16
- package/dist/compiler/runProjectDockerDaimonGuards.d.ts +15 -0
- package/dist/compiler/runProjectDockerDaimonGuards.js +122 -0
- package/dist/compiler/runProjectDockerReservation.d.ts +3 -0
- package/dist/compiler/runProjectDockerReservation.js +118 -0
- 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/training/broker/declaration.d.ts +45 -0
- package/dist/compiler/training/broker/declaration.js +55 -0
- package/dist/compiler/training/broker/entrypoint.d.ts +39 -0
- package/dist/compiler/training/broker/entrypoint.js +111 -0
- package/dist/compiler/training/broker/index.d.ts +10 -0
- package/dist/compiler/training/broker/index.js +10 -0
- package/dist/compiler/training/broker/main.d.ts +2 -0
- package/dist/compiler/training/broker/main.js +14 -0
- package/dist/compiler/training/broker/paths.d.ts +196 -0
- package/dist/compiler/training/broker/paths.js +241 -0
- package/dist/compiler/training/broker/processes.d.ts +42 -0
- package/dist/compiler/training/broker/processes.js +99 -0
- package/dist/compiler/training/broker/projection.d.ts +51 -0
- package/dist/compiler/training/broker/projection.js +76 -0
- package/dist/compiler/training/broker/provisioning.d.ts +87 -0
- package/dist/compiler/training/broker/provisioning.js +213 -0
- package/dist/compiler/training/broker/receipt.d.ts +77 -0
- package/dist/compiler/training/broker/receipt.js +110 -0
- package/dist/compiler/training/broker/registration.d.ts +41 -0
- package/dist/compiler/training/broker/registration.js +102 -0
- package/dist/compiler/training/broker/runtime.d.ts +25 -0
- package/dist/compiler/training/broker/runtime.js +173 -0
- package/dist/compiler/training/broker/seccompRoutes.d.ts +31 -0
- package/dist/compiler/training/broker/seccompRoutes.js +36 -0
- package/dist/compiler/training/broker/supervisor.d.ts +109 -0
- package/dist/compiler/training/broker/supervisor.js +173 -0
- package/dist/compiler/training/container/contract.d.ts +31 -0
- package/dist/compiler/training/container/contract.js +33 -0
- package/dist/compiler/training/container/index.d.ts +4 -0
- package/dist/compiler/training/container/index.js +2 -0
- package/dist/compiler/training/container/launch.d.ts +18 -0
- package/dist/compiler/training/container/launch.js +173 -0
- package/dist/compiler/training/container/prepare.d.ts +8 -0
- package/dist/compiler/training/container/prepare.js +80 -0
- package/dist/compiler/training/container/process.d.ts +14 -0
- package/dist/compiler/training/container/process.js +70 -0
- package/dist/compiler/training/container/security.d.ts +36 -0
- package/dist/compiler/training/container/security.js +58 -0
- package/dist/compiler/training/context.d.ts +7 -0
- package/dist/compiler/training/context.js +93 -0
- package/dist/compiler/training/contract.d.ts +142 -0
- package/dist/compiler/training/contract.js +34 -0
- package/dist/compiler/training/index.d.ts +4 -0
- package/dist/compiler/training/index.js +3 -0
- package/dist/compiler/training/preparation/assets/Dockerfile +98 -0
- package/dist/compiler/training/preparation/assets/package-lock.json +3787 -0
- package/dist/compiler/training/preparation/broker.d.ts +21 -0
- package/dist/compiler/training/preparation/broker.js +43 -0
- package/dist/compiler/training/preparation/contextModes.d.ts +12 -0
- package/dist/compiler/training/preparation/contextModes.js +38 -0
- package/dist/compiler/training/preparation/contract.d.ts +182 -0
- package/dist/compiler/training/preparation/contract.js +94 -0
- package/dist/compiler/training/preparation/copyAssets.d.ts +1 -0
- package/dist/compiler/training/preparation/copyAssets.js +8 -0
- package/dist/compiler/training/preparation/daimonParent.d.ts +42 -0
- package/dist/compiler/training/preparation/daimonParent.js +114 -0
- package/dist/compiler/training/preparation/files.d.ts +25 -0
- package/dist/compiler/training/preparation/files.js +85 -0
- package/dist/compiler/training/preparation/image.d.ts +28 -0
- package/dist/compiler/training/preparation/image.js +102 -0
- package/dist/compiler/training/preparation/index.d.ts +3 -0
- package/dist/compiler/training/preparation/index.js +2 -0
- package/dist/compiler/training/preparation/inputs.d.ts +23 -0
- package/dist/compiler/training/preparation/inputs.js +93 -0
- package/dist/compiler/training/preparation/prepare.d.ts +33 -0
- package/dist/compiler/training/preparation/prepare.js +186 -0
- package/dist/compiler/training/preparation/scratch.d.ts +19 -0
- package/dist/compiler/training/preparation/scratch.js +48 -0
- package/dist/compiler/training/repair/compatibility.d.ts +11 -0
- package/dist/compiler/training/repair/compatibility.js +34 -0
- package/dist/compiler/training/repair/contract.d.ts +506 -0
- package/dist/compiler/training/repair/contract.js +31 -0
- package/dist/compiler/training/repair/index.d.ts +3 -0
- package/dist/compiler/training/repair/index.js +3 -0
- package/dist/compiler/training/repair/prepare.d.ts +230 -0
- package/dist/compiler/training/repair/prepare.js +74 -0
- package/dist/compiler/training/repair/witness.d.ts +203 -0
- package/dist/compiler/training/repair/witness.js +42 -0
- package/dist/compiler/types.d.ts +84 -1
- package/dist/compiler/upProject.d.ts +31 -1
- package/dist/compiler/upProject.js +197 -22
- package/dist/compiler/upProjectHandoff.d.ts +62 -0
- package/dist/compiler/upProjectHandoff.js +204 -0
- package/dist/compiler/upReceipt.d.ts +36 -0
- package/dist/compiler/upReceipt.js +127 -0
- package/dist/compiler/updateProjectModels.js +43 -60
- package/dist/compiler/updateProjectRuntime.js +22 -35
- package/dist/compiler/updateProjectSurfaces.js +53 -47
- package/dist/compiler/view/types.d.ts +1 -1
- package/dist/compiler/workspaceBundleArtifacts.d.ts +3 -0
- package/dist/compiler/workspaceBundleArtifacts.js +106 -0
- package/dist/compiler/workspaceResources.d.ts +4 -1
- package/dist/compiler/workspaceResources.js +12 -7
- 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 +185 -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/canaryCutover.d.ts +42 -0
- package/dist/deployment/canaryCutover.js +140 -0
- package/dist/deployment/candidateDiagnostics.d.ts +15 -0
- package/dist/deployment/candidateDiagnostics.js +90 -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 +5 -10
- package/dist/deployment/dockerManager.d.ts +51 -0
- package/dist/deployment/dockerManager.js +124 -1
- package/dist/deployment/dockerProbeGateway.d.ts +17 -0
- package/dist/deployment/dockerProbeGateway.js +80 -6
- package/dist/deployment/dockerRecover.js +9 -1
- package/dist/deployment/dockerTeardown.d.ts +32 -0
- package/dist/deployment/dockerTeardown.js +61 -0
- package/dist/deployment/downDeployment.d.ts +39 -0
- package/dist/deployment/downDeployment.js +248 -0
- package/dist/deployment/downReceiptTypes.d.ts +36 -0
- package/dist/deployment/downReceiptTypes.js +45 -0
- package/dist/deployment/index.d.ts +20 -0
- package/dist/deployment/index.js +21 -0
- package/dist/deployment/lifecycleCompletion.d.ts +37 -0
- package/dist/deployment/lifecycleCompletion.js +236 -0
- package/dist/deployment/lifecycleCompletionContracts.d.ts +224 -0
- package/dist/deployment/lifecycleCompletionContracts.js +140 -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 +12 -0
- package/dist/deployment/lifecycleCompletionPaths.js +19 -0
- package/dist/deployment/lifecycleCompletionPublication.d.ts +7 -0
- package/dist/deployment/lifecycleCompletionPublication.js +49 -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/lifecycleUpRecords.d.ts +11 -0
- package/dist/deployment/lifecycleUpRecords.js +127 -0
- package/dist/deployment/native/AGENTS.md +11 -0
- package/dist/deployment/native/rename-noreplace-arm64 +0 -0
- package/dist/deployment/native/rename-noreplace-arm64.provenance.json +1 -0
- package/dist/deployment/native/rename-noreplace-x64 +0 -0
- package/dist/deployment/native/rename-noreplace-x64.provenance.json +1 -0
- package/dist/deployment/noReplaceActivation.d.ts +17 -0
- package/dist/deployment/noReplaceActivation.js +50 -0
- package/dist/deployment/organizationHandoffAuthorityFsBudget.d.ts +110 -0
- package/dist/deployment/organizationHandoffAuthorityFsBudget.js +156 -0
- package/dist/deployment/organizationHandoffAuthorityFsClient.d.ts +17 -0
- package/dist/deployment/organizationHandoffAuthorityFsClient.js +187 -0
- package/dist/deployment/organizationHandoffAuthorityFsElection.d.ts +21 -0
- package/dist/deployment/organizationHandoffAuthorityFsElection.js +57 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorker.d.ts +1 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorker.js +431 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.d.ts +1 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.js +26 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.d.ts +1 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.js +16 -0
- package/dist/deployment/organizationHandoffAuthorityStore.d.ts +41 -0
- package/dist/deployment/organizationHandoffAuthorityStore.js +355 -0
- package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +76 -0
- package/dist/deployment/organizationHandoffAuthorityTypes.js +149 -0
- package/dist/deployment/organizationHandoffTypes.d.ts +29 -0
- package/dist/deployment/organizationHandoffTypes.js +80 -0
- package/dist/deployment/organizationReady.d.ts +54 -0
- package/dist/deployment/organizationReady.js +232 -0
- package/dist/deployment/privateArtifactsExport.d.ts +18 -0
- package/dist/deployment/privateArtifactsExport.js +80 -0
- package/dist/deployment/productStateClone.d.ts +43 -0
- package/dist/deployment/productStateClone.js +319 -0
- package/dist/deployment/record.d.ts +26 -1
- package/dist/deployment/record.js +49 -4
- package/dist/deployment/target.d.ts +1 -35
- package/dist/deployment/target.js +1 -96
- package/dist/deployment/upLifecycleRecoveryState.d.ts +23 -0
- package/dist/deployment/upLifecycleRecoveryState.js +12 -0
- package/dist/deployment/upReceiptTypes.d.ts +137 -0
- package/dist/deployment/upReceiptTypes.js +191 -0
- package/dist/deployment/workspaceResourceMigration.d.ts +55 -0
- package/dist/deployment/workspaceResourceMigration.js +315 -0
- package/dist/dev/project.d.ts +7 -0
- package/dist/dev/project.js +24 -9
- package/dist/distribution/buildDistributionReport.d.ts +2 -1
- package/dist/distribution/buildDistributionReport.js +2 -1
- package/dist/distribution/consumeImage.d.ts +2 -0
- package/dist/distribution/consumeImage.js +98 -73
- package/dist/distribution/consumeImageDaimonDocker.d.ts +3 -0
- package/dist/distribution/consumeImageDaimonDocker.js +45 -0
- package/dist/distribution/consumeImageLifecycle.d.ts +17 -0
- package/dist/distribution/consumeImageLifecycle.js +231 -0
- package/dist/distribution/consumeImageSupport.d.ts +12 -0
- package/dist/distribution/consumeImageSupport.js +15 -0
- package/dist/distribution/distributionReportSchema.d.ts +16 -1
- package/dist/distribution/distributionReportSchema.js +21 -3
- package/dist/distribution/dockerRunner.d.ts +6 -1
- package/dist/distribution/dockerRunner.js +31 -4
- package/dist/distribution/imageRuntimeAuth.d.ts +9 -1
- package/dist/distribution/imageRuntimeAuth.js +70 -1
- package/dist/distribution/index.d.ts +3 -3
- package/dist/distribution/index.js +2 -2
- package/dist/distribution/preflight.js +5 -1
- package/dist/distribution/types.d.ts +21 -1
- package/dist/distribution/types.js +4 -0
- package/dist/evidenceExportHelper/boundedExecutor.d.ts +3 -0
- package/dist/evidenceExportHelper/boundedExecutor.js +33 -0
- package/dist/evidenceExportHelper/helperProgram.mjs +156 -0
- package/dist/evidenceExportHelper/index.d.ts +4 -0
- package/dist/evidenceExportHelper/index.js +4 -0
- package/dist/evidenceExportHelper/preparedAuthority.d.ts +64 -0
- package/dist/evidenceExportHelper/preparedAuthority.js +228 -0
- package/dist/evidenceExportHelper/preparedBuilder.d.ts +10 -0
- package/dist/evidenceExportHelper/preparedBuilder.js +183 -0
- package/dist/evidenceExportHelper/preparedBuilderTypes.d.ts +19 -0
- package/dist/evidenceExportHelper/preparedBuilderTypes.js +1 -0
- package/dist/evidenceExportHelper/recipe.d.ts +7 -0
- package/dist/evidenceExportHelper/recipe.js +83 -0
- package/dist/filesystem/io.d.ts +2 -0
- package/dist/filesystem/io.js +16 -1
- 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/executionSchemas.d.ts +27 -0
- package/dist/manifest/executionSchemas.js +21 -2
- 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 +18 -0
- package/dist/manifest/mcpSchemas.js +44 -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 +20 -2
- package/dist/manifest/renderSpawnfileSurfaces.d.ts +2 -0
- package/dist/manifest/renderSpawnfileSurfaces.js +134 -0
- package/dist/manifest/renderSpawnfileWorkspace.js +5 -0
- package/dist/manifest/scheduleSchemas.d.ts +3 -1
- package/dist/manifest/scheduleSchemas.js +91 -5
- package/dist/manifest/schemas.d.ts +2034 -40
- package/dist/manifest/schemas.js +82 -33
- package/dist/manifest/surfaceSchemas.d.ts +17 -0
- package/dist/manifest/surfaceSchemas.js +24 -1
- package/dist/manifest/teamNetworkAccessSchemas.d.ts +6 -2
- package/dist/manifest/teamNetworkAccessSchemas.js +11 -0
- package/dist/manifest/teamNetworkAuthSchemas.d.ts +48 -0
- package/dist/manifest/teamNetworkAuthSchemas.js +103 -0
- package/dist/manifest/teamNetworkSchemas.d.ts +25 -190
- package/dist/manifest/teamNetworkSchemas.js +21 -317
- package/dist/manifest/teamNetworkServerSchemas.d.ts +155 -0
- package/dist/manifest/teamNetworkServerSchemas.js +215 -0
- package/dist/manifest/workspaceSchemas.d.ts +16 -0
- package/dist/manifest/workspaceSchemas.js +11 -0
- package/dist/ownership/siblingBuildFreshness.d.ts +20 -0
- package/dist/ownership/siblingBuildFreshness.js +20 -0
- package/dist/report/types.d.ts +173 -1
- package/dist/runtime/common.d.ts +63 -1
- package/dist/runtime/common.js +88 -3
- package/dist/runtime/container.d.ts +28 -1
- package/dist/runtime/container.js +78 -29
- package/dist/runtime/containerPackageOverrides.d.ts +37 -0
- package/dist/runtime/containerPackageOverrides.js +33 -0
- package/dist/runtime/daimon/adapter.d.ts +14 -0
- package/dist/runtime/daimon/adapter.js +243 -0
- package/dist/runtime/daimon/attention.d.ts +8 -0
- package/dist/runtime/daimon/attention.js +32 -0
- package/dist/runtime/daimon/config.d.ts +25 -0
- package/dist/runtime/daimon/config.js +272 -0
- package/dist/runtime/daimon/contractManifest.d.ts +295 -0
- package/dist/runtime/daimon/contractManifest.js +319 -0
- package/dist/runtime/daimon/grokModel.d.ts +19 -0
- package/dist/runtime/daimon/grokModel.js +33 -0
- package/dist/runtime/daimon/grokWorkerConfigBytes.d.ts +26 -0
- package/dist/runtime/daimon/grokWorkerConfigBytes.js +36 -0
- package/dist/runtime/daimon/grokWorkerContract.d.ts +22 -0
- package/dist/runtime/daimon/grokWorkerContract.js +48 -0
- package/dist/runtime/daimon/memory.d.ts +57 -0
- package/dist/runtime/daimon/memory.js +125 -0
- package/dist/runtime/daimon/runAuth.d.ts +51 -0
- package/dist/runtime/daimon/runAuth.js +279 -0
- package/dist/runtime/daimon/runtimeIdentity.d.ts +22 -0
- package/dist/runtime/daimon/runtimeIdentity.js +22 -0
- package/dist/runtime/daimon/scheduleAuthority.d.ts +3 -0
- package/dist/runtime/daimon/scheduleAuthority.js +17 -0
- package/dist/runtime/index.d.ts +6 -0
- package/dist/runtime/index.js +6 -0
- package/dist/runtime/install.d.ts +3 -0
- package/dist/runtime/install.js +3 -0
- package/dist/runtime/localDaimonAuthority.d.ts +11 -0
- package/dist/runtime/localDaimonAuthority.js +77 -0
- package/dist/runtime/mnemeMcp.d.ts +28 -0
- package/dist/runtime/mnemeMcp.js +135 -0
- package/dist/runtime/openclaw/adapter.js +17 -6
- 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 +1 -2
- package/dist/runtime/pi/adapter.js +87 -58
- package/dist/runtime/pi/appActivitySource.js +114 -2
- 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 -1
- package/dist/runtime/pi/appCoreSource.js +104 -214
- package/dist/runtime/pi/appPreludeSource.js +140 -52
- package/dist/runtime/pi/appScheduleSource.d.ts +1 -0
- package/dist/runtime/pi/appScheduleSource.js +84 -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 -1
- package/dist/runtime/pi/appSource.js +6 -2
- package/dist/runtime/pi/appTemplate.d.ts +8 -22
- package/dist/runtime/pi/appTemplate.js +9 -126
- 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.js +126 -9
- package/dist/runtime/pi/testHelpers.d.ts +2 -0
- package/dist/runtime/pi/testHelpers.js +40 -0
- package/dist/runtime/picoclaw/adapter.js +25 -29
- 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.d.ts +3 -0
- package/dist/runtime/registry.js +19 -2
- package/dist/runtime/scheduleUtils.d.ts +3 -0
- package/dist/runtime/scheduleUtils.js +19 -0
- package/dist/runtime/types.d.ts +50 -2
- package/dist/runtime/usageLedger.d.ts +158 -0
- package/dist/runtime/usageLedger.js +269 -0
- package/dist/runtime/usageLedgerRead.d.ts +48 -0
- package/dist/runtime/usageLedgerRead.js +102 -0
- package/dist/runtime/usageRequestLedger.d.ts +42 -0
- package/dist/runtime/usageRequestLedger.js +72 -0
- package/dist/shared/daimonCodexDocker.d.ts +32 -0
- package/dist/shared/daimonCodexDocker.js +120 -0
- package/dist/shared/daimonGrokSeccompProfile.d.ts +10 -0
- package/dist/shared/daimonGrokSeccompProfile.js +11 -0
- package/dist/shared/errors.d.ts +1 -1
- package/dist/shared/errors.js +2 -2
- package/dist/shared/index.d.ts +3 -0
- package/dist/shared/index.js +3 -0
- package/dist/shared/redaction.d.ts +2 -0
- package/dist/shared/redaction.js +10 -0
- package/dist/shared/types.d.ts +1 -1
- package/dist/shared/volumeNames.d.ts +6 -0
- package/dist/shared/volumeNames.js +14 -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/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/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 +476 -0
- package/dist/target/dockerBaseImage.d.ts +2 -0
- package/dist/target/dockerBaseImage.js +11 -0
- package/dist/target/dockerCommandExecutor.d.ts +38 -0
- package/dist/target/dockerCommandExecutor.js +251 -0
- package/dist/target/dockerCommandExecutorCore.d.ts +35 -0
- package/dist/target/dockerCommandExecutorCore.js +275 -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 +83 -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 +53 -0
- package/dist/target/dockerTarget.js +48 -0
- package/dist/target/dockerTargetBinding.d.ts +13 -0
- package/dist/target/dockerTargetBinding.js +95 -0
- package/dist/target/dockerTargetExecFile.d.ts +19 -0
- package/dist/target/dockerTargetExecFile.js +194 -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 +64 -0
- package/dist/target/dockerWorldServiceProvider.js +330 -0
- package/dist/target/dockerWorldServiceStore.d.ts +73 -0
- package/dist/target/dockerWorldServiceStore.js +367 -0
- package/dist/target/evidenceExport.d.ts +57 -0
- package/dist/target/evidenceExport.js +527 -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 +87 -0
- package/dist/target/evidenceExportProvider.js +197 -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 +72 -0
- package/dist/target/publicArtifactSnapshot.js +184 -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/examples/README.md +45 -0
- package/examples/agent-with-subagents/AGENTS.md +3 -0
- package/examples/agent-with-subagents/Spawnfile +30 -0
- package/examples/agent-with-subagents/subagents/critic/AGENTS.md +3 -0
- package/examples/agent-with-subagents/subagents/critic/Spawnfile +15 -0
- package/examples/agent-with-subagents/subagents/researcher/AGENTS.md +3 -0
- package/examples/agent-with-subagents/subagents/researcher/Spawnfile +17 -0
- package/examples/daimon-org/Spawnfile +68 -0
- package/examples/daimon-org/TEAM.md +4 -0
- package/examples/daimon-org/agents/mapper/AGENTS.md +4 -0
- package/examples/daimon-org/agents/mapper/Spawnfile +37 -0
- package/examples/daimon-org/shared/skills/file-note/SKILL.md +9 -0
- package/examples/daimon-org/teams/review/Spawnfile +53 -0
- package/examples/daimon-org/teams/review/agents/reviewer/AGENTS.md +4 -0
- package/examples/daimon-org/teams/review/agents/reviewer/Spawnfile +37 -0
- package/examples/daimon-public-host/AGENTS.md +3 -0
- package/examples/daimon-public-host/Spawnfile +21 -0
- package/examples/distribution-org/Spawnfile +43 -0
- package/examples/distribution-org/TEAM.md +4 -0
- package/examples/distribution-org/agents/coordinator/AGENTS.md +1 -0
- package/examples/distribution-org/agents/coordinator/Spawnfile +20 -0
- package/examples/distribution-org/agents/researcher/AGENTS.md +1 -0
- package/examples/distribution-org/agents/researcher/Spawnfile +20 -0
- package/examples/jungian-daimon-org/Spawnfile +41 -0
- package/examples/jungian-daimon-org/TEAM.md +21 -0
- package/examples/jungian-daimon-org/teams/luna/Spawnfile +47 -0
- package/examples/jungian-daimon-org/teams/luna/TEAM.md +4 -0
- package/examples/jungian-daimon-org/teams/luna/agents/animus/AGENTS.md +10 -0
- package/examples/jungian-daimon-org/teams/luna/agents/animus/Spawnfile +33 -0
- package/examples/jungian-daimon-org/teams/luna/agents/representative/AGENTS.md +21 -0
- package/examples/jungian-daimon-org/teams/luna/agents/representative/Spawnfile +30 -0
- package/examples/jungian-daimon-org/teams/luna/agents/shadow/AGENTS.md +10 -0
- package/examples/jungian-daimon-org/teams/luna/agents/shadow/Spawnfile +33 -0
- package/examples/jungian-daimon-org/teams/selene/Spawnfile +47 -0
- package/examples/jungian-daimon-org/teams/selene/TEAM.md +4 -0
- package/examples/jungian-daimon-org/teams/selene/agents/animus/AGENTS.md +10 -0
- package/examples/jungian-daimon-org/teams/selene/agents/animus/Spawnfile +33 -0
- package/examples/jungian-daimon-org/teams/selene/agents/representative/AGENTS.md +19 -0
- package/examples/jungian-daimon-org/teams/selene/agents/representative/Spawnfile +33 -0
- package/examples/jungian-daimon-org/teams/selene/agents/shadow/AGENTS.md +10 -0
- package/examples/jungian-daimon-org/teams/selene/agents/shadow/Spawnfile +30 -0
- package/examples/mixed-runtime-org/Spawnfile +71 -0
- package/examples/mixed-runtime-org/TEAM.md +8 -0
- package/examples/mixed-runtime-org/agents/analyst/AGENTS.md +8 -0
- package/examples/mixed-runtime-org/agents/analyst/Spawnfile +27 -0
- package/examples/mixed-runtime-org/agents/conductor/AGENTS.md +8 -0
- package/examples/mixed-runtime-org/agents/conductor/Spawnfile +27 -0
- package/examples/mixed-runtime-org/agents/localist/AGENTS.md +7 -0
- package/examples/mixed-runtime-org/agents/localist/Spawnfile +50 -0
- package/examples/moltnet-team-chat/Spawnfile +43 -0
- package/examples/moltnet-team-chat/TEAM.md +5 -0
- package/examples/moltnet-team-chat/agents/coordinator/AGENTS.md +9 -0
- package/examples/moltnet-team-chat/agents/coordinator/Spawnfile +26 -0
- package/examples/moltnet-team-chat/teams/analysis/Spawnfile +23 -0
- package/examples/moltnet-team-chat/teams/analysis/TEAM.md +3 -0
- package/examples/moltnet-team-chat/teams/analysis/agents/observer/AGENTS.md +5 -0
- package/examples/moltnet-team-chat/teams/analysis/agents/observer/Spawnfile +19 -0
- package/examples/moltnet-team-chat/teams/analysis/agents/representative/AGENTS.md +5 -0
- package/examples/moltnet-team-chat/teams/analysis/agents/representative/Spawnfile +19 -0
- package/examples/moltnet-team-chat/teams/field/Spawnfile +41 -0
- package/examples/moltnet-team-chat/teams/field/TEAM.md +3 -0
- package/examples/moltnet-team-chat/teams/field/agents/observer/AGENTS.md +5 -0
- package/examples/moltnet-team-chat/teams/field/agents/observer/Spawnfile +26 -0
- package/examples/moltnet-team-chat/teams/field/agents/representative/AGENTS.md +11 -0
- package/examples/moltnet-team-chat/teams/field/agents/representative/Spawnfile +26 -0
- package/examples/single-agent/AGENTS.md +3 -0
- package/examples/single-agent/HEARTBEAT.md +3 -0
- package/examples/single-agent/IDENTITY.md +3 -0
- package/examples/single-agent/MEMORY.md +3 -0
- package/examples/single-agent/SOUL.md +3 -0
- package/examples/single-agent/Spawnfile +41 -0
- package/examples/single-agent/skills/web_search/SKILL.md +6 -0
- package/moltnet-releases.json +21 -0
- package/package.json +57 -14
- package/runtimes.yaml +11 -23
- 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
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import os from "node:os";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { mkdtemp, rm, writeFile } from "node:fs/promises";
|
|
4
|
-
import { acquireHomeDeploymentLock, createDockerDeploymentLabels, homeDeploymentExists, normalizeDeploymentName, readHomeDeploymentRecord, resolveDockerDeploymentTarget, verifyDockerDeploymentTarget, writeHomeDeployment } from "../deployment/index.js";
|
|
4
|
+
import { acquireHomeDeploymentLock, captureCandidateDiagnostics, createDockerDeploymentLabels, homeDeploymentExists, normalizeDeploymentName, readHomeDeploymentRecord, resolveDockerDeploymentTarget, sanitizeCandidateDiagnostic, verifyDockerDeploymentTarget, writeHomeDeployment } from "../deployment/index.js";
|
|
5
5
|
import { SpawnfileError } from "../shared/index.js";
|
|
6
|
-
import { deriveDeploymentName,
|
|
6
|
+
import { deriveDeploymentName, derivePersistentMountVolumeName, renderEnvFileContent, resolveImageEnvironment } from "./consumeImageSupport.js";
|
|
7
|
+
import { acquireExclusiveVolumeReservations, assertCandidateContainerReady, assertContainerStopped, inspectContainerSnapshot, restorePreviousContainer, rollbackCandidateContainer } from "./consumeImageLifecycle.js";
|
|
7
8
|
import { createConsumerDockerRunner } from "./dockerRunner.js";
|
|
9
|
+
import { resolveDaimonDockerSecurityArgsForImage } from "./consumeImageDaimonDocker.js";
|
|
8
10
|
import { extractImageReport, resolveDockerBaseArgs } from "./extractImage.js";
|
|
9
11
|
import { parseImageReference } from "./imageRef.js";
|
|
10
12
|
import { prepareImageRuntimeAuthMounts } from "./imageRuntimeAuth.js";
|
|
@@ -35,15 +37,6 @@ const resolveRegistryDigest = async (imageRef, runDocker) => {
|
|
|
35
37
|
return null;
|
|
36
38
|
}
|
|
37
39
|
};
|
|
38
|
-
const containerExists = async (runDocker, containerName) => {
|
|
39
|
-
try {
|
|
40
|
-
await runDocker(["container", "inspect", containerName]);
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
40
|
const resolveLocalImageId = async (imageRef, runDocker) => {
|
|
48
41
|
try {
|
|
49
42
|
const raw = (await runDocker([
|
|
@@ -131,6 +124,7 @@ const consumeImageUpLocked = async (imageRef, parsedRef, deploymentName, isExpli
|
|
|
131
124
|
// port for two containers at once. There is a brief restart gap, unavoidable
|
|
132
125
|
// when reusing host ports without a proxy.
|
|
133
126
|
const backupName = `${containerName}-previous-${Date.now().toString(36)}`;
|
|
127
|
+
let volumeReservation;
|
|
134
128
|
try {
|
|
135
129
|
await writeFile(envFilePath, renderEnvFileContent(env), "utf8");
|
|
136
130
|
// Prepare import-based model auth (the consumer's Claude/Codex login) and
|
|
@@ -138,24 +132,41 @@ const consumeImageUpLocked = async (imageRef, parsedRef, deploymentName, isExpli
|
|
|
138
132
|
// config is already baked into the image; this only resolves the credential
|
|
139
133
|
// mounts. Doing it first guarantees an unusable import fails while the live
|
|
140
134
|
// container is still untouched, never mid-swap.
|
|
141
|
-
const authMountArgs =
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
:
|
|
148
|
-
|
|
149
|
-
|
|
135
|
+
const authMountArgs = (await prepareImageRuntimeAuthMounts({
|
|
136
|
+
authProfile: options.authProfile ?? null,
|
|
137
|
+
...(options.daimonContainerCredentialUid === undefined
|
|
138
|
+
? {}
|
|
139
|
+
: { daimonContainerCredentialUid: options.daimonContainerCredentialUid }),
|
|
140
|
+
report,
|
|
141
|
+
tempRoot: workDir
|
|
142
|
+
})).mountArgs;
|
|
143
|
+
const daimonDockerSecurityArgs = await resolveDaimonDockerSecurityArgsForImage(imageRef, report, runDocker, workDir);
|
|
144
|
+
volumeReservation = await acquireExclusiveVolumeReservations(report, deploymentName, containerName, imageRef, runDocker);
|
|
145
|
+
const previousContainer = await inspectContainerSnapshot(runDocker, containerName);
|
|
146
|
+
if (previousContainer !== null) {
|
|
150
147
|
await runDocker(["rename", containerName, backupName]);
|
|
151
|
-
|
|
148
|
+
try {
|
|
149
|
+
await runDocker(["stop", backupName]);
|
|
150
|
+
await assertContainerStopped(runDocker, backupName, previousContainer.id);
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
try {
|
|
154
|
+
await restorePreviousContainer(runDocker, previousContainer, backupName, containerName);
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
throw new SpawnfileError("runtime_error", "Prior deployment stop failed and its original state could not be restored");
|
|
158
|
+
}
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
152
161
|
}
|
|
153
|
-
const runArgs = [
|
|
162
|
+
const runArgs = [
|
|
163
|
+
"run", "-d", "--name", containerName, ...daimonDockerSecurityArgs, "--env-file", envFilePath
|
|
164
|
+
];
|
|
154
165
|
for (const port of report.ports) {
|
|
155
166
|
runArgs.push("-p", `${port}:${port}`);
|
|
156
167
|
}
|
|
157
168
|
for (const mount of report.persistent_mounts) {
|
|
158
|
-
runArgs.push("-v", `${
|
|
169
|
+
runArgs.push("-v", `${derivePersistentMountVolumeName(deploymentName, mount)}:${mount.target}`);
|
|
159
170
|
}
|
|
160
171
|
runArgs.push(...authMountArgs);
|
|
161
172
|
const labels = createDockerDeploymentLabels({
|
|
@@ -169,63 +180,77 @@ const consumeImageUpLocked = async (imageRef, parsedRef, deploymentName, isExpli
|
|
|
169
180
|
runArgs.push("--label", `${name}=${value}`);
|
|
170
181
|
}
|
|
171
182
|
runArgs.push(imageRef);
|
|
172
|
-
let
|
|
183
|
+
let candidateId;
|
|
173
184
|
try {
|
|
174
|
-
runOutput = (await runDocker(runArgs)).toString("utf8").trim();
|
|
185
|
+
const runOutput = (await runDocker(runArgs)).toString("utf8").trim();
|
|
186
|
+
const observedId = runOutput.split("\n").pop()?.trim();
|
|
187
|
+
if (!observedId || !/^[a-f0-9]{64}$/u.test(observedId)) {
|
|
188
|
+
throw new SpawnfileError("runtime_error", "Candidate container returned invalid identity");
|
|
189
|
+
}
|
|
190
|
+
candidateId = observedId;
|
|
191
|
+
await assertCandidateContainerReady(runDocker, candidateId, containerName);
|
|
192
|
+
const imageId = await resolveLocalImageId(imageRef, runDocker);
|
|
193
|
+
const digest = await resolveRegistryDigest(imageRef, runDocker);
|
|
194
|
+
const record = {
|
|
195
|
+
auth_profile: options.authProfileName ?? null,
|
|
196
|
+
compile_fingerprint: inspection.compileFingerprint,
|
|
197
|
+
created_at: new Date().toISOString(),
|
|
198
|
+
...(options.envFilePath ? { env_file: path.resolve(options.envFilePath) } : {}),
|
|
199
|
+
manager: "docker",
|
|
200
|
+
name: deploymentName,
|
|
201
|
+
output_directory: null,
|
|
202
|
+
source: { digest, kind: "image", ref: imageRef },
|
|
203
|
+
target,
|
|
204
|
+
units: [
|
|
205
|
+
{
|
|
206
|
+
container_id: candidateId,
|
|
207
|
+
container_name: containerName,
|
|
208
|
+
contains: buildContainsEntries(report),
|
|
209
|
+
id: unitIdFor(deploymentName),
|
|
210
|
+
image_id: imageId,
|
|
211
|
+
image_tag: imageRef,
|
|
212
|
+
kind: "container",
|
|
213
|
+
runtime_instances: report.runtime_instances.map((instance) => instance.id).sort()
|
|
214
|
+
}
|
|
215
|
+
],
|
|
216
|
+
version: "spawnfile.deployment.v2"
|
|
217
|
+
};
|
|
218
|
+
const written = await writeHomeDeployment(record, report);
|
|
219
|
+
if (previousContainer !== null) {
|
|
220
|
+
await runDocker(["rm", "-f", previousContainer.id]).catch(() => undefined);
|
|
221
|
+
}
|
|
222
|
+
return {
|
|
223
|
+
containerName,
|
|
224
|
+
deploymentName,
|
|
225
|
+
imageRef,
|
|
226
|
+
previous,
|
|
227
|
+
record,
|
|
228
|
+
recordPath: written.recordPath
|
|
229
|
+
};
|
|
175
230
|
}
|
|
176
231
|
catch (error) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
232
|
+
const diagnostics = candidateId ? await captureCandidateDiagnostics({
|
|
233
|
+
candidateId, deploymentName, runDocker, secretValues: Object.values(env)
|
|
234
|
+
}) : null;
|
|
235
|
+
const detail = diagnostics ? ` (${diagnostics.summary}); ${diagnostics.path
|
|
236
|
+
? `private diagnostics: ${diagnostics.path}` : "private diagnostics unavailable"}` : "";
|
|
237
|
+
const failure = (cause) => new SpawnfileError("runtime_error", sanitizeCandidateDiagnostic(cause instanceof Error ? cause.message : String(cause), Object.values(env)) + detail);
|
|
238
|
+
try {
|
|
239
|
+
await rollbackCandidateContainer(runDocker, candidateId, containerName, previousContainer, backupName);
|
|
183
240
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
await runDocker(["rm", "-f", backupName]).catch(() => undefined);
|
|
241
|
+
catch (rollbackError) {
|
|
242
|
+
throw failure(rollbackError);
|
|
243
|
+
}
|
|
244
|
+
throw failure(error);
|
|
189
245
|
}
|
|
190
|
-
const containerId = runOutput.split("\n").pop()?.trim() || null;
|
|
191
|
-
const imageId = await resolveLocalImageId(imageRef, runDocker);
|
|
192
|
-
const digest = await resolveRegistryDigest(imageRef, runDocker);
|
|
193
|
-
const record = {
|
|
194
|
-
auth_profile: options.authProfileName ?? null,
|
|
195
|
-
compile_fingerprint: inspection.compileFingerprint,
|
|
196
|
-
created_at: new Date().toISOString(),
|
|
197
|
-
...(options.envFilePath ? { env_file: path.resolve(options.envFilePath) } : {}),
|
|
198
|
-
manager: "docker",
|
|
199
|
-
name: deploymentName,
|
|
200
|
-
output_directory: null,
|
|
201
|
-
source: { digest, kind: "image", ref: imageRef },
|
|
202
|
-
target,
|
|
203
|
-
units: [
|
|
204
|
-
{
|
|
205
|
-
container_id: containerId,
|
|
206
|
-
container_name: containerName,
|
|
207
|
-
contains: buildContainsEntries(report),
|
|
208
|
-
id: unitIdFor(deploymentName),
|
|
209
|
-
image_id: imageId,
|
|
210
|
-
image_tag: imageRef,
|
|
211
|
-
kind: "container",
|
|
212
|
-
runtime_instances: report.runtime_instances.map((instance) => instance.id).sort()
|
|
213
|
-
}
|
|
214
|
-
],
|
|
215
|
-
version: "spawnfile.deployment.v2"
|
|
216
|
-
};
|
|
217
|
-
const written = await writeHomeDeployment(record, report);
|
|
218
|
-
return {
|
|
219
|
-
containerName,
|
|
220
|
-
deploymentName,
|
|
221
|
-
imageRef,
|
|
222
|
-
previous,
|
|
223
|
-
record,
|
|
224
|
-
recordPath: written.recordPath
|
|
225
|
-
};
|
|
226
246
|
}
|
|
227
247
|
finally {
|
|
228
|
-
|
|
248
|
+
try {
|
|
249
|
+
await volumeReservation?.release();
|
|
250
|
+
}
|
|
251
|
+
finally {
|
|
252
|
+
await rm(workDir, { force: true, recursive: true }).catch(() => undefined);
|
|
253
|
+
}
|
|
229
254
|
}
|
|
230
255
|
};
|
|
231
256
|
const readPreviousSource = async (deploymentName) => {
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { DockerCommandRunner } from "./dockerRunner.js";
|
|
2
|
+
import type { DistributionReport } from "./types.js";
|
|
3
|
+
export declare const resolveDaimonDockerSecurityArgsForImage: (imageRef: string, report: DistributionReport, runDocker: DockerCommandRunner, securityDirectory: string) => Promise<string[]>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { SpawnfileError } from "../shared/errors.js";
|
|
3
|
+
import { DAIMON_DOCKER_RUNTIME_SECURITY_ARGS, daimonEngineDockerSecurityArgsForConfigs, materializeDaimonGrokSeccompProfile } from "../shared/daimonCodexDocker.js";
|
|
4
|
+
import { extractSingleFileFromTar } from "./tarReader.js";
|
|
5
|
+
const DAIMON_CONFIG_SIZE_CAP_BYTES = 4 * 1024 * 1024;
|
|
6
|
+
const daimonInstancesFrom = (report) => report.runtime_instances.filter((instance) => instance.runtime === "daimon");
|
|
7
|
+
const assertAbsoluteConfigPath = (instance) => {
|
|
8
|
+
if (!instance.config_path.startsWith("/")) {
|
|
9
|
+
throw new SpawnfileError("validation_error", "Daimon runtime instance has a non-absolute generated config path");
|
|
10
|
+
}
|
|
11
|
+
return instance.config_path;
|
|
12
|
+
};
|
|
13
|
+
const readDaimonConfigSourcesFromImage = async (imageRef, instances, runDocker) => {
|
|
14
|
+
const helperName = `spawnfile-daimon-config-${randomUUID()}`;
|
|
15
|
+
await runDocker(["create", "--name", helperName, imageRef]);
|
|
16
|
+
try {
|
|
17
|
+
const sources = [];
|
|
18
|
+
for (const instance of instances) {
|
|
19
|
+
let tar;
|
|
20
|
+
try {
|
|
21
|
+
tar = await runDocker(["cp", `${helperName}:${assertAbsoluteConfigPath(instance)}`, "-"]);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
if (error instanceof SpawnfileError)
|
|
25
|
+
throw error;
|
|
26
|
+
throw new SpawnfileError("validation_error", "Could not read Daimon's generated organization config before Docker launch");
|
|
27
|
+
}
|
|
28
|
+
sources.push(extractSingleFileFromTar(tar, { maxBytes: DAIMON_CONFIG_SIZE_CAP_BYTES }).toString("utf8"));
|
|
29
|
+
}
|
|
30
|
+
return sources;
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
await runDocker(["rm", "-f", helperName]).catch(() => undefined);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
export const resolveDaimonDockerSecurityArgsForImage = async (imageRef, report, runDocker, securityDirectory) => {
|
|
37
|
+
const daimonInstances = daimonInstancesFrom(report);
|
|
38
|
+
if (daimonInstances.length === 0)
|
|
39
|
+
return [];
|
|
40
|
+
const sources = await readDaimonConfigSourcesFromImage(imageRef, daimonInstances, runDocker);
|
|
41
|
+
return [
|
|
42
|
+
...DAIMON_DOCKER_RUNTIME_SECURITY_ARGS,
|
|
43
|
+
...(await daimonEngineDockerSecurityArgsForConfigs(sources, () => materializeDaimonGrokSeccompProfile(securityDirectory)))
|
|
44
|
+
];
|
|
45
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { DockerCommandRunner } from "./dockerRunner.js";
|
|
2
|
+
import type { DistributionReport } from "./types.js";
|
|
3
|
+
export interface ContainerSnapshot {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly running: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface ExclusiveVolumeReservation {
|
|
9
|
+
release(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare const inspectContainerSnapshot: (runDocker: DockerCommandRunner, reference: string) => Promise<ContainerSnapshot | null>;
|
|
12
|
+
export declare const assertExclusiveVolumesAvailable: (report: DistributionReport, deploymentLineage: string, deploymentContainerName: string, runDocker: DockerCommandRunner) => Promise<void>;
|
|
13
|
+
export declare const acquireExclusiveVolumeReservations: (report: DistributionReport, deploymentLineage: string, deploymentContainerName: string, imageReference: string, runDocker: DockerCommandRunner) => Promise<ExclusiveVolumeReservation>;
|
|
14
|
+
export declare const assertCandidateContainerReady: (runDocker: DockerCommandRunner, candidateId: string, expectedName: string) => Promise<void>;
|
|
15
|
+
export declare const assertContainerStopped: (runDocker: DockerCommandRunner, reference: string, expectedId: string) => Promise<void>;
|
|
16
|
+
export declare const restorePreviousContainer: (runDocker: DockerCommandRunner, previous: ContainerSnapshot, backupName: string, deploymentName: string) => Promise<void>;
|
|
17
|
+
export declare const rollbackCandidateContainer: (runDocker: DockerCommandRunner, candidateId: string | undefined, candidateName: string, previous: ContainerSnapshot | null, backupName: string) => Promise<void>;
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
2
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
3
|
+
import { SpawnfileError } from "../shared/index.js";
|
|
4
|
+
import { derivePersistentMountVolumeName } from "./consumeImageSupport.js";
|
|
5
|
+
const dockerId = /^[a-f0-9]{64}$/u;
|
|
6
|
+
const missingContainer = /(?:No such (?:container|object)|container .* not found)/iu;
|
|
7
|
+
const snapshotFormat = "{{json .Id}}\n{{json .Name}}\n{{json .State.Running}}";
|
|
8
|
+
const reservationFormat = "{{json .Id}}\n{{json .Config.Labels}}";
|
|
9
|
+
const reservationVersionLabel = "com.spawnfile.exclusive-volume-reservation";
|
|
10
|
+
const reservationOwnerLabel = "com.spawnfile.exclusive-volume-owner";
|
|
11
|
+
const reservationVolumeLabel = "com.spawnfile.exclusive-volume-digest";
|
|
12
|
+
const parseSnapshot = (raw) => {
|
|
13
|
+
try {
|
|
14
|
+
const [idRaw, nameRaw, runningRaw, ...extra] = raw.toString("utf8").trim().split("\n");
|
|
15
|
+
if (!idRaw || !nameRaw || !runningRaw || extra.length > 0)
|
|
16
|
+
throw new Error("shape");
|
|
17
|
+
const id = JSON.parse(idRaw);
|
|
18
|
+
const name = JSON.parse(nameRaw);
|
|
19
|
+
const running = JSON.parse(runningRaw);
|
|
20
|
+
if (typeof id !== "string" || !dockerId.test(id)
|
|
21
|
+
|| typeof name !== "string" || !name.startsWith("/") || name.length < 2
|
|
22
|
+
|| typeof running !== "boolean")
|
|
23
|
+
throw new Error("values");
|
|
24
|
+
return { id, name: name.slice(1), running };
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
throw new SpawnfileError("runtime_error", "Container returned invalid identity state");
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
export const inspectContainerSnapshot = async (runDocker, reference) => {
|
|
31
|
+
try {
|
|
32
|
+
return parseSnapshot(await runDocker([
|
|
33
|
+
"container", "inspect", "--format", snapshotFormat, reference
|
|
34
|
+
]));
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
if (error instanceof SpawnfileError && error.message === "Container returned invalid identity state")
|
|
38
|
+
throw error;
|
|
39
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
40
|
+
if (missingContainer.test(message))
|
|
41
|
+
return null;
|
|
42
|
+
throw new SpawnfileError("runtime_error", "Unable to determine container identity state");
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
export const assertExclusiveVolumesAvailable = async (report, deploymentLineage, deploymentContainerName, runDocker) => {
|
|
46
|
+
for (const mount of report.persistent_mounts.filter((candidate) => candidate.lifecycle === "exclusive-reattach")) {
|
|
47
|
+
const volume = derivePersistentMountVolumeName(deploymentLineage, mount);
|
|
48
|
+
const occupants = (await runDocker([
|
|
49
|
+
"ps", "--filter", `volume=${volume}`, "--format", "{{.Names}}"
|
|
50
|
+
])).toString("utf8").split("\n").map((name) => name.trim()).filter(Boolean);
|
|
51
|
+
if (occupants.some((name) => name !== deploymentContainerName)) {
|
|
52
|
+
throw new SpawnfileError("runtime_error", `Exclusive persistent mount ${mount.id} is attached to another running deployment; stop that deployment before reattaching the realm`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const reservationName = (volumeDigest) => `spawnfile-volume-reservation-${volumeDigest.slice("sha256:".length, 24 + "sha256:".length)}`;
|
|
57
|
+
const inspectReservation = async (runDocker, record) => {
|
|
58
|
+
try {
|
|
59
|
+
const output = (await runDocker([
|
|
60
|
+
"container", "inspect", "--format", reservationFormat, record.id
|
|
61
|
+
])).toString("utf8").trim().split("\n");
|
|
62
|
+
if (output.length !== 2)
|
|
63
|
+
throw new Error("shape");
|
|
64
|
+
const id = JSON.parse(output[0]);
|
|
65
|
+
const labels = JSON.parse(output[1]);
|
|
66
|
+
if (id !== record.id || !labels || typeof labels !== "object" || Array.isArray(labels))
|
|
67
|
+
throw new Error("identity");
|
|
68
|
+
const values = labels;
|
|
69
|
+
if (values[reservationVersionLabel] !== "v1"
|
|
70
|
+
|| values[reservationOwnerLabel] !== record.owner
|
|
71
|
+
|| values[reservationVolumeLabel] !== record.volumeDigest)
|
|
72
|
+
throw new Error("authority");
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
throw new SpawnfileError("runtime_error", "Exclusive persistent mount reservation identity is unavailable");
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
const releaseReservations = async (runDocker, records) => {
|
|
79
|
+
let failed = false;
|
|
80
|
+
for (const record of [...records].reverse()) {
|
|
81
|
+
try {
|
|
82
|
+
await inspectReservation(runDocker, record);
|
|
83
|
+
await runDocker(["container", "rm", record.id]);
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
failed = true;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (failed)
|
|
90
|
+
throw new SpawnfileError("runtime_error", "Unable to release exclusive persistent mount reservation");
|
|
91
|
+
};
|
|
92
|
+
export const acquireExclusiveVolumeReservations = async (report, deploymentLineage, deploymentContainerName, imageReference, runDocker) => {
|
|
93
|
+
const volumes = report.persistent_mounts
|
|
94
|
+
.filter((mount) => mount.lifecycle === "exclusive-reattach")
|
|
95
|
+
.map((mount) => derivePersistentMountVolumeName(deploymentLineage, mount))
|
|
96
|
+
.sort();
|
|
97
|
+
const records = [];
|
|
98
|
+
try {
|
|
99
|
+
for (const volume of volumes) {
|
|
100
|
+
const volumeDigest = `sha256:${createHash("sha256").update(volume).digest("hex")}`;
|
|
101
|
+
const owner = randomUUID();
|
|
102
|
+
const name = reservationName(volumeDigest);
|
|
103
|
+
let id;
|
|
104
|
+
try {
|
|
105
|
+
id = (await runDocker([
|
|
106
|
+
"container", "create", "--name", name,
|
|
107
|
+
"--label", `${reservationVersionLabel}=v1`,
|
|
108
|
+
"--label", `${reservationOwnerLabel}=${owner}`,
|
|
109
|
+
"--label", `${reservationVolumeLabel}=${volumeDigest}`,
|
|
110
|
+
imageReference
|
|
111
|
+
])).toString("utf8").trim();
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
throw new SpawnfileError("runtime_error", "Exclusive persistent mount reservation is already held");
|
|
115
|
+
}
|
|
116
|
+
if (!dockerId.test(id))
|
|
117
|
+
throw new SpawnfileError("runtime_error", "Exclusive persistent mount reservation returned invalid identity");
|
|
118
|
+
const record = { id, name, owner, volumeDigest };
|
|
119
|
+
records.push(record);
|
|
120
|
+
await inspectReservation(runDocker, record);
|
|
121
|
+
}
|
|
122
|
+
await assertExclusiveVolumesAvailable(report, deploymentLineage, deploymentContainerName, runDocker);
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
if (records.length > 0)
|
|
126
|
+
await releaseReservations(runDocker, records);
|
|
127
|
+
throw error;
|
|
128
|
+
}
|
|
129
|
+
let released = false;
|
|
130
|
+
return {
|
|
131
|
+
release: async () => {
|
|
132
|
+
if (released)
|
|
133
|
+
return;
|
|
134
|
+
await releaseReservations(runDocker, records);
|
|
135
|
+
released = true;
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
const parseCandidateState = (raw) => {
|
|
140
|
+
try {
|
|
141
|
+
const [idRaw, nameRaw, stateRaw, ...extra] = raw.toString("utf8").trim().split("\n");
|
|
142
|
+
if (!idRaw || !nameRaw || !stateRaw || extra.length > 0)
|
|
143
|
+
throw new Error("shape");
|
|
144
|
+
const id = JSON.parse(idRaw);
|
|
145
|
+
const name = JSON.parse(nameRaw);
|
|
146
|
+
const state = JSON.parse(stateRaw);
|
|
147
|
+
if (typeof id !== "string" || !dockerId.test(id)
|
|
148
|
+
|| typeof name !== "string" || !name.startsWith("/") || name.length < 2
|
|
149
|
+
|| !state || typeof state !== "object" || typeof state.Running !== "boolean")
|
|
150
|
+
throw new Error("values");
|
|
151
|
+
return { snapshot: { id, name: name.slice(1), running: state.Running }, state };
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
throw new SpawnfileError("runtime_error", "Candidate container returned invalid readiness state");
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
const candidateReadinessTimeoutMs = 120_000;
|
|
158
|
+
const candidateReadinessPollMs = 1_000;
|
|
159
|
+
export const assertCandidateContainerReady = async (runDocker, candidateId, expectedName) => {
|
|
160
|
+
if (!dockerId.test(candidateId))
|
|
161
|
+
throw new SpawnfileError("runtime_error", "Candidate container returned invalid identity");
|
|
162
|
+
const deadline = Date.now() + candidateReadinessTimeoutMs;
|
|
163
|
+
for (;;) {
|
|
164
|
+
const { snapshot, state } = parseCandidateState(await runDocker([
|
|
165
|
+
"container", "inspect", "--format", "{{json .Id}}\n{{json .Name}}\n{{json .State}}", candidateId
|
|
166
|
+
]));
|
|
167
|
+
if (snapshot.id !== candidateId || snapshot.name !== expectedName) {
|
|
168
|
+
throw new SpawnfileError("runtime_error", "Candidate container identity did not match detached run");
|
|
169
|
+
}
|
|
170
|
+
const health = state.Health?.Status;
|
|
171
|
+
if (state.Running === true && (health === undefined || health === "healthy"))
|
|
172
|
+
return;
|
|
173
|
+
// Docker may exhaust its health retries while a live process is still
|
|
174
|
+
// initializing. Honor our full readiness budget; only healthy can pass.
|
|
175
|
+
if (state.Running !== true || (health !== "starting" && health !== "unhealthy"))
|
|
176
|
+
break;
|
|
177
|
+
const remainingMs = deadline - Date.now();
|
|
178
|
+
if (remainingMs <= 0)
|
|
179
|
+
break;
|
|
180
|
+
await delay(Math.min(candidateReadinessPollMs, remainingMs));
|
|
181
|
+
}
|
|
182
|
+
throw new SpawnfileError("runtime_error", "Candidate container did not become ready");
|
|
183
|
+
};
|
|
184
|
+
export const assertContainerStopped = async (runDocker, reference, expectedId) => {
|
|
185
|
+
const observed = await inspectContainerSnapshot(runDocker, reference);
|
|
186
|
+
if (observed === null || observed.id !== expectedId || observed.running) {
|
|
187
|
+
throw new SpawnfileError("runtime_error", "Prior container did not reach a verified stopped state");
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
export const restorePreviousContainer = async (runDocker, previous, backupName, deploymentName) => {
|
|
191
|
+
const backup = await inspectContainerSnapshot(runDocker, backupName);
|
|
192
|
+
if (backup === null || backup.id !== previous.id) {
|
|
193
|
+
throw new SpawnfileError("runtime_error", "Prior container rollback identity is unavailable");
|
|
194
|
+
}
|
|
195
|
+
await runDocker(["rename", backupName, deploymentName]);
|
|
196
|
+
if (previous.running !== backup.running) {
|
|
197
|
+
await runDocker([previous.running ? "start" : "stop", previous.id]);
|
|
198
|
+
}
|
|
199
|
+
const restored = await inspectContainerSnapshot(runDocker, previous.id);
|
|
200
|
+
if (restored === null || restored.id !== previous.id || restored.name !== deploymentName
|
|
201
|
+
|| restored.running !== previous.running) {
|
|
202
|
+
throw new SpawnfileError("runtime_error", "Prior container rollback state could not be verified");
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
export const rollbackCandidateContainer = async (runDocker, candidateId, candidateName, previous, backupName) => {
|
|
206
|
+
const failed = [];
|
|
207
|
+
if (candidateId !== undefined) {
|
|
208
|
+
try {
|
|
209
|
+
const candidate = await inspectContainerSnapshot(runDocker, candidateId);
|
|
210
|
+
if (candidate !== null) {
|
|
211
|
+
if (candidate.id !== candidateId || candidate.name !== candidateName)
|
|
212
|
+
throw new Error("identity");
|
|
213
|
+
await runDocker(["rm", "-f", candidateId]);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
failed.push("candidate cleanup");
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
if (previous !== null) {
|
|
221
|
+
try {
|
|
222
|
+
await restorePreviousContainer(runDocker, previous, backupName, candidateName);
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
failed.push("prior restore");
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
if (failed.length > 0) {
|
|
229
|
+
throw new SpawnfileError("runtime_error", `Candidate deployment failed and rollback was incomplete (${failed.join(", ")})`);
|
|
230
|
+
}
|
|
231
|
+
};
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
import type { ParsedImageReference } from "./imageRef.js";
|
|
2
2
|
import type { DistributionReport } from "./types.js";
|
|
3
|
+
import type { DistributionPersistentMount } from "./types.js";
|
|
3
4
|
/** Derives a kebab-case deployment name from the image repository component. */
|
|
4
5
|
export declare const deriveDeploymentName: (ref: ParsedImageReference) => string;
|
|
5
6
|
/** Per-deployment volume name so two deployments never share a store. */
|
|
6
7
|
export declare const deriveVolumeName: (deploymentName: string, mountId: string) => string;
|
|
8
|
+
/**
|
|
9
|
+
* An author-declared name wins over any derivation, in image mode exactly as
|
|
10
|
+
* in project mode. Without this, an operator who pre-created
|
|
11
|
+
* `clank-newsroom-store` and deployed the published image silently got
|
|
12
|
+
* `spawnfile-exclusive-<id>-<hash>` — a brand-new empty volume — while the
|
|
13
|
+
* spec promised the declared name verbatim.
|
|
14
|
+
*
|
|
15
|
+
* Only a DECLARED name travels in the report; an undeclared mount is still
|
|
16
|
+
* named per deployment so two deployments of one image never share state.
|
|
17
|
+
*/
|
|
18
|
+
export declare const derivePersistentMountVolumeName: (deploymentName: string, mount: DistributionPersistentMount) => string;
|
|
7
19
|
export interface ResolveImageEnvironmentInput {
|
|
8
20
|
authValues: Record<string, string>;
|
|
9
21
|
envFileEnv?: Record<string, string>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { randomBytes } from "node:crypto";
|
|
2
|
+
import { createExclusiveReattachVolumeName } from "../shared/index.js";
|
|
2
3
|
const GENERATED_RUNTIME_SECRET_NAMES = new Set([
|
|
3
4
|
"OPENCLAW_GATEWAY_TOKEN",
|
|
4
5
|
"OPENCLAW_HOOKS_TOKEN"
|
|
@@ -17,6 +18,20 @@ export const deriveVolumeName = (deploymentName, mountId) => {
|
|
|
17
18
|
const safeMount = mountId.replace(/[^A-Za-z0-9_.-]+/g, "-");
|
|
18
19
|
return `spawnfile_${deploymentName}_${safeMount}`;
|
|
19
20
|
};
|
|
21
|
+
/**
|
|
22
|
+
* An author-declared name wins over any derivation, in image mode exactly as
|
|
23
|
+
* in project mode. Without this, an operator who pre-created
|
|
24
|
+
* `clank-newsroom-store` and deployed the published image silently got
|
|
25
|
+
* `spawnfile-exclusive-<id>-<hash>` — a brand-new empty volume — while the
|
|
26
|
+
* spec promised the declared name verbatim.
|
|
27
|
+
*
|
|
28
|
+
* Only a DECLARED name travels in the report; an undeclared mount is still
|
|
29
|
+
* named per deployment so two deployments of one image never share state.
|
|
30
|
+
*/
|
|
31
|
+
export const derivePersistentMountVolumeName = (deploymentName, mount) => mount.declared_volume_name?.trim()
|
|
32
|
+
|| (mount.lifecycle === "exclusive-reattach"
|
|
33
|
+
? createExclusiveReattachVolumeName(deploymentName, mount.id)
|
|
34
|
+
: deriveVolumeName(deploymentName, mount.id));
|
|
20
35
|
/**
|
|
21
36
|
* Builds the container environment for a sourceless deployment: auth-profile
|
|
22
37
|
* and env-file values, process-env overrides for declared secrets, and
|
|
@@ -27,9 +27,11 @@ export declare const distributionReportSchema: z.ZodObject<{
|
|
|
27
27
|
}, z.core.$strict>>;
|
|
28
28
|
}, z.core.$strict>;
|
|
29
29
|
persistent_mounts: z.ZodArray<z.ZodObject<{
|
|
30
|
+
declared_volume_name: z.ZodOptional<z.ZodString>;
|
|
30
31
|
durability: z.ZodLiteral<"persistent">;
|
|
31
32
|
id: z.ZodString;
|
|
32
33
|
kind: z.ZodLiteral<"volume">;
|
|
34
|
+
lifecycle: z.ZodOptional<z.ZodLiteral<"exclusive-reattach">>;
|
|
33
35
|
target: z.ZodString;
|
|
34
36
|
}, z.core.$strict>>;
|
|
35
37
|
port_mappings: z.ZodArray<z.ZodObject<{
|
|
@@ -39,7 +41,7 @@ export declare const distributionReportSchema: z.ZodObject<{
|
|
|
39
41
|
ports: z.ZodArray<z.ZodNumber>;
|
|
40
42
|
resources: z.ZodArray<z.ZodObject<{
|
|
41
43
|
id: z.ZodString;
|
|
42
|
-
kind: z.ZodUnion<readonly [z.ZodLiteral<"git">, z.ZodLiteral<"volume">]>;
|
|
44
|
+
kind: z.ZodUnion<readonly [z.ZodLiteral<"bundle">, z.ZodLiteral<"git">, z.ZodLiteral<"volume">]>;
|
|
43
45
|
link_path: z.ZodString;
|
|
44
46
|
mode: z.ZodUnion<readonly [z.ZodLiteral<"mutable">, z.ZodLiteral<"readonly">]>;
|
|
45
47
|
mount: z.ZodString;
|
|
@@ -47,6 +49,14 @@ export declare const distributionReportSchema: z.ZodObject<{
|
|
|
47
49
|
}, z.core.$strict>>;
|
|
48
50
|
runtime_instances: z.ZodArray<z.ZodObject<{
|
|
49
51
|
config_path: z.ZodString;
|
|
52
|
+
engine_by_node_id: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
|
|
53
|
+
codex: "codex";
|
|
54
|
+
grok: "grok";
|
|
55
|
+
agy: "agy";
|
|
56
|
+
claude: "claude";
|
|
57
|
+
pi: "pi";
|
|
58
|
+
scripted: "scripted";
|
|
59
|
+
}>>>;
|
|
50
60
|
home_path: z.ZodNullable<z.ZodString>;
|
|
51
61
|
id: z.ZodString;
|
|
52
62
|
internal_port: z.ZodNullable<z.ZodNumber>;
|
|
@@ -80,5 +90,10 @@ export declare const distributionReportSchema: z.ZodObject<{
|
|
|
80
90
|
}, z.core.$strict>>;
|
|
81
91
|
}, z.core.$strict>;
|
|
82
92
|
version: z.ZodLiteral<"spawnfile.distribution-report.v1">;
|
|
93
|
+
world_bindings: z.ZodOptional<z.ZodObject<{
|
|
94
|
+
artifact_path: z.ZodLiteral<"/spawnfile/world-bindings.json">;
|
|
95
|
+
digest: z.ZodString;
|
|
96
|
+
schema: z.ZodLiteral<"simfile.world-bindings.v1">;
|
|
97
|
+
}, z.core.$strict>>;
|
|
83
98
|
}, z.core.$strict>;
|
|
84
99
|
export declare const parseDistributionReport: (source: unknown, sourceLabel?: string) => DistributionReport;
|