spawnfile 0.1.14 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -159
- package/dist/audit/checksShared.d.ts +1 -1
- package/dist/auth/importers.d.ts +10 -0
- package/dist/auth/importers.js +29 -4
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.js +1 -0
- package/dist/auth/paths.d.ts +1 -1
- package/dist/auth/profileStore.js +9 -9
- 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/types.d.ts +1 -1
- package/dist/cli/authCommands.d.ts +1 -1
- package/dist/cli/authCommands.js +9 -0
- package/dist/cli/canaryCutoverCommand.d.ts +2 -0
- package/dist/cli/canaryCutoverCommand.js +30 -0
- package/dist/cli/capabilitiesCommand.d.ts +3 -0
- package/dist/cli/capabilitiesCommand.js +12 -0
- package/dist/cli/capabilitiesReceipt.d.ts +56 -0
- package/dist/cli/capabilitiesReceipt.js +56 -0
- package/dist/cli/compileBuildCommands.js +13 -0
- package/dist/cli/composedLifecycleContractSet.d.ts +21 -0
- package/dist/cli/composedLifecycleContractSet.js +204 -0
- package/dist/cli/devCommands.js +2 -0
- package/dist/cli/downCommand.js +19 -8
- 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/lifecycleMachine.d.ts +7 -1
- package/dist/cli/lifecycleMachine.js +2 -2
- package/dist/cli/paideiaDelegation.d.ts +17 -0
- package/dist/cli/paideiaDelegation.js +210 -0
- package/dist/cli/paideiaSupervisor.d.ts +17 -0
- package/dist/cli/paideiaSupervisor.js +48 -0
- package/dist/cli/productStateCloneCommand.d.ts +2 -0
- package/dist/cli/productStateCloneCommand.js +34 -0
- package/dist/cli/runCli.d.ts +13 -3
- package/dist/cli/runCli.js +37 -9
- 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 +61 -0
- package/dist/cli/upCommand.js +35 -6
- 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/workspaceResourceMigrationCommand.d.ts +8 -0
- package/dist/cli/workspaceResourceMigrationCommand.js +36 -0
- package/dist/compiler/buildCompilePlanTeams.d.ts +1 -1
- package/dist/compiler/buildCompilePlanTeams.js +6 -1
- package/dist/compiler/compilePlanHelpers.js +3 -0
- package/dist/compiler/compileProject.d.ts +2 -0
- package/dist/compiler/compileProject.js +5 -1
- package/dist/compiler/compileProjectSupport.js +9 -0
- package/dist/compiler/containerArtifacts.d.ts +3 -1
- package/dist/compiler/containerArtifacts.js +92 -40
- package/dist/compiler/containerArtifactsPlans.d.ts +1 -1
- package/dist/compiler/containerArtifactsPlans.js +24 -7
- package/dist/compiler/containerArtifactsRender.d.ts +2 -1
- package/dist/compiler/containerArtifactsRender.js +91 -58
- package/dist/compiler/containerArtifactsTypes.d.ts +8 -0
- package/dist/compiler/containerBackedMountRender.d.ts +56 -0
- package/dist/compiler/containerBackedMountRender.js +101 -0
- package/dist/compiler/containerDaimonBrokerRender.d.ts +112 -0
- package/dist/compiler/containerDaimonBrokerRender.js +191 -0
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +38 -0
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +108 -0
- package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +172 -0
- package/dist/compiler/containerDaimonGrokWorkerRender.js +268 -0
- package/dist/compiler/containerDaimonOwnershipGuardRender.d.ts +12 -0
- package/dist/compiler/containerDaimonOwnershipGuardRender.js +191 -0
- package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +24 -0
- package/dist/compiler/containerDaimonUidEntrypointRender.js +297 -0
- package/dist/compiler/containerEntrypointRender.d.ts +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 +22 -1
- package/dist/compiler/containerTargetResources.js +94 -2
- package/dist/compiler/containerVolumeBootstrap.d.ts +3 -0
- package/dist/compiler/containerVolumeBootstrap.js +3 -0
- package/dist/compiler/containerWorkspaceResourceRender.js +49 -1
- package/dist/compiler/daimonTelemetryArtifacts.d.ts +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 +3 -0
- package/dist/compiler/index.js +3 -0
- package/dist/compiler/initProject.d.ts +2 -0
- package/dist/compiler/initProject.js +39 -1
- package/dist/compiler/localMoltnetAuthority.d.ts +64 -0
- package/dist/compiler/localMoltnetAuthority.js +177 -0
- package/dist/compiler/memoryArtifacts.d.ts +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 +10 -0
- package/dist/compiler/moltnetArtifacts.d.ts +1 -1
- package/dist/compiler/moltnetArtifacts.js +52 -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/runProject.d.ts +4 -2
- package/dist/compiler/runProject.js +32 -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/training/broker/declaration.d.ts +45 -0
- package/dist/compiler/training/broker/declaration.js +55 -0
- package/dist/compiler/training/broker/entrypoint.d.ts +39 -0
- package/dist/compiler/training/broker/entrypoint.js +111 -0
- package/dist/compiler/training/broker/index.d.ts +10 -0
- package/dist/compiler/training/broker/index.js +10 -0
- package/dist/compiler/training/broker/main.d.ts +2 -0
- package/dist/compiler/training/broker/main.js +14 -0
- package/dist/compiler/training/broker/paths.d.ts +196 -0
- package/dist/compiler/training/broker/paths.js +241 -0
- package/dist/compiler/training/broker/processes.d.ts +42 -0
- package/dist/compiler/training/broker/processes.js +99 -0
- package/dist/compiler/training/broker/projection.d.ts +51 -0
- package/dist/compiler/training/broker/projection.js +76 -0
- package/dist/compiler/training/broker/provisioning.d.ts +87 -0
- package/dist/compiler/training/broker/provisioning.js +213 -0
- package/dist/compiler/training/broker/receipt.d.ts +77 -0
- package/dist/compiler/training/broker/receipt.js +110 -0
- package/dist/compiler/training/broker/registration.d.ts +41 -0
- package/dist/compiler/training/broker/registration.js +102 -0
- package/dist/compiler/training/broker/runtime.d.ts +25 -0
- package/dist/compiler/training/broker/runtime.js +173 -0
- package/dist/compiler/training/broker/seccompRoutes.d.ts +31 -0
- package/dist/compiler/training/broker/seccompRoutes.js +36 -0
- package/dist/compiler/training/broker/supervisor.d.ts +109 -0
- package/dist/compiler/training/broker/supervisor.js +173 -0
- package/dist/compiler/training/container/contract.d.ts +31 -0
- package/dist/compiler/training/container/contract.js +33 -0
- package/dist/compiler/training/container/index.d.ts +4 -0
- package/dist/compiler/training/container/index.js +2 -0
- package/dist/compiler/training/container/launch.d.ts +18 -0
- package/dist/compiler/training/container/launch.js +173 -0
- package/dist/compiler/training/container/prepare.d.ts +8 -0
- package/dist/compiler/training/container/prepare.js +80 -0
- package/dist/compiler/training/container/process.d.ts +14 -0
- package/dist/compiler/training/container/process.js +70 -0
- package/dist/compiler/training/container/security.d.ts +36 -0
- package/dist/compiler/training/container/security.js +58 -0
- package/dist/compiler/training/context.d.ts +7 -0
- package/dist/compiler/training/context.js +93 -0
- package/dist/compiler/training/contract.d.ts +142 -0
- package/dist/compiler/training/contract.js +34 -0
- package/dist/compiler/training/index.d.ts +4 -0
- package/dist/compiler/training/index.js +3 -0
- package/dist/compiler/training/preparation/assets/Dockerfile +98 -0
- package/dist/compiler/training/preparation/assets/package-lock.json +3787 -0
- package/dist/compiler/training/preparation/broker.d.ts +21 -0
- package/dist/compiler/training/preparation/broker.js +43 -0
- package/dist/compiler/training/preparation/contextModes.d.ts +12 -0
- package/dist/compiler/training/preparation/contextModes.js +38 -0
- package/dist/compiler/training/preparation/contract.d.ts +182 -0
- package/dist/compiler/training/preparation/contract.js +94 -0
- package/dist/compiler/training/preparation/copyAssets.d.ts +1 -0
- package/dist/compiler/training/preparation/copyAssets.js +8 -0
- package/dist/compiler/training/preparation/daimonParent.d.ts +42 -0
- package/dist/compiler/training/preparation/daimonParent.js +114 -0
- package/dist/compiler/training/preparation/files.d.ts +25 -0
- package/dist/compiler/training/preparation/files.js +85 -0
- package/dist/compiler/training/preparation/image.d.ts +28 -0
- package/dist/compiler/training/preparation/image.js +102 -0
- package/dist/compiler/training/preparation/index.d.ts +3 -0
- package/dist/compiler/training/preparation/index.js +2 -0
- package/dist/compiler/training/preparation/inputs.d.ts +23 -0
- package/dist/compiler/training/preparation/inputs.js +93 -0
- package/dist/compiler/training/preparation/prepare.d.ts +33 -0
- package/dist/compiler/training/preparation/prepare.js +186 -0
- package/dist/compiler/training/preparation/scratch.d.ts +19 -0
- package/dist/compiler/training/preparation/scratch.js +48 -0
- package/dist/compiler/training/repair/compatibility.d.ts +11 -0
- package/dist/compiler/training/repair/compatibility.js +34 -0
- package/dist/compiler/training/repair/contract.d.ts +506 -0
- package/dist/compiler/training/repair/contract.js +31 -0
- package/dist/compiler/training/repair/index.d.ts +3 -0
- package/dist/compiler/training/repair/index.js +3 -0
- package/dist/compiler/training/repair/prepare.d.ts +230 -0
- package/dist/compiler/training/repair/prepare.js +74 -0
- package/dist/compiler/training/repair/witness.d.ts +203 -0
- package/dist/compiler/training/repair/witness.js +42 -0
- package/dist/compiler/types.d.ts +2 -0
- package/dist/compiler/upProject.d.ts +26 -1
- package/dist/compiler/upProject.js +117 -178
- 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 +3 -0
- package/dist/compiler/workspaceBundleArtifacts.js +106 -0
- package/dist/compiler/workspaceResources.d.ts +4 -1
- package/dist/compiler/workspaceResources.js +12 -7
- package/dist/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/dockerLogs.js +4 -1
- package/dist/deployment/dockerManager.js +9 -3
- package/dist/deployment/dockerProbeGateway.d.ts +17 -0
- package/dist/deployment/dockerProbeGateway.js +17 -2
- package/dist/deployment/downDeployment.d.ts +5 -0
- package/dist/deployment/downDeployment.js +109 -8
- package/dist/deployment/downReceiptTypes.d.ts +17 -2
- package/dist/deployment/downReceiptTypes.js +17 -2
- package/dist/deployment/index.d.ts +4 -0
- package/dist/deployment/index.js +4 -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/productStateClone.d.ts +43 -0
- package/dist/deployment/productStateClone.js +319 -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/consumeImage.d.ts +2 -0
- package/dist/distribution/consumeImage.js +98 -73
- package/dist/distribution/consumeImageDaimonDocker.d.ts +3 -0
- package/dist/distribution/consumeImageDaimonDocker.js +45 -0
- package/dist/distribution/consumeImageLifecycle.d.ts +17 -0
- package/dist/distribution/consumeImageLifecycle.js +231 -0
- package/dist/distribution/consumeImageSupport.d.ts +12 -0
- package/dist/distribution/consumeImageSupport.js +15 -0
- package/dist/distribution/distributionReportSchema.d.ts +11 -1
- package/dist/distribution/distributionReportSchema.js +15 -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/types.d.ts +14 -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/io.d.ts +2 -0
- package/dist/filesystem/io.js +16 -1
- package/dist/manifest/executionSchemas.d.ts +27 -0
- package/dist/manifest/executionSchemas.js +21 -2
- package/dist/manifest/mcpSchemas.d.ts +1 -0
- package/dist/manifest/mcpSchemas.js +3 -0
- package/dist/manifest/renderSpawnfileNetworks.js +11 -0
- package/dist/manifest/renderSpawnfileWorkspace.js +5 -0
- package/dist/manifest/scheduleSchemas.d.ts +3 -1
- package/dist/manifest/scheduleSchemas.js +91 -5
- package/dist/manifest/schemas.d.ts +237 -12
- package/dist/manifest/schemas.js +5 -2
- 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 +17 -3
- 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/workspaceSchemas.d.ts +16 -0
- package/dist/manifest/workspaceSchemas.js +11 -0
- package/dist/report/types.d.ts +34 -4
- package/dist/runtime/common.d.ts +28 -1
- package/dist/runtime/common.js +33 -3
- package/dist/runtime/container.js +49 -33
- package/dist/runtime/daimon/adapter.d.ts +14 -0
- package/dist/runtime/daimon/adapter.js +243 -0
- package/dist/runtime/daimon/attention.d.ts +8 -0
- package/dist/runtime/daimon/attention.js +32 -0
- package/dist/runtime/daimon/config.d.ts +25 -0
- package/dist/runtime/daimon/config.js +272 -0
- package/dist/runtime/daimon/contractManifest.d.ts +295 -0
- package/dist/runtime/daimon/contractManifest.js +319 -0
- package/dist/runtime/daimon/grokModel.d.ts +19 -0
- package/dist/runtime/daimon/grokModel.js +33 -0
- package/dist/runtime/daimon/grokWorkerConfigBytes.d.ts +26 -0
- package/dist/runtime/daimon/grokWorkerConfigBytes.js +36 -0
- package/dist/runtime/daimon/grokWorkerContract.d.ts +22 -0
- package/dist/runtime/daimon/grokWorkerContract.js +48 -0
- package/dist/runtime/daimon/memory.d.ts +57 -0
- package/dist/runtime/daimon/memory.js +125 -0
- package/dist/runtime/daimon/runAuth.d.ts +51 -0
- package/dist/runtime/daimon/runAuth.js +279 -0
- package/dist/runtime/daimon/runtimeIdentity.d.ts +22 -0
- package/dist/runtime/daimon/runtimeIdentity.js +22 -0
- package/dist/runtime/daimon/scheduleAuthority.d.ts +3 -0
- package/dist/runtime/daimon/scheduleAuthority.js +17 -0
- package/dist/runtime/index.d.ts +4 -0
- package/dist/runtime/index.js +4 -0
- package/dist/runtime/install.d.ts +3 -0
- package/dist/runtime/install.js +3 -0
- package/dist/runtime/localDaimonAuthority.d.ts +11 -0
- package/dist/runtime/localDaimonAuthority.js +77 -0
- package/dist/runtime/mnemeMcp.d.ts +13 -0
- package/dist/runtime/mnemeMcp.js +26 -0
- package/dist/runtime/openclaw/adapter.js +2 -2
- package/dist/runtime/pi/adapter.d.ts +0 -1
- package/dist/runtime/pi/adapter.js +2 -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/picoclaw/adapter.js +2 -2
- package/dist/runtime/registry.d.ts +3 -0
- package/dist/runtime/registry.js +19 -2
- package/dist/runtime/scheduleUtils.d.ts +1 -0
- package/dist/runtime/scheduleUtils.js +5 -1
- package/dist/runtime/types.d.ts +25 -0
- package/dist/runtime/usageLedger.d.ts +158 -0
- package/dist/runtime/usageLedger.js +269 -0
- package/dist/runtime/usageLedgerRead.d.ts +48 -0
- package/dist/runtime/usageLedgerRead.js +102 -0
- package/dist/runtime/usageRequestLedger.d.ts +42 -0
- package/dist/runtime/usageRequestLedger.js +72 -0
- package/dist/shared/daimonCodexDocker.d.ts +32 -0
- package/dist/shared/daimonCodexDocker.js +120 -0
- package/dist/shared/daimonGrokSeccompProfile.d.ts +10 -0
- package/dist/shared/daimonGrokSeccompProfile.js +11 -0
- package/dist/shared/index.d.ts +2 -0
- package/dist/shared/index.js +2 -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 +4 -2
- 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 +2 -3
- 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/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 +5 -2
- 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
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { CREDENTIAL_PROVISIONING_REQUEST_VERSION } from "../auth/index.js";
|
|
2
|
+
import { PREPARED_EVIDENCE_HELPER_RECEIPT_VERSION } from "../evidenceExportHelper/index.js";
|
|
3
|
+
import { TARGET_PUBLIC_ARTIFACT_SNAPSHOT_NOT_PRESENT_VERSION, TARGET_PUBLIC_ARTIFACT_SNAPSHOT_REQUEST_VERSION, TARGET_PUBLIC_ARTIFACT_SNAPSHOT_VERSION } from "../target/publicArtifactSnapshot.js";
|
|
4
|
+
import { COMPOSED_LIFECYCLE_CONTRACT_SET_VERSION, type ComposedLifecycleCommandContract } from "./composedLifecycleContractSet.js";
|
|
5
|
+
import { TARGET_DEFAULT_CONFIG_STDIN_VERSION } from "./targetDefaultConfigStdin.js";
|
|
6
|
+
import { TARGET_CONFIG_DIGEST_VERSION, TARGET_CONFIG_PREPARED_PLAN_ABI_VERSION, TARGET_CONFIG_RESOLUTION_VERSION } from "./targetConfigResolver.js";
|
|
7
|
+
import { TARGET_CONFIG_RESOLVER_COMMAND } from "./targetConfigResolverCommand.js";
|
|
8
|
+
export { COMPOSED_LIFECYCLE_CONTRACT_SET_VERSION } from "./composedLifecycleContractSet.js";
|
|
9
|
+
export declare const CAPABILITIES_RECEIPT_VERSION: "spawnfile.capabilities.v1";
|
|
10
|
+
export interface CapabilitiesReceipt {
|
|
11
|
+
readonly capabilities: {
|
|
12
|
+
readonly evidence_export_helper: {
|
|
13
|
+
readonly identity: "docker-image-config-digest";
|
|
14
|
+
readonly local_context_only: true;
|
|
15
|
+
readonly prepare_command: readonly [
|
|
16
|
+
"helper",
|
|
17
|
+
"prepare-evidence-export",
|
|
18
|
+
"--context",
|
|
19
|
+
"<name>",
|
|
20
|
+
"--json"
|
|
21
|
+
];
|
|
22
|
+
readonly receipt_version: typeof PREPARED_EVIDENCE_HELPER_RECEIPT_VERSION;
|
|
23
|
+
readonly resolver_option: "--prepare-evidence-helper";
|
|
24
|
+
readonly provisioning: "spawnfile-owned-target-local";
|
|
25
|
+
};
|
|
26
|
+
readonly composed_lifecycle: {
|
|
27
|
+
readonly command_set_version: typeof COMPOSED_LIFECYCLE_CONTRACT_SET_VERSION;
|
|
28
|
+
readonly commands: readonly ComposedLifecycleCommandContract[];
|
|
29
|
+
readonly complete: true;
|
|
30
|
+
};
|
|
31
|
+
readonly optional_model_auth: {
|
|
32
|
+
readonly request_version: typeof CREDENTIAL_PROVISIONING_REQUEST_VERSION;
|
|
33
|
+
readonly required: false;
|
|
34
|
+
};
|
|
35
|
+
readonly target_config_resolver: {
|
|
36
|
+
readonly command: readonly ["target", typeof TARGET_CONFIG_RESOLVER_COMMAND];
|
|
37
|
+
readonly output_version: typeof TARGET_CONFIG_RESOLUTION_VERSION;
|
|
38
|
+
readonly prepared_plan_version: typeof TARGET_CONFIG_PREPARED_PLAN_ABI_VERSION;
|
|
39
|
+
readonly target_config_digest_version: typeof TARGET_CONFIG_DIGEST_VERSION;
|
|
40
|
+
readonly target_config_version: typeof TARGET_DEFAULT_CONFIG_STDIN_VERSION;
|
|
41
|
+
};
|
|
42
|
+
readonly terminal_public_artifact: {
|
|
43
|
+
readonly not_present_version: typeof TARGET_PUBLIC_ARTIFACT_SNAPSHOT_NOT_PRESENT_VERSION;
|
|
44
|
+
readonly request_version: typeof TARGET_PUBLIC_ARTIFACT_SNAPSHOT_REQUEST_VERSION;
|
|
45
|
+
readonly snapshot_version: typeof TARGET_PUBLIC_ARTIFACT_SNAPSHOT_VERSION;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
readonly implementation: {
|
|
49
|
+
readonly cli: "spawnfile";
|
|
50
|
+
readonly package: "spawnfile";
|
|
51
|
+
readonly version: string;
|
|
52
|
+
};
|
|
53
|
+
readonly version: typeof CAPABILITIES_RECEIPT_VERSION;
|
|
54
|
+
}
|
|
55
|
+
export declare const createCapabilitiesReceipt: (packageVersion: string) => CapabilitiesReceipt;
|
|
56
|
+
export declare const createCapabilitiesReceiptBytes: (receipt: CapabilitiesReceipt) => string;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { CREDENTIAL_PROVISIONING_REQUEST_VERSION } from "../auth/index.js";
|
|
2
|
+
import { PREPARED_EVIDENCE_HELPER_RECEIPT_VERSION } from "../evidenceExportHelper/index.js";
|
|
3
|
+
import { TARGET_PUBLIC_ARTIFACT_SNAPSHOT_NOT_PRESENT_VERSION, TARGET_PUBLIC_ARTIFACT_SNAPSHOT_REQUEST_VERSION, TARGET_PUBLIC_ARTIFACT_SNAPSHOT_VERSION, } from "../target/publicArtifactSnapshot.js";
|
|
4
|
+
import { COMPOSED_LIFECYCLE_COMMANDS, COMPOSED_LIFECYCLE_CONTRACT_SET_VERSION, } from "./composedLifecycleContractSet.js";
|
|
5
|
+
import { TARGET_DEFAULT_CONFIG_STDIN_VERSION, } from "./targetDefaultConfigStdin.js";
|
|
6
|
+
import { TARGET_CONFIG_DIGEST_VERSION, TARGET_CONFIG_PREPARED_PLAN_ABI_VERSION, TARGET_CONFIG_RESOLUTION_VERSION, } from "./targetConfigResolver.js";
|
|
7
|
+
import { TARGET_CONFIG_RESOLVER_COMMAND } from "./targetConfigResolverCommand.js";
|
|
8
|
+
export { COMPOSED_LIFECYCLE_CONTRACT_SET_VERSION } from "./composedLifecycleContractSet.js";
|
|
9
|
+
export const CAPABILITIES_RECEIPT_VERSION = "spawnfile.capabilities.v1";
|
|
10
|
+
const PACKAGE_VERSION = /^[0-9]+\.[0-9]+\.[0-9]+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/u;
|
|
11
|
+
export const createCapabilitiesReceipt = (packageVersion) => {
|
|
12
|
+
if (!PACKAGE_VERSION.test(packageVersion))
|
|
13
|
+
throw new TypeError("Invalid Spawnfile package version");
|
|
14
|
+
return Object.freeze({
|
|
15
|
+
capabilities: Object.freeze({
|
|
16
|
+
evidence_export_helper: Object.freeze({
|
|
17
|
+
identity: "docker-image-config-digest",
|
|
18
|
+
local_context_only: true,
|
|
19
|
+
prepare_command: Object.freeze([
|
|
20
|
+
"helper", "prepare-evidence-export", "--context", "<name>", "--json",
|
|
21
|
+
]),
|
|
22
|
+
receipt_version: PREPARED_EVIDENCE_HELPER_RECEIPT_VERSION,
|
|
23
|
+
resolver_option: "--prepare-evidence-helper",
|
|
24
|
+
provisioning: "spawnfile-owned-target-local",
|
|
25
|
+
}),
|
|
26
|
+
composed_lifecycle: Object.freeze({
|
|
27
|
+
command_set_version: COMPOSED_LIFECYCLE_CONTRACT_SET_VERSION,
|
|
28
|
+
commands: COMPOSED_LIFECYCLE_COMMANDS,
|
|
29
|
+
complete: true,
|
|
30
|
+
}),
|
|
31
|
+
optional_model_auth: Object.freeze({
|
|
32
|
+
request_version: CREDENTIAL_PROVISIONING_REQUEST_VERSION,
|
|
33
|
+
required: false,
|
|
34
|
+
}),
|
|
35
|
+
target_config_resolver: Object.freeze({
|
|
36
|
+
command: Object.freeze(["target", TARGET_CONFIG_RESOLVER_COMMAND]),
|
|
37
|
+
output_version: TARGET_CONFIG_RESOLUTION_VERSION,
|
|
38
|
+
prepared_plan_version: TARGET_CONFIG_PREPARED_PLAN_ABI_VERSION,
|
|
39
|
+
target_config_digest_version: TARGET_CONFIG_DIGEST_VERSION,
|
|
40
|
+
target_config_version: TARGET_DEFAULT_CONFIG_STDIN_VERSION,
|
|
41
|
+
}),
|
|
42
|
+
terminal_public_artifact: Object.freeze({
|
|
43
|
+
not_present_version: TARGET_PUBLIC_ARTIFACT_SNAPSHOT_NOT_PRESENT_VERSION,
|
|
44
|
+
request_version: TARGET_PUBLIC_ARTIFACT_SNAPSHOT_REQUEST_VERSION,
|
|
45
|
+
snapshot_version: TARGET_PUBLIC_ARTIFACT_SNAPSHOT_VERSION,
|
|
46
|
+
}),
|
|
47
|
+
}),
|
|
48
|
+
implementation: Object.freeze({
|
|
49
|
+
cli: "spawnfile",
|
|
50
|
+
package: "spawnfile",
|
|
51
|
+
version: packageVersion,
|
|
52
|
+
}),
|
|
53
|
+
version: CAPABILITIES_RECEIPT_VERSION,
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
export const createCapabilitiesReceiptBytes = (receipt) => JSON.stringify(receipt);
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
import { describeBackedMountRequirement } from "../compiler/containerBackedMountRender.js";
|
|
2
|
+
/**
|
|
3
|
+
* Durable mounts are only attached by `spawnfile run`/`up`/`deploy`. A
|
|
4
|
+
* hand-rolled `docker run` of the built image gets none of them and the
|
|
5
|
+
* entrypoint now refuses to start, so say up front how many the launcher owes.
|
|
6
|
+
*/
|
|
7
|
+
const reportDurableMounts = (report, streams) => {
|
|
8
|
+
const line = describeBackedMountRequirement(report.container?.persistent_mounts ?? []);
|
|
9
|
+
if (line)
|
|
10
|
+
streams.stdout(line);
|
|
11
|
+
};
|
|
1
12
|
export const registerCompileBuildCommands = (program, handlers, streams) => {
|
|
2
13
|
program
|
|
3
14
|
.command("compile")
|
|
@@ -12,6 +23,7 @@ export const registerCompileBuildCommands = (program, handlers, streams) => {
|
|
|
12
23
|
});
|
|
13
24
|
streams.stdout(`compiled to ${result.outputDirectory}`);
|
|
14
25
|
streams.stdout(`report: ${result.reportPath}`);
|
|
26
|
+
reportDurableMounts(result.report, streams);
|
|
15
27
|
});
|
|
16
28
|
program
|
|
17
29
|
.command("build")
|
|
@@ -31,5 +43,6 @@ export const registerCompileBuildCommands = (program, handlers, streams) => {
|
|
|
31
43
|
streams.stdout(`built image ${result.imageTag}`);
|
|
32
44
|
streams.stdout(`compiled to ${result.outputDirectory}`);
|
|
33
45
|
streams.stdout(`report: ${result.reportPath}`);
|
|
46
|
+
reportDurableMounts(result.report, streams);
|
|
34
47
|
});
|
|
35
48
|
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const COMPOSED_LIFECYCLE_CONTRACT_SET_VERSION: "spawnfile.composed-lifecycle-contract-set.v1";
|
|
2
|
+
export type LifecycleCommandStdout = "json" | "text";
|
|
3
|
+
/**
|
|
4
|
+
* One closed machine-facing command surface. Empty version lists are
|
|
5
|
+
* intentional: they mean the command has no versioned value in that role.
|
|
6
|
+
*/
|
|
7
|
+
export interface ComposedLifecycleCommandContract {
|
|
8
|
+
readonly argv: readonly string[];
|
|
9
|
+
readonly invocation_versions: readonly string[];
|
|
10
|
+
readonly pending_versions: readonly string[];
|
|
11
|
+
readonly receipt_versions: readonly string[];
|
|
12
|
+
readonly request_versions: readonly string[];
|
|
13
|
+
readonly stdin_versions: readonly string[];
|
|
14
|
+
readonly stdout: LifecycleCommandStdout;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Closed inventory for consumers that compose only public CLI and receipt
|
|
18
|
+
* contracts. `argv` records one canonical invocation form, not every
|
|
19
|
+
* presentation-only optional flag accepted by Commander.
|
|
20
|
+
*/
|
|
21
|
+
export declare const COMPOSED_LIFECYCLE_COMMANDS: readonly ComposedLifecycleCommandContract[];
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { CREDENTIAL_PROVISIONING_RECEIPT_VERSION, CREDENTIAL_PROVISIONING_REQUEST_VERSION, RESOLVED_WORLD_GRANTS_VERSION, } from "../auth/index.js";
|
|
2
|
+
import { DOWN_RECEIPT_VERSION, EXPORT_INDEX_VERSION, LIFECYCLE_INVOCATION_VERSION, LIFECYCLE_LOOKUP_VERSION, UP_RECEIPT_VERSION, } from "../deployment/index.js";
|
|
3
|
+
import { PREPARED_EVIDENCE_HELPER_RECEIPT_VERSION } from "../evidenceExportHelper/index.js";
|
|
4
|
+
import { COMPOSED_PREPARATION_RECEIPT_VERSION, COMPOSED_PREPARATION_REQUEST_VERSION, SELECTED_TARGET_VERSION, TARGET_EXPORT_INDEX_VERSION, TARGET_OPERATION_LOOKUP_VERSION, TARGET_RESOURCE_RECEIPT_VERSION, TARGET_RESOURCE_REQUEST_VERSION, TARGET_TOPOLOGY_ATTESTATION_REQUEST_VERSION, TARGET_TOPOLOGY_RECEIPT_VERSION, TARGET_WORLD_CLOCK_RECEIPT_VERSION, TARGET_WORLD_CLOCK_REQUEST_VERSION, TARGET_WORLD_READINESS_RECEIPT_VERSION, TARGET_WORLD_READINESS_REQUEST_VERSION, } from "../target/index.js";
|
|
5
|
+
import { TARGET_LOCAL_BUNDLE_LOOKUP_VERSION, TARGET_LOCAL_BUNDLE_PREPARE_RECEIPT_VERSION, TARGET_LOCAL_BUNDLE_PREPARE_REQUEST_VERSION, } from "../target/containerBundleContracts.js";
|
|
6
|
+
import { TARGET_LOCAL_CONTAINER_BUNDLE_POLICY } from "../target/containerBundlePolicy.js";
|
|
7
|
+
import { TARGET_PUBLIC_ARTIFACT_SNAPSHOT_NOT_PRESENT_VERSION, TARGET_PUBLIC_ARTIFACT_SNAPSHOT_REQUEST_VERSION, TARGET_PUBLIC_ARTIFACT_SNAPSHOT_VERSION, } from "../target/publicArtifactSnapshot.js";
|
|
8
|
+
import { TARGET_TOPOLOGY_ACTIVATION_RECEIPT_VERSION } from "../target/topologyActivation.js";
|
|
9
|
+
import { LIFECYCLE_PLAN_REQUEST_VERSION, } from "./lifecyclePlan.js";
|
|
10
|
+
import { TARGET_DEFAULT_CONFIG_STDIN_VERSION, TARGET_LOOKUP_CONFIG_STDIN_VERSION, } from "./targetDefaultConfigStdin.js";
|
|
11
|
+
import { TARGET_CONFIG_PREPARED_PLAN_ABI_VERSION, TARGET_CONFIG_RESOLUTION_VERSION, } from "./targetConfigResolver.js";
|
|
12
|
+
import { TARGET_SECRET_SOURCE_GRANT_REQUEST_VERSION, TARGET_SECRET_SOURCE_RECEIPT_VERSION, TARGET_SECRET_SOURCE_REQUEST_VERSION, } from "./targetSecretSourceInput.js";
|
|
13
|
+
export const COMPOSED_LIFECYCLE_CONTRACT_SET_VERSION = "spawnfile.composed-lifecycle-contract-set.v1";
|
|
14
|
+
const immutable = (values = []) => Object.freeze([...values]);
|
|
15
|
+
const command = (argv, versions) => Object.freeze({
|
|
16
|
+
argv: immutable(argv),
|
|
17
|
+
invocation_versions: immutable(versions.invocation_versions),
|
|
18
|
+
pending_versions: immutable(versions.pending_versions),
|
|
19
|
+
receipt_versions: immutable(versions.receipt_versions),
|
|
20
|
+
request_versions: immutable(versions.request_versions),
|
|
21
|
+
stdin_versions: immutable(versions.stdin_versions),
|
|
22
|
+
stdout: versions.stdout,
|
|
23
|
+
});
|
|
24
|
+
const targetMutation = (operation, receiptVersions = [TARGET_RESOURCE_RECEIPT_VERSION]) => command(["target", "--config", "-", operation, "<request-file>"], {
|
|
25
|
+
receipt_versions: receiptVersions,
|
|
26
|
+
request_versions: [TARGET_RESOURCE_REQUEST_VERSION],
|
|
27
|
+
stdin_versions: [TARGET_DEFAULT_CONFIG_STDIN_VERSION],
|
|
28
|
+
stdout: "json",
|
|
29
|
+
});
|
|
30
|
+
const machineLifecycle = (argv, receiptVersion) => command(argv, {
|
|
31
|
+
invocation_versions: [LIFECYCLE_INVOCATION_VERSION],
|
|
32
|
+
pending_versions: [LIFECYCLE_LOOKUP_VERSION],
|
|
33
|
+
receipt_versions: [receiptVersion],
|
|
34
|
+
stdout: "json",
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* Closed inventory for consumers that compose only public CLI and receipt
|
|
38
|
+
* contracts. `argv` records one canonical invocation form, not every
|
|
39
|
+
* presentation-only optional flag accepted by Commander.
|
|
40
|
+
*/
|
|
41
|
+
export const COMPOSED_LIFECYCLE_COMMANDS = Object.freeze([
|
|
42
|
+
command(["capabilities", "--json"], {
|
|
43
|
+
receipt_versions: ["spawnfile.capabilities.v1"], stdout: "json",
|
|
44
|
+
}),
|
|
45
|
+
command(["validate", "<project>"], { stdout: "text" }),
|
|
46
|
+
command(["compile", "<project>", "--out", "<directory>"], { stdout: "text" }),
|
|
47
|
+
command(["auth", "provision", "<request-file>"], {
|
|
48
|
+
receipt_versions: [CREDENTIAL_PROVISIONING_RECEIPT_VERSION],
|
|
49
|
+
request_versions: [CREDENTIAL_PROVISIONING_REQUEST_VERSION, RESOLVED_WORLD_GRANTS_VERSION],
|
|
50
|
+
stdout: "json",
|
|
51
|
+
}),
|
|
52
|
+
command(["auth", "target-secret", "author"], {
|
|
53
|
+
receipt_versions: [TARGET_SECRET_SOURCE_RECEIPT_VERSION], stdout: "json",
|
|
54
|
+
}),
|
|
55
|
+
command(["auth", "target-secret", "grant", "<request-file>"], {
|
|
56
|
+
receipt_versions: [TARGET_SECRET_SOURCE_RECEIPT_VERSION],
|
|
57
|
+
request_versions: [TARGET_SECRET_SOURCE_GRANT_REQUEST_VERSION],
|
|
58
|
+
stdout: "json",
|
|
59
|
+
}),
|
|
60
|
+
command(["auth", "target-secret", "rotate", "<request-file>"], {
|
|
61
|
+
receipt_versions: [TARGET_SECRET_SOURCE_RECEIPT_VERSION],
|
|
62
|
+
request_versions: [TARGET_SECRET_SOURCE_REQUEST_VERSION],
|
|
63
|
+
stdout: "json",
|
|
64
|
+
}),
|
|
65
|
+
command(["auth", "target-secret", "revoke-grant", "<request-file>"], {
|
|
66
|
+
receipt_versions: [TARGET_SECRET_SOURCE_RECEIPT_VERSION],
|
|
67
|
+
request_versions: [TARGET_SECRET_SOURCE_REQUEST_VERSION],
|
|
68
|
+
stdout: "json",
|
|
69
|
+
}),
|
|
70
|
+
command(["auth", "target-secret", "revoke-version", "<request-file>"], {
|
|
71
|
+
receipt_versions: [TARGET_SECRET_SOURCE_RECEIPT_VERSION],
|
|
72
|
+
request_versions: [TARGET_SECRET_SOURCE_REQUEST_VERSION],
|
|
73
|
+
stdout: "json",
|
|
74
|
+
}),
|
|
75
|
+
command(["helper", "prepare-evidence-export", "--context", "<name>", "--json"], {
|
|
76
|
+
receipt_versions: [PREPARED_EVIDENCE_HELPER_RECEIPT_VERSION], stdout: "json",
|
|
77
|
+
}),
|
|
78
|
+
command(["target", "resolve_config", "--evidence-destination", "<absolute-path>"], {
|
|
79
|
+
receipt_versions: [TARGET_CONFIG_RESOLUTION_VERSION], stdout: "json",
|
|
80
|
+
}),
|
|
81
|
+
command([
|
|
82
|
+
"target", "resolve_config", "--evidence-destination", "<absolute-path>",
|
|
83
|
+
"--prepared-plan", "<private-plan>",
|
|
84
|
+
], {
|
|
85
|
+
receipt_versions: [TARGET_CONFIG_RESOLUTION_VERSION],
|
|
86
|
+
request_versions: [TARGET_CONFIG_PREPARED_PLAN_ABI_VERSION],
|
|
87
|
+
stdout: "json",
|
|
88
|
+
}),
|
|
89
|
+
command([
|
|
90
|
+
"target", "resolve_config", "--context", "<local-context>",
|
|
91
|
+
"--evidence-destination", "<absolute-path>", "--prepare-evidence-helper",
|
|
92
|
+
], {
|
|
93
|
+
receipt_versions: [TARGET_CONFIG_RESOLUTION_VERSION, PREPARED_EVIDENCE_HELPER_RECEIPT_VERSION],
|
|
94
|
+
stdout: "json",
|
|
95
|
+
}),
|
|
96
|
+
command(["target", "--config", "-", "select_target", "<request-file>"], {
|
|
97
|
+
receipt_versions: [SELECTED_TARGET_VERSION],
|
|
98
|
+
request_versions: [TARGET_RESOURCE_REQUEST_VERSION],
|
|
99
|
+
stdin_versions: [TARGET_DEFAULT_CONFIG_STDIN_VERSION],
|
|
100
|
+
stdout: "json",
|
|
101
|
+
}),
|
|
102
|
+
...[
|
|
103
|
+
"resolve_world_artifact", "prepare_secret_bindings", "create_data_network",
|
|
104
|
+
"create_evidence_volume", "attach_organization", "create_world_service",
|
|
105
|
+
"start_world_service", "stop_world_service",
|
|
106
|
+
"revoke_secret_bindings", "detach_organization", "cleanup_run", "recover_operation",
|
|
107
|
+
].map((operation) => targetMutation(operation)),
|
|
108
|
+
command(["target", "--config", "-", "prepare_composed_run", "<request-file>"], {
|
|
109
|
+
receipt_versions: [COMPOSED_PREPARATION_RECEIPT_VERSION],
|
|
110
|
+
request_versions: [COMPOSED_PREPARATION_REQUEST_VERSION],
|
|
111
|
+
stdin_versions: [TARGET_DEFAULT_CONFIG_STDIN_VERSION],
|
|
112
|
+
stdout: "json",
|
|
113
|
+
}),
|
|
114
|
+
command(["target", "--config", "-", "attest_topology", "<request-file>"], {
|
|
115
|
+
receipt_versions: [TARGET_TOPOLOGY_RECEIPT_VERSION],
|
|
116
|
+
request_versions: [TARGET_TOPOLOGY_ATTESTATION_REQUEST_VERSION],
|
|
117
|
+
stdin_versions: [TARGET_DEFAULT_CONFIG_STDIN_VERSION],
|
|
118
|
+
stdout: "json",
|
|
119
|
+
}),
|
|
120
|
+
command(["target", "--config", "-", "activate_topology", "<request-file>"], {
|
|
121
|
+
receipt_versions: [TARGET_TOPOLOGY_ACTIVATION_RECEIPT_VERSION],
|
|
122
|
+
request_versions: [TARGET_TOPOLOGY_ATTESTATION_REQUEST_VERSION],
|
|
123
|
+
stdin_versions: [TARGET_DEFAULT_CONFIG_STDIN_VERSION],
|
|
124
|
+
stdout: "json",
|
|
125
|
+
}),
|
|
126
|
+
command(["target", "--config", "-", "query_world_readiness", "<request-file>"], {
|
|
127
|
+
receipt_versions: [TARGET_WORLD_READINESS_RECEIPT_VERSION],
|
|
128
|
+
request_versions: [TARGET_WORLD_READINESS_REQUEST_VERSION],
|
|
129
|
+
stdin_versions: [TARGET_DEFAULT_CONFIG_STDIN_VERSION],
|
|
130
|
+
stdout: "json",
|
|
131
|
+
}),
|
|
132
|
+
command(["target", "--config", "-", "query_world_clock", "<request-file>"], {
|
|
133
|
+
receipt_versions: [TARGET_WORLD_CLOCK_RECEIPT_VERSION],
|
|
134
|
+
request_versions: [TARGET_WORLD_CLOCK_REQUEST_VERSION],
|
|
135
|
+
stdin_versions: [TARGET_DEFAULT_CONFIG_STDIN_VERSION],
|
|
136
|
+
stdout: "json",
|
|
137
|
+
}),
|
|
138
|
+
command(["target", "--config", "-", "snapshot_public_artifact", "<request-file>"], {
|
|
139
|
+
receipt_versions: [
|
|
140
|
+
TARGET_PUBLIC_ARTIFACT_SNAPSHOT_VERSION,
|
|
141
|
+
TARGET_PUBLIC_ARTIFACT_SNAPSHOT_NOT_PRESENT_VERSION,
|
|
142
|
+
],
|
|
143
|
+
request_versions: [TARGET_PUBLIC_ARTIFACT_SNAPSHOT_REQUEST_VERSION],
|
|
144
|
+
stdin_versions: [TARGET_DEFAULT_CONFIG_STDIN_VERSION],
|
|
145
|
+
stdout: "json",
|
|
146
|
+
}),
|
|
147
|
+
command(["target", "--config", "-", "lookup_operation", "<request-file>"], {
|
|
148
|
+
pending_versions: [TARGET_OPERATION_LOOKUP_VERSION],
|
|
149
|
+
receipt_versions: [TARGET_OPERATION_LOOKUP_VERSION],
|
|
150
|
+
request_versions: [TARGET_RESOURCE_REQUEST_VERSION],
|
|
151
|
+
stdin_versions: [TARGET_LOOKUP_CONFIG_STDIN_VERSION],
|
|
152
|
+
stdout: "json",
|
|
153
|
+
}),
|
|
154
|
+
command(["target", "--config", "-", "derive_container_bundle_policy", "<claims-file>"], {
|
|
155
|
+
receipt_versions: [TARGET_LOCAL_CONTAINER_BUNDLE_POLICY.version], stdout: "json",
|
|
156
|
+
}),
|
|
157
|
+
command(["target", "--config", "-", "prepare_container_bundle", "<request-file>"], {
|
|
158
|
+
receipt_versions: [TARGET_LOCAL_BUNDLE_PREPARE_RECEIPT_VERSION],
|
|
159
|
+
request_versions: [TARGET_LOCAL_BUNDLE_PREPARE_REQUEST_VERSION],
|
|
160
|
+
stdin_versions: [TARGET_DEFAULT_CONFIG_STDIN_VERSION],
|
|
161
|
+
stdout: "json",
|
|
162
|
+
}),
|
|
163
|
+
command(["target", "--config", "-", "recover_container_bundle", "<request-file>"], {
|
|
164
|
+
receipt_versions: [TARGET_LOCAL_BUNDLE_PREPARE_RECEIPT_VERSION],
|
|
165
|
+
request_versions: [TARGET_LOCAL_BUNDLE_PREPARE_REQUEST_VERSION],
|
|
166
|
+
stdin_versions: [TARGET_DEFAULT_CONFIG_STDIN_VERSION],
|
|
167
|
+
stdout: "json",
|
|
168
|
+
}),
|
|
169
|
+
command(["target", "--config", "-", "lookup_container_bundle", "<lookup-file>"], {
|
|
170
|
+
pending_versions: [TARGET_LOCAL_BUNDLE_LOOKUP_VERSION],
|
|
171
|
+
receipt_versions: [TARGET_LOCAL_BUNDLE_LOOKUP_VERSION],
|
|
172
|
+
request_versions: [TARGET_LOCAL_BUNDLE_LOOKUP_VERSION],
|
|
173
|
+
stdin_versions: [TARGET_DEFAULT_CONFIG_STDIN_VERSION],
|
|
174
|
+
stdout: "json",
|
|
175
|
+
}),
|
|
176
|
+
command(["lifecycle", "plan", "--request", "<file|->"], {
|
|
177
|
+
receipt_versions: [LIFECYCLE_INVOCATION_VERSION],
|
|
178
|
+
request_versions: [LIFECYCLE_PLAN_REQUEST_VERSION],
|
|
179
|
+
stdout: "json",
|
|
180
|
+
}),
|
|
181
|
+
command(["lifecycle", "lookup", "<id>"], {
|
|
182
|
+
pending_versions: [LIFECYCLE_LOOKUP_VERSION],
|
|
183
|
+
receipt_versions: [LIFECYCLE_LOOKUP_VERSION],
|
|
184
|
+
stdout: "json",
|
|
185
|
+
}),
|
|
186
|
+
machineLifecycle([
|
|
187
|
+
"up", "<project>", "--detach", "--deployment", "<name>", "--json",
|
|
188
|
+
"--lifecycle-invocation", "<id>", "--organization-handoff-run-id", "<run-id>",
|
|
189
|
+
"--descriptor-digest", "<digest>", "--selected-target-receipt", "<file>",
|
|
190
|
+
"--selected-target-receipt-digest", "<digest>", "--network-attachment-handle", "<handle>",
|
|
191
|
+
"--world-bindings", "<file>",
|
|
192
|
+
], UP_RECEIPT_VERSION),
|
|
193
|
+
machineLifecycle([
|
|
194
|
+
"artifacts", "export", "<project>", "--out", "<directory>", "--json",
|
|
195
|
+
"--lifecycle-invocation", "<id>",
|
|
196
|
+
], EXPORT_INDEX_VERSION),
|
|
197
|
+
machineLifecycle([
|
|
198
|
+
"down", "<project>", "--deployment", "<name>", "--json",
|
|
199
|
+
"--lifecycle-invocation", "<id>",
|
|
200
|
+
], DOWN_RECEIPT_VERSION),
|
|
201
|
+
targetMutation("export_evidence_volume", [
|
|
202
|
+
TARGET_RESOURCE_RECEIPT_VERSION, TARGET_EXPORT_INDEX_VERSION,
|
|
203
|
+
]),
|
|
204
|
+
]);
|
package/dist/cli/devCommands.js
CHANGED
|
@@ -11,6 +11,7 @@ export const registerDevCommands = (program, handlers, streams) => {
|
|
|
11
11
|
.command("up")
|
|
12
12
|
.description("Compile, build, and start a detached dev deployment under .spawn-dev")
|
|
13
13
|
.argument("[path]", "Project directory or Spawnfile path", process.cwd())
|
|
14
|
+
.option("--allow-declared-volumes", "Attach author-declared volumes by name, which a production deployment of this project also uses")
|
|
14
15
|
.option("--auth-profile <name>", "Local Spawnfile auth profile")
|
|
15
16
|
.option("--context <name>", "Docker context for the deployment target")
|
|
16
17
|
.option("--deployment <name>", "Detached deployment record name")
|
|
@@ -21,6 +22,7 @@ export const registerDevCommands = (program, handlers, streams) => {
|
|
|
21
22
|
.option("-t, --tag <image>", "Docker image tag")
|
|
22
23
|
.action(async (inputPath, options) => {
|
|
23
24
|
const result = await handlers.devUpProject(inputPath, {
|
|
25
|
+
allowDeclaredVolumeNames: options.allowDeclaredVolumes,
|
|
24
26
|
authProfile: options.authProfile,
|
|
25
27
|
containerName: options.name,
|
|
26
28
|
deploymentName: options.deployment,
|
package/dist/cli/downCommand.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import { createDeploymentLifecycleCorrelation, findLifecycleInvocation,
|
|
2
|
+
import { createDeploymentLifecycleCorrelation, findLifecycleInvocation, readCanonicalDownRecord, } from "../deployment/index.js";
|
|
3
3
|
import { resolveProjectOutputDirectory } from "../filesystem/index.js";
|
|
4
4
|
import { DEFAULT_OUTPUT_DIRECTORY, SpawnfileError } from "../shared/index.js";
|
|
5
5
|
import { canonicalLifecycleJson } from "../deployment/lifecycleCompletionContracts.js";
|
|
@@ -54,7 +54,7 @@ export const registerDownCommand = (program, handlers, streams) => {
|
|
|
54
54
|
.option("--force", "Discard un-exported artifacts")
|
|
55
55
|
.option("--reader-image <image>", "Image used to read named volumes during auto export")
|
|
56
56
|
.option("--timeout <ms>", "Bound each Docker call in milliseconds")
|
|
57
|
-
.option("--volumes", "Also remove named volumes")
|
|
57
|
+
.option("--volumes", "Also remove this deployment's own named volumes (author-declared names are shared project state and are always skipped)")
|
|
58
58
|
.option("--json", "Render a spawnfile.down-receipt.v1 machine-readable receipt")
|
|
59
59
|
.option("--lifecycle-invocation <id>", "Durably bind this exact JSON lifecycle invocation")
|
|
60
60
|
.action(async (inputPath, options) => {
|
|
@@ -62,7 +62,7 @@ export const registerDownCommand = (program, handlers, streams) => {
|
|
|
62
62
|
const compiled = resolveProjectOutputDirectory(inputPath, options.compiled, DEFAULT_OUTPUT_DIRECTORY);
|
|
63
63
|
const render = async (expected) => {
|
|
64
64
|
const expectedUnits = expected
|
|
65
|
-
? (await
|
|
65
|
+
? (await readCanonicalDownRecord(compiled, options.deployment)).record.units.map((unit) => unit.id).sort()
|
|
66
66
|
: undefined;
|
|
67
67
|
const receipt = await handlers.downDeployment({
|
|
68
68
|
compiledOutputDirectory: compiled,
|
|
@@ -75,10 +75,15 @@ export const registerDownCommand = (program, handlers, streams) => {
|
|
|
75
75
|
timeoutMs: options.timeout ? Number(options.timeout) : undefined,
|
|
76
76
|
...(expected ? { expectedLifecycleCorrelation: expected } : {}),
|
|
77
77
|
});
|
|
78
|
+
// A deliberately skipped declared volume is shared project state, not
|
|
79
|
+
// an incomplete teardown: retrying can never remove it, so counting it
|
|
80
|
+
// as incompleteness would make a `--volumes` lifecycle down of any
|
|
81
|
+
// project with a declared name retry forever.
|
|
82
|
+
const skipped = new Set(receipt.skipped_volumes ?? []);
|
|
83
|
+
const unexpectedlyRetained = receipt.retained_volumes.filter((volume) => !skipped.has(volume));
|
|
78
84
|
if (expectedUnits !== undefined &&
|
|
79
85
|
(receipt.errors.length !== 0 ||
|
|
80
|
-
(options.volumes === true &&
|
|
81
|
-
receipt.retained_volumes.length !== 0) ||
|
|
86
|
+
(options.volumes === true && unexpectedlyRetained.length !== 0) ||
|
|
82
87
|
JSON.stringify([...receipt.units_stopped].sort()) !==
|
|
83
88
|
JSON.stringify(expectedUnits))) {
|
|
84
89
|
throw new SpawnfileError("runtime_error", "Lifecycle down is incomplete and remains retryable");
|
|
@@ -95,13 +100,13 @@ export const registerDownCommand = (program, handlers, streams) => {
|
|
|
95
100
|
correlation = correlationFrom(stored);
|
|
96
101
|
}
|
|
97
102
|
else {
|
|
98
|
-
const record = await
|
|
103
|
+
const record = (await readCanonicalDownRecord(compiled, options.deployment)).record;
|
|
99
104
|
correlation = createDeploymentLifecycleCorrelation(record);
|
|
100
105
|
exact = createDownLifecycleInvocation(options.lifecycleInvocation, compiled, options, correlation);
|
|
101
106
|
}
|
|
102
107
|
const output = await runMachineLifecycle(exact, () => render(correlation), async () => {
|
|
103
108
|
try {
|
|
104
|
-
const current = createDeploymentLifecycleCorrelation(await
|
|
109
|
+
const current = createDeploymentLifecycleCorrelation((await readCanonicalDownRecord(compiled, options.deployment)).record);
|
|
105
110
|
return canonicalLifecycleJson(current) ===
|
|
106
111
|
canonicalLifecycleJson(correlation)
|
|
107
112
|
? { status: "resume_safe" }
|
|
@@ -128,7 +133,13 @@ export const registerDownCommand = (program, handlers, streams) => {
|
|
|
128
133
|
const receipt = JSON.parse(output);
|
|
129
134
|
streams.stdout(`deployment: ${receipt.deployment}`);
|
|
130
135
|
receipt.units_stopped.forEach((unit) => streams.stdout(`stopped: ${unit}`));
|
|
131
|
-
|
|
136
|
+
const skippedVolumes = new Set(receipt.skipped_volumes ?? []);
|
|
137
|
+
receipt.retained_volumes.forEach((volume) => streams.stdout(skippedVolumes.has(volume)
|
|
138
|
+
? `skipped volume (author-declared, shared with every deployment of this project): ${volume}`
|
|
139
|
+
: `retained volume: ${volume}`));
|
|
140
|
+
if (skippedVolumes.size > 0) {
|
|
141
|
+
streams.stdout(`remove shared project state deliberately: docker volume rm ${[...skippedVolumes].join(" ")}`);
|
|
142
|
+
}
|
|
132
143
|
receipt.errors.forEach((error) => streams.stderr(`error: ${error}`));
|
|
133
144
|
});
|
|
134
145
|
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import { type PreparedEvidenceHelperReceipt } from "../evidenceExportHelper/index.js";
|
|
3
|
+
import type { DockerArtifactExecutor } from "../target/dockerArtifactsProvider.js";
|
|
4
|
+
import type { CliStreams } from "./runCli.js";
|
|
5
|
+
export interface PrepareEvidenceExportHelperInput {
|
|
6
|
+
readonly baseImage: string;
|
|
7
|
+
readonly context: string;
|
|
8
|
+
readonly dockerCommand: string;
|
|
9
|
+
readonly timeoutMs: number;
|
|
10
|
+
}
|
|
11
|
+
export type PrepareEvidenceExportHelper = (input: PrepareEvidenceExportHelperInput) => Promise<PreparedEvidenceHelperReceipt>;
|
|
12
|
+
export declare const createDefaultEvidenceExportHelperPreparer: (executorFor?: (dockerCommand: string) => DockerArtifactExecutor) => PrepareEvidenceExportHelper;
|
|
13
|
+
export declare const registerEvidenceExportHelperCommand: (program: Command, streams: CliStreams, setExitCode: (value: 1 | 2) => void, preparer?: PrepareEvidenceExportHelper) => void;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { createPreparedEvidenceHelperExecutor, prepareEvidenceExportHelper, } from "../evidenceExportHelper/index.js";
|
|
2
|
+
import { resolveSpawnfileHome } from "../auth/index.js";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { STANDARD_WORLD_BASE_IMAGE } from "./targetConfigResolver.js";
|
|
5
|
+
const timeout = (raw) => {
|
|
6
|
+
if (!/^[1-9][0-9]{0,5}$/u.test(raw))
|
|
7
|
+
throw new TypeError();
|
|
8
|
+
const value = Number(raw);
|
|
9
|
+
if (value > 120_000)
|
|
10
|
+
throw new TypeError();
|
|
11
|
+
return value;
|
|
12
|
+
};
|
|
13
|
+
export const createDefaultEvidenceExportHelperPreparer = (executorFor = createPreparedEvidenceHelperExecutor) => async (input) => prepareEvidenceExportHelper({
|
|
14
|
+
baseImage: input.baseImage,
|
|
15
|
+
context: input.context,
|
|
16
|
+
executor: executorFor(input.dockerCommand),
|
|
17
|
+
privateRoot: path.join(resolveSpawnfileHome(), "target", "evidence-helper"),
|
|
18
|
+
timeoutMs: input.timeoutMs,
|
|
19
|
+
});
|
|
20
|
+
const defaultPreparer = createDefaultEvidenceExportHelperPreparer();
|
|
21
|
+
export const registerEvidenceExportHelperCommand = (program, streams, setExitCode, preparer = defaultPreparer) => {
|
|
22
|
+
const helper = program.command("helper")
|
|
23
|
+
.description("Prepare package-owned local development helpers");
|
|
24
|
+
helper.command("prepare-evidence-export")
|
|
25
|
+
.description("Prepare Spawnfile-owned local evidence export helper")
|
|
26
|
+
.requiredOption("--context <name>", "Explicit local Docker context")
|
|
27
|
+
.option("--base-image <reference>", "Already-present Node base image", STANDARD_WORLD_BASE_IMAGE)
|
|
28
|
+
.option("--docker-command <command>", "Docker-compatible command", "docker")
|
|
29
|
+
.option("--timeout-ms <milliseconds>", "Bounded command timeout", "120000")
|
|
30
|
+
.requiredOption("--json", "Emit the versioned opaque receipt JSON")
|
|
31
|
+
.action(async (options) => {
|
|
32
|
+
let timeoutMs;
|
|
33
|
+
try {
|
|
34
|
+
timeoutMs = timeout(options.timeoutMs);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
streams.stderr("error: Invalid local evidence-export helper options");
|
|
38
|
+
setExitCode(2);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const receipt = await preparer({ baseImage: options.baseImage, context: options.context,
|
|
43
|
+
dockerCommand: options.dockerCommand, timeoutMs });
|
|
44
|
+
streams.stdout(JSON.stringify(receipt));
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
streams.stderr("error: Prepared evidence-export helper failed");
|
|
48
|
+
setExitCode(1);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
};
|
package/dist/cli/index.js
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { isTargetLookupInvocation } from "./targetCliRoute.js";
|
|
3
|
+
import { isWorkspaceResourceMigrationInvocation } from "./workspaceResourceMigrationCommand.js";
|
|
4
|
+
import { isProductStateCloneInvocation } from "./productStateCloneCommand.js";
|
|
5
|
+
import { isCanaryCutoverInvocation } from "./canaryCutoverCommand.js";
|
|
3
6
|
const argv = process.argv.slice(2);
|
|
4
|
-
const exitCode =
|
|
5
|
-
? await (await import("./
|
|
6
|
-
:
|
|
7
|
+
const exitCode = isCanaryCutoverInvocation(argv)
|
|
8
|
+
? await (await import("./canaryCutoverCommand.js")).runCanaryCutoverCommand(argv)
|
|
9
|
+
: isProductStateCloneInvocation(argv)
|
|
10
|
+
? await (await import("./productStateCloneCommand.js")).runProductStateCloneCommand(argv)
|
|
11
|
+
: isWorkspaceResourceMigrationInvocation(argv)
|
|
12
|
+
? await (await import("./workspaceResourceMigrationCommand.js")).runWorkspaceResourceMigrationCommand(argv)
|
|
13
|
+
: isTargetLookupInvocation(argv)
|
|
14
|
+
? await (await import("./targetLookupCli.js")).runTargetLookupCli(argv)
|
|
15
|
+
: await (await import("./runCli.js")).runCli(argv);
|
|
7
16
|
process.exitCode = exitCode;
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { type LifecycleInvocation } from "../deployment/index.js";
|
|
2
|
+
import type { UpLifecycleRecovery } from "../deployment/upLifecycleRecoveryState.js";
|
|
2
3
|
export declare const createLifecycleInvocation: (id: string, operation: LifecycleInvocation["operation"], correlation: LifecycleInvocation["correlation"], requestPolicy: LifecycleInvocation["request_policy"]) => LifecycleInvocation;
|
|
3
4
|
export declare const digestLifecycleBinding: (value: string | undefined) => string | null;
|
|
4
5
|
export type LifecycleReconciliation = {
|
|
5
6
|
outcomeBytes: string;
|
|
6
7
|
status: "completed";
|
|
7
8
|
} | {
|
|
9
|
+
recovery?: UpLifecycleRecovery;
|
|
8
10
|
status: "provably_not_applied";
|
|
9
11
|
} | {
|
|
12
|
+
recovery?: UpLifecycleRecovery;
|
|
10
13
|
status: "resume_safe";
|
|
11
14
|
} | {
|
|
12
15
|
reason: string;
|
|
@@ -15,5 +18,8 @@ export type LifecycleReconciliation = {
|
|
|
15
18
|
export declare const runMachineLifecycle: (invocation: LifecycleInvocation, owner: (capability: {
|
|
16
19
|
epoch: string;
|
|
17
20
|
role: "initial" | "recovery";
|
|
18
|
-
}) => Promise<string>, reconcile?: (
|
|
21
|
+
}, recovery?: UpLifecycleRecovery) => Promise<string>, reconcile?: (capability: {
|
|
22
|
+
epoch: string;
|
|
23
|
+
role: "initial" | "recovery";
|
|
24
|
+
}) => Promise<LifecycleReconciliation>) => Promise<string>;
|
|
19
25
|
export declare const requireMachineLifecycle: (invocationId: string | undefined, json: boolean | undefined) => void;
|
|
@@ -51,13 +51,13 @@ export const runMachineLifecycle = async (invocation, owner, reconcile) => {
|
|
|
51
51
|
throw new SpawnfileError("runtime_error", "Lifecycle replay completion disappeared");
|
|
52
52
|
}
|
|
53
53
|
if (recovery.status === "owner") {
|
|
54
|
-
const verdict = await withLifecycleHeartbeat(invocation, recovery.capability, reconcile);
|
|
54
|
+
const verdict = await withLifecycleHeartbeat(invocation, recovery.capability, () => reconcile(recovery.capability));
|
|
55
55
|
if (verdict.status === "completed") {
|
|
56
56
|
return (await completeLifecycleInvocation(invocation, verdict.outcomeBytes, recovery.capability)).outcome_bytes;
|
|
57
57
|
}
|
|
58
58
|
if (verdict.status === "provably_not_applied" ||
|
|
59
59
|
verdict.status === "resume_safe") {
|
|
60
|
-
return (await completeLifecycleInvocation(invocation, await withLifecycleHeartbeat(invocation, recovery.capability, () => owner(recovery.capability)), recovery.capability)).outcome_bytes;
|
|
60
|
+
return (await completeLifecycleInvocation(invocation, await withLifecycleHeartbeat(invocation, recovery.capability, () => owner(recovery.capability, verdict.recovery)), recovery.capability)).outcome_bytes;
|
|
61
61
|
}
|
|
62
62
|
await markLifecycleAmbiguous(invocation, "reconciliation_ambiguous", recovery.capability);
|
|
63
63
|
throw new SpawnfileError("runtime_error", `Lifecycle recovery is ambiguous: ${verdict.reason}`);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type TrainingContext } from "../compiler/training/index.js";
|
|
2
|
+
import type { CliStreams } from "./runCli.js";
|
|
3
|
+
export interface DelegatePaideiaTrainingOptions {
|
|
4
|
+
context: TrainingContext;
|
|
5
|
+
command: string;
|
|
6
|
+
args: readonly string[];
|
|
7
|
+
dryRun: boolean;
|
|
8
|
+
repairMeasurements?: string;
|
|
9
|
+
repairWitness?: string;
|
|
10
|
+
trainingImage?: string;
|
|
11
|
+
trainingConfig?: string;
|
|
12
|
+
timeoutMs: number;
|
|
13
|
+
streams: CliStreams;
|
|
14
|
+
signal?: AbortSignal;
|
|
15
|
+
}
|
|
16
|
+
/** Delegates through the public CLI, never importing Paideia or selecting a fallback adapter. */
|
|
17
|
+
export declare const delegatePaideiaTraining: (options: DelegatePaideiaTrainingOptions) => Promise<number>;
|