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
|
@@ -1,89 +1,62 @@
|
|
|
1
1
|
import { getCanonicalManifestPath, getManifestPath, resolveProjectPath } from "../filesystem/index.js";
|
|
2
|
-
import { isAgentManifest, isTeamManifest,
|
|
2
|
+
import { isAgentManifest, isReferencedMember, isTeamManifest, materializeInlineAgentManifest } from "../manifest/index.js";
|
|
3
3
|
import { SpawnfileError } from "../shared/index.js";
|
|
4
4
|
import { getAgentFingerprint, getMcpNames, getTeamFingerprint, validateEffectiveSkillRequirements } from "./compilePlanHelpers.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { assertRuntimeSupportsAgentSurfaces } from "./surfaceSupport.js";
|
|
9
|
-
import { applyExecutionDefaults } from "./executionDefaults.js";
|
|
10
|
-
import { normalizeDescription, resolveDescription, resolveRuntime } from "./buildCompilePlanRuntime.js";
|
|
5
|
+
import { loadResolvedSkills } from "./surfaces.js";
|
|
6
|
+
import { mergeCompatibleAgentNode } from "./agentNodeMerge.js";
|
|
7
|
+
import { normalizeDescription } from "./buildCompilePlanRuntime.js";
|
|
11
8
|
import { resolveTeamExternalIds, resolveTeamNetworks, validateTeamNetworkRooms } from "./buildCompilePlanTeams.js";
|
|
9
|
+
import { resolveDeclaredMemoryBanks } from "./memoryResolution.js";
|
|
12
10
|
import { mergeWorkspaceResources } from "./workspaceResources.js";
|
|
13
|
-
import { DEFAULT_POLICY_MODE, DEFAULT_POLICY_ON_DEGRADE, mergeResolvedDocuments,
|
|
11
|
+
import { DEFAULT_POLICY_MODE, DEFAULT_POLICY_ON_DEGRADE, mergeResolvedDocuments, } from "./buildCompilePlanTraversalHelpers.js";
|
|
12
|
+
import { resolveAgentNode } from "./buildCompilePlanAgent.js";
|
|
13
|
+
import { createInlineAgentSource } from "./projectManifestGraph.js";
|
|
14
14
|
export const createCompilePlanTraversal = ({ getLoadedManifest, nodeCache, fingerprintCache, edges, memberships }) => {
|
|
15
15
|
const visitStack = [];
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (!isAgentManifest(loadedManifest.manifest)) {
|
|
23
|
-
throw new SpawnfileError("compile_error", `Expected agent manifest, got ${loadedManifest.manifest.kind} at ${canonicalPath}`);
|
|
24
|
-
}
|
|
25
|
-
const runtime = await resolveRuntime(loadedManifest.manifest, context);
|
|
26
|
-
const execution = applyExecutionDefaults(context.isSubagent
|
|
27
|
-
? mergeExecution(context.inheritedExecution, loadedManifest.manifest.execution)
|
|
28
|
-
: loadedManifest.manifest.execution);
|
|
29
|
-
assertRuntimeSupportsExecutionModelAuth(runtime.name, execution, loadedManifest.manifest.name);
|
|
30
|
-
const environment = resolveEffectiveEnvironment(context.inheritedShared?.surface?.environment, loadedManifest.manifest.environment);
|
|
31
|
-
const inheritedSkills = context.inheritedShared
|
|
32
|
-
? await loadResolvedSkills(context.inheritedShared.manifestPath, context.inheritedShared.surface?.workspace?.skills)
|
|
33
|
-
: [];
|
|
34
|
-
const localSkills = await loadResolvedSkills(canonicalPath, loadedManifest.manifest.workspace?.skills);
|
|
35
|
-
const skills = mergeResolvedSkills(inheritedSkills, localSkills);
|
|
36
|
-
validateEffectiveSkillRequirements(loadedManifest.manifest.name, getMcpNames(environment.mcpServers), skills);
|
|
37
|
-
const docs = await mergeResolvedDocuments(canonicalPath, loadedManifest.manifest.workspace?.docs, context.inheritedShared?.manifestPath, context.inheritedShared?.surface?.workspace?.docs);
|
|
38
|
-
const workspaceResources = mergeWorkspaceResources(context.inheritedResources, loadedManifest.manifest.workspace?.resources, loadedManifest.manifest.name, {
|
|
39
|
-
kind: "agent",
|
|
40
|
-
key: canonicalPath,
|
|
41
|
-
name: loadedManifest.manifest.name
|
|
16
|
+
const recordAgentMembership = (teamSource, teamName, memberId, agent) => {
|
|
17
|
+
memberships.set(`${teamSource}::${memberId}::${agent.source}`, {
|
|
18
|
+
agentSource: agent.source,
|
|
19
|
+
memberId,
|
|
20
|
+
teamName,
|
|
21
|
+
teamSource
|
|
42
22
|
});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
docs,
|
|
46
|
-
env: environment.env,
|
|
47
|
-
execution,
|
|
48
|
-
expose: loadedManifest.manifest.expose ?? false,
|
|
23
|
+
return {
|
|
24
|
+
id: memberId,
|
|
49
25
|
kind: "agent",
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
policyMode: loadedManifest.manifest.policy?.mode ?? DEFAULT_POLICY_MODE,
|
|
53
|
-
policyOnDegrade: loadedManifest.manifest.policy?.on_degrade ?? DEFAULT_POLICY_ON_DEGRADE,
|
|
54
|
-
runtime,
|
|
55
|
-
schedule: loadedManifest.manifest.schedule,
|
|
56
|
-
secrets: environment.secrets,
|
|
57
|
-
packages: environment.packages,
|
|
58
|
-
skills,
|
|
59
|
-
source: canonicalPath,
|
|
60
|
-
surfaces: resolveAgentSurfaces(loadedManifest.manifest.surfaces),
|
|
61
|
-
subagents: [],
|
|
62
|
-
workspaceResources
|
|
26
|
+
nodeSource: agent.source,
|
|
27
|
+
runtimeName: agent.runtime.name
|
|
63
28
|
};
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
throw new SpawnfileError("compile_error", `Manifest ${canonicalPath} resolves differently across compile contexts`);
|
|
29
|
+
};
|
|
30
|
+
const visitAgentManifest = async (manifest, source, manifestPath, context) => {
|
|
31
|
+
if (visitStack.includes(source)) {
|
|
32
|
+
throw new SpawnfileError("compile_error", `Cycle detected while visiting ${source}`);
|
|
69
33
|
}
|
|
70
|
-
const
|
|
34
|
+
const candidate = await resolveAgentNode({ context, manifest, manifestPath, source });
|
|
35
|
+
const cachedNode = nodeCache.get(source);
|
|
71
36
|
if (cachedNode) {
|
|
72
|
-
|
|
37
|
+
const cachedAgent = cachedNode.value;
|
|
38
|
+
mergeCompatibleAgentNode(cachedAgent, candidate);
|
|
39
|
+
fingerprintCache.set(source, getAgentFingerprint(cachedAgent));
|
|
40
|
+
return cachedAgent;
|
|
73
41
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
source
|
|
42
|
+
const fingerprint = getAgentFingerprint(candidate);
|
|
43
|
+
const existingFingerprint = fingerprintCache.get(source);
|
|
44
|
+
if (existingFingerprint && existingFingerprint !== fingerprint) {
|
|
45
|
+
throw new SpawnfileError("compile_error", `Agent ${source} resolves differently across compile contexts`);
|
|
46
|
+
}
|
|
47
|
+
fingerprintCache.set(source, fingerprint);
|
|
48
|
+
nodeCache.set(source, {
|
|
49
|
+
runtimeName: candidate.runtime.name,
|
|
50
|
+
source,
|
|
78
51
|
value: candidate
|
|
79
52
|
});
|
|
80
|
-
visitStack.push(
|
|
81
|
-
for (const subagent of
|
|
82
|
-
const childManifestPath = getManifestPath(resolveProjectPath(
|
|
53
|
+
visitStack.push(source);
|
|
54
|
+
for (const subagent of manifest.subagents ?? []) {
|
|
55
|
+
const childManifestPath = getManifestPath(resolveProjectPath(manifestPath, subagent.ref));
|
|
83
56
|
const resolvedSubagent = await visitAgent(childManifestPath, {
|
|
84
|
-
inheritedExecution: execution,
|
|
57
|
+
inheritedExecution: candidate.execution,
|
|
85
58
|
inheritedResources: candidate.workspaceResources,
|
|
86
|
-
inheritedRuntime: runtime,
|
|
59
|
+
inheritedRuntime: candidate.runtime,
|
|
87
60
|
isSubagent: true
|
|
88
61
|
});
|
|
89
62
|
candidate.subagents.push({
|
|
@@ -91,7 +64,7 @@ export const createCompilePlanTraversal = ({ getLoadedManifest, nodeCache, finge
|
|
|
91
64
|
nodeSource: resolvedSubagent.source
|
|
92
65
|
});
|
|
93
66
|
edges.push({
|
|
94
|
-
from:
|
|
67
|
+
from: source,
|
|
95
68
|
kind: "subagent",
|
|
96
69
|
label: subagent.id,
|
|
97
70
|
to: resolvedSubagent.source
|
|
@@ -100,6 +73,14 @@ export const createCompilePlanTraversal = ({ getLoadedManifest, nodeCache, finge
|
|
|
100
73
|
visitStack.pop();
|
|
101
74
|
return candidate;
|
|
102
75
|
};
|
|
76
|
+
const visitAgent = async (manifestPath, context) => {
|
|
77
|
+
const canonicalPath = getCanonicalManifestPath(manifestPath);
|
|
78
|
+
const loadedManifest = await getLoadedManifest(canonicalPath);
|
|
79
|
+
if (!isAgentManifest(loadedManifest.manifest)) {
|
|
80
|
+
throw new SpawnfileError("compile_error", `Expected agent manifest, got ${loadedManifest.manifest.kind} at ${canonicalPath}`);
|
|
81
|
+
}
|
|
82
|
+
return visitAgentManifest(loadedManifest.manifest, canonicalPath, canonicalPath, context);
|
|
83
|
+
};
|
|
103
84
|
const visitTeam = async (manifestPath, inheritedResources = []) => {
|
|
104
85
|
const canonicalPath = getCanonicalManifestPath(manifestPath);
|
|
105
86
|
if (visitStack.includes(canonicalPath)) {
|
|
@@ -126,11 +107,15 @@ export const createCompilePlanTraversal = ({ getLoadedManifest, nodeCache, finge
|
|
|
126
107
|
docs,
|
|
127
108
|
external: resolvedExternal,
|
|
128
109
|
externalExplicit: manifest.external !== undefined,
|
|
110
|
+
...(manifest.external_participants
|
|
111
|
+
? { externalParticipants: manifest.external_participants }
|
|
112
|
+
: {}),
|
|
129
113
|
kind: "team",
|
|
130
114
|
lead: manifest.lead ?? null,
|
|
131
115
|
members: [],
|
|
132
116
|
mode: manifest.mode,
|
|
133
117
|
name: manifest.name,
|
|
118
|
+
memory: resolveDeclaredMemoryBanks(manifest.memory, canonicalPath, "team", manifest.name),
|
|
134
119
|
networks: resolveTeamNetworks(manifest),
|
|
135
120
|
policyMode: manifest.policy?.mode ?? DEFAULT_POLICY_MODE,
|
|
136
121
|
policyOnDegrade: manifest.policy?.on_degrade ?? DEFAULT_POLICY_ON_DEGRADE,
|
|
@@ -161,6 +146,25 @@ export const createCompilePlanTraversal = ({ getLoadedManifest, nodeCache, finge
|
|
|
161
146
|
});
|
|
162
147
|
visitStack.push(canonicalPath);
|
|
163
148
|
for (const member of loadedManifest.manifest.members) {
|
|
149
|
+
if (!isReferencedMember(member)) {
|
|
150
|
+
const resolvedAgent = await visitAgentManifest(materializeInlineAgentManifest(manifest, member), createInlineAgentSource(canonicalPath, member.id), canonicalPath, {
|
|
151
|
+
inheritedShared: {
|
|
152
|
+
manifestPath: canonicalPath,
|
|
153
|
+
surface: manifest.shared
|
|
154
|
+
},
|
|
155
|
+
inheritedResources: candidate.workspaceResources,
|
|
156
|
+
isSubagent: false
|
|
157
|
+
});
|
|
158
|
+
const resolvedMember = recordAgentMembership(canonicalPath, candidate.name, member.id, resolvedAgent);
|
|
159
|
+
candidate.members.push(resolvedMember);
|
|
160
|
+
edges.push({
|
|
161
|
+
from: canonicalPath,
|
|
162
|
+
kind: "team_member",
|
|
163
|
+
label: member.id,
|
|
164
|
+
to: resolvedMember.nodeSource
|
|
165
|
+
});
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
164
168
|
const childManifestPath = getManifestPath(resolveProjectPath(canonicalPath, member.ref));
|
|
165
169
|
const childManifest = await getLoadedManifest(childManifestPath);
|
|
166
170
|
let resolvedMember;
|
|
@@ -173,18 +177,7 @@ export const createCompilePlanTraversal = ({ getLoadedManifest, nodeCache, finge
|
|
|
173
177
|
inheritedResources: candidate.workspaceResources,
|
|
174
178
|
isSubagent: false
|
|
175
179
|
});
|
|
176
|
-
resolvedMember =
|
|
177
|
-
id: member.id,
|
|
178
|
-
kind: "agent",
|
|
179
|
-
nodeSource: resolvedAgent.source,
|
|
180
|
-
runtimeName: resolvedAgent.runtime.name
|
|
181
|
-
};
|
|
182
|
-
memberships.set(`${canonicalPath}::${member.id}::${resolvedAgent.source}`, {
|
|
183
|
-
agentSource: resolvedAgent.source,
|
|
184
|
-
memberId: member.id,
|
|
185
|
-
teamName: candidate.name,
|
|
186
|
-
teamSource: canonicalPath
|
|
187
|
-
});
|
|
180
|
+
resolvedMember = recordAgentMembership(canonicalPath, candidate.name, member.id, resolvedAgent);
|
|
188
181
|
}
|
|
189
182
|
else {
|
|
190
183
|
const resolvedTeam = await visitTeam(childManifestPath, candidate.workspaceResources);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type CompileProjectOptions, type CompileProjectResult } from "./compileProject.js";
|
|
2
|
+
import { type DockerImageInspector } from "./dockerBuildSkip.js";
|
|
2
3
|
import type { MoltnetTargetArchitecture } from "./moltnetBinaries.js";
|
|
3
4
|
export interface DockerBuildInvocation {
|
|
4
5
|
args: string[];
|
|
@@ -12,9 +13,19 @@ export interface BuildProjectOptions extends CompileProjectOptions {
|
|
|
12
13
|
buildRunner?: DockerBuildRunner;
|
|
13
14
|
dockerCommand?: string;
|
|
14
15
|
dockerContext?: string;
|
|
16
|
+
imageInspector?: DockerImageInspector;
|
|
15
17
|
imageTag?: string;
|
|
16
18
|
}
|
|
17
19
|
export interface BuildProjectResult extends CompileProjectResult {
|
|
20
|
+
imageBuild?: {
|
|
21
|
+
buildMs: number | null;
|
|
22
|
+
contextBytes: number;
|
|
23
|
+
contextDigest: string;
|
|
24
|
+
contextDigestMs: number;
|
|
25
|
+
contextFileCount: number;
|
|
26
|
+
probeMs: number;
|
|
27
|
+
skipped: boolean;
|
|
28
|
+
};
|
|
18
29
|
imageTag: string;
|
|
19
30
|
}
|
|
20
31
|
export declare const createDefaultImageTag: (projectRoot: string) => string;
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { execFile as execFileCallback, spawn } from "node:child_process";
|
|
3
|
+
import { performance } from "node:perf_hooks";
|
|
3
4
|
import { promisify } from "node:util";
|
|
5
|
+
import { BUILD_IMAGE_CACHE_VERSION, readBuildImageCacheEntry, writeBuildImageCacheEntry } from "../deployment/buildImageCacheStore.js";
|
|
4
6
|
import { SpawnfileError } from "../shared/index.js";
|
|
5
7
|
import { compileProject } from "./compileProject.js";
|
|
8
|
+
import { createDockerBuildContextDigest, listDockerBuildContextFiles } from "./dockerBuildContext.js";
|
|
9
|
+
import { inspectDockerImage, shouldSkipDockerBuild } from "./dockerBuildSkip.js";
|
|
6
10
|
import { slugify } from "./helpers.js";
|
|
7
11
|
const execFile = promisify(execFileCallback);
|
|
8
12
|
export const createDefaultImageTag = (projectRoot) => {
|
|
@@ -76,16 +80,87 @@ export const buildProject = async (inputPath, options = {}) => {
|
|
|
76
80
|
const compileResult = await compileProject(inputPath, {
|
|
77
81
|
clean: options.clean,
|
|
78
82
|
containerArchitecture: targetArchitecture,
|
|
79
|
-
outputDirectory: options.outputDirectory
|
|
83
|
+
outputDirectory: options.outputDirectory,
|
|
84
|
+
runtimePackageOverrides: options.runtimePackageOverrides,
|
|
85
|
+
...(options.worldBindingsPath !== undefined
|
|
86
|
+
? { worldBindingsPath: options.worldBindingsPath }
|
|
87
|
+
: {})
|
|
80
88
|
});
|
|
81
89
|
const imageTag = options.imageTag ?? createDefaultImageTag(resolveImageTagRoot(inputPath));
|
|
82
90
|
const invocation = createDockerBuildInvocation(compileResult.outputDirectory, imageTag, {
|
|
83
91
|
dockerCommand: options.dockerCommand,
|
|
84
92
|
dockerContext: options.dockerContext
|
|
85
93
|
});
|
|
86
|
-
|
|
94
|
+
const compileFingerprint = compileResult.report.compile_fingerprint ?? "";
|
|
95
|
+
const projectRoot = compileResult.report.root;
|
|
96
|
+
const contextDigestStartedAt = performance.now();
|
|
97
|
+
const [contextFiles, contextDigest] = await Promise.all([
|
|
98
|
+
listDockerBuildContextFiles(compileResult.outputDirectory),
|
|
99
|
+
createDockerBuildContextDigest(compileResult.outputDirectory)
|
|
100
|
+
]);
|
|
101
|
+
const contextDigestMs = performance.now() - contextDigestStartedAt;
|
|
102
|
+
let probeMs = 0;
|
|
103
|
+
let skipped = false;
|
|
104
|
+
if (!options.buildRunner) {
|
|
105
|
+
const probeStartedAt = performance.now();
|
|
106
|
+
const cacheEntry = await readBuildImageCacheEntry({
|
|
107
|
+
dockerContext: options.dockerContext,
|
|
108
|
+
imageTag,
|
|
109
|
+
projectRoot
|
|
110
|
+
});
|
|
111
|
+
skipped = await shouldSkipDockerBuild({
|
|
112
|
+
cacheEntry,
|
|
113
|
+
compileFingerprint,
|
|
114
|
+
contextDigest,
|
|
115
|
+
dockerCommand: options.dockerCommand,
|
|
116
|
+
dockerContext: options.dockerContext,
|
|
117
|
+
imageInspector: options.imageInspector,
|
|
118
|
+
imageTag
|
|
119
|
+
});
|
|
120
|
+
probeMs = performance.now() - probeStartedAt;
|
|
121
|
+
}
|
|
122
|
+
let buildMs = null;
|
|
123
|
+
if (!skipped) {
|
|
124
|
+
const buildStartedAt = performance.now();
|
|
125
|
+
await (options.buildRunner ?? runDockerBuild)(invocation);
|
|
126
|
+
buildMs = performance.now() - buildStartedAt;
|
|
127
|
+
if (!options.buildRunner) {
|
|
128
|
+
try {
|
|
129
|
+
const inspection = await (options.imageInspector ?? inspectDockerImage)({
|
|
130
|
+
dockerCommand: options.dockerCommand,
|
|
131
|
+
dockerContext: options.dockerContext,
|
|
132
|
+
imageTag
|
|
133
|
+
});
|
|
134
|
+
if (inspection
|
|
135
|
+
&& inspection.labels["com.spawnfile.compile_fingerprint"] === compileFingerprint) {
|
|
136
|
+
await writeBuildImageCacheEntry({
|
|
137
|
+
compileFingerprint,
|
|
138
|
+
contextDigest,
|
|
139
|
+
dockerContext: options.dockerContext ?? null,
|
|
140
|
+
imageId: inspection.id,
|
|
141
|
+
imageTag,
|
|
142
|
+
projectRoot,
|
|
143
|
+
version: BUILD_IMAGE_CACHE_VERSION,
|
|
144
|
+
writtenAt: new Date().toISOString()
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
// A post-build cache probe is best-effort and never changes build success.
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
87
153
|
return {
|
|
88
154
|
...compileResult,
|
|
155
|
+
imageBuild: {
|
|
156
|
+
buildMs,
|
|
157
|
+
contextBytes: contextFiles.reduce((total, file) => total + file.size, 0),
|
|
158
|
+
contextDigest,
|
|
159
|
+
contextDigestMs,
|
|
160
|
+
contextFileCount: contextFiles.length,
|
|
161
|
+
probeMs,
|
|
162
|
+
skipped
|
|
163
|
+
},
|
|
89
164
|
imageTag
|
|
90
165
|
};
|
|
91
166
|
};
|
|
@@ -14,6 +14,7 @@ export const validateEffectiveSkillRequirements = (nodeName, mcpNames, skills) =
|
|
|
14
14
|
export const getAgentFingerprint = (node) => stableStringify({
|
|
15
15
|
env: node.env,
|
|
16
16
|
execution: node.execution,
|
|
17
|
+
memory: node.memory,
|
|
17
18
|
mcpServers: node.mcpServers,
|
|
18
19
|
runtime: node.runtime,
|
|
19
20
|
schedule: node.schedule,
|
|
@@ -30,6 +31,7 @@ export const getAgentFingerprint = (node) => stableStringify({
|
|
|
30
31
|
export const getTeamFingerprint = (node) => stableStringify({
|
|
31
32
|
members: node.members,
|
|
32
33
|
mode: node.mode,
|
|
34
|
+
memory: node.memory,
|
|
33
35
|
lead: node.lead,
|
|
34
36
|
external: node.external,
|
|
35
37
|
networks: node.networks ?? [],
|
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
import { CompileReport } from "../report/index.js";
|
|
2
|
+
import { type RuntimePackageOverrideRequest } from "./containerPackageOverrides.js";
|
|
2
3
|
import { type MoltnetTargetArchitecture } from "./moltnetBinaries.js";
|
|
4
|
+
import { type OrganizationReadinessEvidence } from "./organizationReadyEvidence.js";
|
|
5
|
+
export { createOrganizationReadinessEvidence, ORGANIZATION_READINESS_EVIDENCE_VERSION } from "./organizationReadyEvidence.js";
|
|
6
|
+
export type { CreateOrganizationReadinessEvidenceInput, OrganizationReadinessEvidence } from "./organizationReadyEvidence.js";
|
|
3
7
|
export interface CompileProjectOptions {
|
|
4
8
|
clean?: boolean;
|
|
5
9
|
containerArchitecture?: MoltnetTargetArchitecture;
|
|
6
10
|
outputDirectory?: string;
|
|
11
|
+
/** Compile-time-only local overrides for runtime install npm packages
|
|
12
|
+
* (see src/compiler/containerPackageOverrides.ts). Only opt-in
|
|
13
|
+
* local/E2E callers set this; a standard compile leaves it undefined and
|
|
14
|
+
* every runtime install package resolves to its pinned registry
|
|
15
|
+
* version, unchanged. */
|
|
16
|
+
runtimePackageOverrides?: RuntimePackageOverrideRequest;
|
|
17
|
+
/** Runner-owned path to a bounded, secret-free simfile.world-bindings.v1 artifact. */
|
|
18
|
+
worldBindingsPath?: string;
|
|
7
19
|
}
|
|
8
20
|
export interface CompileProjectResult {
|
|
21
|
+
organizationReadinessEvidence: OrganizationReadinessEvidence;
|
|
9
22
|
outputDirectory: string;
|
|
10
23
|
report: CompileReport;
|
|
11
24
|
reportPath: string;
|
|
@@ -3,12 +3,18 @@ import { chmod } from "node:fs/promises";
|
|
|
3
3
|
import { ensureDirectory, removeDirectory } from "../filesystem/index.js";
|
|
4
4
|
import { createCompileReport, createDiagnostic, writeCompileReport } from "../report/index.js";
|
|
5
5
|
import { DEFAULT_OUTPUT_DIRECTORY } from "../shared/index.js";
|
|
6
|
-
import { assertRuntimeCanCompile, createRuntimeLifecycleDiagnostics, getRuntimeAdapter } from "../runtime/index.js";
|
|
6
|
+
import { assertRuntimeCanCompile, createRuntimeLifecycleDiagnostics, getRuntimeAdapter, resolveNoopolisRunId } from "../runtime/index.js";
|
|
7
7
|
import { buildCompilePlan } from "./buildCompilePlan.js";
|
|
8
8
|
import { createContainerArtifacts } from "./containerArtifacts.js";
|
|
9
|
+
import { stageRuntimePackageOverrides } from "./containerPackageOverrides.js";
|
|
10
|
+
import { augmentNodeReports } from "./compileProjectReports.js";
|
|
11
|
+
import { enforcePolicy } from "./compileProjectPolicy.js";
|
|
9
12
|
import { injectMoltnetWorkspaceFiles, injectTeamCompileSupportFiles, prepareTeamCompileSupport, writeEmittedFiles } from "./compileProjectSupport.js";
|
|
10
13
|
import { generateMoltnetArtifacts } from "./moltnetArtifacts.js";
|
|
11
14
|
import { stageMoltnetBinaries } from "./moltnetBinaries.js";
|
|
15
|
+
import { loadWorldBindingsForCompile } from "./worldBindingsFile.js";
|
|
16
|
+
import { createOrganizationReadinessEvidence } from "./organizationReadyEvidence.js";
|
|
17
|
+
export { createOrganizationReadinessEvidence, ORGANIZATION_READINESS_EVIDENCE_VERSION } from "./organizationReadyEvidence.js";
|
|
12
18
|
const createTeamCapabilities = (outcome, message) => [
|
|
13
19
|
{ key: "team.members", message, outcome },
|
|
14
20
|
{ key: "team.mode", message, outcome },
|
|
@@ -132,76 +138,11 @@ const compileTeamNode = async (baseDirectory, node) => {
|
|
|
132
138
|
value: node.value
|
|
133
139
|
};
|
|
134
140
|
};
|
|
135
|
-
const enforcePolicy = (nodeReport, policyMode, onDegrade) => {
|
|
136
|
-
for (const capability of nodeReport.capabilities) {
|
|
137
|
-
if (capability.outcome === "unsupported") {
|
|
138
|
-
if (policyMode === "strict") {
|
|
139
|
-
throw new Error(`Policy violation: ${capability.key} is unsupported for ${nodeReport.id} (strict mode)${capability.message ? `: ${capability.message}` : ""}`);
|
|
140
|
-
}
|
|
141
|
-
if (policyMode === "warn") {
|
|
142
|
-
nodeReport.diagnostics.push(createDiagnostic("warn", `Policy warning: ${capability.key} is unsupported for ${nodeReport.id}${capability.message ? `: ${capability.message}` : ""}`));
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
if (capability.outcome === "degraded") {
|
|
146
|
-
if (onDegrade === "error") {
|
|
147
|
-
throw new Error(`Policy violation: ${capability.key} is degraded for ${nodeReport.id} (on_degrade: error)${capability.message ? `: ${capability.message}` : ""}`);
|
|
148
|
-
}
|
|
149
|
-
if (onDegrade === "warn") {
|
|
150
|
-
nodeReport.diagnostics.push(createDiagnostic("warn", `Policy warning: ${capability.key} is degraded for ${nodeReport.id}${capability.message ? `: ${capability.message}` : ""}`));
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
const createIdentityCapabilities = (node) => [
|
|
156
|
-
...(node.surfaces?.slack?.identity
|
|
157
|
-
? [{
|
|
158
|
-
key: "surfaces.slack.identity",
|
|
159
|
-
message: "Declared Slack identity was preserved for roster output",
|
|
160
|
-
outcome: "supported"
|
|
161
|
-
}]
|
|
162
|
-
: []),
|
|
163
|
-
...(node.surfaces?.discord?.identity
|
|
164
|
-
? [{
|
|
165
|
-
key: "surfaces.discord.identity",
|
|
166
|
-
message: "Declared Discord identity was preserved for roster output",
|
|
167
|
-
outcome: "supported"
|
|
168
|
-
}]
|
|
169
|
-
: []),
|
|
170
|
-
...(node.surfaces?.telegram?.identity
|
|
171
|
-
? [{
|
|
172
|
-
key: "surfaces.telegram.identity",
|
|
173
|
-
message: "Declared Telegram identity was preserved for roster output",
|
|
174
|
-
outcome: "supported"
|
|
175
|
-
}]
|
|
176
|
-
: []),
|
|
177
|
-
...(node.surfaces?.whatsapp?.identity
|
|
178
|
-
? [{
|
|
179
|
-
key: "surfaces.whatsapp.identity",
|
|
180
|
-
message: "Declared WhatsApp identity was preserved for roster output",
|
|
181
|
-
outcome: "supported"
|
|
182
|
-
}]
|
|
183
|
-
: [])
|
|
184
|
-
];
|
|
185
|
-
const createWorkspaceResourceCapabilities = (node) => (node.workspaceResources?.length ?? 0) > 0
|
|
186
|
-
? [{
|
|
187
|
-
key: "workspace.resources",
|
|
188
|
-
message: `${node.workspaceResources?.length ?? 0} workspace resource(s) will be prepared at startup`,
|
|
189
|
-
outcome: "supported"
|
|
190
|
-
}]
|
|
191
|
-
: [];
|
|
192
|
-
const augmentNodeReports = (compiledNodes, support) => {
|
|
193
|
-
for (const compiled of compiledNodes) {
|
|
194
|
-
compiled.report.capabilities.push(...createWorkspaceResourceCapabilities(compiled.value));
|
|
195
|
-
if (compiled.value.kind === "team") {
|
|
196
|
-
compiled.report.capabilities.push(...(support.capabilitiesByTeamSource.get(compiled.value.source) ?? []));
|
|
197
|
-
compiled.report.diagnostics.push(...(support.diagnosticsByTeamSource.get(compiled.value.source) ?? []));
|
|
198
|
-
continue;
|
|
199
|
-
}
|
|
200
|
-
compiled.report.capabilities.push(...createIdentityCapabilities(compiled.value));
|
|
201
|
-
}
|
|
202
|
-
};
|
|
203
141
|
export const compileProject = async (inputPath, options = {}) => {
|
|
204
142
|
const plan = await buildCompilePlan(inputPath);
|
|
143
|
+
const worldBindings = options.worldBindingsPath === undefined
|
|
144
|
+
? undefined
|
|
145
|
+
: await loadWorldBindingsForCompile(plan, options.worldBindingsPath, resolveNoopolisRunId(process.env));
|
|
205
146
|
// The default output directory lives under the resolved project root, not the
|
|
206
147
|
// process working directory, so `spawnfile compile ./org` writes ./org/.spawn.
|
|
207
148
|
const outputDirectory = options.outputDirectory
|
|
@@ -231,17 +172,21 @@ export const compileProject = async (inputPath, options = {}) => {
|
|
|
231
172
|
enforcePolicy(compiled.report, compiled.value.policyMode, compiled.value.policyOnDegrade);
|
|
232
173
|
}
|
|
233
174
|
const moltnetArtifacts = await generateMoltnetArtifacts(plan);
|
|
234
|
-
const
|
|
175
|
+
const moltnetRelease = moltnetArtifacts
|
|
235
176
|
? await stageMoltnetBinaries(outputDirectory, {
|
|
236
177
|
architecture: options.containerArchitecture
|
|
237
178
|
})
|
|
238
|
-
:
|
|
179
|
+
: undefined;
|
|
239
180
|
await injectMoltnetWorkspaceFiles(outputDirectory, compiledNodes, moltnetArtifacts);
|
|
181
|
+
const resolvedRuntimePackageOverrides = await stageRuntimePackageOverrides(outputDirectory, options.runtimePackageOverrides);
|
|
240
182
|
const generatedAt = new Date().toISOString();
|
|
241
183
|
const containerArtifacts = await createContainerArtifacts(plan, compiledNodes, {
|
|
242
184
|
generatedAt,
|
|
243
|
-
hasStagedMoltnetBinaries,
|
|
244
|
-
moltnet: moltnetArtifacts
|
|
185
|
+
hasStagedMoltnetBinaries: Boolean(moltnetRelease),
|
|
186
|
+
moltnet: moltnetArtifacts,
|
|
187
|
+
moltnetRelease,
|
|
188
|
+
runtimePackageOverrides: resolvedRuntimePackageOverrides,
|
|
189
|
+
...(worldBindings ? { worldBindings } : {})
|
|
245
190
|
});
|
|
246
191
|
await writeEmittedFiles(outputDirectory, containerArtifacts.files);
|
|
247
192
|
await Promise.all(containerArtifacts.executablePaths.map((filePath) => chmod(path.join(outputDirectory, filePath), 0o755)));
|
|
@@ -252,5 +197,12 @@ export const compileProject = async (inputPath, options = {}) => {
|
|
|
252
197
|
projectName: containerArtifacts.distribution.report.organization.project
|
|
253
198
|
});
|
|
254
199
|
const reportPath = await writeCompileReport(outputDirectory, report);
|
|
255
|
-
|
|
200
|
+
const organizationReadinessEvidence = createOrganizationReadinessEvidence({
|
|
201
|
+
compileVersion: report.spawnfile_version,
|
|
202
|
+
containerArtifacts,
|
|
203
|
+
moltnetArtifacts,
|
|
204
|
+
plan,
|
|
205
|
+
...(worldBindings ? { worldBindings } : {})
|
|
206
|
+
});
|
|
207
|
+
return { organizationReadinessEvidence, outputDirectory, report, reportPath };
|
|
256
208
|
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Manifest } from "../manifest/index.js";
|
|
2
|
+
import { type NodeReport } from "../report/index.js";
|
|
3
|
+
export type PolicyMode = NonNullable<Manifest["policy"]>["mode"];
|
|
4
|
+
export type OnDegrade = NonNullable<Manifest["policy"]>["on_degrade"];
|
|
5
|
+
export declare const enforcePolicy: (nodeReport: NodeReport, policyMode: PolicyMode | null, onDegrade: OnDegrade | null) => void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createDiagnostic } from "../report/index.js";
|
|
2
|
+
export const enforcePolicy = (nodeReport, policyMode, onDegrade) => {
|
|
3
|
+
for (const capability of nodeReport.capabilities) {
|
|
4
|
+
if (capability.outcome === "unsupported") {
|
|
5
|
+
if (policyMode === "strict") {
|
|
6
|
+
throw new Error(`Policy violation: ${capability.key} is unsupported for ${nodeReport.id} (strict mode)${capability.message ? `: ${capability.message}` : ""}`);
|
|
7
|
+
}
|
|
8
|
+
if (policyMode === "warn") {
|
|
9
|
+
nodeReport.diagnostics.push(createDiagnostic("warn", `Policy warning: ${capability.key} is unsupported for ${nodeReport.id}${capability.message ? `: ${capability.message}` : ""}`));
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
if (capability.outcome === "degraded") {
|
|
13
|
+
if (onDegrade === "error") {
|
|
14
|
+
throw new Error(`Policy violation: ${capability.key} is degraded for ${nodeReport.id} (on_degrade: error)${capability.message ? `: ${capability.message}` : ""}`);
|
|
15
|
+
}
|
|
16
|
+
if (onDegrade === "warn") {
|
|
17
|
+
nodeReport.diagnostics.push(createDiagnostic("warn", `Policy warning: ${capability.key} is degraded for ${nodeReport.id}${capability.message ? `: ${capability.message}` : ""}`));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { NodeReport } from "../report/index.js";
|
|
2
|
+
import type { TeamCompileSupport } from "./compileProjectSupport.js";
|
|
3
|
+
import type { ResolvedAgentNode, ResolvedTeamNode } from "./types.js";
|
|
4
|
+
interface ReportTarget {
|
|
5
|
+
report: NodeReport;
|
|
6
|
+
value: ResolvedAgentNode | ResolvedTeamNode;
|
|
7
|
+
}
|
|
8
|
+
export declare const augmentNodeReports: (compiledNodes: ReportTarget[], support: TeamCompileSupport) => void;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const createIdentityCapabilities = (node) => [
|
|
2
|
+
...(node.surfaces?.slack?.identity
|
|
3
|
+
? [{
|
|
4
|
+
key: "surfaces.slack.identity",
|
|
5
|
+
message: "Declared Slack identity was preserved for roster output",
|
|
6
|
+
outcome: "supported"
|
|
7
|
+
}]
|
|
8
|
+
: []),
|
|
9
|
+
...(node.surfaces?.discord?.identity
|
|
10
|
+
? [{
|
|
11
|
+
key: "surfaces.discord.identity",
|
|
12
|
+
message: "Declared Discord identity was preserved for roster output",
|
|
13
|
+
outcome: "supported"
|
|
14
|
+
}]
|
|
15
|
+
: []),
|
|
16
|
+
...(node.surfaces?.telegram?.identity
|
|
17
|
+
? [{
|
|
18
|
+
key: "surfaces.telegram.identity",
|
|
19
|
+
message: "Declared Telegram identity was preserved for roster output",
|
|
20
|
+
outcome: "supported"
|
|
21
|
+
}]
|
|
22
|
+
: []),
|
|
23
|
+
...(node.surfaces?.whatsapp?.identity
|
|
24
|
+
? [{
|
|
25
|
+
key: "surfaces.whatsapp.identity",
|
|
26
|
+
message: "Declared WhatsApp identity was preserved for roster output",
|
|
27
|
+
outcome: "supported"
|
|
28
|
+
}]
|
|
29
|
+
: [])
|
|
30
|
+
];
|
|
31
|
+
const createWorkspaceResourceCapabilities = (node) => (node.workspaceResources?.length ?? 0) > 0
|
|
32
|
+
? [{
|
|
33
|
+
key: "workspace.resources",
|
|
34
|
+
message: `${node.workspaceResources?.length ?? 0} workspace resource(s) will be prepared at startup`,
|
|
35
|
+
outcome: "supported"
|
|
36
|
+
}]
|
|
37
|
+
: [];
|
|
38
|
+
export const augmentNodeReports = (compiledNodes, support) => {
|
|
39
|
+
for (const compiled of compiledNodes) {
|
|
40
|
+
compiled.report.capabilities.push(...createWorkspaceResourceCapabilities(compiled.value));
|
|
41
|
+
if (compiled.value.kind === "team") {
|
|
42
|
+
compiled.report.capabilities.push(...(support.capabilitiesByTeamSource.get(compiled.value.source) ?? []));
|
|
43
|
+
compiled.report.diagnostics.push(...(support.diagnosticsByTeamSource.get(compiled.value.source) ?? []));
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const activeEnvironments = support.activeEnvironmentsByAgentSource.get(compiled.value.source);
|
|
47
|
+
if (activeEnvironments) {
|
|
48
|
+
compiled.report.active_environments = activeEnvironments;
|
|
49
|
+
}
|
|
50
|
+
compiled.report.capabilities.push(...createIdentityCapabilities(compiled.value));
|
|
51
|
+
}
|
|
52
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { DistributionOrganizationSummary } from "../distribution/index.js";
|
|
2
|
+
import type { MoltnetArtifacts } from "./moltnetArtifacts.js";
|
|
3
|
+
import type { MoltnetReleaseIdentity } from "./moltnetBinaries.js";
|
|
4
|
+
import type { CompiledNodeArtifact, GeneratedContainerArtifacts } from "./containerArtifactsTypes.js";
|
|
5
|
+
import type { CompilePlan } from "./types.js";
|
|
6
|
+
export declare const createOrganizationSummary: (plan: CompilePlan, compiledNodes: CompiledNodeArtifact[]) => DistributionOrganizationSummary;
|
|
7
|
+
export declare const createMoltnetSummary: (moltnet: MoltnetArtifacts | undefined | null, release: MoltnetReleaseIdentity | undefined) => GeneratedContainerArtifacts["report"]["moltnet"] | undefined;
|