spawnfile 0.1.13 → 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 +50 -11
- 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/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/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 -181
- 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 +9 -2
- package/dist/cli/runCli.js +27 -71
- package/dist/cli/runPublishCommands.d.ts +3 -0
- package/dist/cli/runPublishCommands.js +70 -0
- package/dist/cli/statusCommand.d.ts +3 -33
- package/dist/cli/statusCommand.js +19 -249
- package/dist/cli/statusCommandLive.d.ts +20 -0
- package/dist/cli/statusCommandLive.js +188 -0
- package/dist/cli/statusCommandOptions.d.ts +40 -0
- package/dist/cli/statusCommandOptions.js +42 -0
- package/dist/cli/targetCliRoute.d.ts +2 -0
- package/dist/cli/targetCliRoute.js +30 -0
- package/dist/cli/targetCommands.d.ts +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 +11 -0
- package/dist/compiler/buildProject.js +77 -2
- package/dist/compiler/compilePlanHelpers.js +2 -0
- package/dist/compiler/compileProject.d.ts +13 -0
- package/dist/compiler/compileProject.js +26 -74
- 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 +15 -12
- 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 +56 -52
- 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/containerTargetPlanResolution.d.ts +20 -0
- package/dist/compiler/containerTargetPlanResolution.js +97 -0
- 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 +43 -97
- package/dist/compiler/moltnetBinaries.d.ts +21 -4
- package/dist/compiler/moltnetBinaries.js +134 -27
- package/dist/compiler/moltnetClientConfig.js +7 -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/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 +30 -21
- 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 +31 -8
- 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 +256 -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.js +9 -1
- 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 +16 -0
- package/dist/deployment/index.js +17 -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/project.js +15 -9
- 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 +35 -0
- package/dist/runtime/common.js +55 -0
- package/dist/runtime/container.d.ts +28 -1
- package/dist/runtime/container.js +38 -5
- 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/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 +1 -1
- package/dist/runtime/pi/adapter.js +86 -53
- package/dist/runtime/pi/appActivitySource.js +114 -2
- package/dist/runtime/pi/appAgentConfig.d.ts +11 -0
- package/dist/runtime/pi/appAgentConfig.js +264 -0
- package/dist/runtime/pi/appCliEnginesSource.d.ts +1 -0
- package/dist/runtime/pi/appCliEnginesSource.js +183 -0
- package/dist/runtime/pi/appCliSource.d.ts +1 -0
- package/dist/runtime/pi/appCliSource.js +353 -0
- package/dist/runtime/pi/appControlSource.d.ts +1 -0
- package/dist/runtime/pi/appControlSource.js +390 -0
- package/dist/runtime/pi/appControlWakeIdentitySource.d.ts +1 -0
- package/dist/runtime/pi/appControlWakeIdentitySource.js +19 -0
- package/dist/runtime/pi/appCoreSource.d.ts +4 -1
- package/dist/runtime/pi/appCoreSource.js +104 -214
- package/dist/runtime/pi/appPreludeSource.js +140 -52
- package/dist/runtime/pi/appScheduleSource.d.ts +1 -0
- package/dist/runtime/pi/appScheduleSource.js +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 -1
- package/dist/runtime/pi/appSource.js +6 -2
- package/dist/runtime/pi/appTemplate.d.ts +8 -22
- package/dist/runtime/pi/appTemplate.js +9 -126
- package/dist/runtime/pi/appTemplateTypes.d.ts +64 -0
- package/dist/runtime/pi/appTemplateTypes.js +18 -0
- package/dist/runtime/pi/appWakeContextSource.d.ts +1 -0
- package/dist/runtime/pi/appWakeContextSource.js +398 -0
- package/dist/runtime/pi/containerTargets.d.ts +4 -0
- package/dist/runtime/pi/containerTargets.js +57 -0
- package/dist/runtime/pi/runAuth.js +126 -9
- package/dist/runtime/pi/testHelpers.d.ts +2 -0
- package/dist/runtime/pi/testHelpers.js +40 -0
- package/dist/runtime/picoclaw/adapter.js +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/scheduleUtils.d.ts +2 -0
- package/dist/runtime/scheduleUtils.js +15 -0
- package/dist/runtime/types.d.ts +25 -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/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 +27 -11
- package/runtimes.yaml +8 -23
- package/dist/runtime/openclaw/scaffold-assets/CLAUDE.md +0 -5
- package/dist/runtime/picoclaw/scaffold-assets/CLAUDE.md +0 -5
- /package/dist/runtime/openclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
- /package/dist/runtime/picoclaw/scaffold-assets/{AGENTS.md → WORKSPACE_AGENTS.md} +0 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
const CONTAINER_ROOTFS_ROOT = "container/rootfs";
|
|
3
|
+
const MOLTNET_NODE_CONFIG_VERSION = "moltnet.node.v1";
|
|
4
|
+
// src/compiler/moltnetRuntimeConfig.ts:108 — pi/daimon attachments both lower to kind "pi".
|
|
5
|
+
const CONTROL_URL_PATTERN = /^http:\/\/127\.0\.0\.1:\d+\/agents\/[a-z0-9-]+\/wake$/u;
|
|
6
|
+
const WIRING_KEYS = [
|
|
7
|
+
"network.wiring.node_config",
|
|
8
|
+
"network.wiring.control_url",
|
|
9
|
+
"network.wiring.network_resolves",
|
|
10
|
+
"network.wiring.membership"
|
|
11
|
+
];
|
|
12
|
+
const createObservation = (input) => ({
|
|
13
|
+
...input,
|
|
14
|
+
label: `${input.severity.toUpperCase()} ${input.key}`,
|
|
15
|
+
source: "compile_report"
|
|
16
|
+
});
|
|
17
|
+
const missingReportObservations = () => WIRING_KEYS.map((key) => createObservation({
|
|
18
|
+
key,
|
|
19
|
+
message: `${key} was not checked: no compile report is available`,
|
|
20
|
+
severity: "unknown",
|
|
21
|
+
subject: "compile"
|
|
22
|
+
}));
|
|
23
|
+
// node_plans[].config_path is a container-absolute path
|
|
24
|
+
// (toContainerRootfsPath, src/compiler/moltnetArtifactPaths.ts) — the
|
|
25
|
+
// physical file on disk lives under the compiled output's rootfs mirror.
|
|
26
|
+
const nodeConfigPhysicalPath = (outputDirectory, configPath) => path.join(outputDirectory, CONTAINER_ROOTFS_ROOT, configPath);
|
|
27
|
+
const readNodePlans = async (nodePlans, outputDirectory, readFile) => Promise.all(nodePlans.map(async (plan) => {
|
|
28
|
+
if (!outputDirectory) {
|
|
29
|
+
return { networkId: plan.networkId, parsed: null, physicalPath: null };
|
|
30
|
+
}
|
|
31
|
+
const physicalPath = nodeConfigPhysicalPath(outputDirectory, plan.configPath);
|
|
32
|
+
const content = await readFile(physicalPath);
|
|
33
|
+
if (content === null) {
|
|
34
|
+
return { networkId: plan.networkId, parsed: null, physicalPath };
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
return { networkId: plan.networkId, parsed: JSON.parse(content), physicalPath };
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return { networkId: plan.networkId, parsed: null, physicalPath };
|
|
41
|
+
}
|
|
42
|
+
}));
|
|
43
|
+
const isValidNodeConfig = (plan) => plan.parsed !== null && plan.parsed.version === MOLTNET_NODE_CONFIG_VERSION;
|
|
44
|
+
const collectNodeConfigObservations = (plans) => plans.map((plan) => {
|
|
45
|
+
const subject = `network:${plan.networkId}`;
|
|
46
|
+
if (!plan.physicalPath) {
|
|
47
|
+
return createObservation({
|
|
48
|
+
key: "network.wiring.node_config",
|
|
49
|
+
message: `${plan.networkId} node config has no compiled output directory to read from`,
|
|
50
|
+
severity: "unknown",
|
|
51
|
+
subject
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (plan.parsed === null) {
|
|
55
|
+
return createObservation({
|
|
56
|
+
key: "network.wiring.node_config",
|
|
57
|
+
message: `${plan.networkId} node config at ${plan.physicalPath} is unreadable or not valid JSON`,
|
|
58
|
+
severity: "error",
|
|
59
|
+
subject
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const validVersion = isValidNodeConfig(plan);
|
|
63
|
+
return createObservation({
|
|
64
|
+
key: "network.wiring.node_config",
|
|
65
|
+
message: validVersion
|
|
66
|
+
? `${plan.networkId} node config at ${plan.physicalPath} parses as ${MOLTNET_NODE_CONFIG_VERSION}`
|
|
67
|
+
: `${plan.networkId} node config at ${plan.physicalPath} does not declare version ${MOLTNET_NODE_CONFIG_VERSION}`,
|
|
68
|
+
severity: validVersion ? "ok" : "error",
|
|
69
|
+
subject
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
const collectControlUrlObservations = (plans) => {
|
|
73
|
+
const observations = [];
|
|
74
|
+
for (const plan of plans) {
|
|
75
|
+
if (!isValidNodeConfig(plan)) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const subject = `network:${plan.networkId}`;
|
|
79
|
+
for (const attachment of plan.parsed?.attachments ?? []) {
|
|
80
|
+
const kind = attachment.runtime?.kind;
|
|
81
|
+
const agentId = typeof attachment.agent?.id === "string" ? attachment.agent.id : "unknown-agent";
|
|
82
|
+
if (kind === "pi") {
|
|
83
|
+
const controlUrl = attachment.runtime?.control_url;
|
|
84
|
+
const valid = typeof controlUrl === "string" && CONTROL_URL_PATTERN.test(controlUrl);
|
|
85
|
+
observations.push(createObservation({
|
|
86
|
+
key: "network.wiring.control_url",
|
|
87
|
+
message: valid
|
|
88
|
+
? `${agentId} control_url ${String(controlUrl)} matches the expected loopback wake pattern`
|
|
89
|
+
: typeof controlUrl === "string"
|
|
90
|
+
? `${agentId} control_url "${controlUrl}" does not match the expected loopback wake pattern`
|
|
91
|
+
: `${agentId} pi attachment is missing control_url`,
|
|
92
|
+
severity: valid ? "ok" : "error",
|
|
93
|
+
subject
|
|
94
|
+
}));
|
|
95
|
+
}
|
|
96
|
+
else if (kind === "picoclaw") {
|
|
97
|
+
const configPath = attachment.runtime?.config_path;
|
|
98
|
+
const valid = typeof configPath === "string" && configPath.length > 0;
|
|
99
|
+
observations.push(createObservation({
|
|
100
|
+
key: "network.wiring.control_url",
|
|
101
|
+
message: valid
|
|
102
|
+
? `${agentId} picoclaw runtime declares config_path ${String(configPath)}`
|
|
103
|
+
: `${agentId} picoclaw attachment is missing config_path`,
|
|
104
|
+
severity: valid ? "ok" : "error",
|
|
105
|
+
subject
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return observations;
|
|
111
|
+
};
|
|
112
|
+
const collectNetworkResolvesObservations = (nodePlans, servers) => {
|
|
113
|
+
const serverNetworkIds = new Set(servers.map((server) => server.networkId));
|
|
114
|
+
return nodePlans.map((plan) => {
|
|
115
|
+
const resolves = serverNetworkIds.has(plan.networkId);
|
|
116
|
+
return createObservation({
|
|
117
|
+
key: "network.wiring.network_resolves",
|
|
118
|
+
message: resolves
|
|
119
|
+
? `${plan.networkId} node plan resolves to a compiled Moltnet server plan`
|
|
120
|
+
: `${plan.networkId} node plan has no matching compiled Moltnet server plan`,
|
|
121
|
+
severity: resolves ? "ok" : "error",
|
|
122
|
+
subject: `network:${plan.networkId}`
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
const collectAttachmentAgentIdsByNetwork = (plans) => {
|
|
127
|
+
const idsByNetwork = new Map();
|
|
128
|
+
for (const plan of plans) {
|
|
129
|
+
if (!isValidNodeConfig(plan)) {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
const ids = idsByNetwork.get(plan.networkId) ?? new Set();
|
|
133
|
+
for (const attachment of plan.parsed?.attachments ?? []) {
|
|
134
|
+
if (typeof attachment.agent?.id === "string") {
|
|
135
|
+
ids.add(attachment.agent.id);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
idsByNetwork.set(plan.networkId, ids);
|
|
139
|
+
}
|
|
140
|
+
return idsByNetwork;
|
|
141
|
+
};
|
|
142
|
+
const collectMembershipObservations = (servers, plans) => {
|
|
143
|
+
const agentIdsByNetwork = collectAttachmentAgentIdsByNetwork(plans);
|
|
144
|
+
const observations = [];
|
|
145
|
+
for (const server of servers) {
|
|
146
|
+
const knownAgentIds = agentIdsByNetwork.get(server.networkId);
|
|
147
|
+
for (const room of server.rooms) {
|
|
148
|
+
const subject = `room:${server.networkId}:${room.id}`;
|
|
149
|
+
for (const memberId of room.members) {
|
|
150
|
+
const orphan = !knownAgentIds?.has(memberId);
|
|
151
|
+
observations.push(createObservation({
|
|
152
|
+
key: "network.wiring.membership",
|
|
153
|
+
message: orphan
|
|
154
|
+
? `${server.networkId}/${room.id} member ${memberId} has no matching node config attachment`
|
|
155
|
+
: `${server.networkId}/${room.id} member ${memberId} maps to a node config attachment`,
|
|
156
|
+
severity: orphan ? "warn" : "ok",
|
|
157
|
+
subject
|
|
158
|
+
}));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return observations;
|
|
163
|
+
};
|
|
164
|
+
export const collectMoltnetWiringProbeObservations = async (options) => {
|
|
165
|
+
if (options.loadedReport.kind !== "loaded") {
|
|
166
|
+
return missingReportObservations();
|
|
167
|
+
}
|
|
168
|
+
const { report } = options.loadedReport;
|
|
169
|
+
const servers = report.moltnetServers ?? [];
|
|
170
|
+
const nodePlans = report.moltnetNodePlans ?? [];
|
|
171
|
+
const readPlans = await readNodePlans(nodePlans, options.outputDirectory, options.readFile);
|
|
172
|
+
return [
|
|
173
|
+
...collectNodeConfigObservations(readPlans),
|
|
174
|
+
...collectControlUrlObservations(readPlans),
|
|
175
|
+
...collectNetworkResolvesObservations(nodePlans, servers),
|
|
176
|
+
...collectMembershipObservations(servers, readPlans)
|
|
177
|
+
];
|
|
178
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type OpaqueTargetHandle, type TargetResourceReceipt, type TargetResourceRequest } from "./contracts.js";
|
|
2
|
+
import { type TargetJournalClaim, type TargetJournalStore } from "./journal.js";
|
|
3
|
+
type CleanupRequest = Extract<TargetResourceRequest, {
|
|
4
|
+
operation: "cleanup_run";
|
|
5
|
+
}>;
|
|
6
|
+
export interface CleanupRunResource {
|
|
7
|
+
readonly authority: unknown;
|
|
8
|
+
readonly handle: OpaqueTargetHandle;
|
|
9
|
+
}
|
|
10
|
+
export interface CleanupRunPlan {
|
|
11
|
+
readonly attachment: CleanupRunResource | null;
|
|
12
|
+
readonly cleanupPolicy: CleanupRequest["cleanup_policy"];
|
|
13
|
+
readonly dataNetwork: CleanupRunResource | null;
|
|
14
|
+
readonly evidence: CleanupRunResource | null;
|
|
15
|
+
readonly exportState: "exported" | "incomplete" | "not_requested";
|
|
16
|
+
readonly secrets: CleanupRunResource | null;
|
|
17
|
+
readonly world: CleanupRunResource | null;
|
|
18
|
+
}
|
|
19
|
+
export interface CleanupRunOperationsOptions {
|
|
20
|
+
readonly journal: TargetJournalStore;
|
|
21
|
+
readonly prepare: (input: {
|
|
22
|
+
readonly claim: TargetJournalClaim;
|
|
23
|
+
readonly request: CleanupRequest;
|
|
24
|
+
}) => Promise<CleanupRunPlan>;
|
|
25
|
+
readonly steps: {
|
|
26
|
+
readonly detachAttachment: (resource: CleanupRunResource) => Promise<void>;
|
|
27
|
+
readonly preserveEvidence: (resource: CleanupRunResource) => Promise<void>;
|
|
28
|
+
readonly removeDataNetwork: (resource: CleanupRunResource) => Promise<void>;
|
|
29
|
+
readonly removeEvidence: (resource: CleanupRunResource) => Promise<void>;
|
|
30
|
+
readonly removeSecrets: (resource: CleanupRunResource) => Promise<void>;
|
|
31
|
+
readonly removeWorld: (resource: CleanupRunResource) => Promise<void>;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export interface CleanupRunOperations {
|
|
35
|
+
execute(raw: unknown): Promise<{
|
|
36
|
+
readonly receipt: TargetResourceReceipt;
|
|
37
|
+
readonly receiptBytes: string;
|
|
38
|
+
}>;
|
|
39
|
+
}
|
|
40
|
+
export declare const createCleanupRunOperations: (options: CleanupRunOperationsOptions) => CleanupRunOperations;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { SpawnfileError } from "../shared/index.js";
|
|
2
|
+
import { TARGET_RESOURCE_RECEIPT_VERSION, parseOpaqueTargetHandle, parseTargetResourceRequest } from "./contracts.js";
|
|
3
|
+
import { createTargetReceiptDigest } from "./handles.js";
|
|
4
|
+
const CLEANUP_ERROR = "Target cleanup failed";
|
|
5
|
+
const fail = () => { throw new SpawnfileError("runtime_error", CLEANUP_ERROR); };
|
|
6
|
+
const record = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
|
|
7
|
+
const same = (left, right) => JSON.stringify(left) === JSON.stringify(right);
|
|
8
|
+
const exactKeys = (value, expected) => {
|
|
9
|
+
const keys = Object.keys(value).sort();
|
|
10
|
+
return keys.length === expected.length && keys.every((key, index) => key === expected[index]);
|
|
11
|
+
};
|
|
12
|
+
const request = (raw) => {
|
|
13
|
+
const value = parseTargetResourceRequest(raw);
|
|
14
|
+
if (value.operation !== "cleanup_run"
|
|
15
|
+
|| value.cleanup_policy === "preserve_evidence" && value.evidence_volume_handle === undefined)
|
|
16
|
+
return fail();
|
|
17
|
+
return value;
|
|
18
|
+
};
|
|
19
|
+
const resource = (raw, expected) => {
|
|
20
|
+
if (!record(raw) || !Object.isFrozen(raw) || !exactKeys(raw, ["authority", "handle"]))
|
|
21
|
+
return fail();
|
|
22
|
+
const handle = parseOpaqueTargetHandle(raw.handle);
|
|
23
|
+
if (expected !== undefined && handle !== expected)
|
|
24
|
+
return fail();
|
|
25
|
+
return raw;
|
|
26
|
+
};
|
|
27
|
+
const optionalResource = (raw, expected) => {
|
|
28
|
+
if (expected === undefined) {
|
|
29
|
+
if (raw !== null)
|
|
30
|
+
return fail();
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return resource(raw, expected);
|
|
34
|
+
};
|
|
35
|
+
const plan = (raw, value) => {
|
|
36
|
+
if (!record(raw) || !Object.isFrozen(raw) || !exactKeys(raw, [
|
|
37
|
+
"attachment", "cleanupPolicy", "dataNetwork", "evidence", "exportState", "secrets", "world"
|
|
38
|
+
]) || raw.cleanupPolicy !== value.cleanup_policy
|
|
39
|
+
|| raw.exportState !== "exported" && raw.exportState !== "incomplete"
|
|
40
|
+
&& raw.exportState !== "not_requested")
|
|
41
|
+
return fail();
|
|
42
|
+
const attachment = optionalResource(raw.attachment, value.organization_attachment_handle);
|
|
43
|
+
const dataNetwork = raw.dataNetwork === null ? null : resource(raw.dataNetwork);
|
|
44
|
+
const evidence = optionalResource(raw.evidence, value.evidence_volume_handle);
|
|
45
|
+
const world = optionalResource(raw.world, value.world_service_handle);
|
|
46
|
+
if ((evidence === null) !== (raw.exportState === "not_requested")
|
|
47
|
+
|| dataNetwork === null && (world !== null || attachment !== null))
|
|
48
|
+
return fail();
|
|
49
|
+
return Object.freeze({
|
|
50
|
+
attachment,
|
|
51
|
+
cleanupPolicy: value.cleanup_policy,
|
|
52
|
+
dataNetwork,
|
|
53
|
+
evidence,
|
|
54
|
+
exportState: raw.exportState,
|
|
55
|
+
secrets: optionalResource(raw.secrets, value.secret_bindings_handle),
|
|
56
|
+
world
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
const receipt = (value, claim, prepared) => {
|
|
60
|
+
const raw = {
|
|
61
|
+
cleanup_state: value.cleanup_policy === "preserve_evidence" ? "preserved" : "removed",
|
|
62
|
+
descriptor_digest: value.descriptor_digest,
|
|
63
|
+
export_state: prepared.exportState,
|
|
64
|
+
labels: [],
|
|
65
|
+
operation: value.operation,
|
|
66
|
+
operation_handle: claim.operationHandle,
|
|
67
|
+
receipt_digest: `sha256:${"0".repeat(64)}`,
|
|
68
|
+
request_digest: claim.requestDigest,
|
|
69
|
+
result_handle: value.cleanup_policy === "preserve_evidence"
|
|
70
|
+
? prepared.evidence.handle : null,
|
|
71
|
+
resulting_revision: value.expected_revision + 1,
|
|
72
|
+
run_id: value.run_id,
|
|
73
|
+
selected_target: value.selected_target,
|
|
74
|
+
version: TARGET_RESOURCE_RECEIPT_VERSION
|
|
75
|
+
};
|
|
76
|
+
return { ...raw, receipt_digest: createTargetReceiptDigest(raw) };
|
|
77
|
+
};
|
|
78
|
+
class Operations {
|
|
79
|
+
#live = new Map();
|
|
80
|
+
#options;
|
|
81
|
+
constructor(options) { this.#options = options; }
|
|
82
|
+
execute(raw) {
|
|
83
|
+
let value;
|
|
84
|
+
try {
|
|
85
|
+
value = request(raw);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return Promise.reject(new SpawnfileError("runtime_error", CLEANUP_ERROR));
|
|
89
|
+
}
|
|
90
|
+
const active = this.#live.get(value.idempotency_key);
|
|
91
|
+
if (active)
|
|
92
|
+
return same(active.request, value) ? active.promise
|
|
93
|
+
: Promise.reject(new SpawnfileError("runtime_error", CLEANUP_ERROR));
|
|
94
|
+
const promise = this.#owner(value).finally(() => {
|
|
95
|
+
if (this.#live.get(value.idempotency_key)?.promise === promise) {
|
|
96
|
+
this.#live.delete(value.idempotency_key);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
this.#live.set(value.idempotency_key, { promise, request: value });
|
|
100
|
+
return promise;
|
|
101
|
+
}
|
|
102
|
+
async #owner(value) {
|
|
103
|
+
try {
|
|
104
|
+
const reservation = await this.#options.journal.reserve(value);
|
|
105
|
+
if (reservation.kind === "replay") {
|
|
106
|
+
return { receipt: reservation.receipt, receiptBytes: reservation.receiptBytes };
|
|
107
|
+
}
|
|
108
|
+
const prepared = plan(await this.#options.prepare({ claim: reservation.claim, request: value }), value);
|
|
109
|
+
if (prepared.world)
|
|
110
|
+
await this.#options.steps.removeWorld(prepared.world);
|
|
111
|
+
if (prepared.attachment)
|
|
112
|
+
await this.#options.steps.detachAttachment(prepared.attachment);
|
|
113
|
+
if (prepared.secrets)
|
|
114
|
+
await this.#options.steps.removeSecrets(prepared.secrets);
|
|
115
|
+
if (prepared.evidence) {
|
|
116
|
+
if (prepared.cleanupPolicy === "preserve_evidence") {
|
|
117
|
+
await this.#options.steps.preserveEvidence(prepared.evidence);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
await this.#options.steps.removeEvidence(prepared.evidence);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (prepared.dataNetwork) {
|
|
124
|
+
await this.#options.steps.removeDataNetwork(prepared.dataNetwork);
|
|
125
|
+
}
|
|
126
|
+
return await this.#options.journal.complete(reservation.claim, receipt(value, reservation.claim, prepared));
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return fail();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export const createCleanupRunOperations = (options) => {
|
|
134
|
+
if (!options?.journal || typeof options.journal.reserve !== "function"
|
|
135
|
+
|| typeof options.journal.complete !== "function" || typeof options.prepare !== "function"
|
|
136
|
+
|| !options.steps || Object.values(options.steps).some((step) => typeof step !== "function"))
|
|
137
|
+
return fail();
|
|
138
|
+
return new Operations(options);
|
|
139
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type CleanupRunOperations } from "./cleanupRun.js";
|
|
2
|
+
import { type DockerCleanupRunPreflightOptions } from "./cleanupRunDockerPreflight.js";
|
|
3
|
+
import { type DockerSecretExecutor } from "./dockerSecretsProvider.js";
|
|
4
|
+
import { type DockerResourceExecutor } from "./dockerResourcesProvider.js";
|
|
5
|
+
import { type DockerWorldServiceExecutor } from "./dockerWorldServiceProvider.js";
|
|
6
|
+
import { type DockerOrganizationAttachmentExecutor } from "./organizationAttachmentProvider.js";
|
|
7
|
+
export interface DockerCleanupRunOptions extends DockerCleanupRunPreflightOptions {
|
|
8
|
+
readonly attachmentExecutor: DockerOrganizationAttachmentExecutor;
|
|
9
|
+
readonly context: string;
|
|
10
|
+
readonly resourceExecutor: DockerResourceExecutor;
|
|
11
|
+
readonly secretExecutor: DockerSecretExecutor;
|
|
12
|
+
readonly signal?: AbortSignal;
|
|
13
|
+
readonly timeoutMs: number;
|
|
14
|
+
readonly worldExecutor: DockerWorldServiceExecutor;
|
|
15
|
+
}
|
|
16
|
+
export declare const createDockerCleanupRunOperations: (rawOptions: DockerCleanupRunOptions) => CleanupRunOperations;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { SpawnfileError } from "../shared/index.js";
|
|
2
|
+
import { createCleanupRunOperations } from "./cleanupRun.js";
|
|
3
|
+
import { prepareDockerCleanupRun } from "./cleanupRunDockerPreflight.js";
|
|
4
|
+
import { cleanupExactDockerSecretBindings } from "./dockerSecretsLifecycle.js";
|
|
5
|
+
import { proveExactDockerResourcePresent, removeExactDockerResource } from "./dockerResources.js";
|
|
6
|
+
import { removeExactDockerWorldService } from "./dockerWorldServiceLifecycle.js";
|
|
7
|
+
import { detachExactOrganizationAttachment } from "./organizationAttachmentLifecycle.js";
|
|
8
|
+
const CLEANUP_ERROR = "Target cleanup failed";
|
|
9
|
+
const CONTEXT = /^[a-z][a-z0-9_-]{0,63}$/u;
|
|
10
|
+
const fail = () => {
|
|
11
|
+
throw new SpawnfileError("runtime_error", CLEANUP_ERROR);
|
|
12
|
+
};
|
|
13
|
+
const validateOptions = (raw) => {
|
|
14
|
+
if (!raw || typeof raw.context !== "string" || !CONTEXT.test(raw.context)
|
|
15
|
+
|| !Number.isSafeInteger(raw.timeoutMs) || raw.timeoutMs < 1
|
|
16
|
+
|| raw.timeoutMs > 120_000 || typeof raw.attachmentExecutor !== "function"
|
|
17
|
+
|| typeof raw.resourceExecutor !== "function"
|
|
18
|
+
|| typeof raw.secretExecutor !== "function"
|
|
19
|
+
|| typeof raw.worldExecutor !== "function" || !raw.journal
|
|
20
|
+
|| typeof raw.journal.read !== "function"
|
|
21
|
+
|| typeof raw.journal.resolveCompletedReceipt !== "function"
|
|
22
|
+
|| !raw.attachmentStore
|
|
23
|
+
|| typeof raw.attachmentStore.loadAttachment !== "function"
|
|
24
|
+
|| !raw.worldStore || typeof raw.worldStore.loadService !== "function"
|
|
25
|
+
|| !raw.evidenceExportStore
|
|
26
|
+
|| typeof raw.evidenceExportStore.loadAdmission !== "function"
|
|
27
|
+
|| typeof raw.evidenceExportStore.loadIndex !== "function")
|
|
28
|
+
return fail();
|
|
29
|
+
return raw;
|
|
30
|
+
};
|
|
31
|
+
export const createDockerCleanupRunOperations = (rawOptions) => {
|
|
32
|
+
const options = validateOptions(rawOptions);
|
|
33
|
+
const resourceOptions = {
|
|
34
|
+
context: options.context,
|
|
35
|
+
executor: options.resourceExecutor,
|
|
36
|
+
signal: options.signal,
|
|
37
|
+
timeoutMs: options.timeoutMs
|
|
38
|
+
};
|
|
39
|
+
return createCleanupRunOperations({
|
|
40
|
+
journal: options.journal,
|
|
41
|
+
prepare: async ({ request }) => prepareDockerCleanupRun(request, options),
|
|
42
|
+
steps: {
|
|
43
|
+
detachAttachment: async ({ authority }) => detachExactOrganizationAttachment(authority, {
|
|
44
|
+
context: options.context,
|
|
45
|
+
executor: options.attachmentExecutor,
|
|
46
|
+
signal: options.signal,
|
|
47
|
+
timeoutMs: options.timeoutMs
|
|
48
|
+
}),
|
|
49
|
+
preserveEvidence: async ({ authority }) => proveExactDockerResourcePresent(authority, resourceOptions),
|
|
50
|
+
removeDataNetwork: async ({ authority }) => removeExactDockerResource(authority, resourceOptions),
|
|
51
|
+
removeEvidence: async ({ authority }) => removeExactDockerResource(authority, resourceOptions),
|
|
52
|
+
removeSecrets: async ({ authority }) => cleanupExactDockerSecretBindings(authority, {
|
|
53
|
+
context: options.context,
|
|
54
|
+
executor: options.secretExecutor,
|
|
55
|
+
signal: options.signal,
|
|
56
|
+
timeoutMs: options.timeoutMs
|
|
57
|
+
}),
|
|
58
|
+
removeWorld: async ({ authority }) => removeExactDockerWorldService(authority, {
|
|
59
|
+
context: options.context,
|
|
60
|
+
executor: options.worldExecutor,
|
|
61
|
+
signal: options.signal,
|
|
62
|
+
timeoutMs: options.timeoutMs
|
|
63
|
+
})
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { type OpaqueTargetHandle } from "./contracts.js";
|
|
2
|
+
import { type DockerResourceExecutor, type DockerResourceSpec } from "./dockerResourcesProvider.js";
|
|
3
|
+
import { type WorldServiceAuthorityStore } from "./dockerWorldServiceStore.js";
|
|
4
|
+
import { type OrganizationAttachmentAuthorityStore } from "./organizationAttachmentStore.js";
|
|
5
|
+
import { type EvidenceExportAuthorityStore } from "./evidenceExportStore.js";
|
|
6
|
+
export declare const canonicalCleanupBindings: (input: {
|
|
7
|
+
readonly attachmentOperationHandle: OpaqueTargetHandle;
|
|
8
|
+
readonly attachmentRequestDigest: string;
|
|
9
|
+
readonly descriptorDigest: string;
|
|
10
|
+
readonly evidence: DockerResourceSpec;
|
|
11
|
+
readonly evidenceOperationHandle: OpaqueTargetHandle;
|
|
12
|
+
readonly evidenceRequestDigest: string;
|
|
13
|
+
readonly network: DockerResourceSpec;
|
|
14
|
+
readonly networkOperationHandle: OpaqueTargetHandle;
|
|
15
|
+
readonly networkRequestDigest: string;
|
|
16
|
+
readonly runId: string;
|
|
17
|
+
readonly secretHandle: OpaqueTargetHandle;
|
|
18
|
+
readonly selected: {
|
|
19
|
+
readonly fingerprint: string;
|
|
20
|
+
readonly handle: OpaqueTargetHandle;
|
|
21
|
+
};
|
|
22
|
+
readonly worldOperationHandle: OpaqueTargetHandle;
|
|
23
|
+
readonly worldRequestDigest: string;
|
|
24
|
+
}) => {
|
|
25
|
+
attachment: import("./organizationAttachmentStore.js").OrganizationAttachmentBinding;
|
|
26
|
+
world: import("./dockerWorldServiceStore.js").WorldServiceBinding;
|
|
27
|
+
};
|
|
28
|
+
export declare const canonicalCleanupScenario: (input: Parameters<typeof canonicalCleanupBindings>[0]) => {
|
|
29
|
+
attachmentExecutor: (_file: string, args: string[]) => Promise<{
|
|
30
|
+
stderr: string;
|
|
31
|
+
stdout: string;
|
|
32
|
+
}>;
|
|
33
|
+
bindings: {
|
|
34
|
+
attachment: import("./organizationAttachmentStore.js").OrganizationAttachmentBinding;
|
|
35
|
+
world: import("./dockerWorldServiceStore.js").WorldServiceBinding;
|
|
36
|
+
};
|
|
37
|
+
calls: {
|
|
38
|
+
attachment: string[][];
|
|
39
|
+
secret: string[][];
|
|
40
|
+
world: string[][];
|
|
41
|
+
};
|
|
42
|
+
drift: {
|
|
43
|
+
attachment: import("./organizationAttachmentStore.js").OrganizationAttachmentBinding;
|
|
44
|
+
world: import("./dockerWorldServiceStore.js").WorldServiceBinding;
|
|
45
|
+
};
|
|
46
|
+
secretExecutor: (_file: string, args: string[]) => Promise<never>;
|
|
47
|
+
worldExecutor: (_file: string, args: string[]) => Promise<never>;
|
|
48
|
+
};
|
|
49
|
+
export declare const cleanupResourceExecutor: (specs: DockerResourceSpec[]) => {
|
|
50
|
+
calls: string[][];
|
|
51
|
+
executor: DockerResourceExecutor;
|
|
52
|
+
present: Set<string>;
|
|
53
|
+
};
|
|
54
|
+
export declare const cleanupAuthorityStores: (input?: {
|
|
55
|
+
readonly admission?: unknown;
|
|
56
|
+
readonly attachment?: unknown;
|
|
57
|
+
readonly index?: unknown;
|
|
58
|
+
readonly world?: unknown;
|
|
59
|
+
}) => {
|
|
60
|
+
attachmentStore: OrganizationAttachmentAuthorityStore;
|
|
61
|
+
evidenceExportStore: EvidenceExportAuthorityStore;
|
|
62
|
+
loads: {
|
|
63
|
+
attachment: number;
|
|
64
|
+
world: number;
|
|
65
|
+
};
|
|
66
|
+
worldStore: WorldServiceAuthorityStore;
|
|
67
|
+
};
|