spawnfile 0.1.12 → 0.1.14
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 +58 -12
- package/dist/audit/auditCli.d.ts +19 -0
- package/dist/audit/auditCli.js +63 -0
- package/dist/audit/checks.d.ts +100 -0
- package/dist/audit/checks.js +279 -0
- package/dist/audit/checksShared.d.ts +74 -0
- package/dist/audit/checksShared.js +37 -0
- package/dist/audit/generateAudit.d.ts +19 -0
- package/dist/audit/generateAudit.js +122 -0
- package/dist/audit/index.d.ts +4 -0
- package/dist/audit/index.js +4 -0
- package/dist/audit/readAudit.d.ts +50 -0
- package/dist/audit/readAudit.js +59 -0
- package/dist/audit/types.d.ts +40 -0
- package/dist/audit/types.js +8 -0
- package/dist/auth/credentialEnvFile.d.ts +11 -0
- package/dist/auth/credentialEnvFile.js +60 -0
- package/dist/auth/credentialProvisioning.d.ts +15 -0
- package/dist/auth/credentialProvisioning.js +75 -0
- package/dist/auth/credentialProvisioningReceipt.d.ts +28 -0
- package/dist/auth/credentialProvisioningReceipt.js +70 -0
- package/dist/auth/credentialProvisioningRequest.d.ts +51 -0
- package/dist/auth/credentialProvisioningRequest.js +169 -0
- package/dist/auth/credentialWorldBindings.d.ts +21 -0
- package/dist/auth/credentialWorldBindings.js +104 -0
- package/dist/auth/index.d.ts +7 -0
- package/dist/auth/index.js +7 -0
- package/dist/auth/paths.d.ts +11 -0
- package/dist/auth/paths.js +21 -0
- package/dist/auth/runtimeCredentials.js +18 -2
- package/dist/auth/targetSecretSourceAuthor.d.ts +18 -0
- package/dist/auth/targetSecretSourceAuthor.js +52 -0
- package/dist/auth/targetSecretSourceFsPublish.d.ts +15 -0
- package/dist/auth/targetSecretSourceFsPublish.js +49 -0
- package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +16 -0
- package/dist/auth/targetSecretSourceFsPublishImmutable.js +435 -0
- package/dist/auth/targetSecretSourceFsRead.d.ts +14 -0
- package/dist/auth/targetSecretSourceFsRead.js +198 -0
- package/dist/auth/targetSecretSourceGrant.d.ts +16 -0
- package/dist/auth/targetSecretSourceGrant.js +99 -0
- package/dist/auth/targetSecretSourceGrantRecords.d.ts +84 -0
- package/dist/auth/targetSecretSourceGrantRecords.js +214 -0
- package/dist/auth/targetSecretSourceLifecycle.d.ts +30 -0
- package/dist/auth/targetSecretSourceLifecycle.js +52 -0
- package/dist/auth/targetSecretSourceOwnerEntropy.d.ts +6 -0
- package/dist/auth/targetSecretSourceOwnerEntropy.js +28 -0
- package/dist/auth/targetSecretSourceRecordCommon.d.ts +14 -0
- package/dist/auth/targetSecretSourceRecordCommon.js +100 -0
- package/dist/auth/targetSecretSourceRecordPublish.d.ts +10 -0
- package/dist/auth/targetSecretSourceRecordPublish.js +104 -0
- package/dist/auth/targetSecretSourceResolver.d.ts +10 -0
- package/dist/auth/targetSecretSourceResolver.js +137 -0
- package/dist/auth/targetSecretSourceRevoke.d.ts +20 -0
- package/dist/auth/targetSecretSourceRevoke.js +92 -0
- package/dist/auth/targetSecretSourceRotate.d.ts +19 -0
- package/dist/auth/targetSecretSourceRotate.js +121 -0
- package/dist/auth/targetSecretSourceVersionRecords.d.ts +49 -0
- package/dist/auth/targetSecretSourceVersionRecords.js +166 -0
- package/dist/cli/artifactsCommands.d.ts +27 -0
- package/dist/cli/artifactsCommands.js +132 -0
- package/dist/cli/authCommands.d.ts +5 -0
- package/dist/cli/authCommands.js +221 -0
- package/dist/cli/compileBuildCommands.d.ts +3 -0
- package/dist/cli/compileBuildCommands.js +35 -0
- package/dist/cli/containerBundleCommand.d.ts +6 -0
- package/dist/cli/containerBundleCommand.js +116 -0
- package/dist/cli/devCommands.d.ts +3 -0
- package/dist/cli/devCommands.js +115 -0
- package/dist/cli/downCommand.d.ts +25 -0
- package/dist/cli/downCommand.js +134 -0
- package/dist/cli/index.js +6 -3
- package/dist/cli/lifecycleCommands.d.ts +1 -1
- package/dist/cli/lifecycleCommands.js +11 -179
- package/dist/cli/lifecycleMachine.d.ts +19 -0
- package/dist/cli/lifecycleMachine.js +78 -0
- package/dist/cli/lifecyclePlan.d.ts +35 -0
- package/dist/cli/lifecyclePlan.js +240 -0
- package/dist/cli/lifecyclePlanningCommands.d.ts +3 -0
- package/dist/cli/lifecyclePlanningCommands.js +30 -0
- package/dist/cli/runCli.d.ts +15 -2
- package/dist/cli/runCli.js +31 -71
- package/dist/cli/runPublishCommands.d.ts +3 -0
- package/dist/cli/runPublishCommands.js +70 -0
- package/dist/cli/statusCommand.d.ts +3 -32
- package/dist/cli/statusCommand.js +37 -233
- package/dist/cli/statusCommandLive.d.ts +20 -0
- package/dist/cli/statusCommandLive.js +188 -0
- package/dist/cli/statusCommandOptions.d.ts +40 -0
- package/dist/cli/statusCommandOptions.js +42 -0
- package/dist/cli/targetCliRoute.d.ts +2 -0
- package/dist/cli/targetCliRoute.js +30 -0
- package/dist/cli/targetCommands.d.ts +33 -0
- package/dist/cli/targetCommands.js +257 -0
- package/dist/cli/targetComposedPreparationCommand.d.ts +6 -0
- package/dist/cli/targetComposedPreparationCommand.js +39 -0
- package/dist/cli/targetDefaultArtifactAuthority.d.ts +5 -0
- package/dist/cli/targetDefaultArtifactAuthority.js +28 -0
- package/dist/cli/targetDefaultAuthorities.d.ts +53 -0
- package/dist/cli/targetDefaultAuthorities.js +210 -0
- package/dist/cli/targetDefaultConfig.d.ts +68 -0
- package/dist/cli/targetDefaultConfig.js +317 -0
- package/dist/cli/targetDefaultConfigStdin.d.ts +13 -0
- package/dist/cli/targetDefaultConfigStdin.js +215 -0
- package/dist/cli/targetDefaultEnvelope.d.ts +1 -0
- package/dist/cli/targetDefaultEnvelope.js +13 -0
- package/dist/cli/targetDefaultHandlerFactory.d.ts +28 -0
- package/dist/cli/targetDefaultHandlerFactory.js +247 -0
- package/dist/cli/targetDefaultHandlers.d.ts +21 -0
- package/dist/cli/targetDefaultHandlers.js +72 -0
- package/dist/cli/targetDefaultJournalAuthority.d.ts +35 -0
- package/dist/cli/targetDefaultJournalAuthority.js +135 -0
- package/dist/cli/targetDefaultWorldClock.d.ts +4 -0
- package/dist/cli/targetDefaultWorldClock.js +14 -0
- package/dist/cli/targetDefaultWorldQueries.d.ts +5 -0
- package/dist/cli/targetDefaultWorldQueries.js +11 -0
- package/dist/cli/targetDefaultWorldReadiness.d.ts +4 -0
- package/dist/cli/targetDefaultWorldReadiness.js +17 -0
- package/dist/cli/targetEvidenceHelperResolution.d.ts +14 -0
- package/dist/cli/targetEvidenceHelperResolution.js +23 -0
- package/dist/cli/targetLookupCli.d.ts +3 -0
- package/dist/cli/targetLookupCli.js +31 -0
- package/dist/cli/targetLookupCommands.d.ts +12 -0
- package/dist/cli/targetLookupCommands.js +69 -0
- package/dist/cli/targetOperationDispatch.d.ts +58 -0
- package/dist/cli/targetOperationDispatch.js +21 -0
- package/dist/cli/targetReceiptOutput.d.ts +14 -0
- package/dist/cli/targetReceiptOutput.js +21 -0
- package/dist/cli/targetRequestFile.d.ts +14 -0
- package/dist/cli/targetRequestFile.js +63 -0
- package/dist/cli/targetSecretSourceInput.d.ts +28 -0
- package/dist/cli/targetSecretSourceInput.js +121 -0
- package/dist/cli/targetWorldClockCommand.d.ts +10 -0
- package/dist/cli/targetWorldClockCommand.js +42 -0
- package/dist/cli/targetWorldClockCrossProcess.test-helper.d.ts +13 -0
- package/dist/cli/targetWorldClockCrossProcess.test-helper.js +109 -0
- package/dist/cli/targetWorldReadinessCommand.d.ts +10 -0
- package/dist/cli/targetWorldReadinessCommand.js +43 -0
- package/dist/cli/upCommand.d.ts +3 -0
- package/dist/cli/upCommand.js +133 -0
- package/dist/cli/upImageCommand.d.ts +11 -0
- package/dist/cli/upImageCommand.js +41 -0
- package/dist/cli/upLifecycleInvocation.d.ts +41 -0
- package/dist/cli/upLifecycleInvocation.js +48 -0
- package/dist/cli/upLifecycleRecovery.d.ts +4 -0
- package/dist/cli/upLifecycleRecovery.js +53 -0
- package/dist/compiler/agentNodeMerge.d.ts +2 -0
- package/dist/compiler/agentNodeMerge.js +79 -0
- package/dist/compiler/agentSurfaces.js +11 -1
- package/dist/compiler/buildCompilePlan.js +17 -0
- package/dist/compiler/buildCompilePlanAgent.d.ts +11 -0
- package/dist/compiler/buildCompilePlanAgent.js +56 -0
- package/dist/compiler/buildCompilePlanTeams.d.ts +1 -0
- package/dist/compiler/buildCompilePlanTeams.js +4 -1
- package/dist/compiler/buildCompilePlanTraversal.js +75 -82
- package/dist/compiler/buildProject.d.ts +20 -1
- package/dist/compiler/buildProject.js +121 -7
- package/dist/compiler/compilePlanHelpers.js +2 -0
- package/dist/compiler/compileProject.d.ts +15 -0
- package/dist/compiler/compileProject.js +29 -75
- package/dist/compiler/compileProjectPolicy.d.ts +5 -0
- package/dist/compiler/compileProjectPolicy.js +21 -0
- package/dist/compiler/compileProjectReports.d.ts +9 -0
- package/dist/compiler/compileProjectReports.js +52 -0
- package/dist/compiler/containerArtifactSummaries.d.ts +7 -0
- package/dist/compiler/containerArtifactSummaries.js +138 -0
- package/dist/compiler/containerArtifacts.d.ts +10 -0
- package/dist/compiler/containerArtifacts.js +126 -125
- package/dist/compiler/containerArtifactsPlans.d.ts +5 -3
- package/dist/compiler/containerArtifactsPlans.js +31 -118
- package/dist/compiler/containerArtifactsRender.d.ts +3 -1
- package/dist/compiler/containerArtifactsRender.js +40 -81
- package/dist/compiler/containerArtifactsTypes.d.ts +12 -0
- package/dist/compiler/containerConfigEnvRender.d.ts +3 -0
- package/dist/compiler/containerConfigEnvRender.js +54 -0
- package/dist/compiler/containerEntrypointRender.d.ts +1 -0
- package/dist/compiler/containerEntrypointRender.js +60 -53
- package/dist/compiler/containerEntrypointShell.d.ts +5 -0
- package/dist/compiler/containerEntrypointShell.js +29 -0
- package/dist/compiler/containerPackageOverrides.d.ts +27 -0
- package/dist/compiler/containerPackageOverrides.js +63 -0
- package/dist/compiler/containerPackageRender.d.ts +15 -0
- package/dist/compiler/containerPackageRender.js +63 -0
- package/dist/compiler/containerTargetPlanResolution.d.ts +20 -0
- package/dist/compiler/containerTargetPlanResolution.js +97 -0
- package/dist/compiler/containerTargetResources.js +3 -1
- package/dist/compiler/daimonTelemetryArtifacts.d.ts +22 -0
- package/dist/compiler/daimonTelemetryArtifacts.js +61 -0
- package/dist/compiler/dockerBuildContext.d.ts +16 -0
- package/dist/compiler/dockerBuildContext.js +159 -0
- package/dist/compiler/dockerBuildSkip.d.ts +30 -0
- package/dist/compiler/dockerBuildSkip.js +81 -0
- package/dist/compiler/index.d.ts +4 -0
- package/dist/compiler/index.js +4 -0
- package/dist/compiler/memoryArtifacts.d.ts +26 -0
- package/dist/compiler/memoryArtifacts.js +134 -0
- package/dist/compiler/memoryResolution.d.ts +4 -0
- package/dist/compiler/memoryResolution.js +147 -0
- package/dist/compiler/modelEnv.d.ts +2 -0
- package/dist/compiler/modelEnv.js +6 -0
- package/dist/compiler/moltnetAllowedWakeSendersValidation.d.ts +2 -0
- package/dist/compiler/moltnetAllowedWakeSendersValidation.js +42 -0
- package/dist/compiler/moltnetArtifactPaths.d.ts +26 -0
- package/dist/compiler/moltnetArtifactPaths.js +49 -0
- package/dist/compiler/moltnetArtifactTypes.d.ts +46 -0
- package/dist/compiler/moltnetArtifactTypes.js +1 -0
- package/dist/compiler/moltnetArtifacts.d.ts +2 -40
- package/dist/compiler/moltnetArtifacts.js +56 -95
- package/dist/compiler/moltnetBinaries.d.ts +21 -1
- package/dist/compiler/moltnetBinaries.js +156 -28
- package/dist/compiler/moltnetClientConfig.js +18 -2
- package/dist/compiler/moltnetConfigLowering.d.ts +16 -1
- package/dist/compiler/moltnetConfigLowering.js +67 -5
- package/dist/compiler/moltnetExternalParticipantArtifact.d.ts +38 -0
- package/dist/compiler/moltnetExternalParticipantArtifact.js +188 -0
- package/dist/compiler/moltnetNodeConfig.js +7 -2
- package/dist/compiler/moltnetReleaseAuthority.d.ts +17 -0
- package/dist/compiler/moltnetReleaseAuthority.js +73 -0
- package/dist/compiler/moltnetReleaseDownload.d.ts +12 -0
- package/dist/compiler/moltnetReleaseDownload.js +85 -0
- package/dist/compiler/moltnetRepresentativeResolution.d.ts +1 -0
- package/dist/compiler/moltnetRepresentativeResolution.js +16 -2
- package/dist/compiler/moltnetResolution.js +72 -20
- package/dist/compiler/moltnetRoomMemberships.js +37 -9
- package/dist/compiler/moltnetRuntimeConfig.js +11 -0
- package/dist/compiler/moltnetServerPlans.d.ts +9 -0
- package/dist/compiler/moltnetServerPlans.js +132 -0
- package/dist/compiler/organizationIdentity.d.ts +27 -0
- package/dist/compiler/organizationIdentity.js +297 -0
- package/dist/compiler/organizationReadyEvidence.d.ts +49 -0
- package/dist/compiler/organizationReadyEvidence.js +261 -0
- package/dist/compiler/projectManifestGraph.d.ts +4 -0
- package/dist/compiler/projectManifestGraph.js +24 -0
- package/dist/compiler/runProject.d.ts +4 -0
- package/dist/compiler/runProject.js +37 -22
- package/dist/compiler/runProjectAuth.d.ts +7 -1
- package/dist/compiler/runProjectAuth.js +87 -9
- package/dist/compiler/runProjectDocker.d.ts +7 -0
- package/dist/compiler/runProjectDocker.js +187 -19
- package/dist/compiler/runProjectLifecycle.d.ts +7 -0
- package/dist/compiler/runProjectLifecycle.js +40 -0
- package/dist/compiler/syncProjectAuth.js +4 -1
- package/dist/compiler/teamContextActiveEnvironments.d.ts +13 -0
- package/dist/compiler/teamContextActiveEnvironments.js +255 -0
- package/dist/compiler/teamContextSupport.js +32 -40
- package/dist/compiler/teamContextTypes.d.ts +2 -0
- package/dist/compiler/types.d.ts +82 -1
- package/dist/compiler/upProject.d.ts +5 -0
- package/dist/compiler/upProject.js +257 -20
- package/dist/compiler/upReceipt.d.ts +36 -0
- package/dist/compiler/upReceipt.js +82 -0
- package/dist/compiler/updateProjectModels.js +42 -60
- package/dist/compiler/updateProjectRuntime.js +22 -35
- package/dist/compiler/updateProjectSurfaces.js +53 -47
- package/dist/compiler/worldBindings.d.ts +39 -0
- package/dist/compiler/worldBindings.js +247 -0
- package/dist/compiler/worldBindingsFile.d.ts +5 -0
- package/dist/compiler/worldBindingsFile.js +162 -0
- package/dist/deployment/artifactsExport.d.ts +49 -0
- package/dist/deployment/artifactsExport.js +217 -0
- package/dist/deployment/artifactsExportDocker.d.ts +48 -0
- package/dist/deployment/artifactsExportDocker.js +91 -0
- package/dist/deployment/artifactsExportPlan.d.ts +24 -0
- package/dist/deployment/artifactsExportPlan.js +135 -0
- package/dist/deployment/artifactsExportTypes.d.ts +50 -0
- package/dist/deployment/artifactsExportTypes.js +52 -0
- package/dist/deployment/buildImageCacheStore.d.ts +23 -0
- package/dist/deployment/buildImageCacheStore.js +54 -0
- package/dist/deployment/deploymentLifecycleCorrelation.d.ts +11 -0
- package/dist/deployment/deploymentLifecycleCorrelation.js +33 -0
- package/dist/deployment/dockerInspect.d.ts +9 -0
- package/dist/deployment/dockerInspect.js +24 -1
- package/dist/deployment/dockerLabels.d.ts +2 -0
- package/dist/deployment/dockerLabels.js +2 -0
- package/dist/deployment/dockerLogs.js +2 -10
- package/dist/deployment/dockerManager.d.ts +51 -0
- package/dist/deployment/dockerManager.js +118 -1
- package/dist/deployment/dockerProbeGateway.js +64 -5
- package/dist/deployment/dockerRecover.d.ts +17 -0
- package/dist/deployment/dockerRecover.js +137 -0
- package/dist/deployment/dockerTeardown.d.ts +32 -0
- package/dist/deployment/dockerTeardown.js +61 -0
- package/dist/deployment/downDeployment.d.ts +34 -0
- package/dist/deployment/downDeployment.js +147 -0
- package/dist/deployment/downReceiptTypes.d.ts +21 -0
- package/dist/deployment/downReceiptTypes.js +30 -0
- package/dist/deployment/index.d.ts +17 -0
- package/dist/deployment/index.js +18 -0
- package/dist/deployment/lifecycleCompletion.d.ts +37 -0
- package/dist/deployment/lifecycleCompletion.js +236 -0
- package/dist/deployment/lifecycleCompletionContracts.d.ts +158 -0
- package/dist/deployment/lifecycleCompletionContracts.js +106 -0
- package/dist/deployment/lifecycleCompletionHeartbeat.d.ts +2 -0
- package/dist/deployment/lifecycleCompletionHeartbeat.js +50 -0
- package/dist/deployment/lifecycleCompletionLookup.d.ts +18 -0
- package/dist/deployment/lifecycleCompletionLookup.js +88 -0
- package/dist/deployment/lifecycleCompletionOwner.d.ts +8 -0
- package/dist/deployment/lifecycleCompletionOwner.js +31 -0
- package/dist/deployment/lifecycleCompletionParsing.d.ts +12 -0
- package/dist/deployment/lifecycleCompletionParsing.js +108 -0
- package/dist/deployment/lifecycleCompletionPaths.d.ts +9 -0
- package/dist/deployment/lifecycleCompletionPaths.js +16 -0
- package/dist/deployment/lifecycleCompletionPublication.d.ts +5 -0
- package/dist/deployment/lifecycleCompletionPublication.js +35 -0
- package/dist/deployment/lifecycleCompletionRecovery.d.ts +21 -0
- package/dist/deployment/lifecycleCompletionRecovery.js +56 -0
- package/dist/deployment/lifecycleCompletionRoot.d.ts +21 -0
- package/dist/deployment/lifecycleCompletionRoot.js +243 -0
- package/dist/deployment/lifecycleCompletionStore.d.ts +6 -0
- package/dist/deployment/lifecycleCompletionStore.js +151 -0
- package/dist/deployment/organizationHandoffAuthorityFsClient.d.ts +17 -0
- package/dist/deployment/organizationHandoffAuthorityFsClient.js +132 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorker.d.ts +1 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorker.js +285 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.d.ts +1 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.js +26 -0
- package/dist/deployment/organizationHandoffAuthorityStore.d.ts +41 -0
- package/dist/deployment/organizationHandoffAuthorityStore.js +348 -0
- package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +76 -0
- package/dist/deployment/organizationHandoffAuthorityTypes.js +148 -0
- package/dist/deployment/organizationHandoffTypes.d.ts +29 -0
- package/dist/deployment/organizationHandoffTypes.js +80 -0
- package/dist/deployment/organizationReady.d.ts +52 -0
- package/dist/deployment/organizationReady.js +200 -0
- package/dist/deployment/privateArtifactsExport.d.ts +18 -0
- package/dist/deployment/privateArtifactsExport.js +80 -0
- package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.d.ts +8 -0
- package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.js +60 -0
- package/dist/deployment/record.d.ts +26 -1
- package/dist/deployment/record.js +49 -4
- package/dist/deployment/simfileFixtureBoundary.test-helper.d.ts +8 -0
- package/dist/deployment/simfileFixtureBoundary.test-helper.js +103 -0
- package/dist/deployment/target.d.ts +1 -35
- package/dist/deployment/target.js +1 -96
- package/dist/deployment/upReceiptTypes.d.ts +111 -0
- package/dist/deployment/upReceiptTypes.js +164 -0
- package/dist/dev/activity.d.ts +14 -0
- package/dist/dev/activity.js +48 -0
- package/dist/dev/docker.d.ts +16 -0
- package/dist/dev/docker.js +71 -0
- package/dist/dev/index.d.ts +2 -0
- package/dist/dev/index.js +2 -0
- package/dist/dev/project.d.ts +35 -0
- package/dist/dev/project.js +170 -0
- package/dist/distribution/buildDistributionReport.d.ts +2 -1
- package/dist/distribution/buildDistributionReport.js +2 -1
- package/dist/distribution/distributionReportSchema.d.ts +5 -0
- package/dist/distribution/distributionReportSchema.js +7 -2
- package/dist/distribution/index.d.ts +2 -2
- package/dist/distribution/index.js +1 -1
- package/dist/distribution/types.d.ts +7 -0
- package/dist/distribution/types.js +1 -0
- package/dist/filesystem/paths.js +10 -1
- package/dist/ledger/causalConformanceCli.d.ts +1 -0
- package/dist/ledger/causalConformanceCli.js +41 -0
- package/dist/ledger/causeNamespace.d.ts +8 -0
- package/dist/ledger/causeNamespace.js +24 -0
- package/dist/ledger/conformance.d.ts +83 -0
- package/dist/ledger/conformance.js +259 -0
- package/dist/ledger/emitters.d.ts +76 -0
- package/dist/ledger/emitters.js +188 -0
- package/dist/ledger/index.d.ts +4 -0
- package/dist/ledger/index.js +4 -0
- package/dist/ledger/principal.d.ts +96 -0
- package/dist/ledger/principal.js +121 -0
- package/dist/manifest/externalParticipantSchemas.d.ts +18 -0
- package/dist/manifest/externalParticipantSchemas.js +17 -0
- package/dist/manifest/index.d.ts +1 -0
- package/dist/manifest/index.js +1 -0
- package/dist/manifest/inlineAgentMember.d.ts +2 -0
- package/dist/manifest/inlineAgentMember.js +9 -0
- package/dist/manifest/loadManifest.js +14 -8
- package/dist/manifest/mcpSchemas.d.ts +17 -0
- package/dist/manifest/mcpSchemas.js +41 -0
- package/dist/manifest/memorySchemas.d.ts +245 -0
- package/dist/manifest/memorySchemas.js +148 -0
- package/dist/manifest/renderSpawnfile.js +22 -131
- package/dist/manifest/renderSpawnfileNetworks.js +9 -2
- package/dist/manifest/renderSpawnfileSurfaces.d.ts +2 -0
- package/dist/manifest/renderSpawnfileSurfaces.js +134 -0
- package/dist/manifest/schemas.d.ts +1868 -99
- package/dist/manifest/schemas.js +78 -32
- package/dist/manifest/surfaceSchemas.d.ts +17 -0
- package/dist/manifest/surfaceSchemas.js +24 -1
- package/dist/manifest/teamNetworkAccessSchemas.d.ts +1 -1
- package/dist/manifest/teamNetworkAuthSchemas.d.ts +48 -0
- package/dist/manifest/teamNetworkAuthSchemas.js +103 -0
- package/dist/manifest/teamNetworkSchemas.d.ts +8 -187
- package/dist/manifest/teamNetworkSchemas.js +3 -317
- package/dist/manifest/teamNetworkServerSchemas.d.ts +150 -0
- package/dist/manifest/teamNetworkServerSchemas.js +199 -0
- package/dist/ownership/siblingBuildFreshness.d.ts +20 -0
- package/dist/ownership/siblingBuildFreshness.js +20 -0
- package/dist/ownership/simfileRunOperatorInputs.d.ts +103 -0
- package/dist/ownership/simfileRunOperatorInputs.js +139 -0
- package/dist/report/types.d.ts +142 -0
- package/dist/runtime/common.d.ts +37 -0
- package/dist/runtime/common.js +56 -1
- package/dist/runtime/container.d.ts +29 -1
- package/dist/runtime/container.js +127 -11
- package/dist/runtime/containerPackageOverrides.d.ts +37 -0
- package/dist/runtime/containerPackageOverrides.js +33 -0
- package/dist/runtime/index.d.ts +2 -0
- package/dist/runtime/index.js +2 -0
- package/dist/runtime/install.d.ts +1 -1
- package/dist/runtime/install.js +43 -1
- package/dist/runtime/mnemeMcp.d.ts +15 -0
- package/dist/runtime/mnemeMcp.js +109 -0
- package/dist/runtime/openclaw/adapter.js +15 -4
- package/dist/runtime/openclaw/mcp.d.ts +10 -0
- package/dist/runtime/openclaw/mcp.js +69 -0
- package/dist/runtime/openclaw/runAuth.js +2 -2
- package/dist/runtime/openclaw/scaffold.js +1 -1
- package/dist/runtime/openclaw/schedules.d.ts +38 -0
- package/dist/runtime/openclaw/schedules.js +74 -0
- package/dist/runtime/pi/adapter.d.ts +4 -0
- package/dist/runtime/pi/adapter.js +231 -0
- package/dist/runtime/pi/appActivitySource.d.ts +1 -0
- package/dist/runtime/pi/appActivitySource.js +199 -0
- package/dist/runtime/pi/appAgentConfig.d.ts +11 -0
- package/dist/runtime/pi/appAgentConfig.js +264 -0
- package/dist/runtime/pi/appCliEnginesSource.d.ts +1 -0
- package/dist/runtime/pi/appCliEnginesSource.js +183 -0
- package/dist/runtime/pi/appCliSource.d.ts +1 -0
- package/dist/runtime/pi/appCliSource.js +353 -0
- package/dist/runtime/pi/appControlSource.d.ts +1 -0
- package/dist/runtime/pi/appControlSource.js +390 -0
- package/dist/runtime/pi/appControlWakeIdentitySource.d.ts +1 -0
- package/dist/runtime/pi/appControlWakeIdentitySource.js +19 -0
- package/dist/runtime/pi/appCoreSource.d.ts +4 -0
- package/dist/runtime/pi/appCoreSource.js +244 -0
- package/dist/runtime/pi/appPreludeSource.d.ts +1 -0
- package/dist/runtime/pi/appPreludeSource.js +191 -0
- package/dist/runtime/pi/appScheduleSource.d.ts +1 -0
- package/dist/runtime/pi/appScheduleSource.js +80 -0
- package/dist/runtime/pi/appScriptedEngine.d.ts +31 -0
- package/dist/runtime/pi/appScriptedEngine.js +42 -0
- package/dist/runtime/pi/appSource.d.ts +4 -0
- package/dist/runtime/pi/appSource.js +12 -0
- package/dist/runtime/pi/appTemplate.d.ts +14 -0
- package/dist/runtime/pi/appTemplate.js +27 -0
- package/dist/runtime/pi/appTemplateTypes.d.ts +64 -0
- package/dist/runtime/pi/appTemplateTypes.js +18 -0
- package/dist/runtime/pi/appWakeContextSource.d.ts +1 -0
- package/dist/runtime/pi/appWakeContextSource.js +398 -0
- package/dist/runtime/pi/containerTargets.d.ts +4 -0
- package/dist/runtime/pi/containerTargets.js +57 -0
- package/dist/runtime/pi/runAuth.d.ts +2 -0
- package/dist/runtime/pi/runAuth.js +185 -0
- package/dist/runtime/pi/testHelpers.d.ts +2 -0
- package/dist/runtime/pi/testHelpers.js +40 -0
- package/dist/runtime/picoclaw/adapter.js +23 -27
- package/dist/runtime/picoclaw/mcp.d.ts +4 -0
- package/dist/runtime/picoclaw/mcp.js +43 -0
- package/dist/runtime/picoclaw/memory.d.ts +7 -0
- package/dist/runtime/picoclaw/memory.js +17 -0
- package/dist/runtime/picoclaw/runAuth.js +1 -1
- package/dist/runtime/picoclaw/scaffold.js +1 -1
- package/dist/runtime/picoclaw/schedules.d.ts +26 -0
- package/dist/runtime/picoclaw/schedules.js +62 -3
- package/dist/runtime/registry.js +3 -0
- package/dist/runtime/scheduleUtils.d.ts +2 -0
- package/dist/runtime/scheduleUtils.js +15 -0
- package/dist/runtime/types.d.ts +26 -2
- package/dist/shared/errors.d.ts +1 -1
- package/dist/shared/errors.js +2 -2
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.js +1 -0
- package/dist/shared/redaction.d.ts +2 -0
- package/dist/shared/redaction.js +10 -0
- package/dist/status/buildStatus.d.ts +1 -0
- package/dist/status/buildStatus.js +2 -0
- package/dist/status/compileReport.d.ts +22 -0
- package/dist/status/compileReport.js +16 -2
- package/dist/status/compiledProbeCollection.d.ts +21 -0
- package/dist/status/compiledProbeCollection.js +27 -0
- package/dist/status/deployments.js +5 -12
- package/dist/status/imageStatusReport.js +6 -0
- package/dist/status/index.d.ts +3 -0
- package/dist/status/index.js +3 -0
- package/dist/status/lifecycleProbes.d.ts +19 -0
- package/dist/status/lifecycleProbes.js +174 -0
- package/dist/status/moltnetProbes.d.ts +7 -8
- package/dist/status/moltnetProbes.js +27 -198
- package/dist/status/moltnetWiringProbes.d.ts +19 -0
- package/dist/status/moltnetWiringProbes.js +178 -0
- package/dist/target/cleanupRun.d.ts +41 -0
- package/dist/target/cleanupRun.js +139 -0
- package/dist/target/cleanupRunDocker.d.ts +16 -0
- package/dist/target/cleanupRunDocker.js +66 -0
- package/dist/target/cleanupRunDocker.test-helper.d.ts +67 -0
- package/dist/target/cleanupRunDocker.test-helper.js +238 -0
- package/dist/target/cleanupRunDockerPreflight.d.ts +17 -0
- package/dist/target/cleanupRunDockerPreflight.js +224 -0
- package/dist/target/composedPreparation.d.ts +205 -0
- package/dist/target/composedPreparation.js +223 -0
- package/dist/target/containerBundle.d.ts +82 -0
- package/dist/target/containerBundle.js +243 -0
- package/dist/target/containerBundleArchive.d.ts +31 -0
- package/dist/target/containerBundleArchive.js +140 -0
- package/dist/target/containerBundleAuthority.d.ts +25 -0
- package/dist/target/containerBundleAuthority.js +65 -0
- package/dist/target/containerBundleContracts.d.ts +114 -0
- package/dist/target/containerBundleContracts.js +173 -0
- package/dist/target/containerBundleFilesystemStore.d.ts +3 -0
- package/dist/target/containerBundleFilesystemStore.js +247 -0
- package/dist/target/containerBundlePolicy.d.ts +33 -0
- package/dist/target/containerBundlePolicy.js +64 -0
- package/dist/target/containerBundleStore.d.ts +127 -0
- package/dist/target/containerBundleStore.js +284 -0
- package/dist/target/contracts.d.ts +538 -0
- package/dist/target/contracts.js +373 -0
- package/dist/target/dockerArtifactIdentityTypes.d.ts +56 -0
- package/dist/target/dockerArtifactIdentityTypes.js +1 -0
- package/dist/target/dockerArtifactInspection.d.ts +40 -0
- package/dist/target/dockerArtifactInspection.js +125 -0
- package/dist/target/dockerArtifacts.d.ts +21 -0
- package/dist/target/dockerArtifacts.js +110 -0
- package/dist/target/dockerArtifactsProvider.d.ts +41 -0
- package/dist/target/dockerArtifactsProvider.js +449 -0
- package/dist/target/dockerCommandExecutor.d.ts +27 -0
- package/dist/target/dockerCommandExecutor.js +200 -0
- package/dist/target/dockerCommandExecutorCore.d.ts +34 -0
- package/dist/target/dockerCommandExecutorCore.js +273 -0
- package/dist/target/dockerContainerBundleBuilder.d.ts +8 -0
- package/dist/target/dockerContainerBundleBuilder.js +256 -0
- package/dist/target/dockerContextSnapshot.d.ts +21 -0
- package/dist/target/dockerContextSnapshot.js +158 -0
- package/dist/target/dockerEndpointFingerprint.d.ts +1 -0
- package/dist/target/dockerEndpointFingerprint.js +9 -0
- package/dist/target/dockerPreparedArtifact.d.ts +48 -0
- package/dist/target/dockerPreparedArtifact.js +131 -0
- package/dist/target/dockerProjectionJson.d.ts +1 -0
- package/dist/target/dockerProjectionJson.js +80 -0
- package/dist/target/dockerPublicArtifactSnapshot.d.ts +17 -0
- package/dist/target/dockerPublicArtifactSnapshot.js +99 -0
- package/dist/target/dockerResources.d.ts +26 -0
- package/dist/target/dockerResources.js +162 -0
- package/dist/target/dockerResourcesProvider.d.ts +44 -0
- package/dist/target/dockerResourcesProvider.js +207 -0
- package/dist/target/dockerSecrets.d.ts +39 -0
- package/dist/target/dockerSecrets.js +249 -0
- package/dist/target/dockerSecretsAuthority.d.ts +26 -0
- package/dist/target/dockerSecretsAuthority.js +216 -0
- package/dist/target/dockerSecretsLifecycle.d.ts +25 -0
- package/dist/target/dockerSecretsLifecycle.js +133 -0
- package/dist/target/dockerSecretsProvider.d.ts +68 -0
- package/dist/target/dockerSecretsProvider.js +329 -0
- package/dist/target/dockerTarget.d.ts +52 -0
- package/dist/target/dockerTarget.js +48 -0
- package/dist/target/dockerTargetBinding.d.ts +14 -0
- package/dist/target/dockerTargetBinding.js +96 -0
- package/dist/target/dockerWorldClock.d.ts +17 -0
- package/dist/target/dockerWorldClock.js +111 -0
- package/dist/target/dockerWorldReadiness.d.ts +17 -0
- package/dist/target/dockerWorldReadiness.js +119 -0
- package/dist/target/dockerWorldService.d.ts +23 -0
- package/dist/target/dockerWorldService.js +216 -0
- package/dist/target/dockerWorldServiceAuthority.d.ts +80 -0
- package/dist/target/dockerWorldServiceAuthority.js +182 -0
- package/dist/target/dockerWorldServiceLifecycle.d.ts +41 -0
- package/dist/target/dockerWorldServiceLifecycle.js +275 -0
- package/dist/target/dockerWorldServiceProvider.d.ts +60 -0
- package/dist/target/dockerWorldServiceProvider.js +318 -0
- package/dist/target/dockerWorldServiceStore.d.ts +73 -0
- package/dist/target/dockerWorldServiceStore.js +367 -0
- package/dist/target/evidenceExport.d.ts +55 -0
- package/dist/target/evidenceExport.js +518 -0
- package/dist/target/evidenceExportArchive.d.ts +10 -0
- package/dist/target/evidenceExportArchive.js +302 -0
- package/dist/target/evidenceExportContract.d.ts +27 -0
- package/dist/target/evidenceExportContract.js +40 -0
- package/dist/target/evidenceExportOperationsTestKit.d.ts +87 -0
- package/dist/target/evidenceExportOperationsTestKit.js +312 -0
- package/dist/target/evidenceExportProvider.d.ts +85 -0
- package/dist/target/evidenceExportProvider.js +187 -0
- package/dist/target/evidenceExportPublicationTypes.d.ts +16 -0
- package/dist/target/evidenceExportPublicationTypes.js +1 -0
- package/dist/target/evidenceExportStore.d.ts +70 -0
- package/dist/target/evidenceExportStore.js +498 -0
- package/dist/target/evidenceExportStorePublication.d.ts +7 -0
- package/dist/target/evidenceExportStorePublication.js +395 -0
- package/dist/target/handles.d.ts +20 -0
- package/dist/target/handles.js +56 -0
- package/dist/target/index.d.ts +12 -0
- package/dist/target/index.js +11 -0
- package/dist/target/journal.d.ts +59 -0
- package/dist/target/journal.js +529 -0
- package/dist/target/journalFilesystem.d.ts +3 -0
- package/dist/target/journalFilesystem.js +111 -0
- package/dist/target/journalRoot.d.ts +4 -0
- package/dist/target/journalRoot.js +6 -0
- package/dist/target/organizationAttachment.d.ts +23 -0
- package/dist/target/organizationAttachment.js +263 -0
- package/dist/target/organizationAttachmentAuthority.d.ts +65 -0
- package/dist/target/organizationAttachmentAuthority.js +161 -0
- package/dist/target/organizationAttachmentLifecycle.d.ts +17 -0
- package/dist/target/organizationAttachmentLifecycle.js +101 -0
- package/dist/target/organizationAttachmentProvider.d.ts +76 -0
- package/dist/target/organizationAttachmentProvider.js +289 -0
- package/dist/target/organizationAttachmentStore.d.ts +51 -0
- package/dist/target/organizationAttachmentStore.js +316 -0
- package/dist/target/publicArtifactSnapshot.d.ts +41 -0
- package/dist/target/publicArtifactSnapshot.js +150 -0
- package/dist/target/topologyActivation.d.ts +51 -0
- package/dist/target/topologyActivation.js +149 -0
- package/dist/target/topologyAttestation.d.ts +37 -0
- package/dist/target/topologyAttestation.js +300 -0
- package/dist/target/topologyAttestationErrors.d.ts +1 -0
- package/dist/target/topologyAttestationErrors.js +1 -0
- package/dist/target/worldClock.d.ts +60 -0
- package/dist/target/worldClock.js +129 -0
- package/dist/target/worldReadiness.d.ts +103 -0
- package/dist/target/worldReadiness.js +153 -0
- package/moltnet-releases.json +20 -0
- package/package.json +29 -8
- package/runtimes.yaml +28 -27
- package/dist/runtime/openclaw/scaffold-assets/CLAUDE.md +0 -5
- package/dist/runtime/picoclaw/scaffold-assets/CLAUDE.md +0 -5
- /package/dist/runtime/openclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
- /package/dist/runtime/picoclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { assertOrdinaryJsonGraph, opaqueTargetHandleSchema, runIdSchema, selectedTargetSchema, } from "./contracts.js";
|
|
4
|
+
export const TARGET_WORLD_CLOCK_REQUEST_VERSION = "spawnfile.target-world-clock.request.v1";
|
|
5
|
+
export const TARGET_WORLD_CLOCK_RECEIPT_VERSION = "spawnfile.target-world-clock-receipt.v1";
|
|
6
|
+
export const TARGET_WORLD_CLOCK_PATH = "/v1/world/clock";
|
|
7
|
+
export const MAX_TARGET_WORLD_CLOCK_BYTES = 8_192;
|
|
8
|
+
const digest = z.string().regex(/^sha256:[a-f0-9]{64}$/u);
|
|
9
|
+
const protocol = z.string().max(127).regex(/^[a-z][a-z0-9._-]*\.v[1-9][0-9]*$/u);
|
|
10
|
+
const clock = z.object({
|
|
11
|
+
completed_tick: z.number().int().min(0).max(1_000_000_000),
|
|
12
|
+
next_tick: z.number().int().min(1).max(1_000_000_001),
|
|
13
|
+
state: z.literal("running"),
|
|
14
|
+
}).strict().superRefine((value, context) => {
|
|
15
|
+
if (value.next_tick !== value.completed_tick + 1)
|
|
16
|
+
context.addIssue({
|
|
17
|
+
code: z.ZodIssueCode.custom, message: "world clock frontier is invalid",
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
const observation = z.object({
|
|
21
|
+
action_count: z.number().int().min(0).max(1_000_000_000),
|
|
22
|
+
clock,
|
|
23
|
+
run_id: runIdSchema,
|
|
24
|
+
version: protocol,
|
|
25
|
+
world_instance_id: runIdSchema,
|
|
26
|
+
}).strict();
|
|
27
|
+
export const targetWorldClockRequestSchema = z.object({
|
|
28
|
+
activation_digest: digest,
|
|
29
|
+
activation_receipt_digest: digest,
|
|
30
|
+
descriptor_digest: digest,
|
|
31
|
+
endpoint: z.object({
|
|
32
|
+
internal_port: z.number().int().min(1).max(65_535),
|
|
33
|
+
path: z.literal(TARGET_WORLD_CLOCK_PATH),
|
|
34
|
+
}).strict(),
|
|
35
|
+
expected: z.object({ document_version: protocol, world_instance_id: runIdSchema }).strict(),
|
|
36
|
+
run_id: runIdSchema,
|
|
37
|
+
selected_target: selectedTargetSchema,
|
|
38
|
+
topology_receipt_digest: digest,
|
|
39
|
+
topology_request_digest: digest,
|
|
40
|
+
version: z.literal(TARGET_WORLD_CLOCK_REQUEST_VERSION),
|
|
41
|
+
world_service_handle: opaqueTargetHandleSchema,
|
|
42
|
+
}).strict();
|
|
43
|
+
export const targetWorldClockReceiptSchema = z.object({
|
|
44
|
+
action_count: z.literal(0),
|
|
45
|
+
activation_digest: digest,
|
|
46
|
+
activation_receipt_digest: digest,
|
|
47
|
+
clock: clock.superRefine((value, context) => {
|
|
48
|
+
if (value.completed_tick < 1)
|
|
49
|
+
context.addIssue({
|
|
50
|
+
code: z.ZodIssueCode.custom, message: "world has not completed its first tick",
|
|
51
|
+
});
|
|
52
|
+
}),
|
|
53
|
+
observation_digest: digest,
|
|
54
|
+
receipt_digest: digest,
|
|
55
|
+
request_digest: digest,
|
|
56
|
+
run_id: runIdSchema,
|
|
57
|
+
topology_receipt_digest: digest,
|
|
58
|
+
topology_request_digest: digest,
|
|
59
|
+
version: z.literal(TARGET_WORLD_CLOCK_RECEIPT_VERSION),
|
|
60
|
+
world_instance_id: runIdSchema,
|
|
61
|
+
world_service_handle: opaqueTargetHandleSchema,
|
|
62
|
+
}).strict();
|
|
63
|
+
const canonical = (value) => {
|
|
64
|
+
if (Array.isArray(value))
|
|
65
|
+
return `[${value.map(canonical).join(",")}]`;
|
|
66
|
+
if (value !== null && typeof value === "object") {
|
|
67
|
+
const record = value;
|
|
68
|
+
return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${canonical(record[key])}`).join(",")}}`;
|
|
69
|
+
}
|
|
70
|
+
return JSON.stringify(value);
|
|
71
|
+
};
|
|
72
|
+
const hash = (domain, value) => `sha256:${createHash("sha256").update(`${domain}\0${canonical(value)}`, "utf8").digest("hex")}`;
|
|
73
|
+
const parse = (schema, raw) => {
|
|
74
|
+
assertOrdinaryJsonGraph(raw);
|
|
75
|
+
return schema.parse(raw);
|
|
76
|
+
};
|
|
77
|
+
export const parseTargetWorldClockRequest = (raw) => parse(targetWorldClockRequestSchema, raw);
|
|
78
|
+
export const createTargetWorldClockRequestDigest = (raw) => hash(TARGET_WORLD_CLOCK_REQUEST_VERSION, parseTargetWorldClockRequest(raw));
|
|
79
|
+
const parseObservation = (raw) => parse(observation, raw);
|
|
80
|
+
const bodyFor = (observed, request) => {
|
|
81
|
+
if (observed.action_count !== 0 || observed.clock.completed_tick < 1
|
|
82
|
+
|| observed.run_id !== request.run_id
|
|
83
|
+
|| observed.version !== request.expected.document_version
|
|
84
|
+
|| observed.world_instance_id !== request.expected.world_instance_id) {
|
|
85
|
+
throw new TypeError("Target world clock observation correlation is invalid");
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
action_count: 0,
|
|
89
|
+
activation_digest: request.activation_digest,
|
|
90
|
+
activation_receipt_digest: request.activation_receipt_digest,
|
|
91
|
+
clock: observed.clock,
|
|
92
|
+
observation_digest: hash("spawnfile.target-world-clock.observation.v1", observed),
|
|
93
|
+
request_digest: createTargetWorldClockRequestDigest(request),
|
|
94
|
+
run_id: request.run_id,
|
|
95
|
+
topology_receipt_digest: request.topology_receipt_digest,
|
|
96
|
+
topology_request_digest: request.topology_request_digest,
|
|
97
|
+
version: TARGET_WORLD_CLOCK_RECEIPT_VERSION,
|
|
98
|
+
world_instance_id: observed.world_instance_id,
|
|
99
|
+
world_service_handle: request.world_service_handle,
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
export const parseTargetWorldClockReceipt = (raw) => {
|
|
103
|
+
const receipt = parse(targetWorldClockReceiptSchema, raw);
|
|
104
|
+
const { receipt_digest: _digest, ...body } = receipt;
|
|
105
|
+
if (receipt.receipt_digest !== hash(TARGET_WORLD_CLOCK_RECEIPT_VERSION, body)) {
|
|
106
|
+
throw new TypeError("Target world clock receipt digest is invalid");
|
|
107
|
+
}
|
|
108
|
+
return receipt;
|
|
109
|
+
};
|
|
110
|
+
export const createTargetWorldClockReceipt = (input) => {
|
|
111
|
+
const body = bodyFor(parseObservation(input.observation), parseTargetWorldClockRequest(input.request));
|
|
112
|
+
return parseTargetWorldClockReceipt({
|
|
113
|
+
...body, receipt_digest: hash(TARGET_WORLD_CLOCK_RECEIPT_VERSION, body),
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
export const verifyTargetWorldClockReceipt = (input) => {
|
|
117
|
+
const receipt = parseTargetWorldClockReceipt(input.receipt);
|
|
118
|
+
const request = parseTargetWorldClockRequest(input.request);
|
|
119
|
+
const expectedBody = bodyFor({
|
|
120
|
+
action_count: receipt.action_count, clock: receipt.clock, run_id: receipt.run_id,
|
|
121
|
+
version: request.expected.document_version, world_instance_id: receipt.world_instance_id,
|
|
122
|
+
}, request);
|
|
123
|
+
const { receipt_digest: _digest, ...body } = receipt;
|
|
124
|
+
if (canonical(body) !== canonical(expectedBody)) {
|
|
125
|
+
throw new TypeError("Target world clock receipt correlation is invalid");
|
|
126
|
+
}
|
|
127
|
+
return receipt;
|
|
128
|
+
};
|
|
129
|
+
export const createCanonicalTargetWorldClockReceiptBytes = (raw) => canonical(parseTargetWorldClockReceipt(raw));
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const TARGET_WORLD_READINESS_REQUEST_VERSION: "spawnfile.target-world-readiness.request.v1";
|
|
3
|
+
export declare const TARGET_WORLD_READINESS_RECEIPT_VERSION: "spawnfile.target-world-readiness-receipt.v1";
|
|
4
|
+
export declare const TARGET_WORLD_READINESS_PATH: "/v1/world/readiness";
|
|
5
|
+
export declare const MAX_TARGET_WORLD_READINESS_BYTES = 32768;
|
|
6
|
+
export declare const targetWorldReadinessDocumentSchema: z.ZodObject<{
|
|
7
|
+
artifact_digest: z.ZodNullable<z.ZodString>;
|
|
8
|
+
bundle_digest: z.ZodString;
|
|
9
|
+
capability_manifest_digests: z.ZodArray<z.ZodString>;
|
|
10
|
+
capabilities: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
11
|
+
identity: z.ZodString;
|
|
12
|
+
manifest_digest: z.ZodString;
|
|
13
|
+
}, z.core.$strict>>>;
|
|
14
|
+
clock: z.ZodObject<{
|
|
15
|
+
next_tick: z.ZodLiteral<0>;
|
|
16
|
+
state: z.ZodLiteral<"paused">;
|
|
17
|
+
}, z.core.$strict>;
|
|
18
|
+
decisions: z.ZodObject<{
|
|
19
|
+
count: z.ZodLiteral<0>;
|
|
20
|
+
phase: z.ZodLiteral<"open">;
|
|
21
|
+
}, z.core.$strict>;
|
|
22
|
+
mechanics_sha256: z.ZodString;
|
|
23
|
+
normalized_checkpoint_sha256: z.ZodString;
|
|
24
|
+
run_id: z.ZodPipe<z.ZodString, z.ZodTransform<import("./contracts.js").RunId, string>>;
|
|
25
|
+
runtime_abi: z.ZodString;
|
|
26
|
+
status: z.ZodLiteral<"ready">;
|
|
27
|
+
version: z.ZodString;
|
|
28
|
+
world_instance_id: z.ZodPipe<z.ZodString, z.ZodTransform<import("./contracts.js").RunId, string>>;
|
|
29
|
+
}, z.core.$strict>;
|
|
30
|
+
export declare const targetWorldReadinessRequestSchema: z.ZodObject<{
|
|
31
|
+
descriptor_digest: z.ZodString;
|
|
32
|
+
endpoint: z.ZodObject<{
|
|
33
|
+
internal_port: z.ZodNumber;
|
|
34
|
+
path: z.ZodLiteral<"/v1/world/readiness">;
|
|
35
|
+
}, z.core.$strict>;
|
|
36
|
+
expected: z.ZodObject<{
|
|
37
|
+
artifact_digest: z.ZodNullable<z.ZodString>;
|
|
38
|
+
bundle_digest: z.ZodString;
|
|
39
|
+
capability_manifest_digests: z.ZodArray<z.ZodString>;
|
|
40
|
+
capabilities: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
41
|
+
identity: z.ZodString;
|
|
42
|
+
manifest_digest: z.ZodString;
|
|
43
|
+
}, z.core.$strict>>>;
|
|
44
|
+
document_version: z.ZodString;
|
|
45
|
+
mechanics_sha256: z.ZodString;
|
|
46
|
+
normalized_checkpoint_sha256: z.ZodString;
|
|
47
|
+
runtime_abi: z.ZodString;
|
|
48
|
+
world_instance_id: z.ZodPipe<z.ZodString, z.ZodTransform<import("./contracts.js").RunId, string>>;
|
|
49
|
+
}, z.core.$strict>;
|
|
50
|
+
run_id: z.ZodPipe<z.ZodString, z.ZodTransform<import("./contracts.js").RunId, string>>;
|
|
51
|
+
selected_target: z.ZodObject<{
|
|
52
|
+
fingerprint: z.ZodString;
|
|
53
|
+
handle: z.ZodPipe<z.ZodString, z.ZodTransform<import("./contracts.js").OpaqueTargetHandle, string>>;
|
|
54
|
+
}, z.core.$strict>;
|
|
55
|
+
version: z.ZodLiteral<"spawnfile.target-world-readiness.request.v1">;
|
|
56
|
+
world_service_handle: z.ZodPipe<z.ZodString, z.ZodTransform<import("./contracts.js").OpaqueTargetHandle, string>>;
|
|
57
|
+
}, z.core.$strict>;
|
|
58
|
+
export declare const targetWorldReadinessReceiptSchema: z.ZodObject<{
|
|
59
|
+
readiness: z.ZodObject<{
|
|
60
|
+
artifact_digest: z.ZodNullable<z.ZodString>;
|
|
61
|
+
bundle_digest: z.ZodString;
|
|
62
|
+
capability_manifest_digests: z.ZodArray<z.ZodString>;
|
|
63
|
+
capabilities: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
64
|
+
identity: z.ZodString;
|
|
65
|
+
manifest_digest: z.ZodString;
|
|
66
|
+
}, z.core.$strict>>>;
|
|
67
|
+
clock: z.ZodObject<{
|
|
68
|
+
next_tick: z.ZodLiteral<0>;
|
|
69
|
+
state: z.ZodLiteral<"paused">;
|
|
70
|
+
}, z.core.$strict>;
|
|
71
|
+
decisions: z.ZodObject<{
|
|
72
|
+
count: z.ZodLiteral<0>;
|
|
73
|
+
phase: z.ZodLiteral<"open">;
|
|
74
|
+
}, z.core.$strict>;
|
|
75
|
+
mechanics_sha256: z.ZodString;
|
|
76
|
+
normalized_checkpoint_sha256: z.ZodString;
|
|
77
|
+
run_id: z.ZodPipe<z.ZodString, z.ZodTransform<import("./contracts.js").RunId, string>>;
|
|
78
|
+
runtime_abi: z.ZodString;
|
|
79
|
+
status: z.ZodLiteral<"ready">;
|
|
80
|
+
version: z.ZodString;
|
|
81
|
+
world_instance_id: z.ZodPipe<z.ZodString, z.ZodTransform<import("./contracts.js").RunId, string>>;
|
|
82
|
+
}, z.core.$strict>;
|
|
83
|
+
readiness_digest: z.ZodString;
|
|
84
|
+
request_digest: z.ZodString;
|
|
85
|
+
run_id: z.ZodPipe<z.ZodString, z.ZodTransform<import("./contracts.js").RunId, string>>;
|
|
86
|
+
version: z.ZodLiteral<"spawnfile.target-world-readiness-receipt.v1">;
|
|
87
|
+
}, z.core.$strict>;
|
|
88
|
+
export type TargetWorldReadinessDocument = z.infer<typeof targetWorldReadinessDocumentSchema>;
|
|
89
|
+
export type TargetWorldReadinessRequest = z.infer<typeof targetWorldReadinessRequestSchema>;
|
|
90
|
+
export type TargetWorldReadinessReceipt = z.infer<typeof targetWorldReadinessReceiptSchema>;
|
|
91
|
+
export declare const parseTargetWorldReadinessDocument: (raw: unknown) => TargetWorldReadinessDocument;
|
|
92
|
+
export declare const parseTargetWorldReadinessRequest: (raw: unknown) => TargetWorldReadinessRequest;
|
|
93
|
+
export declare const parseTargetWorldReadinessReceipt: (raw: unknown) => TargetWorldReadinessReceipt;
|
|
94
|
+
export declare const createTargetWorldReadinessRequestDigest: (raw: unknown) => `sha256:${string}`;
|
|
95
|
+
export declare const createTargetWorldReadinessReceipt: (input: {
|
|
96
|
+
readonly document: unknown;
|
|
97
|
+
readonly request: unknown;
|
|
98
|
+
}) => TargetWorldReadinessReceipt;
|
|
99
|
+
export declare const verifyTargetWorldReadinessReceipt: (input: {
|
|
100
|
+
readonly receipt: unknown;
|
|
101
|
+
readonly request: unknown;
|
|
102
|
+
}) => TargetWorldReadinessReceipt;
|
|
103
|
+
export declare const createCanonicalTargetWorldReadinessReceiptBytes: (raw: unknown) => string;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { assertOrdinaryJsonGraph, opaqueTargetHandleSchema, runIdSchema, selectedTargetSchema } from "./contracts.js";
|
|
4
|
+
export const TARGET_WORLD_READINESS_REQUEST_VERSION = "spawnfile.target-world-readiness.request.v1";
|
|
5
|
+
export const TARGET_WORLD_READINESS_RECEIPT_VERSION = "spawnfile.target-world-readiness-receipt.v1";
|
|
6
|
+
export const TARGET_WORLD_READINESS_PATH = "/v1/world/readiness";
|
|
7
|
+
export const MAX_TARGET_WORLD_READINESS_BYTES = 32_768;
|
|
8
|
+
const digestSchema = z.string().regex(/^sha256:[a-f0-9]{64}$/u);
|
|
9
|
+
const protocolSchema = z.string().max(127)
|
|
10
|
+
.regex(/^[a-z][a-z0-9._-]*\.v[1-9][0-9]*$/u);
|
|
11
|
+
const capabilityDigestsSchema = z.array(digestSchema).min(1).max(4_096)
|
|
12
|
+
.superRefine((value, context) => {
|
|
13
|
+
const sorted = [...new Set(value)].sort();
|
|
14
|
+
if (sorted.length !== value.length
|
|
15
|
+
|| value.some((item, index) => item !== sorted[index])) {
|
|
16
|
+
context.addIssue({
|
|
17
|
+
code: z.ZodIssueCode.custom,
|
|
18
|
+
message: "capability manifest digests must be sorted and unique"
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
const capabilityIdentitiesSchema = z.array(z.object({
|
|
23
|
+
identity: protocolSchema,
|
|
24
|
+
manifest_digest: digestSchema
|
|
25
|
+
}).strict()).max(32).superRefine((value, context) => {
|
|
26
|
+
const identities = value.map((entry) => entry.identity);
|
|
27
|
+
if (new Set(identities).size !== identities.length
|
|
28
|
+
|| identities.some((item, index) => index > 0 && identities[index - 1] >= item)) {
|
|
29
|
+
context.addIssue({
|
|
30
|
+
code: z.ZodIssueCode.custom,
|
|
31
|
+
message: "capability identities must be sorted and unique"
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
export const targetWorldReadinessDocumentSchema = z.object({
|
|
36
|
+
artifact_digest: digestSchema.nullable(),
|
|
37
|
+
bundle_digest: digestSchema,
|
|
38
|
+
capability_manifest_digests: capabilityDigestsSchema,
|
|
39
|
+
capabilities: capabilityIdentitiesSchema.optional(),
|
|
40
|
+
clock: z.object({ next_tick: z.literal(0), state: z.literal("paused") }).strict(),
|
|
41
|
+
decisions: z.object({ count: z.literal(0), phase: z.literal("open") }).strict(),
|
|
42
|
+
mechanics_sha256: digestSchema,
|
|
43
|
+
normalized_checkpoint_sha256: digestSchema,
|
|
44
|
+
run_id: runIdSchema,
|
|
45
|
+
runtime_abi: protocolSchema,
|
|
46
|
+
status: z.literal("ready"),
|
|
47
|
+
version: protocolSchema,
|
|
48
|
+
world_instance_id: runIdSchema
|
|
49
|
+
}).strict().superRefine((value, context) => {
|
|
50
|
+
if (value.capabilities?.some((entry) => !value.capability_manifest_digests.includes(entry.manifest_digest))) {
|
|
51
|
+
context.addIssue({
|
|
52
|
+
code: z.ZodIssueCode.custom,
|
|
53
|
+
message: "capability identity manifest is not advertised"
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
const expectationSchema = z.object({
|
|
58
|
+
artifact_digest: digestSchema.nullable(),
|
|
59
|
+
bundle_digest: digestSchema,
|
|
60
|
+
capability_manifest_digests: capabilityDigestsSchema,
|
|
61
|
+
capabilities: capabilityIdentitiesSchema.optional(),
|
|
62
|
+
document_version: protocolSchema,
|
|
63
|
+
mechanics_sha256: digestSchema,
|
|
64
|
+
normalized_checkpoint_sha256: digestSchema,
|
|
65
|
+
runtime_abi: protocolSchema,
|
|
66
|
+
world_instance_id: runIdSchema
|
|
67
|
+
}).strict();
|
|
68
|
+
export const targetWorldReadinessRequestSchema = z.object({
|
|
69
|
+
descriptor_digest: digestSchema,
|
|
70
|
+
endpoint: z.object({
|
|
71
|
+
internal_port: z.number().int().min(1).max(65_535),
|
|
72
|
+
path: z.literal(TARGET_WORLD_READINESS_PATH)
|
|
73
|
+
}).strict(),
|
|
74
|
+
expected: expectationSchema,
|
|
75
|
+
run_id: runIdSchema,
|
|
76
|
+
selected_target: selectedTargetSchema,
|
|
77
|
+
version: z.literal(TARGET_WORLD_READINESS_REQUEST_VERSION),
|
|
78
|
+
world_service_handle: opaqueTargetHandleSchema
|
|
79
|
+
}).strict();
|
|
80
|
+
export const targetWorldReadinessReceiptSchema = z.object({
|
|
81
|
+
readiness: targetWorldReadinessDocumentSchema,
|
|
82
|
+
readiness_digest: digestSchema,
|
|
83
|
+
request_digest: digestSchema,
|
|
84
|
+
run_id: runIdSchema,
|
|
85
|
+
version: z.literal(TARGET_WORLD_READINESS_RECEIPT_VERSION)
|
|
86
|
+
}).strict();
|
|
87
|
+
const canonicalValue = (value) => {
|
|
88
|
+
if (Array.isArray(value))
|
|
89
|
+
return `[${value.map(canonicalValue).join(",")}]`;
|
|
90
|
+
if (value !== null && typeof value === "object") {
|
|
91
|
+
const record = value;
|
|
92
|
+
return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${canonicalValue(record[key])}`).join(",")}}`;
|
|
93
|
+
}
|
|
94
|
+
return JSON.stringify(value);
|
|
95
|
+
};
|
|
96
|
+
const parse = (schema, raw) => {
|
|
97
|
+
assertOrdinaryJsonGraph(raw);
|
|
98
|
+
return schema.parse(raw);
|
|
99
|
+
};
|
|
100
|
+
const hash = (domain, raw) => `sha256:${createHash("sha256")
|
|
101
|
+
.update(`${domain}\0${canonicalValue(raw)}`, "utf8")
|
|
102
|
+
.digest("hex")}`;
|
|
103
|
+
export const parseTargetWorldReadinessDocument = (raw) => parse(targetWorldReadinessDocumentSchema, raw);
|
|
104
|
+
export const parseTargetWorldReadinessRequest = (raw) => parse(targetWorldReadinessRequestSchema, raw);
|
|
105
|
+
export const parseTargetWorldReadinessReceipt = (raw) => {
|
|
106
|
+
const receipt = parse(targetWorldReadinessReceiptSchema, raw);
|
|
107
|
+
if (receipt.readiness_digest !== hash("spawnfile.target-world-readiness.document.v1", receipt.readiness))
|
|
108
|
+
throw new TypeError("Target world readiness receipt digest is invalid");
|
|
109
|
+
return receipt;
|
|
110
|
+
};
|
|
111
|
+
export const createTargetWorldReadinessRequestDigest = (raw) => hash(TARGET_WORLD_READINESS_REQUEST_VERSION, parseTargetWorldReadinessRequest(raw));
|
|
112
|
+
const verifyDocument = (document, request) => {
|
|
113
|
+
const expected = request.expected;
|
|
114
|
+
if (document.version !== expected.document_version
|
|
115
|
+
|| document.runtime_abi !== expected.runtime_abi
|
|
116
|
+
|| document.run_id !== request.run_id
|
|
117
|
+
|| document.world_instance_id !== expected.world_instance_id
|
|
118
|
+
|| document.artifact_digest !== expected.artifact_digest
|
|
119
|
+
|| document.bundle_digest !== expected.bundle_digest
|
|
120
|
+
|| document.mechanics_sha256 !== expected.mechanics_sha256
|
|
121
|
+
|| document.normalized_checkpoint_sha256
|
|
122
|
+
!== expected.normalized_checkpoint_sha256
|
|
123
|
+
|| canonicalValue(document.capability_manifest_digests)
|
|
124
|
+
!== canonicalValue(expected.capability_manifest_digests)
|
|
125
|
+
|| canonicalValue(document.capabilities ?? [])
|
|
126
|
+
!== canonicalValue(expected.capabilities ?? [])) {
|
|
127
|
+
throw new TypeError("Target world readiness document correlation is invalid");
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
export const createTargetWorldReadinessReceipt = (input) => {
|
|
131
|
+
const request = parseTargetWorldReadinessRequest(input.request);
|
|
132
|
+
const readiness = parseTargetWorldReadinessDocument(input.document);
|
|
133
|
+
verifyDocument(readiness, request);
|
|
134
|
+
return parseTargetWorldReadinessReceipt({
|
|
135
|
+
readiness,
|
|
136
|
+
readiness_digest: hash("spawnfile.target-world-readiness.document.v1", readiness),
|
|
137
|
+
request_digest: createTargetWorldReadinessRequestDigest(request),
|
|
138
|
+
run_id: request.run_id,
|
|
139
|
+
version: TARGET_WORLD_READINESS_RECEIPT_VERSION
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
export const verifyTargetWorldReadinessReceipt = (input) => {
|
|
143
|
+
const receipt = parseTargetWorldReadinessReceipt(input.receipt);
|
|
144
|
+
const expected = createTargetWorldReadinessReceipt({
|
|
145
|
+
document: receipt.readiness,
|
|
146
|
+
request: input.request
|
|
147
|
+
});
|
|
148
|
+
if (canonicalValue(receipt) !== canonicalValue(expected)) {
|
|
149
|
+
throw new TypeError("Target world readiness receipt correlation is invalid");
|
|
150
|
+
}
|
|
151
|
+
return receipt;
|
|
152
|
+
};
|
|
153
|
+
export const createCanonicalTargetWorldReadinessReceiptBytes = (raw) => canonicalValue(parseTargetWorldReadinessReceipt(raw));
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "spawnfile.moltnet-release-authority.v1",
|
|
3
|
+
"release_version": "v0.1.14",
|
|
4
|
+
"source_revision": "7baeb284ba0b1b5e454476141a557d68b5a4af0d",
|
|
5
|
+
"capabilities": [
|
|
6
|
+
"pi-bridge"
|
|
7
|
+
],
|
|
8
|
+
"assets": [
|
|
9
|
+
{
|
|
10
|
+
"architecture": "amd64",
|
|
11
|
+
"asset": "moltnet_linux_amd64.tar.gz",
|
|
12
|
+
"asset_sha256": "sha256:a2e7a0acd44ab548a81d99e51401ebdee9f50a539b24c9450fc12d8e9218e5f6"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"architecture": "arm64",
|
|
16
|
+
"asset": "moltnet_linux_arm64.tar.gz",
|
|
17
|
+
"asset_sha256": "sha256:3d46ad047496dd32a9ad41901e7ae1f10a25e9a21f3b29d3b6ccd2cff62fa58f"
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "spawnfile",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"description": "Canonical source compiler for autonomous agents and teams.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
12
|
+
"moltnet-releases.json",
|
|
12
13
|
"runtimes.yaml"
|
|
13
14
|
],
|
|
14
15
|
"engines": {
|
|
15
|
-
"node": ">=22.
|
|
16
|
+
"node": ">=22.19.0"
|
|
16
17
|
},
|
|
17
18
|
"scripts": {
|
|
18
|
-
"
|
|
19
|
-
"build": "rm -rf dist && tsc --project tsconfig.build.json && chmod +x dist/cli/index.js && node ./scripts/copy-runtime-scaffold-assets.mjs",
|
|
19
|
+
"build": "rm -rf dist && tsc --project tsconfig.build.json && chmod +x dist/cli/index.js && node ./src/runtime/copyScaffoldAssets.mjs",
|
|
20
20
|
"clean": "rm -rf coverage dist",
|
|
21
21
|
"coverage": "vitest run --coverage",
|
|
22
22
|
"dev": "tsx src/cli/index.ts",
|
|
@@ -25,22 +25,43 @@
|
|
|
25
25
|
"release:patch": "npm version patch && npm publish",
|
|
26
26
|
"release:minor": "npm version minor && npm publish",
|
|
27
27
|
"release:major": "npm version major && npm publish",
|
|
28
|
-
"
|
|
29
|
-
"
|
|
28
|
+
"runtime:images": "npm run runtime:openclaw-image && npm run runtime:picoclaw-image",
|
|
29
|
+
"runtime:openclaw-image": "docker build -f runtime-images/openclaw/Dockerfile -t noopolis/spawnfile-runtime-openclaw:2026.6.11-local runtime-images/openclaw",
|
|
30
|
+
"runtime:picoclaw-image": "docker build -f runtime-images/picoclaw/Dockerfile -t noopolis/spawnfile-runtime-picoclaw:0.3.1-local runtime-images/picoclaw",
|
|
31
|
+
"audit:generate": "tsx src/audit/auditCli.ts",
|
|
32
|
+
"build:local-moltnet": "node ./scripts/build-local-moltnet.mjs",
|
|
33
|
+
"verify:package-closure": "node ./scripts/verify-package-closure.mjs",
|
|
30
34
|
"test:e2e:docker-auth": "tsx src/e2e/cli.ts",
|
|
35
|
+
"test:e2e:daimon-memory-recall": "tsx src/e2e/cli.ts daimon-memory-recall",
|
|
36
|
+
"test:e2e:jungian-self-org": "tsx src/e2e/cli.ts jungian-self-org",
|
|
31
37
|
"test:e2e:moltnet-team-chat": "tsx src/e2e/cli.ts moltnet-team-chat",
|
|
38
|
+
"test:e2e:moltnet-memetics": "tsx src/e2e/cli.ts moltnet-memetics",
|
|
39
|
+
"test:e2e:mixed-runtime-memory": "tsx src/e2e/cli.ts mixed-runtime-memory",
|
|
40
|
+
"test:e2e:preflight": "tsx src/e2e/cli.ts preflight",
|
|
41
|
+
"test:e2e:ollama-embeddings-probe": "tsx src/e2e/cli.ts ollama-embeddings-probe",
|
|
32
42
|
"test:e2e:operational-smoke": "tsx src/e2e/cli.ts operational-smoke",
|
|
33
|
-
"test": "
|
|
43
|
+
"test:e2e:lifecycle-smoke": "tsx src/e2e/cli.ts lifecycle-smoke",
|
|
44
|
+
"test": "npm run test:vitest; vitest_status=$?; npm run test:verdict; verdict_status=$?; npm run test:coverage-verdict; coverage_status=$?; npm run test:node; node_status=$?; failed_lanes=''; if [ \"$verdict_status\" -eq 2 ]; then failed_lanes='vitest test failures'; fi; if [ \"$node_status\" -eq 2 ]; then if [ -n \"$failed_lanes\" ]; then failed_lanes=\"$failed_lanes; node:test suite\"; else failed_lanes='node:test suite'; fi; fi; result_status=0; if [ -n \"$failed_lanes\" ]; then echo \"FAIL(tests): $failed_lanes\"; result_status=1; fi; if [ \"$verdict_status\" -ne 0 ] && [ \"$verdict_status\" -ne 2 ]; then echo 'FAIL(vitest-verdict): could not determine the vitest result'; result_status=1; fi; if [ \"$node_status\" -ne 0 ] && [ \"$node_status\" -ne 2 ]; then echo 'FAIL(node-lane): could not determine the node:test result'; result_status=1; fi; if [ \"$result_status\" -ne 0 ]; then exit 1; elif [ \"$vitest_status\" -ne 0 ]; then echo \"FAIL(vitest): exited $vitest_status with no test failure\"; exit 1; elif [ \"$coverage_status\" -eq 2 ]; then echo 'FAIL(coverage): thresholds not met (tests all passed)'; exit 2; elif [ \"$coverage_status\" -ne 0 ]; then echo 'FAIL(coverage-verdict): could not evaluate coverage (tests all passed)'; exit 1; else echo 'PASS'; fi",
|
|
45
|
+
"test:vitest": "rm -f coverage/vitest-results.json coverage/coverage-summary.json && vitest run --coverage.thresholds.branches=0 --coverage.thresholds.functions=0 --coverage.thresholds.lines=0 --coverage.thresholds.statements=0",
|
|
46
|
+
"test:verdict": "node -e \"const fs=require('fs'); const file='coverage/vitest-results.json'; if (!fs.existsSync(file)) { console.error('VERDICT: results file missing'); process.exit(1); } let result; try { result=JSON.parse(fs.readFileSync(file, 'utf8')); } catch { console.error('VERDICT: results file unparseable'); process.exit(1); } const total=result.numTotalTests; const totalSuites=result.numTotalTestSuites; const passedTests=result.numPassedTests; const failedTests=result.numFailedTests; const pendingTests=result.numPendingTests; const todoTests=result.numTodoTests; const failedSuites=result.numFailedTestSuites; if (typeof result.success !== 'boolean' || !Number.isInteger(passedTests) || passedTests < 0 || !Number.isInteger(failedTests) || failedTests < 0 || !Number.isInteger(pendingTests) || pendingTests < 0 || !Number.isInteger(todoTests) || todoTests < 0 || !Number.isInteger(failedSuites) || failedSuites < 0 || !Number.isInteger(totalSuites) || totalSuites < 0) { console.error('VERDICT: results schema unrecognised'); process.exit(1); } if (!Number.isInteger(total) || total <= 0) { console.error('VERDICT: no tests found'); process.exit(1); } if (passedTests + failedTests + pendingTests + todoTests !== total) { console.error('VERDICT: results counters do not reconcile (tests='+total+', passed='+passedTests+', failed='+failedTests+', skipped='+pendingTests+', todo='+todoTests+')'); process.exit(1); } const failed=result.success === false || failedTests > 0 || failedSuites > 0; if (failed) { console.error('VERDICT: test failures found (tests='+failedTests+', suites='+failedSuites+', success='+result.success+')'); process.exit(2); } if (passedTests === 0) { console.error('VERDICT: no tests actually ran (skipped='+pendingTests+', todo='+todoTests+')'); process.exit(1); } console.log('VERDICT: tests passed (tests='+total+', suites='+totalSuites+', passed='+passedTests+', skipped='+pendingTests+', todo='+todoTests+')');\"",
|
|
47
|
+
"test:coverage-verdict": "node --import tsx -e \"import fs from 'node:fs'; const file='coverage/coverage-summary.json'; const fail=(message)=>{ console.error('COVERAGE VERDICT: '+message); process.exit(1); }; let summary; try { summary=JSON.parse(fs.readFileSync(file, 'utf8')); } catch (error) { fail(error && error.code === 'ENOENT' ? 'summary file missing' : 'summary file unparseable'); } import('./vitest.config.ts').then(({default:config})=>{ const thresholds=config.test && config.test.coverage && config.test.coverage.thresholds; if (!thresholds || typeof thresholds !== 'object' || !summary || typeof summary !== 'object' || !summary.total || typeof summary.total !== 'object') fail('summary or threshold schema unrecognised'); const metricNames=['branches','functions','lines','statements']; const metrics=metricNames.filter((metric)=>Object.prototype.hasOwnProperty.call(thresholds, metric)); if (metrics.length === 0) fail('no threshold metrics configured'); let shortfall=false; for (const metric of metrics) { const threshold=thresholds[metric]; const pct=summary.total[metric] && summary.total[metric].pct; if (typeof threshold !== 'number' || !Number.isFinite(threshold) || typeof pct !== 'number' || !Number.isFinite(pct)) fail('missing or non-numeric value for '+metric); console.log('COVERAGE: '+metric+' '+pct+'% (threshold '+threshold+'%)'); if (pct < threshold) shortfall=true; } if (shortfall) { console.error('COVERAGE VERDICT: thresholds not met'); process.exit(2); } console.log('COVERAGE VERDICT: thresholds met'); }).catch((error)=>fail('could not load vitest config: '+error.message));\"",
|
|
48
|
+
"test:node": "mkdir -p coverage || exit 1; rm -f coverage/node-test.tap || exit 1; node --import tsx --test --test-reporter=tap src/runtime/pi/appControlDeliveryMetadata.test.ts > coverage/node-test.tap 2>&1; node_status=$?; cat coverage/node-test.tap; cat_status=$?; npm run test:node-verdict; verdict_status=$?; if [ \"$verdict_status\" -eq 2 ]; then exit 2; fi; if [ \"$verdict_status\" -ne 0 ]; then exit 1; fi; if [ \"$cat_status\" -ne 0 ]; then echo 'NODE VERDICT: could not read TAP output' >&2; exit 1; fi; if [ \"$node_status\" -ne 0 ]; then echo \"NODE VERDICT: node:test runner exited $node_status despite a passing TAP summary\" >&2; exit 1; fi; exit 0",
|
|
49
|
+
"test:node-verdict": "node -e \"const fs=require('fs'); const text=fs.readFileSync('coverage/node-test.tap', 'utf8'); const tests=text.match(/^# tests ([0-9]+)\\r?$/m); const suites=text.match(/^# suites ([0-9]+)\\r?$/m); const passed=text.match(/^# pass ([0-9]+)\\r?$/m); const failed=text.match(/^# fail ([0-9]+)\\r?$/m); const skipped=text.match(/^# skipped ([0-9]+)\\r?$/m); const todo=text.match(/^# todo ([0-9]+)\\r?$/m); const cancelled=text.match(/^# cancelled ([0-9]+)\\r?$/m); if (!tests || !suites || !passed || !failed || !skipped || !todo || !cancelled) { console.error('NODE VERDICT: TAP summary unrecognised'); process.exit(1); } const testCount=Number(tests[1]); const suiteCount=Number(suites[1]); const passCount=Number(passed[1]); const failCount=Number(failed[1]); const skippedCount=Number(skipped[1]); const todoCount=Number(todo[1]); const cancelledCount=Number(cancelled[1]); if (failCount > 0) { console.error('NODE VERDICT: test failures found (tests='+testCount+', failed='+failCount+')'); process.exit(2); } if (cancelledCount > 0) { console.error('NODE VERDICT: incomplete run (cancelled='+cancelledCount+')'); process.exit(1); } if (passCount + skippedCount + todoCount + cancelledCount !== testCount) { console.error('NODE VERDICT: TAP counts do not reconcile (tests='+testCount+', passed='+passCount+', skipped='+skippedCount+', todo='+todoCount+', cancelled='+cancelledCount+')'); process.exit(1); } if (testCount < 10) { console.error('NODE VERDICT: expected at least 10 node:test cases, found '+testCount+' — cases were removed or the file was gutted'); process.exit(1); } if (passCount < 10) { console.error('NODE VERDICT: expected at least 10 passing node:test cases, found '+passCount+' (skipped='+skippedCount+', todo='+todoCount+')'); process.exit(1); } if (suiteCount < 1) { console.error('NODE VERDICT: expected at least 1 node:test suite, found '+suiteCount); process.exit(1); } console.log('NODE VERDICT: tests passed (tests='+testCount+', suites='+suiteCount+', passed='+passCount+', skipped='+skippedCount+', todo='+todoCount+', failed=0)');\"",
|
|
50
|
+
"test:boundaries": "vitest run --coverage.enabled=false src/ownership/rootOwnershipBoundary.test.ts src/deployment/providerRuntimeBoundary.test.ts src/ownership/mnemePublicImportBoundary.test.ts src/target/containerBundleArchive.test.ts",
|
|
51
|
+
"test:causal-conformance": "tsx src/ledger/causalConformanceCli.ts",
|
|
34
52
|
"typecheck": "tsc --project tsconfig.json --noEmit",
|
|
35
53
|
"test:e2e:distribution-image": "tsx src/e2e/cli.ts distribution-image",
|
|
36
|
-
"test:e2e:distribution-roundtrip": "tsx src/e2e/cli.ts distribution-roundtrip"
|
|
54
|
+
"test:e2e:distribution-roundtrip": "tsx src/e2e/cli.ts distribution-roundtrip",
|
|
55
|
+
"test:e2e:daimon-org": "tsx src/e2e/cli.ts daimon-org"
|
|
37
56
|
},
|
|
38
57
|
"dependencies": {
|
|
58
|
+
"@noopolis/stele": "0.0.2",
|
|
39
59
|
"commander": "^14.0.1",
|
|
40
60
|
"yaml": "^2.8.1",
|
|
41
61
|
"zod": "^4.1.12"
|
|
42
62
|
},
|
|
43
63
|
"devDependencies": {
|
|
64
|
+
"@noopolis/mneme": "^0.1.1",
|
|
44
65
|
"@types/node": "^24.6.0",
|
|
45
66
|
"@vitest/coverage-v8": "^3.2.4",
|
|
46
67
|
"tsx": "^4.20.6",
|
package/runtimes.yaml
CHANGED
|
@@ -10,32 +10,45 @@
|
|
|
10
10
|
# install Pinned install strategy for the verified runtime version
|
|
11
11
|
# status active (has adapter) | exploratory (research only)
|
|
12
12
|
#
|
|
13
|
-
# Run ./scripts/runtimes.sh to clone or update all entries to their
|
|
14
|
-
# pinned refs.
|
|
15
|
-
|
|
16
13
|
runtimes:
|
|
14
|
+
daimon:
|
|
15
|
+
remote: git@github.com:noopolis/daimon.git
|
|
16
|
+
ref: v0.1.2
|
|
17
|
+
default_branch: main
|
|
18
|
+
install:
|
|
19
|
+
kind: container_image
|
|
20
|
+
image: noopolis/spawnfile-runtime-daimon
|
|
21
|
+
tag: 0.1.2
|
|
22
|
+
status: active
|
|
23
|
+
|
|
17
24
|
openclaw:
|
|
18
25
|
remote: git@github.com:openclaw/openclaw.git
|
|
19
|
-
ref: v2026.6.
|
|
26
|
+
ref: v2026.6.11
|
|
20
27
|
default_branch: main
|
|
21
28
|
install:
|
|
22
|
-
kind:
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
kind: container_image
|
|
30
|
+
image: noopolis/spawnfile-runtime-openclaw
|
|
31
|
+
tag: 2026.6.11
|
|
25
32
|
status: active
|
|
26
33
|
|
|
27
34
|
picoclaw:
|
|
28
35
|
remote: git@github.com:sipeed/picoclaw.git
|
|
29
|
-
ref: v0.
|
|
36
|
+
ref: v0.3.1
|
|
30
37
|
default_branch: main
|
|
31
38
|
install:
|
|
32
|
-
kind:
|
|
33
|
-
|
|
34
|
-
tag:
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
kind: container_image
|
|
40
|
+
image: noopolis/spawnfile-runtime-picoclaw
|
|
41
|
+
tag: 0.3.1
|
|
42
|
+
status: active
|
|
43
|
+
|
|
44
|
+
pi:
|
|
45
|
+
remote: git@github.com:earendil-works/pi.git
|
|
46
|
+
ref: v0.79.10
|
|
47
|
+
default_branch: main
|
|
48
|
+
install:
|
|
49
|
+
kind: npm
|
|
50
|
+
package: "@earendil-works/pi-coding-agent"
|
|
51
|
+
version: 0.79.10
|
|
39
52
|
status: active
|
|
40
53
|
|
|
41
54
|
hermes-agent:
|
|
@@ -44,12 +57,6 @@ runtimes:
|
|
|
44
57
|
default_branch: main
|
|
45
58
|
status: exploratory
|
|
46
59
|
|
|
47
|
-
nullclaw:
|
|
48
|
-
remote: git@github.com:nullclaw/nullclaw.git
|
|
49
|
-
ref: v2026.5.29
|
|
50
|
-
default_branch: main
|
|
51
|
-
status: exploratory
|
|
52
|
-
|
|
53
60
|
opencode:
|
|
54
61
|
remote: git@github.com:anomalyco/opencode.git
|
|
55
62
|
ref: v1.16.2
|
|
@@ -61,9 +68,3 @@ runtimes:
|
|
|
61
68
|
ref: v0.6.9
|
|
62
69
|
default_branch: main
|
|
63
70
|
status: exploratory
|
|
64
|
-
|
|
65
|
-
zeroclaw:
|
|
66
|
-
remote: git@github.com:zeroclaw-labs/zeroclaw.git
|
|
67
|
-
ref: v0.7.5
|
|
68
|
-
default_branch: master
|
|
69
|
-
status: exploratory
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
# OpenClaw Scaffold Assets
|
|
2
|
-
|
|
3
|
-
This folder contains the bundled markdown starter files used by `spawnfile init --runtime openclaw`.
|
|
4
|
-
|
|
5
|
-
These files are copied into `dist/runtime/openclaw/scaffold-assets/` during `npm run build` so the installed CLI can scaffold projects without depending on `blueprints/` or `runtimes/`.
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
# PicoClaw Scaffold Assets
|
|
2
|
-
|
|
3
|
-
This folder contains the bundled markdown starter files used by `spawnfile init --runtime picoclaw`.
|
|
4
|
-
|
|
5
|
-
These files are copied into `dist/runtime/picoclaw/scaffold-assets/` during `npm run build` so the installed CLI can scaffold projects without depending on `blueprints/` or `runtimes/`.
|
|
File without changes
|
|
File without changes
|