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
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
import { constants } from "node:fs";
|
|
2
|
+
import { link, lstat, open, unlink } from "node:fs/promises";
|
|
3
|
+
import { OrganizationHandoffAuthorityBudget, OrganizationHandoffAuthorityFailure, toOrganizationHandoffAuthorityFailureDetail } from "./organizationHandoffAuthorityFsBudget.js";
|
|
4
|
+
import { createAuthorityLeafInspector } from "./organizationHandoffAuthorityFsElection.js";
|
|
5
|
+
const VERSION = "spawnfile.organization-handoff-fs-worker.v1";
|
|
6
|
+
const MAX_BYTES = 32_768;
|
|
7
|
+
// Store keys encode either a 64-character pending key or a 71-character
|
|
8
|
+
// `opaque_` handoff handle. No other leaf namespace is reachable.
|
|
9
|
+
const NAME = /^(?:[a-f0-9]{128}|[a-f0-9]{142})\.json$/u;
|
|
10
|
+
const owner = typeof process.getuid === "function" ? process.getuid() : undefined;
|
|
11
|
+
const fail = (code, state) => {
|
|
12
|
+
throw new OrganizationHandoffAuthorityFailure({ code, ...(state === undefined ? {} : { state }) });
|
|
13
|
+
};
|
|
14
|
+
/** Fail with the budget's attempt/wall-clock accounting and the contending shape. */
|
|
15
|
+
const failBudget = (budget, code, loop, state) => {
|
|
16
|
+
throw new OrganizationHandoffAuthorityFailure(budget.snapshot(code, loop, state));
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Re-raise a race failure that the election check refused to retry, recording
|
|
20
|
+
* the verdict. Without it a fail-closed admission decision is indistinguishable
|
|
21
|
+
* from the underlying race in a log.
|
|
22
|
+
*/
|
|
23
|
+
const failElection = (error, election, loop) => {
|
|
24
|
+
const detail = toOrganizationHandoffAuthorityFailureDetail(error);
|
|
25
|
+
throw new OrganizationHandoffAuthorityFailure({
|
|
26
|
+
...detail,
|
|
27
|
+
state: `${detail.state === undefined ? "" : `${detail.state} `}loop=${loop} election=${String(election)}`
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
const bytes = (value) => Buffer.byteLength(value, "utf8");
|
|
31
|
+
const validName = (value) => typeof value === "string" && NAME.test(value) ? value : fail("invalid_name");
|
|
32
|
+
const validRequest = (raw) => {
|
|
33
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw) || Object.getPrototypeOf(raw) !== Object.prototype)
|
|
34
|
+
return fail("malformed_request");
|
|
35
|
+
const value = raw;
|
|
36
|
+
if (value.version !== VERSION || !Number.isSafeInteger(value.id) || typeof value.op !== "string" || (value.op !== "read" && value.op !== "write" && value.op !== "create"))
|
|
37
|
+
return fail("unsupported_request");
|
|
38
|
+
const content = value.content;
|
|
39
|
+
const keys = Object.keys(value).sort();
|
|
40
|
+
const expected = value.op === "read" ? ["id", "name", "op", "version"] : ["content", "id", "name", "op", "version"];
|
|
41
|
+
if (keys.length !== expected.length || keys.some((key, index) => key !== expected[index]))
|
|
42
|
+
return fail("unexpected_request_keys");
|
|
43
|
+
if (content !== undefined && (typeof content !== "string" || bytes(content) > MAX_BYTES))
|
|
44
|
+
return fail("oversized_content");
|
|
45
|
+
return { version: VERSION, id: value.id, op: value.op, name: validName(value.name), ...(content === undefined ? {} : { content }) };
|
|
46
|
+
};
|
|
47
|
+
const send = (value) => {
|
|
48
|
+
const serialized = JSON.stringify(value);
|
|
49
|
+
if (bytes(serialized) > MAX_BYTES || typeof process.send !== "function")
|
|
50
|
+
process.exit(1);
|
|
51
|
+
process.send(JSON.parse(serialized));
|
|
52
|
+
};
|
|
53
|
+
const { aliasesOf, expectedElectionState, statFile } = createAuthorityLeafInspector(owner === undefined ? {} : { owner });
|
|
54
|
+
const publicationSidecars = (name) => [`${name}.pending`, `${name}.recovery`];
|
|
55
|
+
/**
|
|
56
|
+
* Structural description of the contending state for a diagnostic. Reports
|
|
57
|
+
* only shape — presence, link count, size, mode. Never record bytes, leaf
|
|
58
|
+
* names, or paths: this is the secret-publication path.
|
|
59
|
+
*/
|
|
60
|
+
const describeContention = async (name) => {
|
|
61
|
+
const roles = [["final", name], ["pending", `${name}.pending`], ["recovery", `${name}.recovery`]];
|
|
62
|
+
const parts = await Promise.all(roles.map(async ([role, leaf]) => {
|
|
63
|
+
const stat = await lstat(leaf).catch(() => null);
|
|
64
|
+
return stat === null
|
|
65
|
+
? `${role}:absent`
|
|
66
|
+
: `${role}:nlink=${stat.nlink},size=${stat.size},mode=${(stat.mode & 0o777).toString(8)}`;
|
|
67
|
+
}));
|
|
68
|
+
return parts.join(" ");
|
|
69
|
+
};
|
|
70
|
+
const read = async (name) => {
|
|
71
|
+
let before = await statFile(name);
|
|
72
|
+
if (before === null)
|
|
73
|
+
return null;
|
|
74
|
+
if (before.nlink === 2) {
|
|
75
|
+
let match;
|
|
76
|
+
for (const alias of aliasesOf(name)) {
|
|
77
|
+
const stat = await lstat(alias).catch((error) => error.code === "ENOENT" ? null : fail("alias_lstat_failed"));
|
|
78
|
+
if (stat && stat.isFile() && !stat.isSymbolicLink() && stat.nlink === 2 && stat.dev === before.dev && stat.ino === before.ino) {
|
|
79
|
+
if (match)
|
|
80
|
+
return fail("ambiguous_link_alias");
|
|
81
|
+
match = alias;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (!match) {
|
|
85
|
+
// The counterpart can be unlinked between the two lstat calls by the
|
|
86
|
+
// helper that won this link election. Re-read only if that left this
|
|
87
|
+
// same checked file with its ordinary single link.
|
|
88
|
+
const current = await statFile(name);
|
|
89
|
+
if (current === null)
|
|
90
|
+
return null;
|
|
91
|
+
if (current.nlink !== 1)
|
|
92
|
+
return fail("unresolved_second_link");
|
|
93
|
+
before = current;
|
|
94
|
+
}
|
|
95
|
+
// Reading the canonical record completes a crashed publisher. An
|
|
96
|
+
// intermediate-name reader may be racing that publisher, so it merely
|
|
97
|
+
// observes the linked content and lets its normal publish path converge.
|
|
98
|
+
if (match && !name.endsWith(".pending") && !name.endsWith(".recovery")) {
|
|
99
|
+
await unlink(match).catch((error) => { if (error.code !== "ENOENT")
|
|
100
|
+
fail("alias_unlink_failed"); });
|
|
101
|
+
await sync();
|
|
102
|
+
before = await statFile(name);
|
|
103
|
+
if (before === null)
|
|
104
|
+
return fail("record_vanished_after_join");
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const handle = await open(name, constants.O_RDONLY | constants.O_NOFOLLOW).catch((error) => error.code === "ENOENT" ? null : fail("open_failed"));
|
|
108
|
+
if (handle === null)
|
|
109
|
+
return null;
|
|
110
|
+
try {
|
|
111
|
+
const stat = await handle.stat();
|
|
112
|
+
// A simultaneous helper may complete the observed link publication while
|
|
113
|
+
// this descriptor is open, reducing nlink from two to one. That is the
|
|
114
|
+
// sole permitted link-count transition; inode, device, size, and all
|
|
115
|
+
// increases remain fail-closed.
|
|
116
|
+
if (!stat.isFile() || stat.nlink < 1 || stat.nlink > before.nlink || stat.dev !== before.dev || stat.ino !== before.ino || stat.size !== before.size)
|
|
117
|
+
return fail("record_drifted_while_open");
|
|
118
|
+
return await handle.readFile({ encoding: "utf8" });
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
if (error instanceof OrganizationHandoffAuthorityFailure)
|
|
122
|
+
throw error;
|
|
123
|
+
return fail("read_failed");
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
await handle.close().catch(() => undefined);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
const sync = async () => { const handle = await open(".", constants.O_RDONLY | constants.O_DIRECTORY).catch(() => fail("directory_open_failed")); try {
|
|
130
|
+
await handle.sync();
|
|
131
|
+
}
|
|
132
|
+
finally {
|
|
133
|
+
await handle.close().catch(() => undefined);
|
|
134
|
+
} };
|
|
135
|
+
const readDuringPublication = async (name, budget) => {
|
|
136
|
+
try {
|
|
137
|
+
return await read(name);
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
// Re-validate the leaf before retrying. This permits only a checked,
|
|
141
|
+
// ordinary one/two-link publication race; symlinks, mode/owner drift,
|
|
142
|
+
// extra links, and other malformed states still fail immediately.
|
|
143
|
+
const election = await expectedElectionState(name);
|
|
144
|
+
if (election === null)
|
|
145
|
+
return null;
|
|
146
|
+
if (election !== true)
|
|
147
|
+
return failElection(error, election, "read");
|
|
148
|
+
if (budget.exhausted())
|
|
149
|
+
return failBudget(budget, "read_budget_exhausted", "read", await describeContention(name));
|
|
150
|
+
await budget.wait();
|
|
151
|
+
return readDuringPublication(name, budget);
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
/**
|
|
155
|
+
* A sidecar may change between lstat and fd inspection while another worker
|
|
156
|
+
* publishes. Re-prove an exact immutable final first, then retry the sidecar
|
|
157
|
+
* so cleanup still relies on a stable checked sidecar rather than an inference.
|
|
158
|
+
*/
|
|
159
|
+
const readStaging = async (staging, final, content, budget) => {
|
|
160
|
+
try {
|
|
161
|
+
const observed = await read(staging);
|
|
162
|
+
if (observed === null)
|
|
163
|
+
return "absent";
|
|
164
|
+
if (observed === content)
|
|
165
|
+
return "exact";
|
|
166
|
+
return content.startsWith(observed) ? "expected-prefix" : fail("staging_content_unrelated");
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
if (error instanceof OrganizationHandoffAuthorityFailure && error.detail.budget !== undefined)
|
|
170
|
+
throw error;
|
|
171
|
+
const published = await readDuringPublication(final, budget);
|
|
172
|
+
if (published !== null) {
|
|
173
|
+
if (published !== content)
|
|
174
|
+
return fail("published_content_mismatch");
|
|
175
|
+
if (budget.exhausted())
|
|
176
|
+
return failBudget(budget, "staging_budget_exhausted", "staging", await describeContention(final));
|
|
177
|
+
await budget.wait();
|
|
178
|
+
return readStaging(staging, final, content, budget);
|
|
179
|
+
}
|
|
180
|
+
const election = await expectedElectionState(staging);
|
|
181
|
+
if (election === null)
|
|
182
|
+
return "absent";
|
|
183
|
+
if (election !== true)
|
|
184
|
+
return failElection(error, election, "staging");
|
|
185
|
+
if (budget.exhausted())
|
|
186
|
+
return failBudget(budget, "staging_budget_exhausted", "staging", await describeContention(final));
|
|
187
|
+
await budget.wait();
|
|
188
|
+
return readStaging(staging, final, content, budget);
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* A successful link election can race a peer which had already created the
|
|
193
|
+
* other staging leaf. The final immutable record is authoritative, but the
|
|
194
|
+
* stale leaf must not survive a completed join: it would otherwise be
|
|
195
|
+
* mistaken for an in-progress publication after restart. Delete exact bytes
|
|
196
|
+
* immediately. An incomplete expected prefix may still belong to a publisher,
|
|
197
|
+
* so wait for it first; once the budget's patience expires, removing that
|
|
198
|
+
* proven prefix is safe because the final record already prevents it from
|
|
199
|
+
* winning a later link election.
|
|
200
|
+
*/
|
|
201
|
+
const settlePublished = async (name, content, budget) => {
|
|
202
|
+
if (budget.exhausted())
|
|
203
|
+
return failBudget(budget, "settle_budget_exhausted", "settle", await describeContention(name));
|
|
204
|
+
if (await readDuringPublication(name, budget) !== content)
|
|
205
|
+
return fail("settle_record_mismatch");
|
|
206
|
+
let incomplete = false;
|
|
207
|
+
for (const sidecar of publicationSidecars(name)) {
|
|
208
|
+
const observed = await readStaging(sidecar, name, content, budget);
|
|
209
|
+
if (observed === "absent")
|
|
210
|
+
continue;
|
|
211
|
+
if (observed === "expected-prefix" && budget.patient()) {
|
|
212
|
+
incomplete = true;
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
await unlink(sidecar).catch((error) => { if (error.code !== "ENOENT")
|
|
216
|
+
fail("sidecar_unlink_failed"); });
|
|
217
|
+
await sync();
|
|
218
|
+
}
|
|
219
|
+
if (incomplete) {
|
|
220
|
+
await budget.wait();
|
|
221
|
+
return settlePublished(name, content, budget);
|
|
222
|
+
}
|
|
223
|
+
if (await readDuringPublication(name, budget) !== content)
|
|
224
|
+
return fail("settle_record_mismatch");
|
|
225
|
+
const remaining = await Promise.all(publicationSidecars(name).map(async (sidecar) => readStaging(sidecar, name, content, budget)));
|
|
226
|
+
if (remaining.every((sidecar) => sidecar === "absent"))
|
|
227
|
+
return;
|
|
228
|
+
if (budget.exhausted())
|
|
229
|
+
return failBudget(budget, "settle_budget_exhausted", "settle", await describeContention(name));
|
|
230
|
+
await budget.wait();
|
|
231
|
+
return settlePublished(name, content, budget);
|
|
232
|
+
};
|
|
233
|
+
const readPublished = async (name, budget) => {
|
|
234
|
+
const content = await readDuringPublication(name, budget);
|
|
235
|
+
if (content === null)
|
|
236
|
+
return null;
|
|
237
|
+
await settlePublished(name, content, budget);
|
|
238
|
+
return content;
|
|
239
|
+
};
|
|
240
|
+
const write = async (name, content, budget) => {
|
|
241
|
+
if (budget.exhausted())
|
|
242
|
+
return failBudget(budget, "write_budget_exhausted", "write", await describeContention(name));
|
|
243
|
+
const joinOrRetry = async () => {
|
|
244
|
+
const published = await readDuringPublication(name, budget);
|
|
245
|
+
if (published !== null) {
|
|
246
|
+
if (published !== content)
|
|
247
|
+
return fail("join_content_mismatch");
|
|
248
|
+
await settlePublished(name, content, budget);
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
await budget.wait();
|
|
252
|
+
return write(name, content, budget);
|
|
253
|
+
};
|
|
254
|
+
const reproveStaging = async () => {
|
|
255
|
+
const published = await readDuringPublication(name, budget);
|
|
256
|
+
if (published === content) {
|
|
257
|
+
await settlePublished(name, content, budget);
|
|
258
|
+
return true;
|
|
259
|
+
}
|
|
260
|
+
if (published !== null)
|
|
261
|
+
return fail("reprove_content_mismatch");
|
|
262
|
+
await budget.wait();
|
|
263
|
+
return false;
|
|
264
|
+
};
|
|
265
|
+
const existing = await readDuringPublication(name, budget);
|
|
266
|
+
if (existing !== null) {
|
|
267
|
+
if (existing !== content)
|
|
268
|
+
fail("existing_content_mismatch");
|
|
269
|
+
await settlePublished(name, content, budget);
|
|
270
|
+
return false;
|
|
271
|
+
}
|
|
272
|
+
const pending = `${name}.pending`;
|
|
273
|
+
const recovery = `${name}.recovery`;
|
|
274
|
+
const incomplete = await readStaging(pending, name, content, budget);
|
|
275
|
+
if (incomplete === "expected-prefix") {
|
|
276
|
+
let recovered = await readStaging(recovery, name, content, budget);
|
|
277
|
+
if (recovered === "expected-prefix") {
|
|
278
|
+
if (budget.patient()) {
|
|
279
|
+
await budget.wait();
|
|
280
|
+
return write(name, content, budget);
|
|
281
|
+
}
|
|
282
|
+
// A crashed recovery publisher can leave the same bounded prefix. It
|
|
283
|
+
// cannot win after this writer links the immutable final record, so
|
|
284
|
+
// retire it only after the budget's patience expires and reconstruct it
|
|
285
|
+
// below.
|
|
286
|
+
await unlink(recovery).catch((error) => { if (error.code !== "ENOENT")
|
|
287
|
+
fail("recovery_unlink_failed"); });
|
|
288
|
+
await sync();
|
|
289
|
+
recovered = "absent";
|
|
290
|
+
}
|
|
291
|
+
if (recovered === "absent") {
|
|
292
|
+
const handle = await open(recovery, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY | constants.O_NOFOLLOW, 0o600).catch((error) => error.code === "EEXIST" ? null : fail("recovery_create_failed"));
|
|
293
|
+
if (handle === null) {
|
|
294
|
+
await budget.wait();
|
|
295
|
+
return write(name, content, budget);
|
|
296
|
+
}
|
|
297
|
+
try {
|
|
298
|
+
await handle.writeFile(content, "utf8");
|
|
299
|
+
await handle.sync();
|
|
300
|
+
}
|
|
301
|
+
finally {
|
|
302
|
+
await handle.close().catch(() => undefined);
|
|
303
|
+
}
|
|
304
|
+
const staged = await readStaging(recovery, name, content, budget);
|
|
305
|
+
if (staged !== "exact") {
|
|
306
|
+
if (await reproveStaging())
|
|
307
|
+
return false;
|
|
308
|
+
return write(name, content, budget);
|
|
309
|
+
}
|
|
310
|
+
await sync();
|
|
311
|
+
}
|
|
312
|
+
const recoveredLinked = await link(recovery, name).then(() => true).catch((error) => {
|
|
313
|
+
if (error.code === "EEXIST")
|
|
314
|
+
return false;
|
|
315
|
+
if (error.code === "ENOENT")
|
|
316
|
+
return null;
|
|
317
|
+
return fail("recovery_link_failed");
|
|
318
|
+
});
|
|
319
|
+
if (recoveredLinked !== true)
|
|
320
|
+
return joinOrRetry();
|
|
321
|
+
await sync();
|
|
322
|
+
await unlink(recovery).catch((error) => { if (error.code !== "ENOENT")
|
|
323
|
+
fail("recovery_unlink_failed"); });
|
|
324
|
+
await sync();
|
|
325
|
+
if (await readDuringPublication(name, budget) !== content)
|
|
326
|
+
fail("recovery_publish_mismatch");
|
|
327
|
+
await settlePublished(name, content, budget);
|
|
328
|
+
return true;
|
|
329
|
+
}
|
|
330
|
+
if (incomplete === "absent") {
|
|
331
|
+
const handle = await open(pending, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY | constants.O_NOFOLLOW, 0o600).catch((error) => error.code === "EEXIST" ? null : fail("pending_create_failed"));
|
|
332
|
+
if (handle === null) {
|
|
333
|
+
await budget.wait();
|
|
334
|
+
return write(name, content, budget);
|
|
335
|
+
}
|
|
336
|
+
try {
|
|
337
|
+
await handle.writeFile(content, "utf8");
|
|
338
|
+
await handle.sync();
|
|
339
|
+
}
|
|
340
|
+
finally {
|
|
341
|
+
await handle.close().catch(() => undefined);
|
|
342
|
+
}
|
|
343
|
+
const staged = await readStaging(pending, name, content, budget);
|
|
344
|
+
if (staged !== "exact") {
|
|
345
|
+
if (await reproveStaging())
|
|
346
|
+
return false;
|
|
347
|
+
return write(name, content, budget);
|
|
348
|
+
}
|
|
349
|
+
await sync();
|
|
350
|
+
}
|
|
351
|
+
const linked = await link(pending, name).then(() => true).catch((error) => {
|
|
352
|
+
if (error.code === "EEXIST")
|
|
353
|
+
return false;
|
|
354
|
+
if (error.code === "ENOENT")
|
|
355
|
+
return null;
|
|
356
|
+
return fail("pending_link_failed");
|
|
357
|
+
});
|
|
358
|
+
if (linked !== true)
|
|
359
|
+
return joinOrRetry();
|
|
360
|
+
await sync();
|
|
361
|
+
await unlink(pending).catch((error) => { if (error.code !== "ENOENT")
|
|
362
|
+
fail("pending_unlink_failed"); });
|
|
363
|
+
await sync();
|
|
364
|
+
if (await readDuringPublication(name, budget) !== content)
|
|
365
|
+
fail("pending_publish_mismatch");
|
|
366
|
+
await settlePublished(name, content, budget);
|
|
367
|
+
return true;
|
|
368
|
+
};
|
|
369
|
+
let anchor;
|
|
370
|
+
let queue = Promise.resolve();
|
|
371
|
+
const start = async () => {
|
|
372
|
+
const raw = process.env.SPAWNFILE_AUTHORITY_FS_ANCHOR;
|
|
373
|
+
if (!raw)
|
|
374
|
+
return fail("missing_anchor");
|
|
375
|
+
const expected = JSON.parse(raw);
|
|
376
|
+
const stat = await lstat(".");
|
|
377
|
+
if (!stat.isDirectory() || stat.isSymbolicLink() || stat.dev !== expected.dev || stat.ino !== expected.ino
|
|
378
|
+
|| (stat.mode & 0o077) !== 0 || owner !== undefined && stat.uid !== expected.uid
|
|
379
|
+
|| !Number.isSafeInteger(expected.parent_pid) || expected.parent_pid < 1 || process.ppid !== expected.parent_pid)
|
|
380
|
+
return fail("anchor_mismatch");
|
|
381
|
+
anchor = expected;
|
|
382
|
+
send({ version: VERSION, ready: true });
|
|
383
|
+
};
|
|
384
|
+
process.on("message", (raw) => {
|
|
385
|
+
queue = queue.then(async () => {
|
|
386
|
+
const request = validRequest(raw);
|
|
387
|
+
if (!anchor)
|
|
388
|
+
return fail("not_ready");
|
|
389
|
+
const stat = await lstat(".");
|
|
390
|
+
if (stat.dev !== anchor.dev || stat.ino !== anchor.ino || (stat.mode & 0o077) !== 0)
|
|
391
|
+
return fail("anchor_drifted");
|
|
392
|
+
// One budget per request: the request is the thing with a deadline, and
|
|
393
|
+
// the client's own request deadline must exceed it.
|
|
394
|
+
const budget = new OrganizationHandoffAuthorityBudget();
|
|
395
|
+
const result = request.op === "read"
|
|
396
|
+
? { content: await readPublished(request.name, budget) }
|
|
397
|
+
: { created: request.content === undefined ? fail("missing_content") : await write(request.name, request.content, budget) };
|
|
398
|
+
send({ version: VERSION, id: request.id, ok: true, ...(result.content === null ? {} : { content: result.content }), ...(request.op === "create" ? { created: result.created } : {}) });
|
|
399
|
+
}).catch((error) => send({
|
|
400
|
+
version: VERSION,
|
|
401
|
+
id: typeof raw === "object" && raw !== null && Number.isSafeInteger(raw.id) ? raw.id : 0,
|
|
402
|
+
ok: false,
|
|
403
|
+
failure: toOrganizationHandoffAuthorityFailureDetail(error)
|
|
404
|
+
}));
|
|
405
|
+
});
|
|
406
|
+
process.on("disconnect", () => process.exit(0));
|
|
407
|
+
/**
|
|
408
|
+
* Expected parent pid read synchronously at module load, before any await.
|
|
409
|
+
*
|
|
410
|
+
* The watchdog below previously exited whenever `anchor` was still unset. That
|
|
411
|
+
* made a liveness net race the startup path: on a loaded host the interpreter
|
|
412
|
+
* and the anchor's `lstat` can take longer than one 100ms tick, and the helper
|
|
413
|
+
* killed itself before it could ever report ready. Deriving the pid from the
|
|
414
|
+
* environment removes the dependency on startup having finished, without
|
|
415
|
+
* weakening anything: `start` still validates the full anchor independently,
|
|
416
|
+
* and no request is served until it does.
|
|
417
|
+
*/
|
|
418
|
+
const watchedParentPid = (() => {
|
|
419
|
+
try {
|
|
420
|
+
const value = JSON.parse(process.env.SPAWNFILE_AUTHORITY_FS_ANCHOR ?? "{}");
|
|
421
|
+
return Number.isSafeInteger(value.parent_pid) ? value.parent_pid : undefined;
|
|
422
|
+
}
|
|
423
|
+
catch {
|
|
424
|
+
return undefined;
|
|
425
|
+
}
|
|
426
|
+
})();
|
|
427
|
+
// IPC disconnect covers a cooperative parent shutdown. ppid surveillance also
|
|
428
|
+
// covers abrupt parent death, where an orphan might otherwise retain its cwd.
|
|
429
|
+
setInterval(() => { if (watchedParentPid === undefined || process.ppid !== watchedParentPid)
|
|
430
|
+
process.exit(0); }, 100).unref();
|
|
431
|
+
void start().catch(() => process.exit(1));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { fork } from "node:child_process";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import { lstat } from "node:fs/promises";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
const directory = process.argv[2];
|
|
6
|
+
if (typeof directory !== "string")
|
|
7
|
+
process.exit(1);
|
|
8
|
+
const stat = await lstat(directory).catch(() => undefined);
|
|
9
|
+
if (!stat?.isDirectory())
|
|
10
|
+
process.exit(1);
|
|
11
|
+
const worker = fork(fileURLToPath(new URL("./organizationHandoffAuthorityFsWorker.ts", import.meta.url)), [], {
|
|
12
|
+
cwd: directory,
|
|
13
|
+
env: { SPAWNFILE_AUTHORITY_FS_ANCHOR: JSON.stringify({ dev: stat.dev, ino: stat.ino, uid: typeof process.getuid === "function" ? process.getuid() : undefined, parent_pid: process.pid }) },
|
|
14
|
+
execArgv: ["--import", createRequire(import.meta.url).resolve("tsx")],
|
|
15
|
+
silent: true
|
|
16
|
+
});
|
|
17
|
+
worker.stdout?.resume();
|
|
18
|
+
worker.stderr?.resume();
|
|
19
|
+
worker.once("message", (message) => {
|
|
20
|
+
if (message?.ready !== true || typeof process.send !== "function")
|
|
21
|
+
process.exit(1);
|
|
22
|
+
process.send({ worker_pid: worker.pid });
|
|
23
|
+
});
|
|
24
|
+
// Keep the fixture parent alive until the test kills it; the worker must then
|
|
25
|
+
// notice its changed ppid and exit on its own.
|
|
26
|
+
setInterval(() => undefined, 1_000);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { pbkdf2 } from "node:crypto";
|
|
2
|
+
/**
|
|
3
|
+
* Test-only preload that delays the authority worker's startup filesystem call.
|
|
4
|
+
*
|
|
5
|
+
* The worker validates its anchor with an `lstat`, which libuv runs on the
|
|
6
|
+
* threadpool. Forked with `UV_THREADPOOL_SIZE=1`, this preload occupies that
|
|
7
|
+
* single slot long enough that the anchor cannot be established until well
|
|
8
|
+
* after the worker's 100ms liveness watchdog has ticked several times — the
|
|
9
|
+
* deterministic equivalent of what CPU contention does to worker startup on a
|
|
10
|
+
* loaded host, and the condition under which the watchdog used to reap the
|
|
11
|
+
* helper before it could ever report readiness.
|
|
12
|
+
*
|
|
13
|
+
* The event loop itself stays free throughout, so the watchdog does tick.
|
|
14
|
+
*/
|
|
15
|
+
const STALL_ITERATIONS = 1_500_000;
|
|
16
|
+
pbkdf2("spawnfile-stall", "spawnfile-stall", STALL_ITERATIONS, 64, "sha512", () => undefined);
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { createOrganizationHandoffCapabilityPending, type OrganizationHandoffCapabilityFinalized, type OrganizationHandoffCapabilityPending, type OrganizationHandoffDockerObservation } from "./organizationHandoffAuthorityTypes.js";
|
|
2
|
+
import { type OrganizationHandoffAuthorityFsClient, type OrganizationHandoffAuthorityFsClientOptions } from "./organizationHandoffAuthorityFsClient.js";
|
|
3
|
+
export declare const resolveOrganizationHandoffAuthorityRoot: () => string;
|
|
4
|
+
export interface OrganizationHandoffAuthorityStore {
|
|
5
|
+
begin(input: Parameters<typeof createOrganizationHandoffCapabilityPending>[0]): Promise<{
|
|
6
|
+
readonly created: boolean;
|
|
7
|
+
readonly pending: OrganizationHandoffCapabilityPending;
|
|
8
|
+
}>;
|
|
9
|
+
close(input: {
|
|
10
|
+
readonly expectedHandoff: unknown;
|
|
11
|
+
readonly organizationHandoffHandle: unknown;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
dispose(): Promise<void>;
|
|
14
|
+
finalize(pendingKey: unknown, container: {
|
|
15
|
+
readonly containerId: unknown;
|
|
16
|
+
readonly deploymentLabels: unknown;
|
|
17
|
+
}): Promise<OrganizationHandoffCapabilityFinalized>;
|
|
18
|
+
observeDockerMutation(pendingKey: unknown, container: {
|
|
19
|
+
readonly containerId: unknown;
|
|
20
|
+
readonly deploymentLabels: unknown;
|
|
21
|
+
readonly imageId: unknown;
|
|
22
|
+
}): Promise<OrganizationHandoffDockerObservation>;
|
|
23
|
+
readDockerMutation(pendingKey: unknown): Promise<OrganizationHandoffDockerObservation | null>;
|
|
24
|
+
reserve(input: Parameters<typeof createOrganizationHandoffCapabilityPending>[0]): Promise<OrganizationHandoffCapabilityPending>;
|
|
25
|
+
resolver: {
|
|
26
|
+
resolve(input: {
|
|
27
|
+
authorization: unknown;
|
|
28
|
+
signal?: AbortSignal;
|
|
29
|
+
}): Promise<unknown>;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export interface OrganizationHandoffAuthorityStoreTestHooks {
|
|
33
|
+
beforeLeafOperation?(kind: "close" | "finalize" | "reserve" | "resolve"): Promise<void>;
|
|
34
|
+
duringLeafOperation?(kind: "reserve", operation: () => Promise<void>): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
export interface OrganizationHandoffAuthorityStoreInitializeOptions {
|
|
37
|
+
readonly testHooks?: OrganizationHandoffAuthorityStoreTestHooks;
|
|
38
|
+
readonly testInitializeFsClient?: (options: OrganizationHandoffAuthorityFsClientOptions) => Promise<OrganizationHandoffAuthorityFsClient>;
|
|
39
|
+
readonly workerPath?: string;
|
|
40
|
+
}
|
|
41
|
+
export declare const initializeOrganizationHandoffAuthorityStore: (options?: OrganizationHandoffAuthorityStoreInitializeOptions) => Promise<OrganizationHandoffAuthorityStore>;
|