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
package/dist/cli/runCli.js
CHANGED
|
@@ -1,22 +1,29 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
import { Command } from "commander";
|
|
3
|
-
import { importClaudeCodeAuth, importCodexAuth, importEnvFile, initializeTargetSecretSourceLifecycle, provisionCredentials, requireAuthProfile } from "../auth/index.js";
|
|
4
|
-
import { addAgentProject, addProjectSurface, addProjectModelFallback, addSubagentProject, addTeamProject, buildOrganizationView, buildCompilePlan, buildProject, buildUpReceipt, clearProjectModelFallbacks, compileProject, initProject, publishProject, upProject, removeProjectSurface, runProject, setProjectPrimaryModel, setProjectRuntime, setProjectSurfaceAccess, showProjectSurfaces, syncProjectAuth } from "../compiler/index.js";
|
|
3
|
+
import { importClaudeCodeAuth, importCodexAuth, importGrokAuth, importEnvFile, initializeTargetSecretSourceLifecycle, provisionCredentials, requireAuthProfile } from "../auth/index.js";
|
|
4
|
+
import { addAgentProject, addProjectSurface, addProjectModelFallback, addSubagentProject, addTeamProject, buildOrganizationView, buildCompilePlan, buildProject, buildUpReceipt, clearProjectModelFallbacks, compileProject, createTrainingContext, createTrainingPlan, loadTrainingProject, resolveTrainingPlan, materializeTrainingMoment, lowerTrainingExecution, allocateTrainingOutputParent, initProject, listInitTemplates, preflightCompilePlan, publishProject, upProject, removeProjectSurface, runProject, setProjectPrimaryModel, setProjectRuntime, setProjectSurfaceAccess, showProjectSurfaces, syncProjectAuth } from "../compiler/index.js";
|
|
5
5
|
import { devActivityProject, devApplyProject, devRestartProject, devStopProject, devUpProject } from "../dev/index.js";
|
|
6
6
|
import { consumeImageUp } from "../distribution/index.js";
|
|
7
|
-
import { downDeployment, exportRunArtifacts } from "../deployment/index.js";
|
|
7
|
+
import { createDockerProbeGateway, downDeployment, exportRunArtifacts, inspectDockerDeployment, listDeploymentRecords, listHomeDeploymentRecords } from "../deployment/index.js";
|
|
8
8
|
import { errorExitCode, isSpawnfileError } from "../shared/index.js";
|
|
9
9
|
import { listRuntimeAdapters } from "../runtime/index.js";
|
|
10
10
|
import { registerArtifactsCommands } from "./artifactsCommands.js";
|
|
11
11
|
import { registerAuthCommands } from "./authCommands.js";
|
|
12
|
+
import { registerCapabilitiesCommand } from "./capabilitiesCommand.js";
|
|
12
13
|
import { registerDevCommands } from "./devCommands.js";
|
|
14
|
+
import { registerEvidenceExportHelperCommand } from "./evidenceExportHelperCommand.js";
|
|
13
15
|
import { registerLifecycleCommands } from "./lifecycleCommands.js";
|
|
14
16
|
import { registerModelCommands } from "./modelCommands.js";
|
|
15
17
|
import { registerRuntimeCommands } from "./runtimeCommands.js";
|
|
16
18
|
import { registerSurfaceCommands } from "./surfaceCommands.js";
|
|
17
19
|
import { registerStatusCommand } from "./statusCommand.js";
|
|
18
|
-
import {
|
|
20
|
+
import { registerUsageCommand } from "./usageCommand.js";
|
|
21
|
+
import { registerRecordCommands } from "./recordCommands.js";
|
|
22
|
+
import { registerProductionTargetCommands } from "./targetProductionCommands.js";
|
|
19
23
|
import { registerViewCommand } from "./viewCommand.js";
|
|
24
|
+
import { registerVolumeCommands } from "./volumeCommands.js";
|
|
25
|
+
import { registerTrainCommand } from "./trainCommand.js";
|
|
26
|
+
import { delegatePaideiaTraining } from "./paideiaDelegation.js";
|
|
20
27
|
const packageJsonPath = new URL("../../package.json", import.meta.url);
|
|
21
28
|
const readPackageVersion = () => {
|
|
22
29
|
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf8"));
|
|
@@ -32,13 +39,15 @@ const createDefaultRenderEnvironment = () => ({
|
|
|
32
39
|
stdoutIsTty: process.stdout.isTTY === true
|
|
33
40
|
});
|
|
34
41
|
const createDefaultHandlers = () => ({
|
|
42
|
+
createTrainingContext, createTrainingPlan, loadTrainingProject, resolveTrainingPlan, materializeTrainingMoment, lowerTrainingExecution, allocateTrainingOutputParent, delegatePaideiaTraining,
|
|
35
43
|
buildCompilePlan, buildOrganizationView, buildProject, compileProject, publishProject,
|
|
36
44
|
addAgentProject, addProjectModelFallback, addProjectSurface,
|
|
37
45
|
addSubagentProject, addTeamProject, clearProjectModelFallbacks,
|
|
38
|
-
importClaudeCodeAuth, importCodexAuth, importEnvFile, initializeTargetSecretSourceLifecycle,
|
|
46
|
+
importClaudeCodeAuth, importCodexAuth, importGrokAuth, importEnvFile, initializeTargetSecretSourceLifecycle,
|
|
39
47
|
provisionCredentials,
|
|
40
|
-
exportRunArtifacts, downDeployment,
|
|
41
|
-
|
|
48
|
+
createDockerProbeGateway, exportRunArtifacts, downDeployment, inspectDockerDeployment,
|
|
49
|
+
listDeploymentRecords, listHomeDeploymentRecords,
|
|
50
|
+
initProject, listInitTemplates, listRuntimeAdapters, removeProjectSurface, requireAuthProfile,
|
|
42
51
|
runProject, setProjectPrimaryModel, setProjectRuntime, upProject, buildUpReceipt, consumeImageUp,
|
|
43
52
|
devActivityProject, devApplyProject, devRestartProject, devStopProject, devUpProject,
|
|
44
53
|
setProjectSurfaceAccess, showProjectSurfaces, syncProjectAuth
|
|
@@ -58,7 +67,8 @@ const normalizeRunCliOptions = (optionsOrStreams, handlerOverrides = {}) => isCl
|
|
|
58
67
|
handlers: optionsOrStreams?.handlers ?? handlerOverrides,
|
|
59
68
|
renderEnvironment: optionsOrStreams?.renderEnvironment ?? createDefaultRenderEnvironment(),
|
|
60
69
|
stdin: optionsOrStreams?.stdin ?? process.stdin,
|
|
61
|
-
streams: optionsOrStreams?.streams ?? createDefaultStreams()
|
|
70
|
+
streams: optionsOrStreams?.streams ?? createDefaultStreams(),
|
|
71
|
+
signal: optionsOrStreams?.signal
|
|
62
72
|
};
|
|
63
73
|
const writeCommanderOutput = (write, message) => {
|
|
64
74
|
const normalized = message.replace(/\n$/, "");
|
|
@@ -110,20 +120,34 @@ export const runCli = async (argv, optionsOrStreams, handlerOverrides = {}) => {
|
|
|
110
120
|
},
|
|
111
121
|
writeOut: (message) => writeCommanderOutput(streams.stdout, message)
|
|
112
122
|
});
|
|
113
|
-
registerLifecycleCommands(program, handlers, streams, cliOptions.stdin);
|
|
123
|
+
registerLifecycleCommands(program, handlers, streams, cliOptions.stdin, (code) => { commandExitCode = code; });
|
|
114
124
|
registerDevCommands(program, handlers, streams);
|
|
115
125
|
registerArtifactsCommands(program, handlers, streams);
|
|
126
|
+
registerCapabilitiesCommand(program, streams, readPackageVersion());
|
|
127
|
+
registerEvidenceExportHelperCommand(program, streams, (exitCode) => {
|
|
128
|
+
commandExitCode = exitCode;
|
|
129
|
+
});
|
|
116
130
|
program
|
|
117
131
|
.command("init")
|
|
118
132
|
.description("Scaffold a new Spawnfile project or team in a directory")
|
|
119
133
|
.argument("[path]", "Directory to initialize", process.cwd())
|
|
120
134
|
.option("--team", "Initialize a team project")
|
|
121
135
|
.option("--runtime <name>", "Runtime for agent scaffolds")
|
|
136
|
+
.option("--template <name>", "Scaffold from a bundled example template")
|
|
137
|
+
.option("--list-templates", "List available example templates and exit")
|
|
122
138
|
.action(async (inputPath, options) => {
|
|
139
|
+
if (options.listTemplates) {
|
|
140
|
+
const templates = await handlers.listInitTemplates();
|
|
141
|
+
for (const template of templates) {
|
|
142
|
+
streams.stdout(template);
|
|
143
|
+
}
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
123
146
|
const result = await handlers.initProject({
|
|
124
147
|
directory: inputPath,
|
|
125
148
|
runtime: options.runtime,
|
|
126
|
-
team: options.team
|
|
149
|
+
team: options.team,
|
|
150
|
+
template: options.template
|
|
127
151
|
});
|
|
128
152
|
streams.stdout(`initialized ${result.directory}`);
|
|
129
153
|
emitFileLines(streams, "created", result.createdFiles);
|
|
@@ -176,16 +200,25 @@ export const runCli = async (argv, optionsOrStreams, handlerOverrides = {}) => {
|
|
|
176
200
|
registerStatusCommand(program, handlers, streams, (exitCode) => {
|
|
177
201
|
commandExitCode = exitCode;
|
|
178
202
|
});
|
|
203
|
+
registerUsageCommand(program, streams, (exitCode) => { commandExitCode = exitCode; }, handlers);
|
|
204
|
+
registerRecordCommands(program, streams, (exitCode) => { commandExitCode = exitCode; }, handlers);
|
|
179
205
|
registerViewCommand(program, handlers, streams, cliOptions.renderEnvironment);
|
|
206
|
+
registerTrainCommand(program, handlers, streams, readPackageVersion(), (code) => {
|
|
207
|
+
commandExitCode = code;
|
|
208
|
+
}, cliOptions.signal);
|
|
180
209
|
registerProductionTargetCommands(program, streams, cliOptions.stdin, (exitCode) => {
|
|
181
210
|
commandExitCode = exitCode;
|
|
182
211
|
});
|
|
212
|
+
registerVolumeCommands(program, streams, (exitCode) => {
|
|
213
|
+
commandExitCode = exitCode;
|
|
214
|
+
});
|
|
183
215
|
program
|
|
184
216
|
.command("validate")
|
|
185
217
|
.description("Validate a Spawnfile and report the resolved compile plan")
|
|
186
218
|
.argument("[path]", "Project directory or Spawnfile path", process.cwd())
|
|
187
219
|
.action(async (inputPath) => {
|
|
188
220
|
const plan = await handlers.buildCompilePlan(inputPath);
|
|
221
|
+
preflightCompilePlan(plan);
|
|
189
222
|
streams.stdout("validation succeeded");
|
|
190
223
|
streams.stdout(formatPlanSummary(plan));
|
|
191
224
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SpawnfileError } from "../shared/index.js";
|
|
2
2
|
import { resolveCommandInput } from "./resolveCommandInput.js";
|
|
3
|
+
import { envFileAliasOption, resolveEnvFileOption, runtimeEnvFileOption } from "./envFileOption.js";
|
|
3
4
|
export const registerRunPublishCommands = (program, handlers, streams) => {
|
|
4
5
|
program
|
|
5
6
|
.command("run")
|
|
@@ -12,7 +13,8 @@ export const registerRunPublishCommands = (program, handlers, streams) => {
|
|
|
12
13
|
.option("--deployment <name>", "Detached deployment record name")
|
|
13
14
|
.option("--docker-command <command>", "Docker command")
|
|
14
15
|
.option("--name <container>", "Docker container name")
|
|
15
|
-
.
|
|
16
|
+
.addOption(runtimeEnvFileOption("Path to an env file for runtime secrets"))
|
|
17
|
+
.addOption(envFileAliasOption())
|
|
16
18
|
.option("--world-bindings <file>", "Path to a versioned world-bindings artifact")
|
|
17
19
|
.option("--image", "Interpret the argument as an image reference")
|
|
18
20
|
.option("-d, --detach", "Run the container in detached mode")
|
|
@@ -21,7 +23,7 @@ export const registerRunPublishCommands = (program, handlers, streams) => {
|
|
|
21
23
|
if (runInput.kind === "image" || (runInput.kind === "invalid" && options.image)) {
|
|
22
24
|
throw new SpawnfileError("validation_error", `Image-mode run is not supported. Deploy the image with: ` +
|
|
23
25
|
`spawnfile up ${inputPath} --auth-profile <profile> ` +
|
|
24
|
-
"(add --env-file for any extra secrets; image deployments always detach).");
|
|
26
|
+
"(add --runtime-env-file for any extra secrets; image deployments always detach).");
|
|
25
27
|
}
|
|
26
28
|
if (runInput.kind === "invalid") {
|
|
27
29
|
throw new SpawnfileError("validation_error", `Cannot resolve "${inputPath}" as a project path or image reference. ` +
|
|
@@ -34,7 +36,7 @@ export const registerRunPublishCommands = (program, handlers, streams) => {
|
|
|
34
36
|
deploymentName: options.deployment,
|
|
35
37
|
dockerCommand: options.dockerCommand,
|
|
36
38
|
dockerContext: options.context,
|
|
37
|
-
envFilePath: options
|
|
39
|
+
envFilePath: resolveEnvFileOption(options),
|
|
38
40
|
imageTag: options.tag,
|
|
39
41
|
outputDirectory: options.out,
|
|
40
42
|
...(options.worldBindings !== undefined
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
|
-
import { type
|
|
2
|
+
import { type TargetPublicArtifactSnapshotRequest, type TargetPublicArtifactSnapshotResult } from "../target/publicArtifactSnapshot.js";
|
|
3
3
|
import { type TargetTopologyActivationResult } from "../target/topologyActivation.js";
|
|
4
4
|
import { type SelectedTargetReceipt, type TargetResourceRequest, type TargetTopologyAttestationRequest } from "../target/contracts.js";
|
|
5
5
|
import { type TargetOperation } from "./targetOperationDispatch.js";
|
|
6
6
|
import { type TargetMutationResult } from "./targetReceiptOutput.js";
|
|
7
|
-
import type { TargetDefaultConfig } from "./targetDefaultConfig.js";
|
|
8
7
|
import { type TargetOperationLookupLoader } from "./targetLookupCommands.js";
|
|
9
8
|
import type { TargetTopologyAttestationResult } from "../target/topologyAttestation.js";
|
|
10
9
|
import { type TargetWorldClockSession } from "./targetWorldClockCommand.js";
|
|
@@ -20,14 +19,12 @@ export interface TargetCommandHandlerSession extends TargetWorldReadinessSession
|
|
|
20
19
|
run<Result>(invoke: (handlers: TargetCommandHandlers) => Promise<Result>): Promise<Result>;
|
|
21
20
|
activateTopology?(request: TargetTopologyAttestationRequest): Promise<TargetTopologyActivationResult>;
|
|
22
21
|
attestTopology?(request: TargetTopologyAttestationRequest): Promise<TargetTopologyAttestationResult>;
|
|
23
|
-
snapshotPublicArtifact?(request: TargetPublicArtifactSnapshotRequest): Promise<
|
|
22
|
+
snapshotPublicArtifact?(request: TargetPublicArtifactSnapshotRequest): Promise<TargetPublicArtifactSnapshotResult>;
|
|
24
23
|
}
|
|
25
24
|
export interface TargetCommandStreams {
|
|
26
25
|
stderr(message: string): void;
|
|
27
26
|
stdout(message: string): void;
|
|
28
27
|
}
|
|
29
|
-
type SetTargetCommandExitCode = (exitCode: 1 | 2) => void;
|
|
30
|
-
export declare const registerTargetCommands: (program: Command, session: TargetCommandHandlerSession | TargetCommandSessionLoader, streams: TargetCommandStreams, setExitCode: SetTargetCommandExitCode, lookupLoader?: TargetOperationLookupLoader, worldReadinessSession?: (configInput: unknown) => Promise<TargetWorldReadinessSession & TargetWorldClockSession
|
|
31
|
-
export declare const createProductionTargetCommandSession: (config: TargetDefaultConfig) => TargetCommandHandlerSession;
|
|
32
|
-
export declare const registerProductionTargetCommands: (program: Command, streams: TargetCommandStreams, stdin: AsyncIterable<unknown>, setExitCode: SetTargetCommandExitCode) => void;
|
|
28
|
+
export type SetTargetCommandExitCode = (exitCode: 1 | 2) => void;
|
|
29
|
+
export declare const registerTargetCommands: (program: Command, session: TargetCommandHandlerSession | TargetCommandSessionLoader, streams: TargetCommandStreams, setExitCode: SetTargetCommandExitCode, lookupLoader?: TargetOperationLookupLoader, worldReadinessSession?: (configInput: unknown) => Promise<TargetWorldReadinessSession & TargetWorldClockSession>, configFreeCommands?: readonly string[]) => Command;
|
|
33
30
|
export {};
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import { createCanonicalTargetTopologyReceiptBytes, createCanonicalSelectedTargetReceiptBytes, createTargetTopologyReceiptDigest } from "../target/handles.js";
|
|
2
|
-
import {
|
|
2
|
+
import { createCanonicalTargetPublicArtifactSnapshotResultBytes } from "../target/publicArtifactSnapshot.js";
|
|
3
3
|
import { createCanonicalTargetTopologyActivationReceiptBytes, createTargetTopologyActivationReceiptDigest, parseTargetTopologyActivationReceipt } from "../target/topologyActivation.js";
|
|
4
4
|
import { parseSelectedTargetReceipt, parseTargetTopologyReceipt } from "../target/contracts.js";
|
|
5
5
|
import { TARGET_OPERATION_DISPATCH } from "./targetOperationDispatch.js";
|
|
6
6
|
import { emitCanonicalTargetMutationReceipt, formatCaughtTargetCliError, formatTargetCliError } from "./targetReceiptOutput.js";
|
|
7
7
|
import { readTargetRequestFile, readTargetPublicArtifactSnapshotRequestFile, readTargetTopologyAttestationRequestFile } from "./targetRequestFile.js";
|
|
8
|
-
import {
|
|
9
|
-
import { createProductionTargetLookupLoader, registerTargetOperationLookup } from "./targetLookupCommands.js";
|
|
10
|
-
import { registerContainerBundleCommand } from "./containerBundleCommand.js";
|
|
8
|
+
import { registerTargetOperationLookup } from "./targetLookupCommands.js";
|
|
11
9
|
import { registerTargetWorldClockCommand } from "./targetWorldClockCommand.js";
|
|
12
10
|
import { registerTargetWorldReadinessCommand, } from "./targetWorldReadinessCommand.js";
|
|
13
11
|
import { registerTargetComposedPreparationCommand } from "./targetComposedPreparationCommand.js";
|
|
14
|
-
import { createProductionTargetWorldQuerySession } from "./targetDefaultWorldQueries.js";
|
|
15
12
|
const operations = Object.keys(TARGET_OPERATION_DISPATCH);
|
|
16
13
|
const invoke = async (handlers, request) => {
|
|
17
14
|
const handler = handlers[request.operation];
|
|
@@ -181,7 +178,7 @@ const registerPublicArtifactSnapshot = (target, session, streams, setExitCode) =
|
|
|
181
178
|
return;
|
|
182
179
|
}
|
|
183
180
|
try {
|
|
184
|
-
streams.stdout(
|
|
181
|
+
streams.stdout(createCanonicalTargetPublicArtifactSnapshotResultBytes(await activeSession.snapshotPublicArtifact(request)));
|
|
185
182
|
}
|
|
186
183
|
catch (error) {
|
|
187
184
|
streams.stderr(formatCaughtTargetCliError(error, "Target public artifact snapshot crashed"));
|
|
@@ -189,10 +186,21 @@ const registerPublicArtifactSnapshot = (target, session, streams, setExitCode) =
|
|
|
189
186
|
}
|
|
190
187
|
});
|
|
191
188
|
};
|
|
192
|
-
export const registerTargetCommands = (program, session, streams, setExitCode, lookupLoader, worldReadinessSession) => {
|
|
189
|
+
export const registerTargetCommands = (program, session, streams, setExitCode, lookupLoader, worldReadinessSession, configFreeCommands = []) => {
|
|
193
190
|
const target = program.command("target").description("Execute target-resource operations");
|
|
194
191
|
if (typeof session === "function") {
|
|
195
|
-
|
|
192
|
+
if (configFreeCommands.length === 0) {
|
|
193
|
+
target.requiredOption("--config <config-input>", "Strict target configuration JSON stdin; use -");
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
target.option("--config <config-input>", "Strict target configuration JSON stdin; use -");
|
|
197
|
+
target.hook("preAction", (_command, actionCommand) => {
|
|
198
|
+
if (!configFreeCommands.includes(actionCommand.name())
|
|
199
|
+
&& target.opts().config === undefined) {
|
|
200
|
+
target.error("required option '--config <config-input>' not specified");
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
}
|
|
196
204
|
}
|
|
197
205
|
for (const operation of operations) {
|
|
198
206
|
registerOperation(target, operation, session, streams, setExitCode);
|
|
@@ -217,41 +225,3 @@ export const registerTargetCommands = (program, session, streams, setExitCode, l
|
|
|
217
225
|
registerTargetOperationLookup(target, lookupLoader, streams, setExitCode);
|
|
218
226
|
return target;
|
|
219
227
|
};
|
|
220
|
-
export const createProductionTargetCommandSession = (config) => Object.freeze({
|
|
221
|
-
activateTopology: async (request) => {
|
|
222
|
-
const { activateTargetDefaultTopology } = await import("./targetDefaultHandlers.js");
|
|
223
|
-
return activateTargetDefaultTopology(config, request);
|
|
224
|
-
},
|
|
225
|
-
run: async (invokeHandlers) => {
|
|
226
|
-
const { withTargetDefaultHandlerSession } = await import("./targetDefaultHandlers.js");
|
|
227
|
-
return withTargetDefaultHandlerSession(config, invokeHandlers);
|
|
228
|
-
},
|
|
229
|
-
attestTopology: async (request) => {
|
|
230
|
-
const { attestTargetDefaultTopology } = await import("./targetDefaultHandlers.js");
|
|
231
|
-
return attestTargetDefaultTopology(config, request);
|
|
232
|
-
},
|
|
233
|
-
queryWorldReadiness: async (request) => {
|
|
234
|
-
const { queryTargetDefaultWorldReadiness } = await import("./targetDefaultWorldReadiness.js");
|
|
235
|
-
return queryTargetDefaultWorldReadiness(config, request);
|
|
236
|
-
},
|
|
237
|
-
queryWorldClock: async (request) => {
|
|
238
|
-
const { queryTargetDefaultWorldClock } = await import("./targetDefaultWorldClock.js");
|
|
239
|
-
return queryTargetDefaultWorldClock(config, request);
|
|
240
|
-
},
|
|
241
|
-
snapshotPublicArtifact: async (request) => {
|
|
242
|
-
const { snapshotTargetDefaultPublicArtifact } = await import("./targetDefaultHandlers.js");
|
|
243
|
-
return snapshotTargetDefaultPublicArtifact(config, request);
|
|
244
|
-
}
|
|
245
|
-
});
|
|
246
|
-
export const registerProductionTargetCommands = (program, streams, stdin, setExitCode) => {
|
|
247
|
-
const target = registerTargetCommands(program, async (configInput) => {
|
|
248
|
-
if (configInput !== "-")
|
|
249
|
-
throw new TypeError("Invalid target configuration");
|
|
250
|
-
return createProductionTargetCommandSession(await readTargetDefaultConfigStdin(stdin));
|
|
251
|
-
}, streams, setExitCode, createProductionTargetLookupLoader(stdin), async (configInput) => {
|
|
252
|
-
if (configInput !== "-")
|
|
253
|
-
throw new TypeError("Invalid target configuration");
|
|
254
|
-
return createProductionTargetWorldQuerySession(await readTargetWorldReadinessConfigStdin(stdin));
|
|
255
|
-
});
|
|
256
|
-
registerContainerBundleCommand(target, stdin, streams, setExitCode);
|
|
257
|
-
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type PreparedArtifactMapping } from "./targetDefaultConfig.js";
|
|
2
|
+
export declare const TARGET_CONFIG_PREPARED_PLAN_VERSION: "spawnfile.target-config-prepared-plan.v1";
|
|
3
|
+
export declare const readTargetConfigPreparedPlan: (rawPath: string | undefined, evidenceDestination: string) => Promise<readonly PreparedArtifactMapping[] | undefined>;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { constants } from "node:fs";
|
|
2
|
+
import { lstat, open } from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { SpawnfileError } from "../shared/index.js";
|
|
5
|
+
import { parseTargetPreparedArtifactMappings, } from "./targetDefaultConfig.js";
|
|
6
|
+
export const TARGET_CONFIG_PREPARED_PLAN_VERSION = "spawnfile.target-config-prepared-plan.v1";
|
|
7
|
+
const MAX_PATH_BYTES = 4_096;
|
|
8
|
+
const MAX_PREPARED_PLAN_BYTES = 128 * 1_024;
|
|
9
|
+
const fail = (message) => {
|
|
10
|
+
throw new SpawnfileError("validation_error", message);
|
|
11
|
+
};
|
|
12
|
+
const planPath = (value) => {
|
|
13
|
+
if (typeof value !== "string" || value.includes("\0")
|
|
14
|
+
|| Buffer.byteLength(value, "utf8") > MAX_PATH_BYTES
|
|
15
|
+
|| !path.isAbsolute(value) || path.normalize(value) !== value) {
|
|
16
|
+
return fail("Prepared target plan path must be absolute and normalized");
|
|
17
|
+
}
|
|
18
|
+
return value;
|
|
19
|
+
};
|
|
20
|
+
export const readTargetConfigPreparedPlan = async (rawPath, evidenceDestination) => {
|
|
21
|
+
if (rawPath === undefined)
|
|
22
|
+
return undefined;
|
|
23
|
+
const resolved = planPath(rawPath);
|
|
24
|
+
const owner = process.getuid?.();
|
|
25
|
+
let handle;
|
|
26
|
+
try {
|
|
27
|
+
const before = await lstat(resolved);
|
|
28
|
+
if (!before.isFile() || before.isSymbolicLink() || before.size < 1
|
|
29
|
+
|| before.size > MAX_PREPARED_PLAN_BYTES || (before.mode & 0o777) !== 0o600
|
|
30
|
+
|| owner !== undefined && before.uid !== owner) {
|
|
31
|
+
return fail("Prepared target plan must be a private bounded regular file");
|
|
32
|
+
}
|
|
33
|
+
handle = await open(resolved, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
34
|
+
const bytes = await handle.readFile();
|
|
35
|
+
const after = await handle.stat();
|
|
36
|
+
if (after.dev !== before.dev || after.ino !== before.ino || after.size !== bytes.byteLength) {
|
|
37
|
+
return fail("Prepared target plan changed while it was read");
|
|
38
|
+
}
|
|
39
|
+
let source;
|
|
40
|
+
try {
|
|
41
|
+
source = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(bytes);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return fail("Prepared target plan must be UTF-8 JSON");
|
|
45
|
+
}
|
|
46
|
+
const parsed = JSON.parse(source);
|
|
47
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)
|
|
48
|
+
|| Object.keys(parsed).sort().join("\0")
|
|
49
|
+
!== "evidence_destination\0prepared_artifact_mapping\0version") {
|
|
50
|
+
return fail("Prepared target plan has an invalid shape");
|
|
51
|
+
}
|
|
52
|
+
const value = parsed;
|
|
53
|
+
if (value.version !== TARGET_CONFIG_PREPARED_PLAN_VERSION) {
|
|
54
|
+
return fail("Prepared target plan version is invalid");
|
|
55
|
+
}
|
|
56
|
+
if (value.evidence_destination !== evidenceDestination) {
|
|
57
|
+
return fail("Prepared target plan evidence destination does not match");
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
return parseTargetPreparedArtifactMappings([value.prepared_artifact_mapping]);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return fail("Prepared target plan artifact mapping is invalid");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
if (error instanceof SpawnfileError)
|
|
68
|
+
throw error;
|
|
69
|
+
return fail("Prepared target plan is unavailable");
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
await handle?.close().catch(() => undefined);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type ResolveTargetConfigDependencies, type ResolveTargetConfigInput, type TargetConfigResolution } from "./targetConfigResolverContracts.js";
|
|
2
|
+
export { createCanonicalTargetConfigBytes, createTargetConfigDigest, createTargetConfigResolutionBytes, STANDARD_WORLD_BASE_IMAGE, TARGET_CONFIG_DIGEST_VERSION, TARGET_CONFIG_PREPARED_PLAN_ABI_VERSION, TARGET_CONFIG_RESOLUTION_VERSION, type ResolveTargetConfigDependencies, type ResolveTargetConfigInput, type TargetConfigResolution, } from "./targetConfigResolverContracts.js";
|
|
3
|
+
export declare const resolveTargetConfig: (input: ResolveTargetConfigInput, dependencies?: ResolveTargetConfigDependencies) => Promise<TargetConfigResolution>;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { resolveSpawnfileHome } from "../auth/index.js";
|
|
3
|
+
import { createPreparedEvidenceHelperExecutor, parsePreparedEvidenceHelperReceipt, prepareEvidenceExportHelper, } from "../evidenceExportHelper/index.js";
|
|
4
|
+
import { defaultDockerTargetExecFile, resolveDockerContextEndpoint } from "../target/dockerTargetBinding.js";
|
|
5
|
+
import { createTargetConfigDigest, STANDARD_WORLD_BASE_IMAGE, TARGET_CONFIG_RESOLUTION_VERSION, } from "./targetConfigResolverContracts.js";
|
|
6
|
+
import { exactJson, executeDocker, resolveCurrentDockerContext } from "./targetConfigResolverDocker.js";
|
|
7
|
+
import { classifyEndpoint, normalizeArchitecture, parseBaseImage, parseContext, parseDockerCommand, parseTimeout, runtimeFailure, validateEvidenceDestination, validationFailure, } from "./targetConfigResolverValidation.js";
|
|
8
|
+
import { readTargetConfigPreparedPlan } from "./targetConfigPreparedPlan.js";
|
|
9
|
+
import { TARGET_DEFAULT_CONFIG_STDIN_VERSION } from "./targetDefaultConfigStdin.js";
|
|
10
|
+
export { createCanonicalTargetConfigBytes, createTargetConfigDigest, createTargetConfigResolutionBytes, STANDARD_WORLD_BASE_IMAGE, TARGET_CONFIG_DIGEST_VERSION, TARGET_CONFIG_PREPARED_PLAN_ABI_VERSION, TARGET_CONFIG_RESOLUTION_VERSION, } from "./targetConfigResolverContracts.js";
|
|
11
|
+
export const resolveTargetConfig = async (input, dependencies = {}) => {
|
|
12
|
+
const baseImage = parseBaseImage(input.baseImage ?? STANDARD_WORLD_BASE_IMAGE);
|
|
13
|
+
const dockerCommand = parseDockerCommand(input.dockerCommand ?? "docker");
|
|
14
|
+
const timeoutMs = parseTimeout(input.timeoutMs ?? 10_000);
|
|
15
|
+
const evidenceDestination = await validateEvidenceDestination(input.evidenceDestination);
|
|
16
|
+
const preparedArtifactMappings = await readTargetConfigPreparedPlan(input.preparedPlanPath, evidenceDestination);
|
|
17
|
+
const execFile = input.execFile ?? defaultDockerTargetExecFile;
|
|
18
|
+
const contextSelection = input.context === undefined ? "auto-local" : "explicit";
|
|
19
|
+
const context = input.context === undefined
|
|
20
|
+
? await resolveCurrentDockerContext(execFile, dockerCommand, timeoutMs, input.signal)
|
|
21
|
+
: parseContext(input.context);
|
|
22
|
+
let endpointValue;
|
|
23
|
+
try {
|
|
24
|
+
endpointValue = await resolveDockerContextEndpoint(context, {
|
|
25
|
+
dockerCommand, execFile, signal: input.signal, timeoutMs,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return runtimeFailure(`Unable to inspect Docker context "${context}"`);
|
|
30
|
+
}
|
|
31
|
+
const endpoint = classifyEndpoint(endpointValue);
|
|
32
|
+
if (contextSelection === "auto-local" && endpoint.class !== "local") {
|
|
33
|
+
return validationFailure("Current Docker context is remote; pass --context explicitly to select a remote target");
|
|
34
|
+
}
|
|
35
|
+
if (input.prepareEvidenceHelper === true
|
|
36
|
+
&& (contextSelection !== "explicit" || endpoint.class !== "local")) {
|
|
37
|
+
return validationFailure("Evidence helper preparation requires an explicitly selected local Docker context");
|
|
38
|
+
}
|
|
39
|
+
if (input.pull === true && endpoint.class === "remote" && input.allowRemotePull !== true) {
|
|
40
|
+
return validationFailure("Pulling on a remote Docker context requires --allow-remote-pull");
|
|
41
|
+
}
|
|
42
|
+
const infoSource = await executeDocker(execFile, dockerCommand, context, ["info", "--format", "{\"Architecture\":{{json .Architecture}},\"OSType\":{{json .OSType}}}"], timeoutMs, input.signal, "Unable to inspect Docker target platform");
|
|
43
|
+
const info = exactJson(infoSource, ["Architecture", "OSType"], "Docker target platform is invalid");
|
|
44
|
+
if (info.OSType !== "linux")
|
|
45
|
+
return runtimeFailure("Docker target operating system is unsupported");
|
|
46
|
+
const architecture = normalizeArchitecture(info.Architecture);
|
|
47
|
+
if (input.pull === true) {
|
|
48
|
+
await executeDocker(execFile, dockerCommand, context, ["image", "pull", "--quiet", baseImage], timeoutMs, input.signal, "Unable to pull the requested base image");
|
|
49
|
+
}
|
|
50
|
+
const imageSource = await executeDocker(execFile, dockerCommand, context, ["image", "inspect", baseImage, "--format",
|
|
51
|
+
"{\"Architecture\":{{json .Architecture}},\"Id\":{{json .Id}},\"Os\":{{json .Os}}}"], timeoutMs, input.signal, input.pull === true
|
|
52
|
+
? "Unable to inspect the pulled base image"
|
|
53
|
+
: "Base image is unavailable in the Docker context; rerun with --pull to fetch it");
|
|
54
|
+
const image = exactJson(imageSource, ["Architecture", "Id", "Os"], "Docker base image inspection is invalid");
|
|
55
|
+
const imageArchitecture = normalizeArchitecture(image.Architecture);
|
|
56
|
+
if (image.Os !== "linux" || imageArchitecture !== architecture) {
|
|
57
|
+
return runtimeFailure("Docker base image platform does not match the selected target");
|
|
58
|
+
}
|
|
59
|
+
if (typeof image.Id !== "string" || !/^sha256:[a-f0-9]{64}$/u.test(image.Id)) {
|
|
60
|
+
return runtimeFailure("Docker base image config ID is invalid");
|
|
61
|
+
}
|
|
62
|
+
let preparedEvidenceHelper;
|
|
63
|
+
if (input.prepareEvidenceHelper === true) {
|
|
64
|
+
try {
|
|
65
|
+
preparedEvidenceHelper = parsePreparedEvidenceHelperReceipt(await (dependencies.prepareEvidenceExportHelper ?? prepareEvidenceExportHelper)({
|
|
66
|
+
baseImage,
|
|
67
|
+
context,
|
|
68
|
+
executor: input.execFile === undefined
|
|
69
|
+
? createPreparedEvidenceHelperExecutor(dockerCommand)
|
|
70
|
+
: async (file, args, options) => {
|
|
71
|
+
if (file !== "docker")
|
|
72
|
+
throw new Error("unexpected helper executable");
|
|
73
|
+
return execFile(dockerCommand, args, {
|
|
74
|
+
signal: options.signal,
|
|
75
|
+
stdin: options.stdin,
|
|
76
|
+
timeout: options.timeout,
|
|
77
|
+
});
|
|
78
|
+
},
|
|
79
|
+
privateRoot: path.join(resolveSpawnfileHome(), "target", "evidence-helper"),
|
|
80
|
+
signal: input.signal,
|
|
81
|
+
timeoutMs,
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return runtimeFailure("Evidence helper preparation failed for the selected local target");
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const targetConfig = Object.freeze({
|
|
89
|
+
context, dockerCommand, evidenceDestination,
|
|
90
|
+
...(preparedEvidenceHelper === undefined ? {} : {
|
|
91
|
+
evidenceHelperBaseImage: baseImage, preparedEvidenceHelper,
|
|
92
|
+
}),
|
|
93
|
+
...(preparedArtifactMappings === undefined ? {} : { preparedArtifactMappings }),
|
|
94
|
+
timeoutMs,
|
|
95
|
+
version: TARGET_DEFAULT_CONFIG_STDIN_VERSION,
|
|
96
|
+
});
|
|
97
|
+
return Object.freeze({
|
|
98
|
+
base_image: Object.freeze({
|
|
99
|
+
config_digest: image.Id, reference: baseImage,
|
|
100
|
+
}),
|
|
101
|
+
context_selection: contextSelection,
|
|
102
|
+
endpoint,
|
|
103
|
+
platform: Object.freeze({ architecture, os: "linux" }),
|
|
104
|
+
...(preparedEvidenceHelper === undefined ? {} : {
|
|
105
|
+
prepared_evidence_helper: preparedEvidenceHelper,
|
|
106
|
+
}),
|
|
107
|
+
target_config: targetConfig,
|
|
108
|
+
target_config_digest: createTargetConfigDigest(targetConfig),
|
|
109
|
+
version: TARGET_CONFIG_RESOLUTION_VERSION,
|
|
110
|
+
});
|
|
111
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import { type ResolveTargetConfigInput, type TargetConfigResolution } from "./targetConfigResolver.js";
|
|
3
|
+
import type { SetTargetCommandExitCode, TargetCommandStreams } from "./targetCommands.js";
|
|
4
|
+
export declare const TARGET_CONFIG_RESOLVER_COMMAND = "resolve_config";
|
|
5
|
+
export type TargetConfigResolver = (input: ResolveTargetConfigInput) => Promise<TargetConfigResolution>;
|
|
6
|
+
export declare const registerTargetConfigResolverCommand: (target: Command, streams: TargetCommandStreams, setExitCode: SetTargetCommandExitCode, resolver?: TargetConfigResolver) => void;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { errorExitCode, SpawnfileError } from "../shared/index.js";
|
|
2
|
+
import { createTargetConfigResolutionBytes, resolveTargetConfig, } from "./targetConfigResolver.js";
|
|
3
|
+
import { formatCaughtTargetCliError } from "./targetReceiptOutput.js";
|
|
4
|
+
export const TARGET_CONFIG_RESOLVER_COMMAND = "resolve_config";
|
|
5
|
+
const timeout = (value) => {
|
|
6
|
+
if (!/^[1-9][0-9]{0,5}$/u.test(value)) {
|
|
7
|
+
throw new SpawnfileError("validation_error", "Target timeout must be an integer from 1 to 120000 milliseconds");
|
|
8
|
+
}
|
|
9
|
+
return Number(value);
|
|
10
|
+
};
|
|
11
|
+
export const registerTargetConfigResolverCommand = (target, streams, setExitCode, resolver = resolveTargetConfig) => {
|
|
12
|
+
target.command(TARGET_CONFIG_RESOLVER_COMMAND)
|
|
13
|
+
.description("Resolve one explicit Docker context and base image into target configuration")
|
|
14
|
+
.option("--context <name>", "Explicit named Docker context; omitted accepts only the current local context")
|
|
15
|
+
.option("--base-image <reference>", "Portable base image reference; defaults to Spawnfile's standard world base")
|
|
16
|
+
.requiredOption("--evidence-destination <path>", "Absolute private evidence archive destination")
|
|
17
|
+
.option("--docker-command <command>", "Docker-compatible command", "docker")
|
|
18
|
+
.option("--prepare-evidence-helper", "Prepare the package-owned evidence helper on an explicitly selected local Docker context")
|
|
19
|
+
.option("--timeout-ms <milliseconds>", "Bounded Docker command timeout", "10000")
|
|
20
|
+
.option("--prepared-plan <path>", "Absolute private composed target plan containing one prepared artifact mapping")
|
|
21
|
+
.option("--pull", "Explicitly pull the base image before inspection")
|
|
22
|
+
.option("--allow-remote-pull", "Allow --pull to mutate the explicitly named remote Docker context")
|
|
23
|
+
.action(async (options) => {
|
|
24
|
+
try {
|
|
25
|
+
const resolution = await resolver({
|
|
26
|
+
allowRemotePull: options.allowRemotePull,
|
|
27
|
+
baseImage: options.baseImage,
|
|
28
|
+
context: options.context,
|
|
29
|
+
dockerCommand: options.dockerCommand,
|
|
30
|
+
evidenceDestination: options.evidenceDestination,
|
|
31
|
+
prepareEvidenceHelper: options.prepareEvidenceHelper,
|
|
32
|
+
preparedPlanPath: options.preparedPlan,
|
|
33
|
+
pull: options.pull,
|
|
34
|
+
timeoutMs: timeout(options.timeoutMs),
|
|
35
|
+
});
|
|
36
|
+
streams.stdout(createTargetConfigResolutionBytes(resolution));
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
streams.stderr(formatCaughtTargetCliError(error, "Target configuration resolution failed"));
|
|
40
|
+
setExitCode(errorExitCode(error));
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { PreparedEvidenceHelperReceipt, PrepareEvidenceHelperInput } from "../evidenceExportHelper/index.js";
|
|
2
|
+
import type { DockerTargetExecFile } from "../target/dockerTarget.js";
|
|
3
|
+
import type { PreparedArtifactMapping } from "./targetDefaultConfig.js";
|
|
4
|
+
import { TARGET_DEFAULT_CONFIG_STDIN_VERSION } from "./targetDefaultConfigStdin.js";
|
|
5
|
+
export declare const TARGET_CONFIG_RESOLUTION_VERSION: "spawnfile.target-config-resolution.v1";
|
|
6
|
+
export declare const TARGET_CONFIG_DIGEST_VERSION: "spawnfile.target-config-digest.v1";
|
|
7
|
+
/** Exact version for the strict `resolve_config --prepared-plan` document. */
|
|
8
|
+
export declare const TARGET_CONFIG_PREPARED_PLAN_ABI_VERSION: "spawnfile.target-config-prepared-plan.v1";
|
|
9
|
+
export declare const STANDARD_WORLD_BASE_IMAGE = "node:22-bookworm-slim";
|
|
10
|
+
export interface ResolveTargetConfigInput {
|
|
11
|
+
readonly allowRemotePull?: boolean;
|
|
12
|
+
readonly baseImage?: string;
|
|
13
|
+
readonly context?: string;
|
|
14
|
+
readonly dockerCommand?: string;
|
|
15
|
+
readonly evidenceDestination: string;
|
|
16
|
+
readonly prepareEvidenceHelper?: boolean;
|
|
17
|
+
readonly execFile?: DockerTargetExecFile;
|
|
18
|
+
readonly preparedPlanPath?: string;
|
|
19
|
+
readonly pull?: boolean;
|
|
20
|
+
readonly signal?: AbortSignal;
|
|
21
|
+
readonly timeoutMs?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface TargetConfigResolution {
|
|
24
|
+
readonly base_image: {
|
|
25
|
+
readonly config_digest: `sha256:${string}`;
|
|
26
|
+
readonly reference: string;
|
|
27
|
+
};
|
|
28
|
+
readonly endpoint: {
|
|
29
|
+
readonly class: "local" | "remote";
|
|
30
|
+
readonly transport: "fd" | "http" | "https" | "npipe" | "ssh" | "tcp" | "unix";
|
|
31
|
+
};
|
|
32
|
+
readonly context_selection: "auto-local" | "explicit";
|
|
33
|
+
readonly platform: {
|
|
34
|
+
readonly architecture: "amd64" | "arm64";
|
|
35
|
+
readonly os: "linux";
|
|
36
|
+
};
|
|
37
|
+
readonly prepared_evidence_helper?: PreparedEvidenceHelperReceipt;
|
|
38
|
+
readonly target_config: {
|
|
39
|
+
readonly context: string;
|
|
40
|
+
readonly dockerCommand: string;
|
|
41
|
+
readonly evidenceDestination: string;
|
|
42
|
+
readonly evidenceHelperBaseImage?: string;
|
|
43
|
+
readonly preparedEvidenceHelper?: PreparedEvidenceHelperReceipt;
|
|
44
|
+
readonly preparedArtifactMappings?: readonly PreparedArtifactMapping[];
|
|
45
|
+
readonly timeoutMs: number;
|
|
46
|
+
readonly version: typeof TARGET_DEFAULT_CONFIG_STDIN_VERSION;
|
|
47
|
+
};
|
|
48
|
+
readonly target_config_digest: `sha256:${string}`;
|
|
49
|
+
readonly version: typeof TARGET_CONFIG_RESOLUTION_VERSION;
|
|
50
|
+
}
|
|
51
|
+
export interface ResolveTargetConfigDependencies {
|
|
52
|
+
readonly prepareEvidenceExportHelper?: (input: PrepareEvidenceHelperInput) => Promise<PreparedEvidenceHelperReceipt>;
|
|
53
|
+
}
|
|
54
|
+
export declare const createCanonicalTargetConfigBytes: (targetConfig: TargetConfigResolution["target_config"]) => string;
|
|
55
|
+
export declare const createTargetConfigDigest: (targetConfig: TargetConfigResolution["target_config"]) => `sha256:${string}`;
|
|
56
|
+
export declare const createTargetConfigResolutionBytes: (resolution: TargetConfigResolution) => string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { TARGET_CONFIG_PREPARED_PLAN_VERSION } from "./targetConfigPreparedPlan.js";
|
|
3
|
+
export const TARGET_CONFIG_RESOLUTION_VERSION = "spawnfile.target-config-resolution.v1";
|
|
4
|
+
export const TARGET_CONFIG_DIGEST_VERSION = "spawnfile.target-config-digest.v1";
|
|
5
|
+
/** Exact version for the strict `resolve_config --prepared-plan` document. */
|
|
6
|
+
export const TARGET_CONFIG_PREPARED_PLAN_ABI_VERSION = TARGET_CONFIG_PREPARED_PLAN_VERSION;
|
|
7
|
+
export const STANDARD_WORLD_BASE_IMAGE = "node:22-bookworm-slim";
|
|
8
|
+
const canonicalJson = (value) => {
|
|
9
|
+
if (value === null)
|
|
10
|
+
return "null";
|
|
11
|
+
if (typeof value === "string" || typeof value === "boolean")
|
|
12
|
+
return JSON.stringify(value);
|
|
13
|
+
if (typeof value === "number") {
|
|
14
|
+
if (!Number.isFinite(value))
|
|
15
|
+
throw new TypeError("Target configuration is not JSON");
|
|
16
|
+
return JSON.stringify(value);
|
|
17
|
+
}
|
|
18
|
+
if (Array.isArray(value))
|
|
19
|
+
return `[${value.map(canonicalJson).join(",")}]`;
|
|
20
|
+
if (typeof value !== "object")
|
|
21
|
+
throw new TypeError("Target configuration is not JSON");
|
|
22
|
+
const record = value;
|
|
23
|
+
return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${canonicalJson(record[key])}`).join(",")}}`;
|
|
24
|
+
};
|
|
25
|
+
export const createCanonicalTargetConfigBytes = (targetConfig) => canonicalJson(targetConfig);
|
|
26
|
+
export const createTargetConfigDigest = (targetConfig) => `sha256:${createHash("sha256")
|
|
27
|
+
.update(`${TARGET_CONFIG_DIGEST_VERSION}\0`, "utf8")
|
|
28
|
+
.update(createCanonicalTargetConfigBytes(targetConfig), "utf8")
|
|
29
|
+
.digest("hex")}`;
|
|
30
|
+
export const createTargetConfigResolutionBytes = (resolution) => JSON.stringify(resolution);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { DockerTargetExecFile } from "../target/dockerTarget.js";
|
|
2
|
+
export declare const exactJson: (source: string, keys: readonly string[], failureMessage: string) => Record<string, unknown>;
|
|
3
|
+
export declare const executeDocker: (execFile: DockerTargetExecFile, command: string, context: string, args: string[], timeout: number, signal: AbortSignal | undefined, failureMessage: string) => Promise<string>;
|
|
4
|
+
export declare const resolveCurrentDockerContext: (execFile: DockerTargetExecFile, dockerCommand: string, timeoutMs: number, signal: AbortSignal | undefined) => Promise<string>;
|