spawnfile 0.1.14 → 0.1.18
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 +60 -159
- package/dist/audit/checksShared.d.ts +1 -1
- package/dist/auth/importers.d.ts +10 -0
- package/dist/auth/importers.js +46 -5
- package/dist/auth/index.d.ts +3 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/paths.d.ts +1 -1
- package/dist/auth/profileStore.js +13 -10
- package/dist/auth/targetSecretSourceFsIdentity.d.ts +40 -0
- package/dist/auth/targetSecretSourceFsIdentity.js +42 -0
- package/dist/auth/targetSecretSourceFsPublish.d.ts +2 -0
- package/dist/auth/targetSecretSourceFsPublish.js +3 -1
- package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +2 -1
- package/dist/auth/targetSecretSourceFsPublishImmutable.js +104 -71
- package/dist/auth/targetSecretSourceFsRead.js +5 -14
- package/dist/auth/trainingAuth.d.ts +21 -0
- package/dist/auth/trainingAuth.js +86 -0
- package/dist/auth/trainingGrokWriteback.d.ts +4 -0
- package/dist/auth/trainingGrokWriteback.js +119 -0
- package/dist/auth/trainingGrokWritebackLock.d.ts +5 -0
- package/dist/auth/trainingGrokWritebackLock.js +56 -0
- package/dist/auth/types.d.ts +1 -1
- package/dist/cli/authCommands.d.ts +1 -1
- package/dist/cli/authCommands.js +18 -5
- 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.js +17 -0
- package/dist/cli/composedLifecycleContractSet.d.ts +21 -0
- package/dist/cli/composedLifecycleContractSet.js +204 -0
- package/dist/cli/devCommands.js +6 -2
- package/dist/cli/downCommand.d.ts +2 -0
- package/dist/cli/downCommand.js +22 -8
- package/dist/cli/envFileOption.d.ts +18 -0
- package/dist/cli/envFileOption.js +20 -0
- package/dist/cli/evidenceExportHelperCommand.d.ts +13 -0
- package/dist/cli/evidenceExportHelperCommand.js +51 -0
- package/dist/cli/index.js +12 -3
- package/dist/cli/lifecycleCommands.d.ts +1 -1
- package/dist/cli/lifecycleCommands.js +3 -1
- package/dist/cli/lifecycleMachine.d.ts +7 -1
- package/dist/cli/lifecycleMachine.js +2 -2
- package/dist/cli/lifecyclePlan.d.ts +1 -0
- package/dist/cli/lifecyclePlan.js +2 -0
- package/dist/cli/paideiaDelegation.d.ts +18 -0
- package/dist/cli/paideiaDelegation.js +211 -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/recordCommands.d.ts +17 -0
- package/dist/cli/recordCommands.js +43 -0
- package/dist/cli/releaseCommand.d.ts +6 -0
- package/dist/cli/releaseCommand.js +91 -0
- package/dist/cli/runCli.d.ts +19 -3
- package/dist/cli/runCli.js +43 -10
- package/dist/cli/runPublishCommands.js +5 -3
- package/dist/cli/targetCommands.d.ts +4 -7
- package/dist/cli/targetCommands.js +16 -46
- 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/targetDefaultAuthorities.d.ts +2 -0
- package/dist/cli/targetDefaultAuthorities.js +3 -0
- package/dist/cli/targetDefaultConfig.d.ts +7 -0
- package/dist/cli/targetDefaultConfig.js +22 -5
- package/dist/cli/targetDefaultConfigStdin.js +7 -1
- package/dist/cli/targetDefaultHandlerFactory.js +23 -2
- package/dist/cli/targetDefaultHandlers.d.ts +2 -2
- package/dist/cli/targetProductionCommands.d.ts +5 -0
- package/dist/cli/targetProductionCommands.js +45 -0
- package/dist/cli/trainCommand.d.ts +3 -0
- package/dist/cli/trainCommand.js +114 -0
- package/dist/cli/upCommand.js +40 -7
- package/dist/cli/upLifecycleRecovery.d.ts +2 -2
- package/dist/cli/upLifecycleRecovery.js +188 -44
- 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/volumeCommands.d.ts +8 -0
- package/dist/cli/volumeCommands.js +53 -0
- package/dist/cli/workspaceResourceMigrationCommand.d.ts +8 -0
- package/dist/cli/workspaceResourceMigrationCommand.js +36 -0
- package/dist/compiler/agentNodeMerge.js +3 -2
- package/dist/compiler/buildCompilePlan.js +4 -0
- package/dist/compiler/buildCompilePlanAgent.js +3 -1
- package/dist/compiler/buildCompilePlanTeams.d.ts +1 -1
- package/dist/compiler/buildCompilePlanTeams.js +6 -1
- package/dist/compiler/buildCompilePlanTraversal.js +2 -0
- package/dist/compiler/buildCompilePlanTraversalHelpers.d.ts +2 -2
- package/dist/compiler/buildCompilePlanTraversalHelpers.js +4 -3
- package/dist/compiler/buildProject.d.ts +10 -0
- package/dist/compiler/buildProject.js +14 -2
- package/dist/compiler/cleanCompileOutput.d.ts +2 -0
- package/dist/compiler/cleanCompileOutput.js +14 -0
- package/dist/compiler/compilePlanHelpers.js +5 -0
- package/dist/compiler/compileProject.d.ts +12 -0
- package/dist/compiler/compileProject.js +33 -3
- package/dist/compiler/compileProjectSupport.js +9 -0
- package/dist/compiler/containerArtifactSummaries.js +1 -0
- package/dist/compiler/containerArtifacts.d.ts +7 -5
- package/dist/compiler/containerArtifacts.js +77 -41
- package/dist/compiler/containerArtifactsPlans.d.ts +1 -1
- package/dist/compiler/containerArtifactsPlans.js +31 -7
- package/dist/compiler/containerArtifactsRender.d.ts +2 -1
- package/dist/compiler/containerArtifactsRender.js +91 -58
- package/dist/compiler/containerArtifactsTypes.d.ts +15 -0
- package/dist/compiler/containerBackedMountRender.d.ts +56 -0
- package/dist/compiler/containerBackedMountRender.js +101 -0
- package/dist/compiler/containerDaimonBrokerRender.d.ts +114 -0
- package/dist/compiler/containerDaimonBrokerRender.js +194 -0
- package/dist/compiler/containerDaimonGrokTaskClock.d.ts +5 -0
- package/dist/compiler/containerDaimonGrokTaskClock.js +29 -0
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +38 -0
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +130 -0
- package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +197 -0
- package/dist/compiler/containerDaimonGrokWorkerRender.js +281 -0
- package/dist/compiler/containerDaimonOwnershipGuardRender.d.ts +25 -0
- package/dist/compiler/containerDaimonOwnershipGuardRender.js +204 -0
- package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +24 -0
- package/dist/compiler/containerDaimonUidEntrypointRender.js +291 -0
- package/dist/compiler/containerEntrypointRender.d.ts +7 -0
- package/dist/compiler/containerEntrypointRender.js +28 -22
- 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/containerTargetResources.d.ts +32 -1
- package/dist/compiler/containerTargetResources.js +115 -15
- package/dist/compiler/containerVolumeBootstrap.d.ts +3 -0
- package/dist/compiler/containerVolumeBootstrap.js +3 -0
- package/dist/compiler/containerWorkspaceResourceRender.js +52 -1
- package/dist/compiler/daimonTelemetryArtifacts.d.ts +2 -2
- package/dist/compiler/daimonTelemetryArtifacts.js +5 -10
- package/dist/compiler/deploymentLineage.d.ts +40 -0
- package/dist/compiler/deploymentLineage.js +50 -0
- package/dist/compiler/index.d.ts +5 -0
- package/dist/compiler/index.js +5 -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/mcpPlaceholders.d.ts +11 -0
- package/dist/compiler/mcpPlaceholders.js +58 -0
- package/dist/compiler/mcpServerInheritance.d.ts +18 -0
- package/dist/compiler/mcpServerInheritance.js +43 -0
- package/dist/compiler/memoryArtifacts.d.ts +1 -1
- package/dist/compiler/memoryArtifacts.js +108 -32
- package/dist/compiler/modelEnv.d.ts +5 -0
- package/dist/compiler/modelEnv.js +8 -2
- package/dist/compiler/moltnetArtifactPaths.d.ts +17 -12
- package/dist/compiler/moltnetArtifactPaths.js +17 -15
- package/dist/compiler/moltnetArtifactTypes.d.ts +11 -0
- package/dist/compiler/moltnetArtifacts.d.ts +1 -1
- package/dist/compiler/moltnetArtifacts.js +53 -12
- package/dist/compiler/moltnetBinaries.d.ts +16 -4
- package/dist/compiler/moltnetBinaries.js +46 -6
- package/dist/compiler/moltnetClientConfig.js +1 -1
- package/dist/compiler/moltnetConfigLowering.d.ts +3 -1
- package/dist/compiler/moltnetConfigLowering.js +30 -6
- package/dist/compiler/moltnetNodeConfig.js +1 -1
- package/dist/compiler/moltnetReleaseAuthority.d.ts +24 -1
- package/dist/compiler/moltnetReleaseAuthority.js +33 -4
- package/dist/compiler/moltnetRepresentativeResolution.d.ts +1 -1
- package/dist/compiler/moltnetRepresentativeResolution.js +2 -2
- package/dist/compiler/moltnetResolution.js +9 -15
- package/dist/compiler/moltnetRoomMemberships.js +20 -5
- 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.js +19 -0
- package/dist/compiler/organizationExternalParticipants.d.ts +3 -0
- package/dist/compiler/organizationExternalParticipants.js +176 -0
- package/dist/compiler/organizationIdentity.d.ts +3 -9
- package/dist/compiler/organizationIdentity.js +37 -270
- package/dist/compiler/organizationIdentityGraph.d.ts +15 -0
- package/dist/compiler/organizationIdentityGraph.js +115 -0
- package/dist/compiler/organizationReadyEvidence.d.ts +8 -0
- package/dist/compiler/organizationReadyEvidence.js +23 -3
- package/dist/compiler/preflightCompilePlan.d.ts +9 -0
- package/dist/compiler/preflightCompilePlan.js +38 -0
- package/dist/compiler/recordingAgentFacts.d.ts +4 -0
- package/dist/compiler/recordingAgentFacts.js +35 -0
- package/dist/compiler/recordingCapability.d.ts +4 -0
- package/dist/compiler/recordingCapability.js +22 -0
- package/dist/compiler/recordingReport.d.ts +4 -0
- package/dist/compiler/recordingReport.js +18 -0
- package/dist/compiler/runProject.d.ts +6 -3
- package/dist/compiler/runProject.js +34 -6
- package/dist/compiler/runProjectAuth.d.ts +3 -1
- package/dist/compiler/runProjectAuth.js +19 -3
- package/dist/compiler/runProjectDaimonCodexDocker.d.ts +3 -0
- package/dist/compiler/runProjectDaimonCodexDocker.js +36 -0
- package/dist/compiler/runProjectDocker.d.ts +8 -4
- package/dist/compiler/runProjectDocker.js +43 -18
- 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.js +1 -1
- package/dist/compiler/surfaces.d.ts +1 -2
- package/dist/compiler/surfaces.js +0 -1
- package/dist/compiler/syncProjectAuth.js +2 -1
- package/dist/compiler/training/broker/clockProbe.d.ts +6 -0
- package/dist/compiler/training/broker/clockProbe.js +27 -0
- package/dist/compiler/training/broker/declaration.d.ts +47 -0
- package/dist/compiler/training/broker/declaration.js +57 -0
- package/dist/compiler/training/broker/entrypoint.d.ts +39 -0
- package/dist/compiler/training/broker/entrypoint.js +126 -0
- package/dist/compiler/training/broker/evaluatorSecrets.d.ts +2 -0
- package/dist/compiler/training/broker/evaluatorSecrets.js +60 -0
- package/dist/compiler/training/broker/index.d.ts +11 -0
- package/dist/compiler/training/broker/index.js +11 -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 +236 -0
- package/dist/compiler/training/broker/paths.js +249 -0
- package/dist/compiler/training/broker/processes.d.ts +51 -0
- package/dist/compiler/training/broker/processes.js +102 -0
- package/dist/compiler/training/broker/projection.d.ts +52 -0
- package/dist/compiler/training/broker/projection.js +88 -0
- package/dist/compiler/training/broker/provisioning.d.ts +78 -0
- package/dist/compiler/training/broker/provisioning.js +231 -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 +43 -0
- package/dist/compiler/training/broker/registration.js +110 -0
- package/dist/compiler/training/broker/reset.d.ts +9 -0
- package/dist/compiler/training/broker/reset.js +71 -0
- package/dist/compiler/training/broker/runtime.d.ts +22 -0
- package/dist/compiler/training/broker/runtime.js +127 -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 +108 -0
- package/dist/compiler/training/broker/supervisor.js +172 -0
- package/dist/compiler/training/broker/taskClock.d.ts +5 -0
- package/dist/compiler/training/broker/taskClock.js +41 -0
- package/dist/compiler/training/compiledAgent.d.ts +21 -0
- package/dist/compiler/training/compiledAgent.js +62 -0
- package/dist/compiler/training/container/contract.d.ts +54 -0
- package/dist/compiler/training/container/contract.js +51 -0
- package/dist/compiler/training/container/evaluators.d.ts +48 -0
- package/dist/compiler/training/container/evaluators.js +50 -0
- package/dist/compiler/training/container/grokWriteback.d.ts +8 -0
- package/dist/compiler/training/container/grokWriteback.js +26 -0
- package/dist/compiler/training/container/index.d.ts +5 -0
- package/dist/compiler/training/container/index.js +3 -0
- package/dist/compiler/training/container/launch.d.ts +21 -0
- package/dist/compiler/training/container/launch.js +264 -0
- package/dist/compiler/training/container/nativeSlots.d.ts +14 -0
- package/dist/compiler/training/container/nativeSlots.js +13 -0
- package/dist/compiler/training/container/outputCopy.d.ts +2 -0
- package/dist/compiler/training/container/outputCopy.js +72 -0
- package/dist/compiler/training/container/outputVolume.d.ts +27 -0
- package/dist/compiler/training/container/outputVolume.js +161 -0
- package/dist/compiler/training/container/prepare.d.ts +10 -0
- package/dist/compiler/training/container/prepare.js +125 -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 +38 -0
- package/dist/compiler/training/container/security.js +68 -0
- package/dist/compiler/training/container/subjectIsolation.d.ts +5 -0
- package/dist/compiler/training/container/subjectIsolation.js +15 -0
- package/dist/compiler/training/context.d.ts +15 -0
- package/dist/compiler/training/context.js +93 -0
- package/dist/compiler/training/contract.d.ts +144 -0
- package/dist/compiler/training/contract.js +36 -0
- package/dist/compiler/training/execution.d.ts +417 -0
- package/dist/compiler/training/execution.js +160 -0
- package/dist/compiler/training/index.d.ts +12 -0
- package/dist/compiler/training/index.js +10 -0
- package/dist/compiler/training/moments.d.ts +80 -0
- package/dist/compiler/training/moments.js +118 -0
- package/dist/compiler/training/output.d.ts +2 -0
- package/dist/compiler/training/output.js +20 -0
- package/dist/compiler/training/plan/contract.d.ts +287 -0
- package/dist/compiler/training/plan/contract.js +49 -0
- package/dist/compiler/training/plan/index.d.ts +5 -0
- package/dist/compiler/training/plan/index.js +4 -0
- package/dist/compiler/training/plan/load.d.ts +9 -0
- package/dist/compiler/training/plan/load.js +153 -0
- package/dist/compiler/training/plan/references.d.ts +19 -0
- package/dist/compiler/training/plan/references.js +57 -0
- package/dist/compiler/training/plan/resolve.d.ts +4 -0
- package/dist/compiler/training/plan/resolve.js +73 -0
- package/dist/compiler/training/plan/targets.d.ts +11 -0
- package/dist/compiler/training/plan/targets.js +71 -0
- package/dist/compiler/training/plan/types.d.ts +36 -0
- package/dist/compiler/training/plan/types.js +1 -0
- package/dist/compiler/training/preparation/assets/Dockerfile +109 -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 +45 -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 +207 -0
- package/dist/compiler/training/preparation/contract.js +113 -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 +29 -0
- package/dist/compiler/training/preparation/files.js +146 -0
- package/dist/compiler/training/preparation/image.d.ts +28 -0
- package/dist/compiler/training/preparation/image.js +107 -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 +24 -0
- package/dist/compiler/training/preparation/inputs.js +101 -0
- package/dist/compiler/training/preparation/prepare.d.ts +38 -0
- package/dist/compiler/training/preparation/prepare.js +223 -0
- package/dist/compiler/training/preparation/scratch.d.ts +8 -0
- package/dist/compiler/training/preparation/scratch.js +114 -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 +840 -0
- package/dist/compiler/training/repair/contract.js +33 -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 +382 -0
- package/dist/compiler/training/repair/prepare.js +78 -0
- package/dist/compiler/training/repair/witness.d.ts +352 -0
- package/dist/compiler/training/repair/witness.js +48 -0
- package/dist/compiler/training/resolution.d.ts +25 -0
- package/dist/compiler/training/resolution.js +69 -0
- package/dist/compiler/training/rewind/contract.d.ts +321 -0
- package/dist/compiler/training/rewind/contract.js +39 -0
- package/dist/compiler/training/rewind/deployedResource.d.ts +22 -0
- package/dist/compiler/training/rewind/deployedResource.js +19 -0
- package/dist/compiler/training/rewind/feed.d.ts +12 -0
- package/dist/compiler/training/rewind/feed.js +182 -0
- package/dist/compiler/training/rewind/feedContent.d.ts +6 -0
- package/dist/compiler/training/rewind/feedContent.js +38 -0
- package/dist/compiler/training/rewind/git.d.ts +8 -0
- package/dist/compiler/training/rewind/git.js +159 -0
- package/dist/compiler/training/rewind/gitArchive.d.ts +2 -0
- package/dist/compiler/training/rewind/gitArchive.js +7 -0
- package/dist/compiler/training/rewind/gitHistory.d.ts +3 -0
- package/dist/compiler/training/rewind/gitHistory.js +55 -0
- package/dist/compiler/training/rewind/gitProcess.d.ts +19 -0
- package/dist/compiler/training/rewind/gitProcess.js +81 -0
- package/dist/compiler/training/rewind/gitTree.d.ts +14 -0
- package/dist/compiler/training/rewind/gitTree.js +90 -0
- package/dist/compiler/training/rewind/history.d.ts +28 -0
- package/dist/compiler/training/rewind/history.js +239 -0
- package/dist/compiler/training/rewind/index.d.ts +18 -0
- package/dist/compiler/training/rewind/index.js +15 -0
- package/dist/compiler/training/rewind/inputs.d.ts +9 -0
- package/dist/compiler/training/rewind/inputs.js +67 -0
- package/dist/compiler/training/rewind/instant.d.ts +4 -0
- package/dist/compiler/training/rewind/instant.js +24 -0
- package/dist/compiler/training/rewind/leakCheck.d.ts +10 -0
- package/dist/compiler/training/rewind/leakCheck.js +56 -0
- package/dist/compiler/training/rewind/leakFeed.d.ts +5 -0
- package/dist/compiler/training/rewind/leakFeed.js +25 -0
- package/dist/compiler/training/rewind/leakFiles.d.ts +10 -0
- package/dist/compiler/training/rewind/leakFiles.js +106 -0
- package/dist/compiler/training/rewind/leakGit.d.ts +3 -0
- package/dist/compiler/training/rewind/leakGit.js +78 -0
- package/dist/compiler/training/rewind/leakGitPayload.d.ts +4 -0
- package/dist/compiler/training/rewind/leakGitPayload.js +57 -0
- package/dist/compiler/training/rewind/leakInputs.d.ts +7 -0
- package/dist/compiler/training/rewind/leakInputs.js +135 -0
- package/dist/compiler/training/rewind/leakLayout.d.ts +2 -0
- package/dist/compiler/training/rewind/leakLayout.js +17 -0
- package/dist/compiler/training/rewind/leakProvenance.d.ts +3 -0
- package/dist/compiler/training/rewind/leakProvenance.js +88 -0
- package/dist/compiler/training/rewind/materialize.d.ts +136 -0
- package/dist/compiler/training/rewind/materialize.js +212 -0
- package/dist/compiler/training/rewind/memory.d.ts +10 -0
- package/dist/compiler/training/rewind/memory.js +84 -0
- package/dist/compiler/training/rewind/memorySchemas.d.ts +87 -0
- package/dist/compiler/training/rewind/memorySchemas.js +50 -0
- package/dist/compiler/training/rewind/moltnet.d.ts +2 -0
- package/dist/compiler/training/rewind/moltnet.js +54 -0
- package/dist/compiler/training/rewind/moltnetJson.d.ts +13 -0
- package/dist/compiler/training/rewind/moltnetJson.js +180 -0
- package/dist/compiler/training/rewind/moltnetSchemas.d.ts +1226 -0
- package/dist/compiler/training/rewind/moltnetSchemas.js +75 -0
- package/dist/compiler/training/rewind/moltnetSqlite.d.ts +31 -0
- package/dist/compiler/training/rewind/moltnetSqlite.js +192 -0
- package/dist/compiler/training/rewind/moltnetSqliteData.d.ts +10 -0
- package/dist/compiler/training/rewind/moltnetSqliteData.js +113 -0
- package/dist/compiler/training/rewind/recordInput.d.ts +40 -0
- package/dist/compiler/training/rewind/recordInput.js +49 -0
- package/dist/compiler/training/rewind/recordedBundle.d.ts +4 -0
- package/dist/compiler/training/rewind/recordedBundle.js +58 -0
- package/dist/compiler/training/rewind/recordedCommit.d.ts +2 -0
- package/dist/compiler/training/rewind/recordedCommit.js +10 -0
- package/dist/compiler/training/rewind/select.d.ts +18 -0
- package/dist/compiler/training/rewind/select.js +64 -0
- package/dist/compiler/training/rewind/snapshotManifest.d.ts +42 -0
- package/dist/compiler/training/rewind/snapshotManifest.js +134 -0
- package/dist/compiler/training/rewind/taskClock.d.ts +12 -0
- package/dist/compiler/training/rewind/taskClock.js +40 -0
- package/dist/compiler/training/rewind/timestamps.d.ts +4 -0
- package/dist/compiler/training/rewind/timestamps.js +26 -0
- package/dist/compiler/training/rewind/types.d.ts +43 -0
- package/dist/compiler/training/rewind/types.js +1 -0
- package/dist/compiler/training/rewind/volumes.d.ts +12 -0
- package/dist/compiler/training/rewind/volumes.js +58 -0
- package/dist/compiler/training/selection.d.ts +7 -0
- package/dist/compiler/training/selection.js +15 -0
- package/dist/compiler/types.d.ts +7 -2
- package/dist/compiler/upProject.d.ts +27 -1
- package/dist/compiler/upProject.js +135 -180
- package/dist/compiler/upProjectHandoff.d.ts +62 -0
- package/dist/compiler/upProjectHandoff.js +204 -0
- package/dist/compiler/upReceipt.js +49 -4
- package/dist/compiler/updateProjectModels.js +1 -0
- package/dist/compiler/view/types.d.ts +1 -1
- package/dist/compiler/workspaceBundleArtifacts.d.ts +18 -0
- package/dist/compiler/workspaceBundleArtifacts.js +155 -0
- package/dist/compiler/workspaceBundleCache.d.ts +23 -0
- package/dist/compiler/workspaceBundleCache.js +79 -0
- package/dist/compiler/workspaceBundleDependencies.d.ts +21 -0
- package/dist/compiler/workspaceBundleDependencies.js +122 -0
- package/dist/compiler/workspaceBundleFiles.d.ts +51 -0
- package/dist/compiler/workspaceBundleFiles.js +251 -0
- package/dist/compiler/workspaceBundleGenerated.d.ts +25 -0
- package/dist/compiler/workspaceBundleGenerated.js +103 -0
- package/dist/compiler/workspaceBundleGit.d.ts +64 -0
- package/dist/compiler/workspaceBundleGit.js +154 -0
- package/dist/compiler/workspaceBundleKey.d.ts +34 -0
- package/dist/compiler/workspaceBundleKey.js +17 -0
- package/dist/compiler/workspaceBundleResolve.d.ts +56 -0
- package/dist/compiler/workspaceBundleResolve.js +144 -0
- package/dist/compiler/workspaceBundleRun.d.ts +41 -0
- package/dist/compiler/workspaceBundleRun.js +79 -0
- package/dist/compiler/workspaceBundleTar.d.ts +47 -0
- package/dist/compiler/workspaceBundleTar.js +140 -0
- package/dist/compiler/workspaceBundleTree.d.ts +15 -0
- package/dist/compiler/workspaceBundleTree.js +58 -0
- package/dist/compiler/workspaceGitFetch.d.ts +41 -0
- package/dist/compiler/workspaceGitFetch.js +155 -0
- package/dist/compiler/workspaceGitPins.d.ts +33 -0
- package/dist/compiler/workspaceGitPins.js +127 -0
- package/dist/compiler/workspaceResources.d.ts +9 -2
- package/dist/compiler/workspaceResources.js +39 -7
- package/dist/deployment/activation.d.ts +3 -0
- package/dist/deployment/activation.js +12 -0
- package/dist/deployment/artifactsExportPlan.js +51 -1
- 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/candidateRecording.d.ts +8 -0
- package/dist/deployment/candidateRecording.js +22 -0
- package/dist/deployment/dockerLogs.js +4 -1
- package/dist/deployment/dockerManager.d.ts +5 -3
- package/dist/deployment/dockerManager.js +21 -5
- package/dist/deployment/dockerProbeGateway.d.ts +17 -0
- package/dist/deployment/dockerProbeGateway.js +17 -2
- package/dist/deployment/downDeployment.d.ts +7 -0
- package/dist/deployment/downDeployment.js +114 -9
- package/dist/deployment/downReceiptTypes.d.ts +17 -2
- package/dist/deployment/downReceiptTypes.js +17 -2
- package/dist/deployment/homeStore.d.ts +9 -1
- package/dist/deployment/homeStore.js +16 -53
- package/dist/deployment/index.d.ts +10 -0
- package/dist/deployment/index.js +10 -0
- package/dist/deployment/lifecycleCompletionContracts.d.ts +66 -0
- package/dist/deployment/lifecycleCompletionContracts.js +34 -0
- package/dist/deployment/lifecycleCompletionPaths.d.ts +4 -1
- package/dist/deployment/lifecycleCompletionPaths.js +3 -0
- package/dist/deployment/lifecycleCompletionPublication.d.ts +2 -0
- package/dist/deployment/lifecycleCompletionPublication.js +18 -4
- package/dist/deployment/lifecycleCompletionStore.d.ts +1 -1
- package/dist/deployment/lifecycleCompletionStore.js +7 -7
- 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.js +82 -27
- package/dist/deployment/organizationHandoffAuthorityFsElection.d.ts +21 -0
- package/dist/deployment/organizationHandoffAuthorityFsElection.js +57 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorker.js +254 -108
- package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.d.ts +1 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.js +16 -0
- package/dist/deployment/organizationHandoffAuthorityStore.js +14 -7
- package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +2 -2
- package/dist/deployment/organizationHandoffAuthorityTypes.js +2 -1
- package/dist/deployment/organizationReady.d.ts +2 -0
- package/dist/deployment/organizationReady.js +36 -4
- package/dist/deployment/pidLock.d.ts +25 -0
- package/dist/deployment/pidLock.js +81 -0
- package/dist/deployment/productStateClone.d.ts +43 -0
- package/dist/deployment/productStateClone.js +319 -0
- package/dist/deployment/record.d.ts +85 -1
- package/dist/deployment/record.js +11 -5
- package/dist/deployment/recordPublication.d.ts +15 -0
- package/dist/deployment/recordPublication.js +76 -0
- package/dist/deployment/recordedMemoryRetention.d.ts +18 -0
- package/dist/deployment/recordedMemoryRetention.js +27 -0
- package/dist/deployment/resourceLog.d.ts +140 -0
- package/dist/deployment/resourceLog.js +78 -0
- package/dist/deployment/upLifecycleRecoveryState.d.ts +23 -0
- package/dist/deployment/upLifecycleRecoveryState.js +12 -0
- package/dist/deployment/upReceiptTypes.d.ts +32 -6
- package/dist/deployment/upReceiptTypes.js +29 -2
- 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 +9 -0
- package/dist/distribution/buildDistributionReport.d.ts +3 -0
- package/dist/distribution/buildDistributionReport.js +5 -0
- package/dist/distribution/consumeImage.d.ts +5 -0
- package/dist/distribution/consumeImage.js +115 -98
- package/dist/distribution/consumeImageDaimonDocker.d.ts +3 -0
- package/dist/distribution/consumeImageDaimonDocker.js +45 -0
- package/dist/distribution/consumeImageLifecycle.d.ts +20 -0
- package/dist/distribution/consumeImageLifecycle.js +242 -0
- package/dist/distribution/consumeImageSupport.d.ts +19 -0
- package/dist/distribution/consumeImageSupport.js +40 -0
- package/dist/distribution/distributionReportSchema.d.ts +58 -1
- package/dist/distribution/distributionReportSchema.js +35 -2
- 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 +1 -1
- package/dist/distribution/index.js +1 -1
- package/dist/distribution/preflight.js +5 -1
- package/dist/distribution/renderImageInterface.js +1 -1
- package/dist/distribution/types.d.ts +29 -1
- package/dist/distribution/types.js +3 -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/durableWrite.d.ts +10 -0
- package/dist/filesystem/durableWrite.js +87 -0
- package/dist/filesystem/index.d.ts +2 -0
- package/dist/filesystem/index.js +2 -0
- package/dist/filesystem/io.d.ts +2 -0
- package/dist/filesystem/io.js +16 -1
- package/dist/filesystem/retainedJsonl.d.ts +23 -0
- package/dist/filesystem/retainedJsonl.js +123 -0
- package/dist/manifest/commandSchemas.d.ts +5 -0
- package/dist/manifest/commandSchemas.js +5 -0
- package/dist/manifest/executionSchemas.d.ts +47 -0
- package/dist/manifest/executionSchemas.js +31 -2
- package/dist/manifest/index.d.ts +2 -0
- package/dist/manifest/index.js +2 -0
- package/dist/manifest/loadManifest.js +3 -26
- package/dist/manifest/mcpSchemas.d.ts +62 -0
- package/dist/manifest/mcpSchemas.js +57 -8
- package/dist/manifest/memorySchemas.d.ts +1 -1
- package/dist/manifest/memorySchemas.js +1 -1
- package/dist/manifest/parseManifest.d.ts +7 -0
- package/dist/manifest/parseManifest.js +65 -0
- package/dist/manifest/renderSpawnfile.js +4 -1
- package/dist/manifest/renderSpawnfileNetworks.js +11 -0
- package/dist/manifest/renderSpawnfileWorkspace.js +10 -1
- package/dist/manifest/scheduleSchemas.d.ts +3 -1
- package/dist/manifest/scheduleSchemas.js +91 -5
- package/dist/manifest/schemas.d.ts +1419 -120
- package/dist/manifest/schemas.js +19 -6
- package/dist/manifest/teamNetworkAccessSchemas.d.ts +5 -1
- package/dist/manifest/teamNetworkAccessSchemas.js +11 -0
- package/dist/manifest/teamNetworkAuthSchemas.d.ts +1 -1
- package/dist/manifest/teamNetworkSchemas.d.ts +18 -4
- package/dist/manifest/teamNetworkSchemas.js +19 -1
- package/dist/manifest/teamNetworkServerSchemas.d.ts +8 -3
- package/dist/manifest/teamNetworkServerSchemas.js +18 -2
- package/dist/manifest/trainingDataSchemas.d.ts +357 -0
- package/dist/manifest/trainingDataSchemas.js +31 -0
- package/dist/manifest/trainingSchemas.d.ts +49 -0
- package/dist/manifest/trainingSchemas.js +44 -0
- package/dist/manifest/volumeFeedSchemas.d.ts +52 -0
- package/dist/manifest/volumeFeedSchemas.js +104 -0
- package/dist/manifest/workspaceSchemas.d.ts +194 -1
- package/dist/manifest/workspaceSchemas.js +117 -2
- package/dist/recording/compose.d.ts +3 -0
- package/dist/recording/compose.js +93 -0
- package/dist/recording/deployment.d.ts +15 -0
- package/dist/recording/deployment.js +38 -0
- package/dist/recording/history.d.ts +16 -0
- package/dist/recording/history.js +47 -0
- package/dist/recording/index.d.ts +9 -0
- package/dist/recording/index.js +9 -0
- package/dist/recording/moment.d.ts +61 -0
- package/dist/recording/moment.js +36 -0
- package/dist/recording/parse.d.ts +15 -0
- package/dist/recording/parse.js +74 -0
- package/dist/recording/read.d.ts +8 -0
- package/dist/recording/read.js +61 -0
- package/dist/recording/store.d.ts +10 -0
- package/dist/recording/store.js +94 -0
- package/dist/recording/sync.d.ts +24 -0
- package/dist/recording/sync.js +126 -0
- package/dist/recording/types.d.ts +45 -0
- package/dist/recording/types.js +2 -0
- package/dist/release/drainControl.d.ts +54 -0
- package/dist/release/drainControl.js +137 -0
- package/dist/release/drainPhase.d.ts +37 -0
- package/dist/release/drainPhase.js +161 -0
- package/dist/release/index.d.ts +11 -0
- package/dist/release/index.js +11 -0
- package/dist/release/ledger.d.ts +75 -0
- package/dist/release/ledger.js +111 -0
- package/dist/release/notify.d.ts +58 -0
- package/dist/release/notify.js +126 -0
- package/dist/release/pending.d.ts +35 -0
- package/dist/release/pending.js +60 -0
- package/dist/release/postDeploy.d.ts +32 -0
- package/dist/release/postDeploy.js +62 -0
- package/dist/release/releaseDefaults.d.ts +9 -0
- package/dist/release/releaseDefaults.js +115 -0
- package/dist/release/releaseDocker.d.ts +38 -0
- package/dist/release/releaseDocker.js +94 -0
- package/dist/release/releaseTypes.d.ts +94 -0
- package/dist/release/releaseTypes.js +1 -0
- package/dist/release/runRelease.d.ts +9 -0
- package/dist/release/runRelease.js +218 -0
- package/dist/release/swap.d.ts +23 -0
- package/dist/release/swap.js +55 -0
- package/dist/release/types.d.ts +50 -0
- package/dist/release/types.js +29 -0
- package/dist/report/index.d.ts +1 -0
- package/dist/report/index.js +1 -0
- package/dist/report/recording.d.ts +57 -0
- package/dist/report/recording.js +26 -0
- package/dist/report/types.d.ts +92 -4
- package/dist/runtime/common.d.ts +28 -1
- package/dist/runtime/common.js +33 -3
- package/dist/runtime/container.js +46 -35
- package/dist/runtime/daimon/adapter.d.ts +14 -0
- package/dist/runtime/daimon/adapter.js +254 -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 +29 -0
- package/dist/runtime/daimon/config.js +321 -0
- package/dist/runtime/daimon/contract-manifest.json +1 -0
- package/dist/runtime/daimon/contract-manifest.sha256 +1 -0
- package/dist/runtime/daimon/contractManifest.d.ts +346 -0
- package/dist/runtime/daimon/contractManifest.js +335 -0
- package/dist/runtime/daimon/grokModel.d.ts +19 -0
- package/dist/runtime/daimon/grokModel.js +33 -0
- package/dist/runtime/daimon/grokTurnLimits.d.ts +25 -0
- package/dist/runtime/daimon/grokTurnLimits.js +51 -0
- package/dist/runtime/daimon/grokWorkerConfigBytes.d.ts +43 -0
- package/dist/runtime/daimon/grokWorkerConfigBytes.js +53 -0
- package/dist/runtime/daimon/grokWorkerContract.d.ts +27 -0
- package/dist/runtime/daimon/grokWorkerContract.js +60 -0
- package/dist/runtime/daimon/memory.d.ts +57 -0
- package/dist/runtime/daimon/memory.js +125 -0
- package/dist/runtime/daimon/recording.d.ts +19 -0
- package/dist/runtime/daimon/recording.js +50 -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 +11 -0
- package/dist/runtime/daimon/scheduleAuthority.js +31 -0
- package/dist/runtime/daimon/wakeMoments.d.ts +15 -0
- package/dist/runtime/daimon/wakeMoments.js +17 -0
- package/dist/runtime/daimonInstall.d.ts +3 -0
- package/dist/runtime/daimonInstall.js +25 -0
- package/dist/runtime/index.d.ts +5 -0
- package/dist/runtime/index.js +5 -0
- package/dist/runtime/install.d.ts +5 -0
- package/dist/runtime/install.js +4 -0
- package/dist/runtime/localDaimonAuthority.d.ts +11 -0
- package/dist/runtime/localDaimonAuthority.js +77 -0
- package/dist/runtime/mnemeMcp.d.ts +13 -0
- package/dist/runtime/mnemeMcp.js +26 -0
- package/dist/runtime/openclaw/adapter.js +5 -2
- package/dist/runtime/pi/adapter.d.ts +0 -1
- package/dist/runtime/pi/adapter.js +5 -6
- package/dist/runtime/pi/appCliSource.js +1 -1
- package/dist/runtime/pi/appScheduleSource.js +6 -2
- package/dist/runtime/pi/appTemplateTypes.d.ts +1 -1
- package/dist/runtime/pi/containerTargets.js +6 -0
- package/dist/runtime/picoclaw/adapter.js +5 -2
- package/dist/runtime/registry.d.ts +6 -0
- package/dist/runtime/registry.js +32 -3
- package/dist/runtime/scheduleUtils.d.ts +1 -0
- package/dist/runtime/scheduleUtils.js +5 -1
- package/dist/runtime/types.d.ts +40 -0
- package/dist/runtime/usageLedger.d.ts +158 -0
- package/dist/runtime/usageLedger.js +269 -0
- package/dist/runtime/usageLedgerRead.d.ts +54 -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/index.d.ts +3 -0
- package/dist/shared/index.js +3 -0
- package/dist/shared/recording.d.ts +8 -0
- package/dist/shared/recording.js +25 -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/target/dockerArtifactsProvider.js +34 -7
- package/dist/target/dockerBaseImage.d.ts +2 -0
- package/dist/target/dockerBaseImage.js +11 -0
- package/dist/target/dockerCommandExecutor.d.ts +11 -0
- package/dist/target/dockerCommandExecutor.js +53 -2
- package/dist/target/dockerCommandExecutorCore.d.ts +2 -1
- package/dist/target/dockerCommandExecutorCore.js +5 -3
- package/dist/target/dockerPublicArtifactSnapshot.d.ts +3 -3
- package/dist/target/dockerPublicArtifactSnapshot.js +17 -33
- package/dist/target/dockerTarget.d.ts +1 -0
- package/dist/target/dockerTargetBinding.d.ts +1 -2
- package/dist/target/dockerTargetBinding.js +4 -4
- package/dist/target/dockerTargetExecFile.d.ts +19 -0
- package/dist/target/dockerTargetExecFile.js +194 -0
- package/dist/target/dockerWorldServiceProvider.d.ts +4 -0
- package/dist/target/dockerWorldServiceProvider.js +13 -1
- package/dist/target/evidenceExport.d.ts +3 -1
- package/dist/target/evidenceExport.js +12 -3
- package/dist/target/evidenceExportOperationsTestKit.js +3 -3
- package/dist/target/evidenceExportProvider.d.ts +2 -0
- package/dist/target/evidenceExportProvider.js +15 -5
- package/dist/target/publicArtifactSnapshot.d.ts +31 -0
- package/dist/target/publicArtifactSnapshot.js +37 -3
- package/dist/volume/feedLand.d.ts +31 -0
- package/dist/volume/feedLand.js +174 -0
- package/dist/volume/feedLandings.d.ts +45 -0
- package/dist/volume/feedLandings.js +111 -0
- package/dist/volume/feedLayout.d.ts +61 -0
- package/dist/volume/feedLayout.js +234 -0
- package/dist/volume/feedLock.d.ts +7 -0
- package/dist/volume/feedLock.js +131 -0
- package/dist/volume/feedManifest.d.ts +27 -0
- package/dist/volume/feedManifest.js +123 -0
- package/dist/volume/feedPrepare.d.ts +16 -0
- package/dist/volume/feedPrepare.js +228 -0
- package/dist/volume/feedProject.d.ts +39 -0
- package/dist/volume/feedProject.js +92 -0
- package/dist/volume/feedRecord.d.ts +55 -0
- package/dist/volume/feedRecord.js +148 -0
- package/dist/volume/feedRef.d.ts +43 -0
- package/dist/volume/feedRef.js +117 -0
- package/dist/volume/feedRefresh.d.ts +15 -0
- package/dist/volume/feedRefresh.js +187 -0
- package/dist/volume/feedSource.d.ts +66 -0
- package/dist/volume/feedSource.js +104 -0
- package/dist/volume/feedTarget.d.ts +70 -0
- package/dist/volume/feedTarget.js +9 -0
- package/dist/volume/feedTestKit.d.ts +11 -0
- package/dist/volume/feedTestKit.js +45 -0
- package/dist/volume/feedVerify.d.ts +18 -0
- package/dist/volume/feedVerify.js +104 -0
- package/dist/volume/index.d.ts +13 -0
- package/dist/volume/index.js +13 -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 +5 -4
- package/package.json +36 -9
- package/runtimes.yaml +8 -3
- package/dist/cli/targetWorldClockCrossProcess.test-helper.d.ts +0 -13
- package/dist/cli/targetWorldClockCrossProcess.test-helper.js +0 -109
- package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.d.ts +0 -8
- package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.js +0 -60
- package/dist/deployment/simfileFixtureBoundary.test-helper.d.ts +0 -8
- package/dist/deployment/simfileFixtureBoundary.test-helper.js +0 -103
- package/dist/ownership/simfileRunOperatorInputs.d.ts +0 -103
- package/dist/ownership/simfileRunOperatorInputs.js +0 -139
- package/dist/target/cleanupRunDocker.test-helper.d.ts +0 -67
- package/dist/target/cleanupRunDocker.test-helper.js +0 -238
|
@@ -2,48 +2,37 @@ import { constants } from "node:fs";
|
|
|
2
2
|
import { link, lstat, open, unlink } from "node:fs/promises";
|
|
3
3
|
import { dirname, resolve } from "node:path";
|
|
4
4
|
import { TARGET_SECRET_SOURCE_ERROR, parseTargetSecretSourceOpaqueHandle } from "./targetSecretSourceRecordCommon.js";
|
|
5
|
+
import { directoryIdentityOf, fileIdentityOf, sameDirectory, sameFileExact, sameFileInode, sameFileNode } from "./targetSecretSourceFsIdentity.js";
|
|
5
6
|
const MAX_BYTES = 65_536;
|
|
6
7
|
const MAX_ATTEMPTS = 512;
|
|
7
8
|
const fail = () => { throw new Error(TARGET_SECRET_SOURCE_ERROR); };
|
|
8
9
|
const missing = (error) => error.code === "ENOENT";
|
|
9
10
|
const exists = (error) => error.code === "EEXIST";
|
|
10
|
-
const same = (a, b) => a.dev === b.dev && a.ino === b.ino && a.mode === b.mode && a.nlink === b.nlink && a.size === b.size && a.uid === b.uid;
|
|
11
|
-
const sameNode = (a, b) => a.dev === b.dev && a.ino === b.ino && a.mode === b.mode && a.nlink === b.nlink && a.uid === b.uid;
|
|
12
|
-
const sameInode = (a, b) => a.dev === b.dev && a.ino === b.ino && a.mode === b.mode && a.size === b.size && a.uid === b.uid;
|
|
13
11
|
const ownerUid = () => {
|
|
14
12
|
const value = process.getuid?.();
|
|
15
13
|
return typeof value === "number" ? value : fail();
|
|
16
14
|
};
|
|
17
|
-
const directoryIdentity = (value, uid) =>
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return { dev: value.dev, ino: value.ino, mode: value.mode, nlink: 0, size: 0, uid: value.uid };
|
|
21
|
-
};
|
|
22
|
-
const fileIdentity = (value, uid, links, zero = false) => {
|
|
23
|
-
if (!value.isFile() || value.isSymbolicLink() || value.uid !== uid || !links.includes(value.nlink)
|
|
24
|
-
|| (value.mode & 0o7777) !== 0o600 || value.size < 0 || value.size > MAX_BYTES || (zero && value.size !== 0))
|
|
25
|
-
fail();
|
|
26
|
-
return { dev: value.dev, ino: value.ino, mode: value.mode, nlink: value.nlink, size: value.size, uid: value.uid };
|
|
27
|
-
};
|
|
28
|
-
const yieldTurn = () => new Promise((resolve) => setImmediate(resolve));
|
|
15
|
+
const directoryIdentity = (value, uid) => directoryIdentityOf(value, uid);
|
|
16
|
+
const fileIdentity = (value, uid, links, zero = false) => fileIdentityOf(value, uid, links, MAX_BYTES, zero);
|
|
17
|
+
const contentionDelay = (attempt) => new Promise((resolve) => setTimeout(resolve, Math.min(5, 1 + Math.floor(attempt / 32))));
|
|
29
18
|
export const initializeTargetSecretSourceFsPublishImmutable = async (options) => {
|
|
30
19
|
if (!options || typeof options !== "object" || !Array.isArray(options.directory_chain) || options.directory_chain.length < 1
|
|
31
20
|
|| options.directory_chain.some((entry) => typeof entry !== "string" || entry.length < 1))
|
|
32
21
|
fail();
|
|
33
22
|
const uid = ownerUid();
|
|
34
23
|
const paths = [...options.directory_chain];
|
|
35
|
-
const roots = await Promise.all(paths.map(async (path) => directoryIdentity(await lstat(path), uid)));
|
|
24
|
+
const roots = await Promise.all(paths.map(async (path) => directoryIdentity(await lstat(path, { bigint: true }), uid)));
|
|
36
25
|
const checkChain = async () => {
|
|
37
26
|
for (let index = 0; index < paths.length; index += 1) {
|
|
38
|
-
const named = directoryIdentity(await lstat(paths[index]), uid);
|
|
39
|
-
if (!
|
|
27
|
+
const named = directoryIdentity(await lstat(paths[index], { bigint: true }), uid);
|
|
28
|
+
if (!sameDirectory(named, roots[index]))
|
|
40
29
|
fail();
|
|
41
30
|
let fd;
|
|
42
31
|
try {
|
|
43
32
|
fd = await open(paths[index], constants.O_RDONLY | constants.O_DIRECTORY | constants.O_NOFOLLOW);
|
|
44
|
-
const opened = directoryIdentity(await fd.stat(), uid);
|
|
45
|
-
const after = directoryIdentity(await lstat(paths[index]), uid);
|
|
46
|
-
if (!
|
|
33
|
+
const opened = directoryIdentity(await fd.stat({ bigint: true }), uid);
|
|
34
|
+
const after = directoryIdentity(await lstat(paths[index], { bigint: true }), uid);
|
|
35
|
+
if (!sameDirectory(opened, roots[index]) || !sameDirectory(after, roots[index]))
|
|
47
36
|
fail();
|
|
48
37
|
}
|
|
49
38
|
catch {
|
|
@@ -60,13 +49,13 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
60
49
|
let fd;
|
|
61
50
|
try {
|
|
62
51
|
fd = await open(paths.at(-1), constants.O_RDONLY | constants.O_DIRECTORY | constants.O_NOFOLLOW);
|
|
63
|
-
const opened = directoryIdentity(await fd.stat(), uid);
|
|
64
|
-
if (!
|
|
52
|
+
const opened = directoryIdentity(await fd.stat({ bigint: true }), uid);
|
|
53
|
+
if (!sameDirectory(opened, roots.at(-1)))
|
|
65
54
|
fail();
|
|
66
55
|
await fd.sync();
|
|
67
|
-
const after = directoryIdentity(await fd.stat(), uid);
|
|
68
|
-
const named = directoryIdentity(await lstat(paths.at(-1)), uid);
|
|
69
|
-
if (!
|
|
56
|
+
const after = directoryIdentity(await fd.stat({ bigint: true }), uid);
|
|
57
|
+
const named = directoryIdentity(await lstat(paths.at(-1), { bigint: true }), uid);
|
|
58
|
+
if (!sameDirectory(after, roots.at(-1)) || !sameDirectory(named, roots.at(-1)))
|
|
70
59
|
fail();
|
|
71
60
|
}
|
|
72
61
|
catch {
|
|
@@ -81,8 +70,8 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
81
70
|
await checkChain();
|
|
82
71
|
let before;
|
|
83
72
|
try {
|
|
84
|
-
const beforeInfo = await lstat(path);
|
|
85
|
-
if (beforeInfo.nlink ===
|
|
73
|
+
const beforeInfo = await lstat(path, { bigint: true });
|
|
74
|
+
if (beforeInfo.nlink === 0n) {
|
|
86
75
|
fileIdentity(beforeInfo, uid, [0], true);
|
|
87
76
|
return null;
|
|
88
77
|
}
|
|
@@ -93,6 +82,7 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
93
82
|
return null;
|
|
94
83
|
return fail();
|
|
95
84
|
}
|
|
85
|
+
await options.hookForTest?.("after_zero_lstat", path);
|
|
96
86
|
let fd;
|
|
97
87
|
try {
|
|
98
88
|
try {
|
|
@@ -105,16 +95,16 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
105
95
|
}
|
|
106
96
|
if (!fd)
|
|
107
97
|
return fail();
|
|
108
|
-
const openedInfo = await fd.stat();
|
|
109
|
-
if (openedInfo.nlink ===
|
|
98
|
+
const openedInfo = await fd.stat({ bigint: true });
|
|
99
|
+
if (openedInfo.nlink === 0n) {
|
|
110
100
|
fileIdentity(openedInfo, uid, [0], true);
|
|
111
101
|
return null;
|
|
112
102
|
}
|
|
113
103
|
const opened = fileIdentity(openedInfo, uid, links, true);
|
|
114
104
|
let after;
|
|
115
105
|
try {
|
|
116
|
-
const afterInfo = await lstat(path);
|
|
117
|
-
if (afterInfo.nlink ===
|
|
106
|
+
const afterInfo = await lstat(path, { bigint: true });
|
|
107
|
+
if (afterInfo.nlink === 0n) {
|
|
118
108
|
fileIdentity(afterInfo, uid, [0], true);
|
|
119
109
|
return null;
|
|
120
110
|
}
|
|
@@ -125,7 +115,7 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
125
115
|
return null;
|
|
126
116
|
return fail();
|
|
127
117
|
}
|
|
128
|
-
if (!
|
|
118
|
+
if (!sameFileInode(before, opened) || !sameFileInode(opened, after) || !sameFileExact(before, opened) || !sameFileExact(opened, after))
|
|
129
119
|
return null;
|
|
130
120
|
return opened;
|
|
131
121
|
}
|
|
@@ -139,15 +129,16 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
139
129
|
const unlinkExact = async (path, expected) => {
|
|
140
130
|
await checkChain();
|
|
141
131
|
const current = await snapshotZero(path, [1, 2]);
|
|
142
|
-
if (current === null || !
|
|
132
|
+
if (current === null || !sameFileInode(current, expected) || !sameFileExact(current, expected))
|
|
143
133
|
return false;
|
|
144
134
|
const immediate = await snapshotZero(path, [1, 2]);
|
|
145
135
|
if (immediate === null) {
|
|
146
136
|
await syncDirectory();
|
|
147
137
|
return false;
|
|
148
138
|
}
|
|
149
|
-
if (!
|
|
139
|
+
if (!sameFileInode(immediate, expected) || !sameFileExact(immediate, expected))
|
|
150
140
|
return false;
|
|
141
|
+
await options.hookForTest?.("before_unlink_exact", path);
|
|
151
142
|
try {
|
|
152
143
|
await unlink(path);
|
|
153
144
|
}
|
|
@@ -164,21 +155,22 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
164
155
|
await checkChain();
|
|
165
156
|
let before;
|
|
166
157
|
try {
|
|
167
|
-
before = fileIdentity(await lstat(path), uid, [1]);
|
|
158
|
+
before = fileIdentity(await lstat(path, { bigint: true }), uid, [1]);
|
|
168
159
|
}
|
|
169
160
|
catch (error) {
|
|
170
161
|
if (missing(error))
|
|
171
162
|
return "absent";
|
|
172
163
|
return fail();
|
|
173
164
|
}
|
|
165
|
+
await options.hookForTest?.("after_final_lstat", path);
|
|
174
166
|
if (before.size > expected.length)
|
|
175
167
|
fail();
|
|
176
168
|
let fd;
|
|
177
169
|
let bytes;
|
|
178
170
|
try {
|
|
179
171
|
fd = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
180
|
-
const opened = fileIdentity(await fd.stat(), uid, [1]);
|
|
181
|
-
if (!
|
|
172
|
+
const opened = fileIdentity(await fd.stat({ bigint: true }), uid, [1]);
|
|
173
|
+
if (!sameFileNode(before, opened) || opened.size > expected.length)
|
|
182
174
|
fail();
|
|
183
175
|
bytes = new Uint8Array(opened.size);
|
|
184
176
|
let offset = 0;
|
|
@@ -188,18 +180,20 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
188
180
|
fail();
|
|
189
181
|
offset += read.bytesRead;
|
|
190
182
|
}
|
|
191
|
-
const after = fileIdentity(await fd.stat(), uid, [1]);
|
|
192
|
-
const named = fileIdentity(await lstat(path), uid, [1]);
|
|
193
|
-
if (!
|
|
183
|
+
const after = fileIdentity(await fd.stat({ bigint: true }), uid, [1]);
|
|
184
|
+
const named = fileIdentity(await lstat(path, { bigint: true }), uid, [1]);
|
|
185
|
+
if (!sameFileNode(opened, after) || !sameFileNode(opened, named))
|
|
194
186
|
fail();
|
|
195
|
-
if (!
|
|
187
|
+
if (!sameFileExact(opened, after) || !sameFileExact(opened, named))
|
|
196
188
|
return "prefix";
|
|
197
189
|
for (let index = 0; index < bytes.length; index += 1)
|
|
198
190
|
if (bytes[index] !== expected[index])
|
|
199
191
|
fail();
|
|
200
192
|
return bytes.length === expected.length ? "exact" : "prefix";
|
|
201
193
|
}
|
|
202
|
-
catch {
|
|
194
|
+
catch (error) {
|
|
195
|
+
if (missing(error))
|
|
196
|
+
return "absent";
|
|
203
197
|
return fail();
|
|
204
198
|
}
|
|
205
199
|
finally {
|
|
@@ -213,15 +207,24 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
213
207
|
try {
|
|
214
208
|
fd = await open(token, constants.O_CREAT | constants.O_EXCL | constants.O_RDWR | constants.O_NOFOLLOW, 0o600);
|
|
215
209
|
await fd.chmod(0o600);
|
|
216
|
-
|
|
210
|
+
await options.hookForTest?.("after_token_open", token);
|
|
211
|
+
// An identical publisher may link or finish tearing down this token as soon
|
|
212
|
+
// as O_EXCL makes the pathname visible, before its creator reaches fstat.
|
|
213
|
+
const openedInfo = await fd.stat({ bigint: true });
|
|
214
|
+
if (openedInfo.nlink === 0n) {
|
|
215
|
+
fileIdentity(openedInfo, uid, [0], true);
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
const opened = fileIdentity(openedInfo, uid, [1, 2], true);
|
|
217
219
|
await fd.sync();
|
|
218
|
-
|
|
219
|
-
|
|
220
|
+
await options.hookForTest?.("after_token_sync", token);
|
|
221
|
+
const afterInfo = await fd.stat({ bigint: true });
|
|
222
|
+
if (afterInfo.nlink === 0n) {
|
|
220
223
|
fileIdentity(afterInfo, uid, [0], true);
|
|
221
224
|
return null;
|
|
222
225
|
}
|
|
223
226
|
const after = fileIdentity(afterInfo, uid, [1, 2], true);
|
|
224
|
-
if (!
|
|
227
|
+
if (!sameFileInode(opened, after))
|
|
225
228
|
fail();
|
|
226
229
|
await syncDirectory();
|
|
227
230
|
await options.hookForTest?.("after_token_create", token);
|
|
@@ -271,6 +274,13 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
271
274
|
await proveOwned();
|
|
272
275
|
const claim = `${final}.claim`;
|
|
273
276
|
const token = `${final}.token.${publicationHandle}`;
|
|
277
|
+
const retryContention = async (attempt, contestedPath, reason) => {
|
|
278
|
+
options.contentionForTest?.(reason, attempt);
|
|
279
|
+
await options.hookForTest?.("before_contention_retry", contestedPath);
|
|
280
|
+
if (attempt >= MAX_ATTEMPTS - 1)
|
|
281
|
+
fail();
|
|
282
|
+
await contentionDelay(attempt);
|
|
283
|
+
};
|
|
274
284
|
const proveFinal = async () => {
|
|
275
285
|
if (await readFinal(final, owned) !== "exact")
|
|
276
286
|
return false;
|
|
@@ -288,14 +298,22 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
288
298
|
return;
|
|
289
299
|
}
|
|
290
300
|
if (claimState !== null && tokenState === null) {
|
|
291
|
-
if (finalState !== "exact" || claimState.nlink !==
|
|
292
|
-
await
|
|
301
|
+
if (finalState !== "exact" || claimState.nlink !== 1n) {
|
|
302
|
+
await retryContention(attempt, claim, "orphan-claim-not-cleanable");
|
|
293
303
|
continue;
|
|
294
304
|
}
|
|
295
305
|
if (!await proveFinal())
|
|
296
306
|
fail();
|
|
297
307
|
if (!await unlinkExact(claim, claimState)) {
|
|
298
|
-
await
|
|
308
|
+
const latestClaim = await snapshotZero(claim, [1, 2]);
|
|
309
|
+
if (latestClaim === null) {
|
|
310
|
+
if (!await proveFinal())
|
|
311
|
+
fail();
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
if (!sameFileInode(latestClaim, claimState))
|
|
315
|
+
fail();
|
|
316
|
+
await retryContention(attempt, claim, "orphan-claim-cleanup-race");
|
|
299
317
|
continue;
|
|
300
318
|
}
|
|
301
319
|
return;
|
|
@@ -304,11 +322,11 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
304
322
|
if (ownedToken === null)
|
|
305
323
|
ownedToken = await createToken(token);
|
|
306
324
|
if (ownedToken === null) {
|
|
307
|
-
await
|
|
325
|
+
await retryContention(attempt, token, "token-election-race");
|
|
308
326
|
continue;
|
|
309
327
|
}
|
|
310
328
|
let currentClaim = await snapshotZero(claim, [1, 2]);
|
|
311
|
-
if (currentClaim === null && ownedToken.nlink ===
|
|
329
|
+
if (currentClaim === null && ownedToken.nlink === 1n) {
|
|
312
330
|
try {
|
|
313
331
|
await checkChain();
|
|
314
332
|
await link(token, claim);
|
|
@@ -323,21 +341,21 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
323
341
|
ownedToken = await snapshotZero(token, [1, 2]);
|
|
324
342
|
}
|
|
325
343
|
if (!currentClaim || !ownedToken) {
|
|
326
|
-
await
|
|
344
|
+
await retryContention(attempt, claim, "topology-observation-race");
|
|
327
345
|
continue;
|
|
328
346
|
}
|
|
329
347
|
if (currentClaim.dev !== ownedToken.dev || currentClaim.ino !== ownedToken.ino) {
|
|
330
348
|
await options.hookForTest?.("after_mismatch_snapshot", token);
|
|
331
|
-
if (ownedToken.nlink ===
|
|
349
|
+
if (ownedToken.nlink === 1n) {
|
|
332
350
|
const latest = await snapshotZero(token, [1, 2]);
|
|
333
|
-
if (latest?.nlink ===
|
|
351
|
+
if (latest?.nlink === 1n && sameFileExact(latest, ownedToken))
|
|
334
352
|
await unlinkExact(token, latest);
|
|
335
353
|
}
|
|
336
|
-
await
|
|
354
|
+
await retryContention(attempt, claim, "foreign-token-race");
|
|
337
355
|
continue;
|
|
338
356
|
}
|
|
339
|
-
if (currentClaim.nlink !==
|
|
340
|
-
await
|
|
357
|
+
if (currentClaim.nlink !== 2n || ownedToken.nlink !== 2n) {
|
|
358
|
+
await retryContention(attempt, claim, "link-count-race");
|
|
341
359
|
continue;
|
|
342
360
|
}
|
|
343
361
|
const state = await readFinal(final, owned);
|
|
@@ -346,18 +364,21 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
346
364
|
try {
|
|
347
365
|
fd = await open(final, constants.O_CREAT | constants.O_EXCL | constants.O_RDWR | constants.O_NOFOLLOW, 0o600);
|
|
348
366
|
await fd.chmod(0o600);
|
|
349
|
-
|
|
367
|
+
await options.hookForTest?.("after_final_open", final);
|
|
368
|
+
const created = fileIdentity(await fd.stat({ bigint: true }), uid, [1]);
|
|
369
|
+
if (created.size > owned.length)
|
|
370
|
+
fail();
|
|
350
371
|
await options.hookForTest?.("after_final_create", final);
|
|
351
|
-
const split = Math.max(1, Math.floor(owned.length / 2));
|
|
352
|
-
let offset =
|
|
372
|
+
const split = Math.max(created.size, 1, Math.floor(owned.length / 2));
|
|
373
|
+
let offset = created.size;
|
|
353
374
|
while (offset < split)
|
|
354
375
|
offset += await writeSome(fd, owned, offset, split - offset);
|
|
355
376
|
await options.hookForTest?.("after_partial_write", final);
|
|
356
377
|
while (offset < owned.length)
|
|
357
378
|
offset += await writeSome(fd, owned, offset, owned.length - offset);
|
|
358
379
|
await fd.sync();
|
|
359
|
-
const complete = fileIdentity(await fd.stat(), uid, [1]);
|
|
360
|
-
if (
|
|
380
|
+
const complete = fileIdentity(await fd.stat({ bigint: true }), uid, [1]);
|
|
381
|
+
if (!sameFileNode(created, complete) || complete.size !== owned.length)
|
|
361
382
|
fail();
|
|
362
383
|
await options.hookForTest?.("after_file_sync", final);
|
|
363
384
|
}
|
|
@@ -373,15 +394,15 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
373
394
|
let fd;
|
|
374
395
|
try {
|
|
375
396
|
fd = await open(final, constants.O_RDWR | constants.O_NOFOLLOW);
|
|
376
|
-
const before = fileIdentity(await fd.stat(), uid, [1]);
|
|
397
|
+
const before = fileIdentity(await fd.stat({ bigint: true }), uid, [1]);
|
|
377
398
|
if (before.size > owned.length)
|
|
378
399
|
fail();
|
|
379
400
|
let offset = before.size;
|
|
380
401
|
while (offset < owned.length)
|
|
381
402
|
offset += await writeSome(fd, owned, offset, owned.length - offset);
|
|
382
403
|
await fd.sync();
|
|
383
|
-
const after = fileIdentity(await fd.stat(), uid, [1]);
|
|
384
|
-
if (before
|
|
404
|
+
const after = fileIdentity(await fd.stat({ bigint: true }), uid, [1]);
|
|
405
|
+
if (!sameFileNode(before, after) || after.size !== owned.length)
|
|
385
406
|
fail();
|
|
386
407
|
}
|
|
387
408
|
catch {
|
|
@@ -392,7 +413,7 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
392
413
|
}
|
|
393
414
|
}
|
|
394
415
|
if (!await proveFinal()) {
|
|
395
|
-
await
|
|
416
|
+
await retryContention(attempt, final, "final-write-race");
|
|
396
417
|
continue;
|
|
397
418
|
}
|
|
398
419
|
await syncDirectory();
|
|
@@ -401,8 +422,8 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
401
422
|
await options.hookForTest?.("after_exact_token_snapshot", token);
|
|
402
423
|
const exactClaim = await snapshotZero(claim, [1, 2]);
|
|
403
424
|
if (!exactToken || !exactClaim || exactToken.dev !== exactClaim.dev || exactToken.ino !== exactClaim.ino
|
|
404
|
-
|| exactToken.nlink !==
|
|
405
|
-
await
|
|
425
|
+
|| exactToken.nlink !== 2n || exactClaim.nlink !== 2n) {
|
|
426
|
+
await retryContention(attempt, claim, "cleanup-snapshot-race");
|
|
406
427
|
continue;
|
|
407
428
|
}
|
|
408
429
|
await unlinkExact(token, exactToken);
|
|
@@ -413,8 +434,20 @@ export const initializeTargetSecretSourceFsPublishImmutable = async (options) =>
|
|
|
413
434
|
fail();
|
|
414
435
|
return;
|
|
415
436
|
}
|
|
416
|
-
if (remainingClaim.nlink !==
|
|
417
|
-
await
|
|
437
|
+
if (remainingClaim.nlink !== 1n) {
|
|
438
|
+
await retryContention(attempt, claim, "claim-final-cleanup-race");
|
|
439
|
+
continue;
|
|
440
|
+
}
|
|
441
|
+
if (!await unlinkExact(claim, remainingClaim)) {
|
|
442
|
+
const latestClaim = await snapshotZero(claim, [1, 2]);
|
|
443
|
+
if (latestClaim === null) {
|
|
444
|
+
if (!await proveFinal())
|
|
445
|
+
fail();
|
|
446
|
+
return;
|
|
447
|
+
}
|
|
448
|
+
if (!sameFileInode(latestClaim, remainingClaim))
|
|
449
|
+
fail();
|
|
450
|
+
await retryContention(attempt, claim, "claim-final-cleanup-race");
|
|
418
451
|
continue;
|
|
419
452
|
}
|
|
420
453
|
await options.hookForTest?.("after_claim_cleanup", claim);
|
|
@@ -2,6 +2,7 @@ import { Buffer } from "node:buffer";
|
|
|
2
2
|
import { constants } from "node:fs";
|
|
3
3
|
import { lstat, mkdir, open } from "node:fs/promises";
|
|
4
4
|
import { MAX_JSON_GRAPH_STRING_BYTES, TARGET_SECRET_SOURCE_ERROR, parseTargetSecretSourceOpaqueHandle } from "./targetSecretSourceRecordCommon.js";
|
|
5
|
+
import { directoryIdentityOf, fileIdentityOf, sameDirectory, sameFileExact } from "./targetSecretSourceFsIdentity.js";
|
|
5
6
|
import { parseTargetSecretSourceAliasRecordBytes, parseTargetSecretSourceVersionRecordBytes } from "./targetSecretSourceVersionRecords.js";
|
|
6
7
|
import { parseTargetSecretSourceGrantRecordBytes, parseTargetSecretSourceRedemptionRecordBytes, parseTargetSecretSourceRevocationRecordBytes } from "./targetSecretSourceGrantRecords.js";
|
|
7
8
|
import { resolveAuthHome, resolveSpawnfileHome, resolveTargetSecretAliasPath, resolveTargetSecretAliasesDirectory, resolveTargetSecretGrantPath, resolveTargetSecretGrantsDirectory, resolveTargetSecretRedemptionPath, resolveTargetSecretRedemptionsDirectory, resolveTargetSecretRevocationPath, resolveTargetSecretRevocationsDirectory, resolveTargetSecretVersionPath, resolveTargetSecretVersionsDirectory, resolveTargetSecretsRoot } from "./paths.js";
|
|
@@ -9,18 +10,8 @@ const fail = () => { throw new Error(TARGET_SECRET_SOURCE_ERROR); };
|
|
|
9
10
|
const absent = (error) => error.code === "ENOENT";
|
|
10
11
|
const uid = () => { const value = process.getuid?.(); if (typeof value !== "number")
|
|
11
12
|
return fail(); return value; };
|
|
12
|
-
const directoryIdentity = (info, owner) =>
|
|
13
|
-
|
|
14
|
-
return fail();
|
|
15
|
-
return { birthtimeNs: info.birthtimeNs, dev: info.dev, ino: info.ino, mode: info.mode, uid: info.uid };
|
|
16
|
-
};
|
|
17
|
-
const fileIdentity = (info, owner) => {
|
|
18
|
-
if (!info.isFile() || info.isSymbolicLink() || info.uid !== BigInt(owner) || info.nlink !== 1n || info.size < 0n || info.size > BigInt(MAX_JSON_GRAPH_STRING_BYTES) || (info.mode & 4095n) !== 384n)
|
|
19
|
-
return fail();
|
|
20
|
-
return { birthtimeNs: info.birthtimeNs, ctimeNs: info.ctimeNs, dev: info.dev, ino: info.ino, mode: info.mode, nlink: info.nlink, size: Number(info.size), uid: info.uid };
|
|
21
|
-
};
|
|
22
|
-
const sameDirectory = (left, right) => left.birthtimeNs === right.birthtimeNs && left.dev === right.dev && left.ino === right.ino && left.mode === right.mode && left.uid === right.uid;
|
|
23
|
-
const sameFile = (left, right) => left.birthtimeNs === right.birthtimeNs && left.ctimeNs === right.ctimeNs && left.dev === right.dev && left.ino === right.ino && left.mode === right.mode && left.nlink === right.nlink && left.size === right.size && left.uid === right.uid;
|
|
13
|
+
const directoryIdentity = (info, owner) => directoryIdentityOf(info, owner);
|
|
14
|
+
const fileIdentity = (info, owner) => fileIdentityOf(info, owner, [1], MAX_JSON_GRAPH_STRING_BYTES);
|
|
24
15
|
const initializeDirectory = async (directory, owner, create) => {
|
|
25
16
|
let info;
|
|
26
17
|
try {
|
|
@@ -134,7 +125,7 @@ const readRecord = async (file, expected, parse, chain, owner, hooks) => {
|
|
|
134
125
|
let bytes;
|
|
135
126
|
try {
|
|
136
127
|
const opened = fileIdentity(await handle.stat({ bigint: true }), owner);
|
|
137
|
-
if (!
|
|
128
|
+
if (!sameFileExact(before, opened))
|
|
138
129
|
return fail();
|
|
139
130
|
bytes = Buffer.alloc(opened.size + 1);
|
|
140
131
|
let offset = 0;
|
|
@@ -152,7 +143,7 @@ const readRecord = async (file, expected, parse, chain, owner, hooks) => {
|
|
|
152
143
|
catch {
|
|
153
144
|
return fail();
|
|
154
145
|
}
|
|
155
|
-
if (offset !== opened.size || !
|
|
146
|
+
if (offset !== opened.size || !sameFileExact(opened, after) || !sameFileExact(opened, pathname))
|
|
156
147
|
return fail();
|
|
157
148
|
await checkChain(chain, owner);
|
|
158
149
|
const content = Uint8Array.from(bytes.subarray(0, offset));
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Grok is deliberately absent. `spawnfile.training-container.v3` holds the one
|
|
3
|
+
* dedicated training Grok login in a broker-owned realm volume seeded from a
|
|
4
|
+
* read-only bootstrap leaf, and judges spend it through short inference grants
|
|
5
|
+
* (D2). Staging a Grok credential into a shared runtime home would put a
|
|
6
|
+
* rotating login where the evaluator and the image both reach it.
|
|
7
|
+
*/
|
|
8
|
+
export type TrainingAuthProvider = "codex" | "claude";
|
|
9
|
+
export interface TrainingAuthStageOptions {
|
|
10
|
+
/** Caller-provisioned, existing private runtime home; never a host home mount. */
|
|
11
|
+
home: string;
|
|
12
|
+
provider: TrainingAuthProvider;
|
|
13
|
+
/** Explicit provisioned leaf; default is the fixed training ingress. */
|
|
14
|
+
source?: string;
|
|
15
|
+
}
|
|
16
|
+
/** Stages opaque credential bytes once. Never imports configuration, logs bytes, or overwrites renewed auth. */
|
|
17
|
+
export declare const stageTrainingAuth: (options: TrainingAuthStageOptions) => Promise<{
|
|
18
|
+
version: "spawnfile.training-auth-stage.v1";
|
|
19
|
+
provider: TrainingAuthProvider;
|
|
20
|
+
destination: string;
|
|
21
|
+
}>;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { constants } from "node:fs";
|
|
3
|
+
import { link, lstat, mkdir, open, realpath, unlink } from "node:fs/promises";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
const targets = {
|
|
6
|
+
codex: [".daimon-inbound", "codex-auth"],
|
|
7
|
+
claude: [".claude", ".credentials.json"]
|
|
8
|
+
};
|
|
9
|
+
/** Stages opaque credential bytes once. Never imports configuration, logs bytes, or overwrites renewed auth. */
|
|
10
|
+
export const stageTrainingAuth = async (options) => {
|
|
11
|
+
if (!Object.hasOwn(targets, options.provider))
|
|
12
|
+
throw Error("Unsupported training auth provider");
|
|
13
|
+
const home = path.resolve(options.home), source = options.source ?? `/run/paideia-auth/${options.provider}`;
|
|
14
|
+
if (!path.isAbsolute(options.home) || await realpath(home) !== home || !(await lstat(home)).isDirectory())
|
|
15
|
+
throw Error("Training home must be a canonical existing directory");
|
|
16
|
+
if (!path.isAbsolute(source) || await realpath(source) !== path.resolve(source))
|
|
17
|
+
throw Error("Training auth source must be a canonical regular leaf");
|
|
18
|
+
const input = await open(source, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);
|
|
19
|
+
try {
|
|
20
|
+
const before = await input.stat({ bigint: true });
|
|
21
|
+
if (!before.isFile() || before.size < 1n || before.size > 1048576n)
|
|
22
|
+
throw Error("Training auth source must be a bounded nonempty regular leaf");
|
|
23
|
+
const [folder, leaf] = targets[options.provider];
|
|
24
|
+
const directory = path.join(home, folder);
|
|
25
|
+
try {
|
|
26
|
+
await mkdir(directory, { mode: 0o700 });
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
if (error.code !== "EEXIST")
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
const existing = await lstat(directory);
|
|
33
|
+
if (!existing.isDirectory() || existing.isSymbolicLink() || existing.mode % 512 !== 0o700 || await realpath(directory) !== directory)
|
|
34
|
+
throw Error("Training auth directory must be private and canonical");
|
|
35
|
+
const bytes = Buffer.alloc(Number(before.size) + 1);
|
|
36
|
+
let primary;
|
|
37
|
+
const destination = path.join(directory, leaf), temporary = path.join(directory, `.stage-${randomUUID()}`);
|
|
38
|
+
try {
|
|
39
|
+
let length = 0;
|
|
40
|
+
while (length < bytes.length) {
|
|
41
|
+
const read = await input.read(bytes, length, bytes.length - length, null);
|
|
42
|
+
if (read.bytesRead === 0)
|
|
43
|
+
break;
|
|
44
|
+
length += read.bytesRead;
|
|
45
|
+
}
|
|
46
|
+
const after = await input.stat({ bigint: true });
|
|
47
|
+
if (BigInt(length) !== before.size || after.size !== before.size || after.mtimeNs !== before.mtimeNs || after.ctimeNs !== before.ctimeNs || after.ino !== before.ino || after.dev !== before.dev || after.birthtimeNs !== before.birthtimeNs)
|
|
48
|
+
throw Error("Training auth source changed during staging");
|
|
49
|
+
const output = await open(temporary, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | constants.O_NOFOLLOW, 0o600);
|
|
50
|
+
try {
|
|
51
|
+
await output.writeFile(bytes.subarray(0, length));
|
|
52
|
+
await output.sync();
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
await output.close();
|
|
56
|
+
}
|
|
57
|
+
// Exclusive publication preserves renewed credentials and never exposes a partial leaf.
|
|
58
|
+
try {
|
|
59
|
+
await link(temporary, destination);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (error.code === "EEXIST")
|
|
63
|
+
throw Error("Training auth already present; renewed credential preserved");
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
primary = error;
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
bytes.fill(0);
|
|
73
|
+
await unlink(temporary).catch((error) => {
|
|
74
|
+
if (error.code === "ENOENT")
|
|
75
|
+
return;
|
|
76
|
+
if (primary)
|
|
77
|
+
throw new AggregateError([primary, error], "Training auth staging failed and temporary cleanup is incomplete");
|
|
78
|
+
throw error;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return { version: "spawnfile.training-auth-stage.v1", provider: options.provider, destination };
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
await input.close();
|
|
85
|
+
}
|
|
86
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Reads only private, bounded, canonical leaves. Errors never include credential bytes. */
|
|
2
|
+
export declare const readTrainingGrokLeaf: (file: string) => Promise<Buffer>;
|
|
3
|
+
/** A settled journal proves rotation; native expiry orders credentials across independent realms. */
|
|
4
|
+
export declare const writeBackTrainingGrokCredential: (profile: string, candidate: string, journalFile: string) => Promise<boolean>;
|