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,43 @@
|
|
|
1
|
+
import { createCanonicalTargetWorldReadinessReceiptBytes, verifyTargetWorldReadinessReceipt } from "../target/worldReadiness.js";
|
|
2
|
+
import { formatCaughtTargetCliError } from "./targetReceiptOutput.js";
|
|
3
|
+
import { readTargetWorldReadinessRequestFile } from "./targetRequestFile.js";
|
|
4
|
+
export const registerTargetWorldReadinessCommand = (target, session, streams, setExitCode) => {
|
|
5
|
+
target.command("query_world_readiness")
|
|
6
|
+
.description("Query one exact running world's public readiness document")
|
|
7
|
+
.argument("<request-file>", "Strict world readiness request JSON file")
|
|
8
|
+
.action(async (requestFile) => {
|
|
9
|
+
let request;
|
|
10
|
+
try {
|
|
11
|
+
request = await readTargetWorldReadinessRequestFile(requestFile);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
streams.stderr("error: Invalid world readiness request");
|
|
15
|
+
setExitCode(2);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
let activeSession;
|
|
19
|
+
try {
|
|
20
|
+
activeSession = typeof session === "function"
|
|
21
|
+
? await session(target.opts().config)
|
|
22
|
+
: session;
|
|
23
|
+
if (typeof activeSession.queryWorldReadiness !== "function")
|
|
24
|
+
throw new TypeError();
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
streams.stderr("error: Invalid target configuration");
|
|
28
|
+
setExitCode(2);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const receipt = verifyTargetWorldReadinessReceipt({
|
|
33
|
+
receipt: await activeSession.queryWorldReadiness(request),
|
|
34
|
+
request
|
|
35
|
+
});
|
|
36
|
+
streams.stdout(createCanonicalTargetWorldReadinessReceiptBytes(receipt));
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
streams.stderr(formatCaughtTargetCliError(error, "Target world readiness query crashed"));
|
|
40
|
+
setExitCode(1);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
};
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { constants } from "node:fs";
|
|
2
|
+
import { open } from "node:fs/promises";
|
|
3
|
+
import { createDeploymentInstanceDigest, readDeploymentRecord, recordLifecycleOutcomeEvidence } from "../deployment/index.js";
|
|
4
|
+
import { SpawnfileError } from "../shared/index.js";
|
|
5
|
+
import { requireMachineLifecycle, runMachineLifecycle } from "./lifecycleMachine.js";
|
|
6
|
+
import { resolveCommandInput } from "./resolveCommandInput.js";
|
|
7
|
+
import { runImageUpCommand } from "./upImageCommand.js";
|
|
8
|
+
import { createUpLifecycleInvocation, createUpProjectOptions } from "./upLifecycleInvocation.js";
|
|
9
|
+
import { reconcileUpLifecycle } from "./upLifecycleRecovery.js";
|
|
10
|
+
const readSelectedTargetReceipt = async (file) => {
|
|
11
|
+
if (typeof file !== "string" || file.length < 1 || Buffer.byteLength(file, "utf8") > 4096) {
|
|
12
|
+
throw new SpawnfileError("validation_error", "Invalid selected target receipt");
|
|
13
|
+
}
|
|
14
|
+
let handle;
|
|
15
|
+
try {
|
|
16
|
+
handle = await open(file, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
17
|
+
const stat = await handle.stat();
|
|
18
|
+
if (!stat.isFile() || stat.size < 1 || stat.size > 65_536)
|
|
19
|
+
throw new Error();
|
|
20
|
+
return JSON.parse(await handle.readFile("utf8"));
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
throw new SpawnfileError("validation_error", "Invalid selected target receipt");
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
await handle?.close().catch(() => undefined);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
export const registerUpCommand = (program, handlers, streams) => {
|
|
30
|
+
program
|
|
31
|
+
.command("up")
|
|
32
|
+
.description("Deploy an organization from a project or a published image reference")
|
|
33
|
+
.argument("[path]", "Project directory, Spawnfile path, or image reference", process.cwd())
|
|
34
|
+
.option("-o, --out <directory>", "Output directory")
|
|
35
|
+
.option("-t, --tag <image>", "Docker image tag")
|
|
36
|
+
.option("--auth-profile <name>", "Local Spawnfile auth profile")
|
|
37
|
+
.option("--context <name>", "Docker context for the deployment target")
|
|
38
|
+
.option("--deployment <name>", "Detached deployment record name")
|
|
39
|
+
.option("--docker-command <command>", "Docker command")
|
|
40
|
+
.option("--name <container>", "Docker container name")
|
|
41
|
+
.option("--env-file <file>", "Path to an env file for runtime secrets")
|
|
42
|
+
.option("--world-bindings <file>", "Path to a versioned world-bindings artifact")
|
|
43
|
+
.option("--selected-target-receipt-digest <digest>", "Selected target receipt digest for an organization handoff")
|
|
44
|
+
.option("--selected-target-receipt <file>", "Selected target receipt for an organization handoff")
|
|
45
|
+
.option("--network-attachment-handle <handle>", "Opaque network attachment handle for an organization handoff")
|
|
46
|
+
.option("--organization-handoff-run-id <id>", "Authorized run id for an organization handoff")
|
|
47
|
+
.option("--descriptor-digest <digest>", "Production descriptor digest for an organization handoff")
|
|
48
|
+
.option("--image", "Interpret the argument as an image reference")
|
|
49
|
+
.option("--pull", "Pull the image before deploying")
|
|
50
|
+
.option("-d, --detach", "Run the container in detached mode")
|
|
51
|
+
.option("--json", "Render a spawnfile.up-receipt.v1 machine-readable receipt")
|
|
52
|
+
.option("--lifecycle-invocation <id>", "Durably bind this exact JSON lifecycle invocation")
|
|
53
|
+
.action(async (inputPath, options) => {
|
|
54
|
+
requireMachineLifecycle(options.lifecycleInvocation, options.json);
|
|
55
|
+
const upInput = resolveCommandInput(inputPath, { forceImage: options.image });
|
|
56
|
+
if (upInput.kind === "invalid") {
|
|
57
|
+
throw new SpawnfileError("validation_error", `Cannot resolve "${inputPath}" as a project path or image reference. ` +
|
|
58
|
+
"Pass a project directory, a Spawnfile path, or an image like 'name:tag' (use --image to force image mode).");
|
|
59
|
+
}
|
|
60
|
+
if (upInput.kind === "image") {
|
|
61
|
+
if (options.selectedTargetReceiptDigest !== undefined ||
|
|
62
|
+
options.selectedTargetReceipt !== undefined ||
|
|
63
|
+
options.networkAttachmentHandle !== undefined ||
|
|
64
|
+
options.organizationHandoffRunId !== undefined ||
|
|
65
|
+
options.descriptorDigest !== undefined) {
|
|
66
|
+
throw new SpawnfileError("validation_error", "Organization handoff inputs are only supported for project-mode deployments");
|
|
67
|
+
}
|
|
68
|
+
if (options.worldBindings !== undefined) {
|
|
69
|
+
throw new SpawnfileError("validation_error", "`--world-bindings` is only supported for project-mode deployments");
|
|
70
|
+
}
|
|
71
|
+
if (options.json) {
|
|
72
|
+
throw new SpawnfileError("validation_error", "`spawnfile up --json` is not yet supported for image-mode deployments " +
|
|
73
|
+
"(there is no source Spawnfile to derive compiled_schedule from).");
|
|
74
|
+
}
|
|
75
|
+
await runImageUpCommand(upInput.ref, options, handlers, streams);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const handoffValues = [
|
|
79
|
+
options.descriptorDigest,
|
|
80
|
+
options.organizationHandoffRunId,
|
|
81
|
+
options.selectedTargetReceipt,
|
|
82
|
+
options.selectedTargetReceiptDigest,
|
|
83
|
+
options.networkAttachmentHandle,
|
|
84
|
+
options.worldBindings
|
|
85
|
+
];
|
|
86
|
+
if (handoffValues.some((value) => value !== undefined) &&
|
|
87
|
+
handoffValues.some((value) => value === undefined)) {
|
|
88
|
+
throw new SpawnfileError("validation_error", "Organization handoff requires --organization-handoff-run-id, --descriptor-digest, --selected-target-receipt, --selected-target-receipt-digest, --network-attachment-handle, and --world-bindings");
|
|
89
|
+
}
|
|
90
|
+
if (options.lifecycleInvocation !== undefined &&
|
|
91
|
+
(!options.detach ||
|
|
92
|
+
!options.deployment ||
|
|
93
|
+
handoffValues.some((value) => value === undefined))) {
|
|
94
|
+
throw new SpawnfileError("validation_error", "Machine lifecycle up requires a detached deployment with durable organization handoff authority");
|
|
95
|
+
}
|
|
96
|
+
if (options.json) {
|
|
97
|
+
const exactInvocation = options.lifecycleInvocation === undefined
|
|
98
|
+
? undefined
|
|
99
|
+
: createUpLifecycleInvocation(inputPath, {
|
|
100
|
+
...options,
|
|
101
|
+
forceImage: options.image,
|
|
102
|
+
lifecycleInvocation: options.lifecycleInvocation
|
|
103
|
+
});
|
|
104
|
+
const render = async (capability) => {
|
|
105
|
+
const selectedTargetReceipt = options.selectedTargetReceipt === undefined
|
|
106
|
+
? undefined
|
|
107
|
+
: await readSelectedTargetReceipt(options.selectedTargetReceipt);
|
|
108
|
+
const result = await handlers.upProject(inputPath, createUpProjectOptions({ ...options, selectedTargetReceipt }));
|
|
109
|
+
const receipt = await handlers.buildUpReceipt(inputPath, result);
|
|
110
|
+
const bytes = JSON.stringify(receipt, null, 2);
|
|
111
|
+
if (exactInvocation && capability) {
|
|
112
|
+
await recordLifecycleOutcomeEvidence(exactInvocation, bytes, capability, result.deploymentRecordPath
|
|
113
|
+
? createDeploymentInstanceDigest(await readDeploymentRecord(result.deploymentRecordPath))
|
|
114
|
+
: "");
|
|
115
|
+
}
|
|
116
|
+
return bytes;
|
|
117
|
+
};
|
|
118
|
+
const output = options.lifecycleInvocation === undefined
|
|
119
|
+
? await render()
|
|
120
|
+
: await runMachineLifecycle(exactInvocation, render, () => reconcileUpLifecycle(inputPath, options, exactInvocation));
|
|
121
|
+
streams.stdout(output);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const result = await handlers.upProject(inputPath, createUpProjectOptions(options));
|
|
125
|
+
streams.stdout(`built image ${result.imageTag}`);
|
|
126
|
+
streams.stdout(`compiled to ${result.outputDirectory}`);
|
|
127
|
+
streams.stdout(`report: ${result.reportPath}`);
|
|
128
|
+
if (options.detach) {
|
|
129
|
+
streams.stdout(`running container ${result.containerName ?? "unknown"}`);
|
|
130
|
+
streams.stdout(`image: ${result.imageTag}`);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CliHandlers, CliStreams } from "./runCli.js";
|
|
2
|
+
interface ImageUpOptions {
|
|
3
|
+
authProfile?: string;
|
|
4
|
+
context?: string;
|
|
5
|
+
deployment?: string;
|
|
6
|
+
dockerCommand?: string;
|
|
7
|
+
envFile?: string;
|
|
8
|
+
pull?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const runImageUpCommand: (ref: string, options: ImageUpOptions, handlers: CliHandlers, streams: CliStreams) => Promise<void>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { readRunEnvFile } from "../compiler/runProjectAuth.js";
|
|
2
|
+
const shortDigest = (digest) => digest ? digest.replace(/^sha256:/, "").slice(0, 12) : "unknown";
|
|
3
|
+
const redeploySummary = (previous, newRef, newDigest) => {
|
|
4
|
+
if (previous.ref === newRef &&
|
|
5
|
+
newDigest !== null &&
|
|
6
|
+
previous.digest === newDigest) {
|
|
7
|
+
return `redeployed image ${newRef} (digest unchanged ${shortDigest(newDigest)})`;
|
|
8
|
+
}
|
|
9
|
+
return (`redeployed image: ${previous.ref} (${shortDigest(previous.digest)}) ` +
|
|
10
|
+
`→ ${newRef} (${shortDigest(newDigest)})`);
|
|
11
|
+
};
|
|
12
|
+
export const runImageUpCommand = async (ref, options, handlers, streams) => {
|
|
13
|
+
const authProfile = options.authProfile && handlers.requireAuthProfile
|
|
14
|
+
? await handlers.requireAuthProfile(options.authProfile)
|
|
15
|
+
: null;
|
|
16
|
+
const envFileEnv = await readRunEnvFile(options.envFile);
|
|
17
|
+
const consumed = await handlers.consumeImageUp(ref, {
|
|
18
|
+
authProfile,
|
|
19
|
+
authProfileName: options.authProfile ?? null,
|
|
20
|
+
authValues: authProfile?.env ?? {},
|
|
21
|
+
deploymentName: options.deployment,
|
|
22
|
+
dockerCommand: options.dockerCommand,
|
|
23
|
+
dockerContext: options.context,
|
|
24
|
+
envFileEnv,
|
|
25
|
+
envFilePath: options.envFile ?? null,
|
|
26
|
+
pull: options.pull,
|
|
27
|
+
});
|
|
28
|
+
if (consumed.previous) {
|
|
29
|
+
const digest = consumed.record.source.kind === "image"
|
|
30
|
+
? consumed.record.source.digest
|
|
31
|
+
: null;
|
|
32
|
+
streams.stdout(redeploySummary(consumed.previous, consumed.imageRef, digest));
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
streams.stdout(`deployed image ${consumed.imageRef}`);
|
|
36
|
+
}
|
|
37
|
+
streams.stdout(`deployment: ${consumed.deploymentName}`);
|
|
38
|
+
streams.stdout(`running container ${consumed.containerName}`);
|
|
39
|
+
streams.stdout(`record: ${consumed.recordPath}`);
|
|
40
|
+
streams.stdout(`next: spawnfile status --deployment ${consumed.deploymentName} --live`);
|
|
41
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { LifecycleInvocation } from "../deployment/index.js";
|
|
2
|
+
export interface UpLifecycleOptions {
|
|
3
|
+
authProfile?: string;
|
|
4
|
+
context?: string;
|
|
5
|
+
deployment?: string;
|
|
6
|
+
descriptorDigest?: string;
|
|
7
|
+
detach?: boolean;
|
|
8
|
+
dockerCommand?: string;
|
|
9
|
+
envFile?: string;
|
|
10
|
+
forceImage?: boolean;
|
|
11
|
+
lifecycleInvocation?: string;
|
|
12
|
+
name?: string;
|
|
13
|
+
networkAttachmentHandle?: string;
|
|
14
|
+
organizationHandoffRunId?: string;
|
|
15
|
+
out?: string;
|
|
16
|
+
pull?: boolean;
|
|
17
|
+
selectedTargetReceipt?: unknown;
|
|
18
|
+
selectedTargetReceiptDigest?: string;
|
|
19
|
+
tag?: string;
|
|
20
|
+
worldBindings?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare const createUpLifecycleInvocation: (inputPath: string, options: UpLifecycleOptions & {
|
|
23
|
+
lifecycleInvocation: string;
|
|
24
|
+
}) => LifecycleInvocation;
|
|
25
|
+
export declare const createUpProjectOptions: (options: UpLifecycleOptions) => {
|
|
26
|
+
worldBindingsPath?: string | undefined;
|
|
27
|
+
selectedTargetReceipt?: {} | null | undefined;
|
|
28
|
+
selectedTargetReceiptDigest?: string | undefined;
|
|
29
|
+
networkAttachmentHandle?: string | undefined;
|
|
30
|
+
authProfile: string | undefined;
|
|
31
|
+
containerName: string | undefined;
|
|
32
|
+
detach: boolean | undefined;
|
|
33
|
+
deploymentName: string | undefined;
|
|
34
|
+
dockerCommand: string | undefined;
|
|
35
|
+
dockerContext: string | undefined;
|
|
36
|
+
descriptorDigest: string | undefined;
|
|
37
|
+
envFilePath: string | undefined;
|
|
38
|
+
imageTag: string | undefined;
|
|
39
|
+
organizationHandoffRunId: string | undefined;
|
|
40
|
+
outputDirectory: string | undefined;
|
|
41
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { createLifecycleInvocation, digestLifecycleBinding, } from "./lifecycleMachine.js";
|
|
3
|
+
export const createUpLifecycleInvocation = (inputPath, options) => createLifecycleInvocation(options.lifecycleInvocation, "up", {
|
|
4
|
+
input_kind: "project",
|
|
5
|
+
project_path: path.resolve(inputPath),
|
|
6
|
+
}, {
|
|
7
|
+
auth_profile_digest: digestLifecycleBinding(options.authProfile),
|
|
8
|
+
container_name: options.name ?? null,
|
|
9
|
+
deployment: options.deployment ?? null,
|
|
10
|
+
detach: options.detach ?? false,
|
|
11
|
+
docker_command_digest: digestLifecycleBinding(options.dockerCommand),
|
|
12
|
+
docker_context: options.context ?? null,
|
|
13
|
+
descriptor_digest: options.descriptorDigest ?? null,
|
|
14
|
+
env_file_digest: digestLifecycleBinding(options.envFile),
|
|
15
|
+
force_image: options.forceImage ?? false,
|
|
16
|
+
image_tag: options.tag ?? null,
|
|
17
|
+
network_attachment_handle_digest: digestLifecycleBinding(options.networkAttachmentHandle),
|
|
18
|
+
organization_handoff_run_id: options.organizationHandoffRunId ?? null,
|
|
19
|
+
output_directory: options.out ? path.resolve(options.out) : null,
|
|
20
|
+
pull: options.pull ?? false,
|
|
21
|
+
selected_target_receipt_digest: options.selectedTargetReceiptDigest ?? null,
|
|
22
|
+
world_bindings_digest: digestLifecycleBinding(options.worldBindings),
|
|
23
|
+
});
|
|
24
|
+
export const createUpProjectOptions = (options) => ({
|
|
25
|
+
authProfile: options.authProfile,
|
|
26
|
+
containerName: options.name,
|
|
27
|
+
detach: options.detach,
|
|
28
|
+
deploymentName: options.deployment,
|
|
29
|
+
dockerCommand: options.dockerCommand,
|
|
30
|
+
dockerContext: options.context,
|
|
31
|
+
descriptorDigest: options.descriptorDigest,
|
|
32
|
+
envFilePath: options.envFile,
|
|
33
|
+
imageTag: options.tag,
|
|
34
|
+
organizationHandoffRunId: options.organizationHandoffRunId,
|
|
35
|
+
outputDirectory: options.out,
|
|
36
|
+
...(options.networkAttachmentHandle !== undefined
|
|
37
|
+
? { networkAttachmentHandle: options.networkAttachmentHandle }
|
|
38
|
+
: {}),
|
|
39
|
+
...(options.selectedTargetReceiptDigest !== undefined
|
|
40
|
+
? { selectedTargetReceiptDigest: options.selectedTargetReceiptDigest }
|
|
41
|
+
: {}),
|
|
42
|
+
...(options.selectedTargetReceipt !== undefined
|
|
43
|
+
? { selectedTargetReceipt: options.selectedTargetReceipt }
|
|
44
|
+
: {}),
|
|
45
|
+
...(options.worldBindings !== undefined
|
|
46
|
+
? { worldBindingsPath: options.worldBindings }
|
|
47
|
+
: {}),
|
|
48
|
+
});
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { findLifecycleOutcomeEvidence } from "../deployment/index.js";
|
|
2
|
+
import type { LifecycleReconciliation } from "./lifecycleMachine.js";
|
|
3
|
+
import type { UpLifecycleOptions } from "./upLifecycleInvocation.js";
|
|
4
|
+
export declare const reconcileUpLifecycle: (inputPath: string, options: UpLifecycleOptions, invocation: Parameters<typeof findLifecycleOutcomeEvidence>[0]) => Promise<LifecycleReconciliation>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { findLifecycleOutcomeEvidence, createDeploymentInstanceDigest, readDeploymentRecord, resolveDeploymentRecordPath, } from "../deployment/index.js";
|
|
3
|
+
import { resolveProjectOutputDirectory } from "../filesystem/index.js";
|
|
4
|
+
import { DEFAULT_OUTPUT_DIRECTORY, REPORT_FILENAME } from "../shared/index.js";
|
|
5
|
+
import { readUtf8File } from "../filesystem/index.js";
|
|
6
|
+
const ambiguous = (reason) => ({
|
|
7
|
+
reason,
|
|
8
|
+
status: "ambiguous",
|
|
9
|
+
});
|
|
10
|
+
const exactHandoff = (record, options) => record.organization_handoff !== undefined &&
|
|
11
|
+
record.organization_handoff_handle !== undefined &&
|
|
12
|
+
record.organization_handoff.network_attachment_handle ===
|
|
13
|
+
options.networkAttachmentHandle &&
|
|
14
|
+
record.organization_handoff.selected_target_receipt_digest ===
|
|
15
|
+
options.selectedTargetReceiptDigest;
|
|
16
|
+
export const reconcileUpLifecycle = async (inputPath, options, invocation) => {
|
|
17
|
+
const outputDirectory = resolveProjectOutputDirectory(inputPath, options.out, DEFAULT_OUTPUT_DIRECTORY);
|
|
18
|
+
const deployment = options.deployment;
|
|
19
|
+
if (!deployment)
|
|
20
|
+
return ambiguous("up_deployment_not_bound");
|
|
21
|
+
const recordPath = resolveDeploymentRecordPath(outputDirectory, deployment);
|
|
22
|
+
try {
|
|
23
|
+
const record = await readDeploymentRecord(recordPath);
|
|
24
|
+
const report = JSON.parse(await readUtf8File(path.join(outputDirectory, REPORT_FILENAME)));
|
|
25
|
+
const requestedRoot = path.resolve(inputPath);
|
|
26
|
+
if (record.name !== deployment ||
|
|
27
|
+
record.output_directory !== outputDirectory ||
|
|
28
|
+
record.source.kind !== "project" ||
|
|
29
|
+
path.resolve(record.source.root) !== requestedRoot ||
|
|
30
|
+
record.compile_fingerprint !== report.compile_fingerprint ||
|
|
31
|
+
record.auth_profile !== (options.authProfile ?? null) ||
|
|
32
|
+
(options.context !== undefined &&
|
|
33
|
+
(record.target.kind !== "context" ||
|
|
34
|
+
record.target.name !== options.context)) ||
|
|
35
|
+
(options.name !== undefined &&
|
|
36
|
+
record.units[0]?.container_name !== options.name) ||
|
|
37
|
+
!exactHandoff(record, options))
|
|
38
|
+
return ambiguous("up_durable_evidence_drifted");
|
|
39
|
+
const evidence = await findLifecycleOutcomeEvidence(invocation);
|
|
40
|
+
if (!evidence)
|
|
41
|
+
return ambiguous("up_receipt_evidence_absent");
|
|
42
|
+
if (evidence.deployment_instance_digest !==
|
|
43
|
+
createDeploymentInstanceDigest(record))
|
|
44
|
+
return ambiguous("up_deployment_instance_changed");
|
|
45
|
+
return {
|
|
46
|
+
outcomeBytes: evidence.completion.outcome_bytes,
|
|
47
|
+
status: "completed",
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return ambiguous("up_durable_evidence_absent_or_invalid");
|
|
52
|
+
}
|
|
53
|
+
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { SpawnfileError } from "../shared/index.js";
|
|
3
|
+
import { stableStringify } from "./helpers.js";
|
|
4
|
+
import { mergeWorkspaceResources } from "./workspaceResources.js";
|
|
5
|
+
const assertSame = (field, existing, next, nodeName) => {
|
|
6
|
+
if (stableStringify(existing) === stableStringify(next)) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
throw new SpawnfileError("compile_error", `Agent ${nodeName} resolves with incompatible ${field} across team imports`);
|
|
10
|
+
};
|
|
11
|
+
const mergeEnvStrict = (existing, next, nodeName) => {
|
|
12
|
+
const merged = { ...existing };
|
|
13
|
+
for (const [key, value] of Object.entries(next)) {
|
|
14
|
+
if (merged[key] !== undefined && merged[key] !== value) {
|
|
15
|
+
throw new SpawnfileError("validation_error", `Agent ${nodeName} receives conflicting environment variable ${key} across team imports`);
|
|
16
|
+
}
|
|
17
|
+
merged[key] = value;
|
|
18
|
+
}
|
|
19
|
+
return merged;
|
|
20
|
+
};
|
|
21
|
+
const mergeByKeyStrict = (existing, next, getKey, label, nodeName) => {
|
|
22
|
+
const merged = new Map();
|
|
23
|
+
for (const value of existing ?? []) {
|
|
24
|
+
merged.set(getKey(value), value);
|
|
25
|
+
}
|
|
26
|
+
for (const value of next ?? []) {
|
|
27
|
+
const key = getKey(value);
|
|
28
|
+
const previous = merged.get(key);
|
|
29
|
+
if (previous && stableStringify(previous) !== stableStringify(value)) {
|
|
30
|
+
throw new SpawnfileError("validation_error", `Agent ${nodeName} receives conflicting ${label} ${key} across team imports`);
|
|
31
|
+
}
|
|
32
|
+
merged.set(key, value);
|
|
33
|
+
}
|
|
34
|
+
return merged.size > 0 ? [...merged.values()] : undefined;
|
|
35
|
+
};
|
|
36
|
+
const mergeDocuments = (existing, next, agentSourcePath) => {
|
|
37
|
+
const agentDirectory = path.dirname(agentSourcePath);
|
|
38
|
+
const isAgentLocalDoc = (doc) => {
|
|
39
|
+
const sourcePath = path.resolve(doc.sourcePath);
|
|
40
|
+
return sourcePath === agentDirectory || sourcePath.startsWith(`${agentDirectory}${path.sep}`);
|
|
41
|
+
};
|
|
42
|
+
const merged = new Map(existing.filter(isAgentLocalDoc).map((doc) => [doc.role, doc]));
|
|
43
|
+
for (const doc of next.filter(isAgentLocalDoc)) {
|
|
44
|
+
if (!merged.has(doc.role)) {
|
|
45
|
+
merged.set(doc.role, doc);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return [...merged.values()];
|
|
49
|
+
};
|
|
50
|
+
const packageKey = (pkg) => `${pkg.manager}::${pkg.name}`;
|
|
51
|
+
const skillKey = (skill) => skill.ref;
|
|
52
|
+
export const mergeCompatibleAgentNode = (existing, next) => {
|
|
53
|
+
assertSame("description", existing.description, next.description, existing.name);
|
|
54
|
+
assertSame("execution", existing.execution, next.execution, existing.name);
|
|
55
|
+
assertSame("expose", existing.expose, next.expose, existing.name);
|
|
56
|
+
assertSame("memory", existing.memory, next.memory, existing.name);
|
|
57
|
+
assertSame("name", existing.name, next.name, existing.name);
|
|
58
|
+
assertSame("policy mode", existing.policyMode, next.policyMode, existing.name);
|
|
59
|
+
assertSame("policy on_degrade", existing.policyOnDegrade, next.policyOnDegrade, existing.name);
|
|
60
|
+
assertSame("runtime", existing.runtime, next.runtime, existing.name);
|
|
61
|
+
assertSame("schedule", existing.schedule, next.schedule, existing.name);
|
|
62
|
+
assertSame("source", existing.source, next.source, existing.name);
|
|
63
|
+
assertSame("source path", existing.sourcePath, next.sourcePath, existing.name);
|
|
64
|
+
assertSame("surfaces", existing.surfaces, next.surfaces, existing.name);
|
|
65
|
+
existing.docs = mergeDocuments(existing.docs, next.docs, existing.sourcePath ?? existing.source);
|
|
66
|
+
existing.env = mergeEnvStrict(existing.env, next.env, existing.name);
|
|
67
|
+
existing.mcpServers = mergeByKeyStrict(existing.mcpServers, next.mcpServers, (server) => server.name, "MCP server", existing.name) ?? [];
|
|
68
|
+
existing.packages = mergeByKeyStrict(existing.packages, next.packages, packageKey, "package", existing.name);
|
|
69
|
+
existing.secrets = mergeByKeyStrict(existing.secrets, next.secrets, (secret) => secret.name, "secret", existing.name) ?? [];
|
|
70
|
+
existing.skills = mergeByKeyStrict(existing.skills, next.skills, skillKey, "skill", existing.name) ?? [];
|
|
71
|
+
existing.workspaceResources = mergeWorkspaceResources([
|
|
72
|
+
...(existing.workspaceResources ?? []),
|
|
73
|
+
...(next.workspaceResources ?? [])
|
|
74
|
+
], [], existing.name, {
|
|
75
|
+
kind: "agent",
|
|
76
|
+
key: existing.source,
|
|
77
|
+
name: existing.name
|
|
78
|
+
});
|
|
79
|
+
};
|
|
@@ -23,11 +23,21 @@ export const resolveAgentSurfaces = (surfaces) => {
|
|
|
23
23
|
}
|
|
24
24
|
if (surfaces.moltnet) {
|
|
25
25
|
resolved.moltnet = surfaces.moltnet.map((attachment) => ({
|
|
26
|
+
...(attachment.auth
|
|
27
|
+
? {
|
|
28
|
+
auth: {
|
|
29
|
+
tokenId: attachment.auth.token_id
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
: {}),
|
|
26
33
|
...(attachment.dms
|
|
27
34
|
? {
|
|
28
35
|
dms: {
|
|
29
36
|
enabled: attachment.dms.enabled,
|
|
30
|
-
...(attachment.dms.wake ? { wake: attachment.dms.wake } : {})
|
|
37
|
+
...(attachment.dms.wake ? { wake: attachment.dms.wake } : {}),
|
|
38
|
+
...(attachment.dms.allowed_wake_senders !== undefined
|
|
39
|
+
? { allowedWakeSenders: [...attachment.dms.allowed_wake_senders] }
|
|
40
|
+
: {})
|
|
31
41
|
}
|
|
32
42
|
}
|
|
33
43
|
: {}),
|
|
@@ -2,9 +2,12 @@ import { getCanonicalManifestPath, getManifestPath } from "../filesystem/index.j
|
|
|
2
2
|
import { loadManifest, isAgentManifest } from "../manifest/index.js";
|
|
3
3
|
import { assignStableNodeIds } from "./helpers.js";
|
|
4
4
|
import { resolvePlanMoltnetAttachments } from "./moltnetResolution.js";
|
|
5
|
+
import { resolvePlanMemoryAccess } from "./memoryResolution.js";
|
|
5
6
|
import { resolveMoltnetRoomMemberships } from "./moltnetRoomMemberships.js";
|
|
6
7
|
import { createRuntimeGroups } from "./buildCompilePlanRuntime.js";
|
|
8
|
+
import { validateAllowedWakeSenders } from "./moltnetAllowedWakeSendersValidation.js";
|
|
7
9
|
import { createCompilePlanTraversal } from "./buildCompilePlanTraversal.js";
|
|
10
|
+
import { resolveMoltnetExternalParticipantIntents, resolveOrganizationIdentity, validateB31MoltnetAuth } from "./organizationIdentity.js";
|
|
8
11
|
export const buildCompilePlan = async (inputPath) => {
|
|
9
12
|
const rootManifestPath = getCanonicalManifestPath(getManifestPath(inputPath));
|
|
10
13
|
const loadCache = new Map();
|
|
@@ -60,7 +63,21 @@ export const buildCompilePlan = async (inputPath) => {
|
|
|
60
63
|
root: rootManifestPath,
|
|
61
64
|
runtimes: createRuntimeGroups(compilePlanNodes)
|
|
62
65
|
};
|
|
66
|
+
const organizationIdentity = resolveOrganizationIdentity(compilePlan);
|
|
67
|
+
if (organizationIdentity)
|
|
68
|
+
compilePlan.organizationIdentity = organizationIdentity;
|
|
69
|
+
// Reject duplicate or invalid authored actor selections before attachment
|
|
70
|
+
// synthesis can merge them into a single canonical attachment.
|
|
71
|
+
validateB31MoltnetAuth(compilePlan);
|
|
72
|
+
const externalParticipantIntents = resolveMoltnetExternalParticipantIntents(compilePlan);
|
|
73
|
+
if (organizationIdentity)
|
|
74
|
+
compilePlan.moltnetExternalParticipantIntents = externalParticipantIntents;
|
|
63
75
|
compilePlan.moltnetRoomMemberships = resolveMoltnetRoomMemberships(compilePlan);
|
|
76
|
+
resolvePlanMemoryAccess(compilePlan);
|
|
64
77
|
resolvePlanMoltnetAttachments(compilePlan);
|
|
78
|
+
// Recheck the actual canonical attachments emitted after representative
|
|
79
|
+
// synthesis and duplicate merging.
|
|
80
|
+
validateB31MoltnetAuth(compilePlan);
|
|
81
|
+
validateAllowedWakeSenders(compilePlan);
|
|
65
82
|
return compilePlan;
|
|
66
83
|
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type AgentManifest } from "../manifest/index.js";
|
|
2
|
+
import type { AgentVisitContext } from "./buildCompilePlanRuntime.js";
|
|
3
|
+
import type { ResolvedAgentNode } from "./types.js";
|
|
4
|
+
interface ResolveAgentNodeOptions {
|
|
5
|
+
context: AgentVisitContext;
|
|
6
|
+
manifest: AgentManifest;
|
|
7
|
+
manifestPath: string;
|
|
8
|
+
source: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const resolveAgentNode: ({ context, manifest, manifestPath, source }: ResolveAgentNodeOptions) => Promise<ResolvedAgentNode>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { mergeExecution } from "../manifest/index.js";
|
|
2
|
+
import { resolveAgentSurfaces } from "./agentSurfaces.js";
|
|
3
|
+
import { resolveDescription, resolveRuntime } from "./buildCompilePlanRuntime.js";
|
|
4
|
+
import { DEFAULT_POLICY_MODE, DEFAULT_POLICY_ON_DEGRADE, mergeResolvedDocuments, resolveEffectiveEnvironment } from "./buildCompilePlanTraversalHelpers.js";
|
|
5
|
+
import { getMcpNames, validateEffectiveSkillRequirements } from "./compilePlanHelpers.js";
|
|
6
|
+
import { applyExecutionDefaults } from "./executionDefaults.js";
|
|
7
|
+
import { resolveDeclaredMemoryBanks } from "./memoryResolution.js";
|
|
8
|
+
import { assertRuntimeSupportsExecutionModelAuth } from "./modelAuth.js";
|
|
9
|
+
import { loadResolvedSkills, mergeResolvedSkills } from "./surfaces.js";
|
|
10
|
+
import { assertRuntimeSupportsAgentSurfaces } from "./surfaceSupport.js";
|
|
11
|
+
import { mergeWorkspaceResources } from "./workspaceResources.js";
|
|
12
|
+
export const resolveAgentNode = async ({ context, manifest, manifestPath, source }) => {
|
|
13
|
+
const runtime = await resolveRuntime(manifest, context);
|
|
14
|
+
const execution = applyExecutionDefaults(context.isSubagent
|
|
15
|
+
? mergeExecution(context.inheritedExecution, manifest.execution)
|
|
16
|
+
: manifest.execution);
|
|
17
|
+
assertRuntimeSupportsExecutionModelAuth(runtime.name, execution, manifest.name);
|
|
18
|
+
const environment = resolveEffectiveEnvironment(context.inheritedShared?.surface?.environment, manifest.environment);
|
|
19
|
+
const inheritedSkills = context.inheritedShared
|
|
20
|
+
? await loadResolvedSkills(context.inheritedShared.manifestPath, context.inheritedShared.surface?.workspace?.skills)
|
|
21
|
+
: [];
|
|
22
|
+
const localSkills = await loadResolvedSkills(manifestPath, manifest.workspace?.skills);
|
|
23
|
+
const skills = mergeResolvedSkills(inheritedSkills, localSkills);
|
|
24
|
+
validateEffectiveSkillRequirements(manifest.name, getMcpNames(environment.mcpServers), skills);
|
|
25
|
+
const docs = await mergeResolvedDocuments(manifestPath, manifest.workspace?.docs, context.inheritedShared?.manifestPath, context.inheritedShared?.surface?.workspace?.docs);
|
|
26
|
+
const workspaceResources = mergeWorkspaceResources(context.inheritedResources, manifest.workspace?.resources, manifest.name, {
|
|
27
|
+
kind: "agent",
|
|
28
|
+
key: source,
|
|
29
|
+
name: manifest.name
|
|
30
|
+
});
|
|
31
|
+
const candidate = {
|
|
32
|
+
description: resolveDescription(manifest.description, docs),
|
|
33
|
+
docs,
|
|
34
|
+
env: environment.env,
|
|
35
|
+
execution,
|
|
36
|
+
expose: manifest.expose ?? false,
|
|
37
|
+
kind: "agent",
|
|
38
|
+
mcpServers: environment.mcpServers,
|
|
39
|
+
name: manifest.name,
|
|
40
|
+
policyMode: manifest.policy?.mode ?? DEFAULT_POLICY_MODE,
|
|
41
|
+
policyOnDegrade: manifest.policy?.on_degrade ?? DEFAULT_POLICY_ON_DEGRADE,
|
|
42
|
+
runtime,
|
|
43
|
+
memory: resolveDeclaredMemoryBanks(manifest.memory, source, "agent", manifest.name),
|
|
44
|
+
schedule: manifest.schedule,
|
|
45
|
+
secrets: environment.secrets,
|
|
46
|
+
packages: environment.packages,
|
|
47
|
+
skills,
|
|
48
|
+
source,
|
|
49
|
+
...(source === manifestPath ? {} : { sourcePath: manifestPath }),
|
|
50
|
+
surfaces: resolveAgentSurfaces(manifest.surfaces),
|
|
51
|
+
subagents: [],
|
|
52
|
+
workspaceResources
|
|
53
|
+
};
|
|
54
|
+
assertRuntimeSupportsAgentSurfaces(runtime.name, candidate.surfaces, manifest.name);
|
|
55
|
+
return candidate;
|
|
56
|
+
};
|
|
@@ -2,4 +2,5 @@ import type { TeamManifest } from "../manifest/index.js";
|
|
|
2
2
|
import type { ResolvedTeamNetwork, ResolvedTeamNode } from "./types.js";
|
|
3
3
|
export declare const resolveTeamExternalIds: (manifest: TeamManifest) => string[];
|
|
4
4
|
export declare const resolveTeamNetworks: (manifest: TeamManifest) => ResolvedTeamNetwork[];
|
|
5
|
+
export declare const isAttachedExternalRoomMember: (teamNode: ResolvedTeamNode, networkId: string, memberId: string) => boolean;
|
|
5
6
|
export declare const validateTeamNetworkRooms: (teamNode: ResolvedTeamNode) => void;
|
|
@@ -32,12 +32,15 @@ export const resolveTeamNetworks = (manifest) => (manifest.networks ?? []).map((
|
|
|
32
32
|
}
|
|
33
33
|
return resolved;
|
|
34
34
|
});
|
|
35
|
+
export const isAttachedExternalRoomMember = (teamNode, networkId, memberId) => teamNode.externalParticipants?.some((participant) => participant.id === memberId
|
|
36
|
+
&& participant.surfaces.moltnet.some((attachment) => attachment.network === networkId)) === true;
|
|
35
37
|
export const validateTeamNetworkRooms = (teamNode) => {
|
|
36
38
|
for (const network of teamNode.networks ?? []) {
|
|
37
39
|
for (const room of network.rooms) {
|
|
38
40
|
for (const roomMemberId of room.members) {
|
|
39
41
|
const resolvedMember = teamNode.members.find((member) => member.id === roomMemberId);
|
|
40
|
-
if (!resolvedMember
|
|
42
|
+
if (!resolvedMember
|
|
43
|
+
&& !isAttachedExternalRoomMember(teamNode, network.id, roomMemberId)) {
|
|
41
44
|
throw new SpawnfileError("validation_error", `Team ${teamNode.name} Moltnet room ${room.id} references unknown member ${roomMemberId}`);
|
|
42
45
|
}
|
|
43
46
|
}
|