spawnfile 0.1.13 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -121
- 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/importers.d.ts +10 -0
- package/dist/auth/importers.js +29 -4
- package/dist/auth/index.d.ts +9 -0
- package/dist/auth/index.js +8 -0
- package/dist/auth/paths.d.ts +12 -1
- package/dist/auth/paths.js +21 -0
- package/dist/auth/profileStore.js +9 -9
- package/dist/auth/targetSecretSourceAuthor.d.ts +18 -0
- package/dist/auth/targetSecretSourceAuthor.js +52 -0
- package/dist/auth/targetSecretSourceFsIdentity.d.ts +40 -0
- package/dist/auth/targetSecretSourceFsIdentity.js +42 -0
- package/dist/auth/targetSecretSourceFsPublish.d.ts +17 -0
- package/dist/auth/targetSecretSourceFsPublish.js +51 -0
- package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +17 -0
- package/dist/auth/targetSecretSourceFsPublishImmutable.js +468 -0
- package/dist/auth/targetSecretSourceFsRead.d.ts +14 -0
- package/dist/auth/targetSecretSourceFsRead.js +189 -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/auth/trainingAuth.d.ts +21 -0
- package/dist/auth/trainingAuth.js +86 -0
- package/dist/auth/types.d.ts +1 -1
- 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 +230 -0
- package/dist/cli/canaryCutoverCommand.d.ts +2 -0
- package/dist/cli/canaryCutoverCommand.js +30 -0
- package/dist/cli/capabilitiesCommand.d.ts +3 -0
- package/dist/cli/capabilitiesCommand.js +12 -0
- package/dist/cli/capabilitiesReceipt.d.ts +56 -0
- package/dist/cli/capabilitiesReceipt.js +56 -0
- package/dist/cli/compileBuildCommands.d.ts +3 -0
- package/dist/cli/compileBuildCommands.js +48 -0
- package/dist/cli/composedLifecycleContractSet.d.ts +21 -0
- package/dist/cli/composedLifecycleContractSet.js +204 -0
- package/dist/cli/containerBundleCommand.d.ts +6 -0
- package/dist/cli/containerBundleCommand.js +116 -0
- package/dist/cli/devCommands.js +2 -0
- package/dist/cli/downCommand.d.ts +25 -0
- package/dist/cli/downCommand.js +145 -0
- package/dist/cli/evidenceExportHelperCommand.d.ts +13 -0
- package/dist/cli/evidenceExportHelperCommand.js +51 -0
- package/dist/cli/index.js +15 -3
- package/dist/cli/lifecycleCommands.d.ts +1 -1
- package/dist/cli/lifecycleCommands.js +11 -181
- package/dist/cli/lifecycleMachine.d.ts +25 -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/paideiaDelegation.d.ts +17 -0
- package/dist/cli/paideiaDelegation.js +210 -0
- package/dist/cli/paideiaSupervisor.d.ts +17 -0
- package/dist/cli/paideiaSupervisor.js +48 -0
- package/dist/cli/productStateCloneCommand.d.ts +2 -0
- package/dist/cli/productStateCloneCommand.js +34 -0
- package/dist/cli/runCli.d.ts +19 -2
- package/dist/cli/runCli.js +58 -74
- 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 +30 -0
- package/dist/cli/targetCommands.js +227 -0
- package/dist/cli/targetComposedPreparationCommand.d.ts +6 -0
- package/dist/cli/targetComposedPreparationCommand.js +39 -0
- package/dist/cli/targetConfigPreparedPlan.d.ts +3 -0
- package/dist/cli/targetConfigPreparedPlan.js +74 -0
- package/dist/cli/targetConfigResolver.d.ts +3 -0
- package/dist/cli/targetConfigResolver.js +111 -0
- package/dist/cli/targetConfigResolverCommand.d.ts +6 -0
- package/dist/cli/targetConfigResolverCommand.js +43 -0
- package/dist/cli/targetConfigResolverContracts.d.ts +56 -0
- package/dist/cli/targetConfigResolverContracts.js +30 -0
- package/dist/cli/targetConfigResolverDocker.d.ts +4 -0
- package/dist/cli/targetConfigResolverDocker.js +47 -0
- package/dist/cli/targetConfigResolverValidation.d.ts +10 -0
- package/dist/cli/targetConfigResolverValidation.js +94 -0
- package/dist/cli/targetDefaultArtifactAuthority.d.ts +5 -0
- package/dist/cli/targetDefaultArtifactAuthority.js +28 -0
- package/dist/cli/targetDefaultAuthorities.d.ts +55 -0
- package/dist/cli/targetDefaultAuthorities.js +213 -0
- package/dist/cli/targetDefaultConfig.d.ts +75 -0
- package/dist/cli/targetDefaultConfig.js +334 -0
- package/dist/cli/targetDefaultConfigStdin.d.ts +13 -0
- package/dist/cli/targetDefaultConfigStdin.js +221 -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 +268 -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/targetProductionCommands.d.ts +5 -0
- package/dist/cli/targetProductionCommands.js +45 -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/targetWorldReadinessCommand.d.ts +10 -0
- package/dist/cli/targetWorldReadinessCommand.js +43 -0
- package/dist/cli/trainCommand.d.ts +3 -0
- package/dist/cli/trainCommand.js +61 -0
- package/dist/cli/upCommand.d.ts +3 -0
- package/dist/cli/upCommand.js +162 -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 +197 -0
- package/dist/cli/usageCommand.d.ts +40 -0
- package/dist/cli/usageCommand.js +284 -0
- package/dist/cli/usageCommandLive.d.ts +84 -0
- package/dist/cli/usageCommandLive.js +95 -0
- package/dist/cli/usageDeploymentSource.d.ts +9 -0
- package/dist/cli/usageDeploymentSource.js +22 -0
- package/dist/cli/workspaceResourceMigrationCommand.d.ts +8 -0
- package/dist/cli/workspaceResourceMigrationCommand.js +36 -0
- package/dist/compiler/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 +2 -1
- package/dist/compiler/buildCompilePlanTeams.js +9 -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 +5 -0
- package/dist/compiler/compileProject.d.ts +15 -0
- package/dist/compiler/compileProject.js +31 -75
- package/dist/compiler/compileProjectPolicy.d.ts +5 -0
- package/dist/compiler/compileProjectPolicy.js +21 -0
- package/dist/compiler/compileProjectReports.d.ts +9 -0
- package/dist/compiler/compileProjectReports.js +52 -0
- package/dist/compiler/compileProjectSupport.js +9 -0
- package/dist/compiler/containerArtifactSummaries.d.ts +7 -0
- package/dist/compiler/containerArtifactSummaries.js +138 -0
- package/dist/compiler/containerArtifacts.d.ts +12 -0
- package/dist/compiler/containerArtifacts.js +180 -127
- package/dist/compiler/containerArtifactsPlans.d.ts +5 -3
- package/dist/compiler/containerArtifactsPlans.js +54 -124
- package/dist/compiler/containerArtifactsRender.d.ts +5 -2
- package/dist/compiler/containerArtifactsRender.js +106 -70
- package/dist/compiler/containerArtifactsTypes.d.ts +20 -0
- package/dist/compiler/containerBackedMountRender.d.ts +56 -0
- package/dist/compiler/containerBackedMountRender.js +101 -0
- package/dist/compiler/containerConfigEnvRender.d.ts +3 -0
- package/dist/compiler/containerConfigEnvRender.js +54 -0
- package/dist/compiler/containerDaimonBrokerRender.d.ts +112 -0
- package/dist/compiler/containerDaimonBrokerRender.js +191 -0
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.d.ts +38 -0
- package/dist/compiler/containerDaimonGrokWorkerProvisioning.js +108 -0
- package/dist/compiler/containerDaimonGrokWorkerRender.d.ts +172 -0
- package/dist/compiler/containerDaimonGrokWorkerRender.js +268 -0
- package/dist/compiler/containerDaimonOwnershipGuardRender.d.ts +12 -0
- package/dist/compiler/containerDaimonOwnershipGuardRender.js +191 -0
- package/dist/compiler/containerDaimonUidEntrypointRender.d.ts +24 -0
- package/dist/compiler/containerDaimonUidEntrypointRender.js +297 -0
- package/dist/compiler/containerEntrypointRender.d.ts +8 -0
- package/dist/compiler/containerEntrypointRender.js +82 -72
- 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/containerPersistentMounts.d.ts +30 -0
- package/dist/compiler/containerPersistentMounts.js +66 -0
- package/dist/compiler/containerReadinessPaths.d.ts +1 -0
- package/dist/compiler/containerReadinessPaths.js +1 -0
- package/dist/compiler/containerRuntimeLinkMaterializer.d.ts +2 -0
- package/dist/compiler/containerRuntimeLinkMaterializer.js +12 -0
- package/dist/compiler/containerRuntimeReadinessRender.d.ts +7 -0
- package/dist/compiler/containerRuntimeReadinessRender.js +40 -0
- package/dist/compiler/containerStateOwnershipRender.d.ts +4 -0
- package/dist/compiler/containerStateOwnershipRender.js +75 -0
- package/dist/compiler/containerTargetPlanResolution.d.ts +20 -0
- package/dist/compiler/containerTargetPlanResolution.js +97 -0
- package/dist/compiler/containerTargetResources.d.ts +22 -1
- package/dist/compiler/containerTargetResources.js +94 -2
- package/dist/compiler/containerVolumeBootstrap.d.ts +3 -0
- package/dist/compiler/containerVolumeBootstrap.js +3 -0
- package/dist/compiler/containerWorkspaceResourceRender.js +49 -1
- package/dist/compiler/daimonTelemetryArtifacts.d.ts +22 -0
- package/dist/compiler/daimonTelemetryArtifacts.js +56 -0
- package/dist/compiler/deploymentLineage.d.ts +40 -0
- package/dist/compiler/deploymentLineage.js +50 -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 +7 -0
- package/dist/compiler/index.js +7 -0
- package/dist/compiler/initProject.d.ts +2 -0
- package/dist/compiler/initProject.js +39 -1
- package/dist/compiler/localMoltnetAuthority.d.ts +64 -0
- package/dist/compiler/localMoltnetAuthority.js +177 -0
- package/dist/compiler/memoryArtifacts.d.ts +26 -0
- package/dist/compiler/memoryArtifacts.js +210 -0
- package/dist/compiler/memoryResolution.d.ts +4 -0
- package/dist/compiler/memoryResolution.js +147 -0
- package/dist/compiler/modelEnv.d.ts +7 -0
- package/dist/compiler/modelEnv.js +13 -1
- package/dist/compiler/moltnetAllowedWakeSendersValidation.d.ts +2 -0
- package/dist/compiler/moltnetAllowedWakeSendersValidation.js +42 -0
- package/dist/compiler/moltnetArtifactPaths.d.ts +31 -0
- package/dist/compiler/moltnetArtifactPaths.js +51 -0
- package/dist/compiler/moltnetArtifactTypes.d.ts +56 -0
- package/dist/compiler/moltnetArtifactTypes.js +1 -0
- package/dist/compiler/moltnetArtifacts.d.ts +3 -41
- package/dist/compiler/moltnetArtifacts.js +87 -101
- package/dist/compiler/moltnetBinaries.d.ts +33 -4
- package/dist/compiler/moltnetBinaries.js +173 -26
- package/dist/compiler/moltnetClientConfig.js +7 -2
- package/dist/compiler/moltnetConfigLowering.d.ts +18 -1
- package/dist/compiler/moltnetConfigLowering.js +92 -6
- 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 +40 -0
- package/dist/compiler/moltnetReleaseAuthority.js +102 -0
- package/dist/compiler/moltnetReleaseDownload.d.ts +12 -0
- package/dist/compiler/moltnetReleaseDownload.js +85 -0
- package/dist/compiler/moltnetRepresentativeResolution.d.ts +2 -1
- package/dist/compiler/moltnetRepresentativeResolution.js +17 -3
- package/dist/compiler/moltnetResolution.js +67 -21
- package/dist/compiler/moltnetRoomMemberships.js +52 -9
- package/dist/compiler/moltnetRoomPolicyCompatibility.d.ts +1 -1
- package/dist/compiler/moltnetRoomPolicyCompatibility.js +3 -1
- package/dist/compiler/moltnetRuntimeConfig.d.ts +1 -1
- package/dist/compiler/moltnetRuntimeConfig.js +22 -2
- package/dist/compiler/moltnetServerPlans.d.ts +9 -0
- package/dist/compiler/moltnetServerPlans.js +151 -0
- package/dist/compiler/organizationExternalParticipants.d.ts +3 -0
- package/dist/compiler/organizationExternalParticipants.js +176 -0
- package/dist/compiler/organizationIdentity.d.ts +21 -0
- package/dist/compiler/organizationIdentity.js +64 -0
- package/dist/compiler/organizationIdentityGraph.d.ts +15 -0
- package/dist/compiler/organizationIdentityGraph.js +115 -0
- package/dist/compiler/organizationReadyEvidence.d.ts +57 -0
- package/dist/compiler/organizationReadyEvidence.js +281 -0
- package/dist/compiler/projectManifestGraph.d.ts +4 -0
- package/dist/compiler/projectManifestGraph.js +24 -0
- package/dist/compiler/runProject.d.ts +8 -2
- package/dist/compiler/runProject.js +62 -27
- package/dist/compiler/runProjectAuth.d.ts +10 -2
- package/dist/compiler/runProjectAuth.js +105 -11
- package/dist/compiler/runProjectDaimonCodexDocker.d.ts +3 -0
- package/dist/compiler/runProjectDaimonCodexDocker.js +36 -0
- package/dist/compiler/runProjectDocker.d.ts +11 -0
- package/dist/compiler/runProjectDocker.js +64 -16
- package/dist/compiler/runProjectDockerDaimonGuards.d.ts +15 -0
- package/dist/compiler/runProjectDockerDaimonGuards.js +122 -0
- package/dist/compiler/runProjectDockerReservation.d.ts +3 -0
- package/dist/compiler/runProjectDockerReservation.js +118 -0
- package/dist/compiler/runProjectLifecycle.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/training/broker/declaration.d.ts +45 -0
- package/dist/compiler/training/broker/declaration.js +55 -0
- package/dist/compiler/training/broker/entrypoint.d.ts +39 -0
- package/dist/compiler/training/broker/entrypoint.js +111 -0
- package/dist/compiler/training/broker/index.d.ts +10 -0
- package/dist/compiler/training/broker/index.js +10 -0
- package/dist/compiler/training/broker/main.d.ts +2 -0
- package/dist/compiler/training/broker/main.js +14 -0
- package/dist/compiler/training/broker/paths.d.ts +196 -0
- package/dist/compiler/training/broker/paths.js +241 -0
- package/dist/compiler/training/broker/processes.d.ts +42 -0
- package/dist/compiler/training/broker/processes.js +99 -0
- package/dist/compiler/training/broker/projection.d.ts +51 -0
- package/dist/compiler/training/broker/projection.js +76 -0
- package/dist/compiler/training/broker/provisioning.d.ts +87 -0
- package/dist/compiler/training/broker/provisioning.js +213 -0
- package/dist/compiler/training/broker/receipt.d.ts +77 -0
- package/dist/compiler/training/broker/receipt.js +110 -0
- package/dist/compiler/training/broker/registration.d.ts +41 -0
- package/dist/compiler/training/broker/registration.js +102 -0
- package/dist/compiler/training/broker/runtime.d.ts +25 -0
- package/dist/compiler/training/broker/runtime.js +173 -0
- package/dist/compiler/training/broker/seccompRoutes.d.ts +31 -0
- package/dist/compiler/training/broker/seccompRoutes.js +36 -0
- package/dist/compiler/training/broker/supervisor.d.ts +109 -0
- package/dist/compiler/training/broker/supervisor.js +173 -0
- package/dist/compiler/training/container/contract.d.ts +31 -0
- package/dist/compiler/training/container/contract.js +33 -0
- package/dist/compiler/training/container/index.d.ts +4 -0
- package/dist/compiler/training/container/index.js +2 -0
- package/dist/compiler/training/container/launch.d.ts +18 -0
- package/dist/compiler/training/container/launch.js +173 -0
- package/dist/compiler/training/container/prepare.d.ts +8 -0
- package/dist/compiler/training/container/prepare.js +80 -0
- package/dist/compiler/training/container/process.d.ts +14 -0
- package/dist/compiler/training/container/process.js +70 -0
- package/dist/compiler/training/container/security.d.ts +36 -0
- package/dist/compiler/training/container/security.js +58 -0
- package/dist/compiler/training/context.d.ts +7 -0
- package/dist/compiler/training/context.js +93 -0
- package/dist/compiler/training/contract.d.ts +142 -0
- package/dist/compiler/training/contract.js +34 -0
- package/dist/compiler/training/index.d.ts +4 -0
- package/dist/compiler/training/index.js +3 -0
- package/dist/compiler/training/preparation/assets/Dockerfile +98 -0
- package/dist/compiler/training/preparation/assets/package-lock.json +3787 -0
- package/dist/compiler/training/preparation/broker.d.ts +21 -0
- package/dist/compiler/training/preparation/broker.js +43 -0
- package/dist/compiler/training/preparation/contextModes.d.ts +12 -0
- package/dist/compiler/training/preparation/contextModes.js +38 -0
- package/dist/compiler/training/preparation/contract.d.ts +182 -0
- package/dist/compiler/training/preparation/contract.js +94 -0
- package/dist/compiler/training/preparation/copyAssets.d.ts +1 -0
- package/dist/compiler/training/preparation/copyAssets.js +8 -0
- package/dist/compiler/training/preparation/daimonParent.d.ts +42 -0
- package/dist/compiler/training/preparation/daimonParent.js +114 -0
- package/dist/compiler/training/preparation/files.d.ts +25 -0
- package/dist/compiler/training/preparation/files.js +85 -0
- package/dist/compiler/training/preparation/image.d.ts +28 -0
- package/dist/compiler/training/preparation/image.js +102 -0
- package/dist/compiler/training/preparation/index.d.ts +3 -0
- package/dist/compiler/training/preparation/index.js +2 -0
- package/dist/compiler/training/preparation/inputs.d.ts +23 -0
- package/dist/compiler/training/preparation/inputs.js +93 -0
- package/dist/compiler/training/preparation/prepare.d.ts +33 -0
- package/dist/compiler/training/preparation/prepare.js +186 -0
- package/dist/compiler/training/preparation/scratch.d.ts +19 -0
- package/dist/compiler/training/preparation/scratch.js +48 -0
- package/dist/compiler/training/repair/compatibility.d.ts +11 -0
- package/dist/compiler/training/repair/compatibility.js +34 -0
- package/dist/compiler/training/repair/contract.d.ts +506 -0
- package/dist/compiler/training/repair/contract.js +31 -0
- package/dist/compiler/training/repair/index.d.ts +3 -0
- package/dist/compiler/training/repair/index.js +3 -0
- package/dist/compiler/training/repair/prepare.d.ts +230 -0
- package/dist/compiler/training/repair/prepare.js +74 -0
- package/dist/compiler/training/repair/witness.d.ts +203 -0
- package/dist/compiler/training/repair/witness.js +42 -0
- package/dist/compiler/types.d.ts +84 -1
- package/dist/compiler/upProject.d.ts +31 -1
- package/dist/compiler/upProject.js +197 -22
- package/dist/compiler/upProjectHandoff.d.ts +62 -0
- package/dist/compiler/upProjectHandoff.js +204 -0
- package/dist/compiler/upReceipt.d.ts +36 -0
- package/dist/compiler/upReceipt.js +127 -0
- package/dist/compiler/updateProjectModels.js +43 -60
- package/dist/compiler/updateProjectRuntime.js +22 -35
- package/dist/compiler/updateProjectSurfaces.js +53 -47
- package/dist/compiler/view/types.d.ts +1 -1
- package/dist/compiler/workspaceBundleArtifacts.d.ts +3 -0
- package/dist/compiler/workspaceBundleArtifacts.js +106 -0
- package/dist/compiler/workspaceResources.d.ts +4 -1
- package/dist/compiler/workspaceResources.js +12 -7
- package/dist/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 +185 -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/canaryCutover.d.ts +42 -0
- package/dist/deployment/canaryCutover.js +140 -0
- package/dist/deployment/candidateDiagnostics.d.ts +15 -0
- package/dist/deployment/candidateDiagnostics.js +90 -0
- package/dist/deployment/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 +5 -10
- package/dist/deployment/dockerManager.d.ts +51 -0
- package/dist/deployment/dockerManager.js +124 -1
- package/dist/deployment/dockerProbeGateway.d.ts +17 -0
- package/dist/deployment/dockerProbeGateway.js +80 -6
- 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 +39 -0
- package/dist/deployment/downDeployment.js +248 -0
- package/dist/deployment/downReceiptTypes.d.ts +36 -0
- package/dist/deployment/downReceiptTypes.js +45 -0
- package/dist/deployment/index.d.ts +20 -0
- package/dist/deployment/index.js +21 -0
- package/dist/deployment/lifecycleCompletion.d.ts +37 -0
- package/dist/deployment/lifecycleCompletion.js +236 -0
- package/dist/deployment/lifecycleCompletionContracts.d.ts +224 -0
- package/dist/deployment/lifecycleCompletionContracts.js +140 -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 +12 -0
- package/dist/deployment/lifecycleCompletionPaths.js +19 -0
- package/dist/deployment/lifecycleCompletionPublication.d.ts +7 -0
- package/dist/deployment/lifecycleCompletionPublication.js +49 -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/lifecycleUpRecords.d.ts +11 -0
- package/dist/deployment/lifecycleUpRecords.js +127 -0
- package/dist/deployment/native/AGENTS.md +11 -0
- package/dist/deployment/native/rename-noreplace-arm64 +0 -0
- package/dist/deployment/native/rename-noreplace-arm64.provenance.json +1 -0
- package/dist/deployment/native/rename-noreplace-x64 +0 -0
- package/dist/deployment/native/rename-noreplace-x64.provenance.json +1 -0
- package/dist/deployment/noReplaceActivation.d.ts +17 -0
- package/dist/deployment/noReplaceActivation.js +50 -0
- package/dist/deployment/organizationHandoffAuthorityFsBudget.d.ts +110 -0
- package/dist/deployment/organizationHandoffAuthorityFsBudget.js +156 -0
- package/dist/deployment/organizationHandoffAuthorityFsClient.d.ts +17 -0
- package/dist/deployment/organizationHandoffAuthorityFsClient.js +187 -0
- package/dist/deployment/organizationHandoffAuthorityFsElection.d.ts +21 -0
- package/dist/deployment/organizationHandoffAuthorityFsElection.js +57 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorker.d.ts +1 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorker.js +431 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.d.ts +1 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorkerParent.fixture.js +26 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.d.ts +1 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.js +16 -0
- package/dist/deployment/organizationHandoffAuthorityStore.d.ts +41 -0
- package/dist/deployment/organizationHandoffAuthorityStore.js +355 -0
- package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +76 -0
- package/dist/deployment/organizationHandoffAuthorityTypes.js +149 -0
- package/dist/deployment/organizationHandoffTypes.d.ts +29 -0
- package/dist/deployment/organizationHandoffTypes.js +80 -0
- package/dist/deployment/organizationReady.d.ts +54 -0
- package/dist/deployment/organizationReady.js +232 -0
- package/dist/deployment/privateArtifactsExport.d.ts +18 -0
- package/dist/deployment/privateArtifactsExport.js +80 -0
- package/dist/deployment/productStateClone.d.ts +43 -0
- package/dist/deployment/productStateClone.js +319 -0
- package/dist/deployment/record.d.ts +26 -1
- package/dist/deployment/record.js +49 -4
- package/dist/deployment/target.d.ts +1 -35
- package/dist/deployment/target.js +1 -96
- package/dist/deployment/upLifecycleRecoveryState.d.ts +23 -0
- package/dist/deployment/upLifecycleRecoveryState.js +12 -0
- package/dist/deployment/upReceiptTypes.d.ts +137 -0
- package/dist/deployment/upReceiptTypes.js +191 -0
- package/dist/deployment/workspaceResourceMigration.d.ts +55 -0
- package/dist/deployment/workspaceResourceMigration.js +315 -0
- package/dist/dev/project.d.ts +7 -0
- package/dist/dev/project.js +24 -9
- package/dist/distribution/buildDistributionReport.d.ts +2 -1
- package/dist/distribution/buildDistributionReport.js +2 -1
- package/dist/distribution/consumeImage.d.ts +2 -0
- package/dist/distribution/consumeImage.js +98 -73
- package/dist/distribution/consumeImageDaimonDocker.d.ts +3 -0
- package/dist/distribution/consumeImageDaimonDocker.js +45 -0
- package/dist/distribution/consumeImageLifecycle.d.ts +17 -0
- package/dist/distribution/consumeImageLifecycle.js +231 -0
- package/dist/distribution/consumeImageSupport.d.ts +12 -0
- package/dist/distribution/consumeImageSupport.js +15 -0
- package/dist/distribution/distributionReportSchema.d.ts +16 -1
- package/dist/distribution/distributionReportSchema.js +21 -3
- package/dist/distribution/dockerRunner.d.ts +6 -1
- package/dist/distribution/dockerRunner.js +31 -4
- package/dist/distribution/imageRuntimeAuth.d.ts +9 -1
- package/dist/distribution/imageRuntimeAuth.js +70 -1
- package/dist/distribution/index.d.ts +3 -3
- package/dist/distribution/index.js +2 -2
- package/dist/distribution/preflight.js +5 -1
- package/dist/distribution/types.d.ts +21 -1
- package/dist/distribution/types.js +4 -0
- package/dist/evidenceExportHelper/boundedExecutor.d.ts +3 -0
- package/dist/evidenceExportHelper/boundedExecutor.js +33 -0
- package/dist/evidenceExportHelper/helperProgram.mjs +156 -0
- package/dist/evidenceExportHelper/index.d.ts +4 -0
- package/dist/evidenceExportHelper/index.js +4 -0
- package/dist/evidenceExportHelper/preparedAuthority.d.ts +64 -0
- package/dist/evidenceExportHelper/preparedAuthority.js +228 -0
- package/dist/evidenceExportHelper/preparedBuilder.d.ts +10 -0
- package/dist/evidenceExportHelper/preparedBuilder.js +183 -0
- package/dist/evidenceExportHelper/preparedBuilderTypes.d.ts +19 -0
- package/dist/evidenceExportHelper/preparedBuilderTypes.js +1 -0
- package/dist/evidenceExportHelper/recipe.d.ts +7 -0
- package/dist/evidenceExportHelper/recipe.js +83 -0
- package/dist/filesystem/io.d.ts +2 -0
- package/dist/filesystem/io.js +16 -1
- package/dist/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/executionSchemas.d.ts +27 -0
- package/dist/manifest/executionSchemas.js +21 -2
- 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 +18 -0
- package/dist/manifest/mcpSchemas.js +44 -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 +20 -2
- package/dist/manifest/renderSpawnfileSurfaces.d.ts +2 -0
- package/dist/manifest/renderSpawnfileSurfaces.js +134 -0
- package/dist/manifest/renderSpawnfileWorkspace.js +5 -0
- package/dist/manifest/scheduleSchemas.d.ts +3 -1
- package/dist/manifest/scheduleSchemas.js +91 -5
- package/dist/manifest/schemas.d.ts +2034 -40
- package/dist/manifest/schemas.js +82 -33
- package/dist/manifest/surfaceSchemas.d.ts +17 -0
- package/dist/manifest/surfaceSchemas.js +24 -1
- package/dist/manifest/teamNetworkAccessSchemas.d.ts +6 -2
- package/dist/manifest/teamNetworkAccessSchemas.js +11 -0
- package/dist/manifest/teamNetworkAuthSchemas.d.ts +48 -0
- package/dist/manifest/teamNetworkAuthSchemas.js +103 -0
- package/dist/manifest/teamNetworkSchemas.d.ts +25 -190
- package/dist/manifest/teamNetworkSchemas.js +21 -317
- package/dist/manifest/teamNetworkServerSchemas.d.ts +155 -0
- package/dist/manifest/teamNetworkServerSchemas.js +215 -0
- package/dist/manifest/workspaceSchemas.d.ts +16 -0
- package/dist/manifest/workspaceSchemas.js +11 -0
- package/dist/ownership/siblingBuildFreshness.d.ts +20 -0
- package/dist/ownership/siblingBuildFreshness.js +20 -0
- package/dist/report/types.d.ts +173 -1
- package/dist/runtime/common.d.ts +63 -1
- package/dist/runtime/common.js +88 -3
- package/dist/runtime/container.d.ts +28 -1
- package/dist/runtime/container.js +78 -29
- package/dist/runtime/containerPackageOverrides.d.ts +37 -0
- package/dist/runtime/containerPackageOverrides.js +33 -0
- package/dist/runtime/daimon/adapter.d.ts +14 -0
- package/dist/runtime/daimon/adapter.js +243 -0
- package/dist/runtime/daimon/attention.d.ts +8 -0
- package/dist/runtime/daimon/attention.js +32 -0
- package/dist/runtime/daimon/config.d.ts +25 -0
- package/dist/runtime/daimon/config.js +272 -0
- package/dist/runtime/daimon/contractManifest.d.ts +295 -0
- package/dist/runtime/daimon/contractManifest.js +319 -0
- package/dist/runtime/daimon/grokModel.d.ts +19 -0
- package/dist/runtime/daimon/grokModel.js +33 -0
- package/dist/runtime/daimon/grokWorkerConfigBytes.d.ts +26 -0
- package/dist/runtime/daimon/grokWorkerConfigBytes.js +36 -0
- package/dist/runtime/daimon/grokWorkerContract.d.ts +22 -0
- package/dist/runtime/daimon/grokWorkerContract.js +48 -0
- package/dist/runtime/daimon/memory.d.ts +57 -0
- package/dist/runtime/daimon/memory.js +125 -0
- package/dist/runtime/daimon/runAuth.d.ts +51 -0
- package/dist/runtime/daimon/runAuth.js +279 -0
- package/dist/runtime/daimon/runtimeIdentity.d.ts +22 -0
- package/dist/runtime/daimon/runtimeIdentity.js +22 -0
- package/dist/runtime/daimon/scheduleAuthority.d.ts +3 -0
- package/dist/runtime/daimon/scheduleAuthority.js +17 -0
- package/dist/runtime/index.d.ts +6 -0
- package/dist/runtime/index.js +6 -0
- package/dist/runtime/install.d.ts +3 -0
- package/dist/runtime/install.js +3 -0
- package/dist/runtime/localDaimonAuthority.d.ts +11 -0
- package/dist/runtime/localDaimonAuthority.js +77 -0
- package/dist/runtime/mnemeMcp.d.ts +28 -0
- package/dist/runtime/mnemeMcp.js +135 -0
- package/dist/runtime/openclaw/adapter.js +17 -6
- 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 -2
- package/dist/runtime/pi/adapter.js +87 -58
- 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 +84 -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 +25 -29
- package/dist/runtime/picoclaw/mcp.d.ts +4 -0
- package/dist/runtime/picoclaw/mcp.js +43 -0
- package/dist/runtime/picoclaw/memory.d.ts +7 -0
- package/dist/runtime/picoclaw/memory.js +17 -0
- package/dist/runtime/picoclaw/runAuth.js +1 -1
- package/dist/runtime/picoclaw/scaffold.js +1 -1
- package/dist/runtime/picoclaw/schedules.d.ts +26 -0
- package/dist/runtime/picoclaw/schedules.js +62 -3
- package/dist/runtime/registry.d.ts +3 -0
- package/dist/runtime/registry.js +19 -2
- package/dist/runtime/scheduleUtils.d.ts +3 -0
- package/dist/runtime/scheduleUtils.js +19 -0
- package/dist/runtime/types.d.ts +50 -2
- package/dist/runtime/usageLedger.d.ts +158 -0
- package/dist/runtime/usageLedger.js +269 -0
- package/dist/runtime/usageLedgerRead.d.ts +48 -0
- package/dist/runtime/usageLedgerRead.js +102 -0
- package/dist/runtime/usageRequestLedger.d.ts +42 -0
- package/dist/runtime/usageRequestLedger.js +72 -0
- package/dist/shared/daimonCodexDocker.d.ts +32 -0
- package/dist/shared/daimonCodexDocker.js +120 -0
- package/dist/shared/daimonGrokSeccompProfile.d.ts +10 -0
- package/dist/shared/daimonGrokSeccompProfile.js +11 -0
- package/dist/shared/errors.d.ts +1 -1
- package/dist/shared/errors.js +2 -2
- package/dist/shared/index.d.ts +3 -0
- package/dist/shared/index.js +3 -0
- package/dist/shared/redaction.d.ts +2 -0
- package/dist/shared/redaction.js +10 -0
- package/dist/shared/types.d.ts +1 -1
- package/dist/shared/volumeNames.d.ts +6 -0
- package/dist/shared/volumeNames.js +14 -0
- package/dist/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/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 +476 -0
- package/dist/target/dockerBaseImage.d.ts +2 -0
- package/dist/target/dockerBaseImage.js +11 -0
- package/dist/target/dockerCommandExecutor.d.ts +38 -0
- package/dist/target/dockerCommandExecutor.js +251 -0
- package/dist/target/dockerCommandExecutorCore.d.ts +35 -0
- package/dist/target/dockerCommandExecutorCore.js +275 -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 +83 -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 +53 -0
- package/dist/target/dockerTarget.js +48 -0
- package/dist/target/dockerTargetBinding.d.ts +13 -0
- package/dist/target/dockerTargetBinding.js +95 -0
- package/dist/target/dockerTargetExecFile.d.ts +19 -0
- package/dist/target/dockerTargetExecFile.js +194 -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 +64 -0
- package/dist/target/dockerWorldServiceProvider.js +330 -0
- package/dist/target/dockerWorldServiceStore.d.ts +73 -0
- package/dist/target/dockerWorldServiceStore.js +367 -0
- package/dist/target/evidenceExport.d.ts +57 -0
- package/dist/target/evidenceExport.js +527 -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 +87 -0
- package/dist/target/evidenceExportProvider.js +197 -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 +72 -0
- package/dist/target/publicArtifactSnapshot.js +184 -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/examples/README.md +45 -0
- package/examples/agent-with-subagents/AGENTS.md +3 -0
- package/examples/agent-with-subagents/Spawnfile +30 -0
- package/examples/agent-with-subagents/subagents/critic/AGENTS.md +3 -0
- package/examples/agent-with-subagents/subagents/critic/Spawnfile +15 -0
- package/examples/agent-with-subagents/subagents/researcher/AGENTS.md +3 -0
- package/examples/agent-with-subagents/subagents/researcher/Spawnfile +17 -0
- package/examples/daimon-org/Spawnfile +68 -0
- package/examples/daimon-org/TEAM.md +4 -0
- package/examples/daimon-org/agents/mapper/AGENTS.md +4 -0
- package/examples/daimon-org/agents/mapper/Spawnfile +37 -0
- package/examples/daimon-org/shared/skills/file-note/SKILL.md +9 -0
- package/examples/daimon-org/teams/review/Spawnfile +53 -0
- package/examples/daimon-org/teams/review/agents/reviewer/AGENTS.md +4 -0
- package/examples/daimon-org/teams/review/agents/reviewer/Spawnfile +37 -0
- package/examples/daimon-public-host/AGENTS.md +3 -0
- package/examples/daimon-public-host/Spawnfile +21 -0
- package/examples/distribution-org/Spawnfile +43 -0
- package/examples/distribution-org/TEAM.md +4 -0
- package/examples/distribution-org/agents/coordinator/AGENTS.md +1 -0
- package/examples/distribution-org/agents/coordinator/Spawnfile +20 -0
- package/examples/distribution-org/agents/researcher/AGENTS.md +1 -0
- package/examples/distribution-org/agents/researcher/Spawnfile +20 -0
- package/examples/jungian-daimon-org/Spawnfile +41 -0
- package/examples/jungian-daimon-org/TEAM.md +21 -0
- package/examples/jungian-daimon-org/teams/luna/Spawnfile +47 -0
- package/examples/jungian-daimon-org/teams/luna/TEAM.md +4 -0
- package/examples/jungian-daimon-org/teams/luna/agents/animus/AGENTS.md +10 -0
- package/examples/jungian-daimon-org/teams/luna/agents/animus/Spawnfile +33 -0
- package/examples/jungian-daimon-org/teams/luna/agents/representative/AGENTS.md +21 -0
- package/examples/jungian-daimon-org/teams/luna/agents/representative/Spawnfile +30 -0
- package/examples/jungian-daimon-org/teams/luna/agents/shadow/AGENTS.md +10 -0
- package/examples/jungian-daimon-org/teams/luna/agents/shadow/Spawnfile +33 -0
- package/examples/jungian-daimon-org/teams/selene/Spawnfile +47 -0
- package/examples/jungian-daimon-org/teams/selene/TEAM.md +4 -0
- package/examples/jungian-daimon-org/teams/selene/agents/animus/AGENTS.md +10 -0
- package/examples/jungian-daimon-org/teams/selene/agents/animus/Spawnfile +33 -0
- package/examples/jungian-daimon-org/teams/selene/agents/representative/AGENTS.md +19 -0
- package/examples/jungian-daimon-org/teams/selene/agents/representative/Spawnfile +33 -0
- package/examples/jungian-daimon-org/teams/selene/agents/shadow/AGENTS.md +10 -0
- package/examples/jungian-daimon-org/teams/selene/agents/shadow/Spawnfile +30 -0
- package/examples/mixed-runtime-org/Spawnfile +71 -0
- package/examples/mixed-runtime-org/TEAM.md +8 -0
- package/examples/mixed-runtime-org/agents/analyst/AGENTS.md +8 -0
- package/examples/mixed-runtime-org/agents/analyst/Spawnfile +27 -0
- package/examples/mixed-runtime-org/agents/conductor/AGENTS.md +8 -0
- package/examples/mixed-runtime-org/agents/conductor/Spawnfile +27 -0
- package/examples/mixed-runtime-org/agents/localist/AGENTS.md +7 -0
- package/examples/mixed-runtime-org/agents/localist/Spawnfile +50 -0
- package/examples/moltnet-team-chat/Spawnfile +43 -0
- package/examples/moltnet-team-chat/TEAM.md +5 -0
- package/examples/moltnet-team-chat/agents/coordinator/AGENTS.md +9 -0
- package/examples/moltnet-team-chat/agents/coordinator/Spawnfile +26 -0
- package/examples/moltnet-team-chat/teams/analysis/Spawnfile +23 -0
- package/examples/moltnet-team-chat/teams/analysis/TEAM.md +3 -0
- package/examples/moltnet-team-chat/teams/analysis/agents/observer/AGENTS.md +5 -0
- package/examples/moltnet-team-chat/teams/analysis/agents/observer/Spawnfile +19 -0
- package/examples/moltnet-team-chat/teams/analysis/agents/representative/AGENTS.md +5 -0
- package/examples/moltnet-team-chat/teams/analysis/agents/representative/Spawnfile +19 -0
- package/examples/moltnet-team-chat/teams/field/Spawnfile +41 -0
- package/examples/moltnet-team-chat/teams/field/TEAM.md +3 -0
- package/examples/moltnet-team-chat/teams/field/agents/observer/AGENTS.md +5 -0
- package/examples/moltnet-team-chat/teams/field/agents/observer/Spawnfile +26 -0
- package/examples/moltnet-team-chat/teams/field/agents/representative/AGENTS.md +11 -0
- package/examples/moltnet-team-chat/teams/field/agents/representative/Spawnfile +26 -0
- package/examples/single-agent/AGENTS.md +3 -0
- package/examples/single-agent/HEARTBEAT.md +3 -0
- package/examples/single-agent/IDENTITY.md +3 -0
- package/examples/single-agent/MEMORY.md +3 -0
- package/examples/single-agent/SOUL.md +3 -0
- package/examples/single-agent/Spawnfile +41 -0
- package/examples/single-agent/skills/web_search/SKILL.md +6 -0
- package/moltnet-releases.json +21 -0
- package/package.json +57 -14
- package/runtimes.yaml +11 -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,57 @@
|
|
|
1
|
+
import type { ResolvedAgentNode } from "../../compiler/types.js";
|
|
2
|
+
import type { CapabilityReport } from "../../report/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* The instance root every Daimon agent's `workspacePath` and `runtimeHomePath`
|
|
5
|
+
* resolve under (`resolveInstancePaths` in
|
|
6
|
+
* `src/compiler/containerTargetPlanResolution.ts`). Daimon's own parser rejects
|
|
7
|
+
* a `memory.runtimeHomePath` that overlaps either of those, so a declared store
|
|
8
|
+
* inside this subtree must fail at compile time with a Spawnfile message rather
|
|
9
|
+
* than as an opaque container-side config parse error.
|
|
10
|
+
*
|
|
11
|
+
* Restating the literal here is deliberate — importing the compiler's path
|
|
12
|
+
* builder into a runtime adapter would invert the dependency direction — so it
|
|
13
|
+
* is pinned to that authority by `config.test.ts`'s "pins the instance-root
|
|
14
|
+
* guard to resolveInstancePaths" case, which derives the expected value from
|
|
15
|
+
* `resolveInstancePaths` and fails if either side drifts.
|
|
16
|
+
*/
|
|
17
|
+
export declare const DAIMON_INSTANCE_STATE_ROOT = "/var/lib/spawnfile/instances";
|
|
18
|
+
export declare const resolveDaimonAgentMemory: (node: ResolvedAgentNode) => {
|
|
19
|
+
runtimeHomePath: string;
|
|
20
|
+
source: string;
|
|
21
|
+
} | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* The compile-time warning for an agent that declared several memory banks.
|
|
24
|
+
*
|
|
25
|
+
* `selectDaimonMemoryAccess` is deterministic (lexicographically first key),
|
|
26
|
+
* and the capability row already reports the outcome as `degraded` — but a
|
|
27
|
+
* capability row does not say *which* bank won. Declaring a new bank whose key
|
|
28
|
+
* sorts earlier silently re-points this agent's memory home and orphans the
|
|
29
|
+
* previously wired bank's data, so the wired and ignored ids are named here,
|
|
30
|
+
* in the diagnostics an operator reads on every compile. The selection rule
|
|
31
|
+
* itself is unchanged.
|
|
32
|
+
*/
|
|
33
|
+
export declare const daimonMemorySelectionWarning: (node: ResolvedAgentNode) => string | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* The compile-time warning for a wired memory bank that asked for vector
|
|
36
|
+
* recall the Daimon organization runtime cannot provide.
|
|
37
|
+
*
|
|
38
|
+
* The memory block Spawnfile lowers into the organization runtime config is
|
|
39
|
+
* `{runtimeHomePath, source?, tokenBudget?}` and nothing more (see
|
|
40
|
+
* `resolveDaimonAgentMemory` above and the `memory` schema in daimon's
|
|
41
|
+
* `organizationRuntimeContract.ts`). Daimon's CLI harness path forwards exactly
|
|
42
|
+
* those three fields and never sets `memory.embeddingProvider`, so Mneme builds
|
|
43
|
+
* a lexical-only recall path. Embeddings are optional in Mneme and it falls back
|
|
44
|
+
* safely, so a fixture declaring `index.vector.enabled: true` still compiles and
|
|
45
|
+
* still recalls — just not the way it asked to. That silence is the defect: the
|
|
46
|
+
* declaration is accepted verbatim and quietly means something else.
|
|
47
|
+
*
|
|
48
|
+
* This says so at compile time rather than forwarding the configuration,
|
|
49
|
+
* because forwarding it would mean widening the daimon organization runtime
|
|
50
|
+
* config contract (and its digest-pinned manifest) plus building an embedding
|
|
51
|
+
* provider on the daimon side — a much larger change than telling the truth.
|
|
52
|
+
*/
|
|
53
|
+
export declare const daimonMemoryVectorRecallWarning: (node: ResolvedAgentNode) => string | undefined;
|
|
54
|
+
export declare const daimonMemoryCapabilityFor: (node: ResolvedAgentNode) => {
|
|
55
|
+
memoryMessage?: string;
|
|
56
|
+
memoryOutcome?: CapabilityReport["outcome"];
|
|
57
|
+
};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { resolveMnemeDurableMemoryMountPath } from "../mnemeMcp.js";
|
|
2
|
+
import { SpawnfileError } from "../../shared/index.js";
|
|
3
|
+
/**
|
|
4
|
+
* Daimon's organization runtime accepts exactly one `memory` block per agent
|
|
5
|
+
* (`OrganizationRuntimeMemory` = `{ runtimeHomePath, source?, tokenBudget? }`),
|
|
6
|
+
* so lowering picks one declared bank deterministically, the same way the
|
|
7
|
+
* legacy generated-Pi emitter does in `../pi/appAgentConfig.ts`.
|
|
8
|
+
*/
|
|
9
|
+
const memoryAccessKey = (access) => `${access.source}:${access.bank.id}`;
|
|
10
|
+
const selectDaimonMemoryAccess = (node) => [...(node.memoryAccess ?? [])].sort((left, right) => memoryAccessKey(left).localeCompare(memoryAccessKey(right)))[0];
|
|
11
|
+
/**
|
|
12
|
+
* The instance root every Daimon agent's `workspacePath` and `runtimeHomePath`
|
|
13
|
+
* resolve under (`resolveInstancePaths` in
|
|
14
|
+
* `src/compiler/containerTargetPlanResolution.ts`). Daimon's own parser rejects
|
|
15
|
+
* a `memory.runtimeHomePath` that overlaps either of those, so a declared store
|
|
16
|
+
* inside this subtree must fail at compile time with a Spawnfile message rather
|
|
17
|
+
* than as an opaque container-side config parse error.
|
|
18
|
+
*
|
|
19
|
+
* Restating the literal here is deliberate — importing the compiler's path
|
|
20
|
+
* builder into a runtime adapter would invert the dependency direction — so it
|
|
21
|
+
* is pinned to that authority by `config.test.ts`'s "pins the instance-root
|
|
22
|
+
* guard to resolveInstancePaths" case, which derives the expected value from
|
|
23
|
+
* `resolveInstancePaths` and fails if either side drifts.
|
|
24
|
+
*/
|
|
25
|
+
export const DAIMON_INSTANCE_STATE_ROOT = "/var/lib/spawnfile/instances";
|
|
26
|
+
export const resolveDaimonAgentMemory = (node) => {
|
|
27
|
+
const access = selectDaimonMemoryAccess(node);
|
|
28
|
+
if (!access)
|
|
29
|
+
return undefined;
|
|
30
|
+
const runtimeHomePath = resolveMnemeDurableMemoryMountPath(access.bank);
|
|
31
|
+
if (runtimeHomePath === null)
|
|
32
|
+
return undefined;
|
|
33
|
+
if (runtimeHomePath === DAIMON_INSTANCE_STATE_ROOT ||
|
|
34
|
+
runtimeHomePath.startsWith(`${DAIMON_INSTANCE_STATE_ROOT}/`) ||
|
|
35
|
+
DAIMON_INSTANCE_STATE_ROOT.startsWith(`${runtimeHomePath}/`)) {
|
|
36
|
+
throw new SpawnfileError("validation_error", `Daimon memory bank ${access.bank.id} resolves to ${runtimeHomePath}, which overlaps the Daimon instance state root ${DAIMON_INSTANCE_STATE_ROOT}; declare the store outside it`);
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
runtimeHomePath,
|
|
40
|
+
source: `spawnfile:${access.declaringKind}:${access.bank.id}`
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* The compile-time warning for an agent that declared several memory banks.
|
|
45
|
+
*
|
|
46
|
+
* `selectDaimonMemoryAccess` is deterministic (lexicographically first key),
|
|
47
|
+
* and the capability row already reports the outcome as `degraded` — but a
|
|
48
|
+
* capability row does not say *which* bank won. Declaring a new bank whose key
|
|
49
|
+
* sorts earlier silently re-points this agent's memory home and orphans the
|
|
50
|
+
* previously wired bank's data, so the wired and ignored ids are named here,
|
|
51
|
+
* in the diagnostics an operator reads on every compile. The selection rule
|
|
52
|
+
* itself is unchanged.
|
|
53
|
+
*/
|
|
54
|
+
export const daimonMemorySelectionWarning = (node) => {
|
|
55
|
+
const accesses = node.memoryAccess ?? [];
|
|
56
|
+
const selected = selectDaimonMemoryAccess(node);
|
|
57
|
+
if (!selected)
|
|
58
|
+
return undefined;
|
|
59
|
+
const selectedKey = memoryAccessKey(selected);
|
|
60
|
+
const ignored = [...new Set(accesses
|
|
61
|
+
.filter((access) => memoryAccessKey(access) !== selectedKey)
|
|
62
|
+
.map((access) => access.bank.id))].sort();
|
|
63
|
+
if (ignored.length === 0)
|
|
64
|
+
return undefined;
|
|
65
|
+
return `Daimon organization runtime v1 lowers one memory bank per agent: ${node.name} wires memory bank ${selected.bank.id} and ignores ${ignored.join(", ")}. The wired bank is the lexicographically first declared one, so adding a bank that sorts earlier re-points this agent's memory home and orphans ${selected.bank.id}'s data.`;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* The compile-time warning for a wired memory bank that asked for vector
|
|
69
|
+
* recall the Daimon organization runtime cannot provide.
|
|
70
|
+
*
|
|
71
|
+
* The memory block Spawnfile lowers into the organization runtime config is
|
|
72
|
+
* `{runtimeHomePath, source?, tokenBudget?}` and nothing more (see
|
|
73
|
+
* `resolveDaimonAgentMemory` above and the `memory` schema in daimon's
|
|
74
|
+
* `organizationRuntimeContract.ts`). Daimon's CLI harness path forwards exactly
|
|
75
|
+
* those three fields and never sets `memory.embeddingProvider`, so Mneme builds
|
|
76
|
+
* a lexical-only recall path. Embeddings are optional in Mneme and it falls back
|
|
77
|
+
* safely, so a fixture declaring `index.vector.enabled: true` still compiles and
|
|
78
|
+
* still recalls — just not the way it asked to. That silence is the defect: the
|
|
79
|
+
* declaration is accepted verbatim and quietly means something else.
|
|
80
|
+
*
|
|
81
|
+
* This says so at compile time rather than forwarding the configuration,
|
|
82
|
+
* because forwarding it would mean widening the daimon organization runtime
|
|
83
|
+
* config contract (and its digest-pinned manifest) plus building an embedding
|
|
84
|
+
* provider on the daimon side — a much larger change than telling the truth.
|
|
85
|
+
*/
|
|
86
|
+
export const daimonMemoryVectorRecallWarning = (node) => {
|
|
87
|
+
const access = selectDaimonMemoryAccess(node);
|
|
88
|
+
if (!access || !resolveDaimonAgentMemory(node))
|
|
89
|
+
return undefined;
|
|
90
|
+
const vector = access.bank.index?.vector;
|
|
91
|
+
if (!vector?.enabled)
|
|
92
|
+
return undefined;
|
|
93
|
+
return `Daimon organization runtime v1 has no vector recall: memory bank ${access.bank.id} declares `
|
|
94
|
+
+ `index.vector.enabled with model ${vector.model ?? "(unset)"}, but the runtime memory contract carries `
|
|
95
|
+
+ "no embedding configuration, so recall for this agent is lexical only. Declare index.vector on a "
|
|
96
|
+
+ "runtime that lowers it, or drop it from this bank so the declaration matches the behavior.";
|
|
97
|
+
};
|
|
98
|
+
export const daimonMemoryCapabilityFor = (node) => {
|
|
99
|
+
const access = selectDaimonMemoryAccess(node);
|
|
100
|
+
if (!access)
|
|
101
|
+
return {};
|
|
102
|
+
const memory = resolveDaimonAgentMemory(node);
|
|
103
|
+
if (!memory) {
|
|
104
|
+
return {
|
|
105
|
+
memoryMessage: `Daimon organization runtime v1 lowers only durably mounted file-backed Mneme banks; memory bank ${access.bank.id} (store ${access.bank.store.kind}) has no durable container volume, so no memory block is emitted`,
|
|
106
|
+
memoryOutcome: "degraded"
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
const declaredKeys = new Set((node.memoryAccess ?? []).map(memoryAccessKey));
|
|
110
|
+
declaredKeys.delete(memoryAccessKey(access));
|
|
111
|
+
if (declaredKeys.size > 0) {
|
|
112
|
+
return {
|
|
113
|
+
memoryMessage: `Daimon organization runtime v1 lowers one memory bank per agent; ${access.bank.id} is wired at ${memory.runtimeHomePath} and ${declaredKeys.size} further declared bank(s) are not lowered`,
|
|
114
|
+
memoryOutcome: "degraded"
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
const vectorWarning = daimonMemoryVectorRecallWarning(node);
|
|
118
|
+
if (vectorWarning) {
|
|
119
|
+
return { memoryMessage: vectorWarning, memoryOutcome: "degraded" };
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
memoryMessage: `Daimon lowers Mneme memory bank ${access.bank.id} into the organization runtime agent config at ${memory.runtimeHomePath}`,
|
|
123
|
+
memoryOutcome: "supported"
|
|
124
|
+
};
|
|
125
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ResolvedAuthProfile } from "../../auth/index.js";
|
|
2
|
+
import type { RuntimeAuthPreparationInput, RuntimeAuthPreparationResult } from "../types.js";
|
|
3
|
+
export declare const DAIMON_GROK_ACCESS_TOKEN_MIN_BYTES = 32;
|
|
4
|
+
export declare const DAIMON_GROK_REFRESH_TOKEN_MIN_BYTES = 16;
|
|
5
|
+
export declare const DAIMON_AGY_UNLOCK_SOURCE_ENV = "SPAWNFILE_DAIMON_SOURCE_AGY_UNLOCK_SECRET";
|
|
6
|
+
export declare const daimonSourceEnvironmentName: (slot: string) => string;
|
|
7
|
+
export declare const daimonSourcePathForEngine: (engine: "codex" | "grok", environment?: Record<string, string | undefined>, authProfile?: ResolvedAuthProfile | null) => string;
|
|
8
|
+
/**
|
|
9
|
+
* The uid a bind-mounted Daimon credential must be owned by on the host.
|
|
10
|
+
*
|
|
11
|
+
* Daimon compares the file's owner against its own `process.getuid()` inside
|
|
12
|
+
* the container, the container runs as {@link DAIMON_ORGANIZATION_UID}, and a
|
|
13
|
+
* read-only bind mount carries the host uid through unchanged, so the two are
|
|
14
|
+
* the same number. See `runtimeIdentity.ts` for the full chain.
|
|
15
|
+
*/
|
|
16
|
+
export declare const DAIMON_CREDENTIAL_CONTAINER_UID = 2000;
|
|
17
|
+
export interface DaimonSourceFileFacts {
|
|
18
|
+
isFile: boolean;
|
|
19
|
+
isSymbolicLink: boolean;
|
|
20
|
+
mode: number;
|
|
21
|
+
nlink: number;
|
|
22
|
+
size: number;
|
|
23
|
+
uid: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The host-side safety gate, isolated from `lstat` so every branch is directly
|
|
27
|
+
* exercisable. A credential the deploying process does not own is material it
|
|
28
|
+
* cannot vouch for, and a root deploy (`callerUid <= 0`) is refused outright
|
|
29
|
+
* so a privileged process never launders someone else's credential into a
|
|
30
|
+
* container.
|
|
31
|
+
*/
|
|
32
|
+
export declare const isUnsafeDaimonSourceFile: (entry: DaimonSourceFileFacts, callerUid: number | undefined, maxBytes: number) => boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Refuses, at deploy time, a credential whose owner is not the uid the
|
|
35
|
+
* container will demand.
|
|
36
|
+
*
|
|
37
|
+
* Without this the host gate above and Daimon's in-container gate impose two
|
|
38
|
+
* uncoordinated uid requirements on the same file: the host one passes for any
|
|
39
|
+
* non-root deploying account, and the container one then fails at readiness
|
|
40
|
+
* with an opaque "credential materialization failed" inside a candidate that
|
|
41
|
+
* lives ~15 seconds. Naming both numbers here turns that into a refusal the
|
|
42
|
+
* operator can act on.
|
|
43
|
+
*/
|
|
44
|
+
export declare const assertDaimonCredentialContainerOwner: (observedUid: number, label: string, requiredUid?: number) => void;
|
|
45
|
+
export declare const assertSafeDaimonSourceFile: (sourcePath: string, label: string, maxBytes?: number, portableKind?: "codex" | "grok") => Promise<number>;
|
|
46
|
+
/**
|
|
47
|
+
* Binds Codex leaves per agent and one Grok bootstrap leaf per organization.
|
|
48
|
+
* Every leaf is validated from a stable descriptor and mounted read-only;
|
|
49
|
+
* Daimon alone owns writable credential state and refresh reconciliation.
|
|
50
|
+
*/
|
|
51
|
+
export declare const prepareDaimonRuntimeAuth: (input: RuntimeAuthPreparationInput) => Promise<RuntimeAuthPreparationResult>;
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { constants } from "node:fs";
|
|
4
|
+
import { chmod, lstat, mkdir, open, readFile } from "node:fs/promises";
|
|
5
|
+
import { SpawnfileError } from "../../shared/index.js";
|
|
6
|
+
import { DAIMON_AGY_SUBSCRIPTION_REALM, assertDaimonRuntimeHome, DAIMON_ENGINE_CREDENTIALS, DAIMON_ENGINE_KINDS, DAIMON_GROK_SUBSCRIPTION_REALM, DAIMON_ORGANIZATION_RUNTIME_CONFIG_VERSIONS } from "./contractManifest.js";
|
|
7
|
+
import { DAIMON_ORGANIZATION_UID } from "./runtimeIdentity.js";
|
|
8
|
+
const MAX_OPAQUE_CREDENTIAL_BYTES = 64 * 1024;
|
|
9
|
+
export const DAIMON_GROK_ACCESS_TOKEN_MIN_BYTES = 32;
|
|
10
|
+
export const DAIMON_GROK_REFRESH_TOKEN_MIN_BYTES = 16;
|
|
11
|
+
export const DAIMON_AGY_UNLOCK_SOURCE_ENV = "SPAWNFILE_DAIMON_SOURCE_AGY_UNLOCK_SECRET";
|
|
12
|
+
const fail = (message) => {
|
|
13
|
+
throw new SpawnfileError("validation_error", `Daimon runtime auth ${message}`);
|
|
14
|
+
};
|
|
15
|
+
export const daimonSourceEnvironmentName = (slot) => `SPAWNFILE_DAIMON_SOURCE_${slot.replace(/[^A-Za-z0-9]+/g, "_").toUpperCase()}`;
|
|
16
|
+
export const daimonSourcePathForEngine = (engine, environment = process.env, authProfile = null) => {
|
|
17
|
+
const declaredSource = environment[daimonSourceEnvironmentName(engine === "grok"
|
|
18
|
+
? DAIMON_GROK_SUBSCRIPTION_REALM.bootstrapSourceSlot
|
|
19
|
+
: DAIMON_ENGINE_CREDENTIALS.codex.sourceSlot)]?.trim();
|
|
20
|
+
if (declaredSource)
|
|
21
|
+
return declaredSource;
|
|
22
|
+
if (engine === "codex" && authProfile) {
|
|
23
|
+
const imported = authProfile.imports.codex;
|
|
24
|
+
return path.join(imported?.path ?? fail("selected auth profile has no imported codex credential"), "auth.json");
|
|
25
|
+
}
|
|
26
|
+
const home = os.homedir();
|
|
27
|
+
switch (engine) {
|
|
28
|
+
case "codex":
|
|
29
|
+
return path.join(process.env.CODEX_HOME || path.join(home, ".codex"), "auth.json");
|
|
30
|
+
case "grok":
|
|
31
|
+
return path.join(process.env.GROK_HOME || path.join(home, ".grok"), "auth.json");
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const sourceFileIdentity = (entry) => [entry.dev, entry.ino, entry.size, entry.mtimeMs, entry.uid, entry.mode, entry.nlink].join(":");
|
|
35
|
+
/**
|
|
36
|
+
* The uid a bind-mounted Daimon credential must be owned by on the host.
|
|
37
|
+
*
|
|
38
|
+
* Daimon compares the file's owner against its own `process.getuid()` inside
|
|
39
|
+
* the container, the container runs as {@link DAIMON_ORGANIZATION_UID}, and a
|
|
40
|
+
* read-only bind mount carries the host uid through unchanged, so the two are
|
|
41
|
+
* the same number. See `runtimeIdentity.ts` for the full chain.
|
|
42
|
+
*/
|
|
43
|
+
export const DAIMON_CREDENTIAL_CONTAINER_UID = DAIMON_ORGANIZATION_UID;
|
|
44
|
+
/**
|
|
45
|
+
* The host-side safety gate, isolated from `lstat` so every branch is directly
|
|
46
|
+
* exercisable. A credential the deploying process does not own is material it
|
|
47
|
+
* cannot vouch for, and a root deploy (`callerUid <= 0`) is refused outright
|
|
48
|
+
* so a privileged process never launders someone else's credential into a
|
|
49
|
+
* container.
|
|
50
|
+
*/
|
|
51
|
+
export const isUnsafeDaimonSourceFile = (entry, callerUid, maxBytes) => !entry.isFile ||
|
|
52
|
+
entry.isSymbolicLink ||
|
|
53
|
+
entry.size === 0 ||
|
|
54
|
+
entry.size > maxBytes ||
|
|
55
|
+
entry.nlink !== 1 ||
|
|
56
|
+
(entry.mode & 0o777) !== 0o600 ||
|
|
57
|
+
typeof callerUid !== "number" ||
|
|
58
|
+
callerUid <= 0 ||
|
|
59
|
+
entry.uid !== callerUid;
|
|
60
|
+
/**
|
|
61
|
+
* Refuses, at deploy time, a credential whose owner is not the uid the
|
|
62
|
+
* container will demand.
|
|
63
|
+
*
|
|
64
|
+
* Without this the host gate above and Daimon's in-container gate impose two
|
|
65
|
+
* uncoordinated uid requirements on the same file: the host one passes for any
|
|
66
|
+
* non-root deploying account, and the container one then fails at readiness
|
|
67
|
+
* with an opaque "credential materialization failed" inside a candidate that
|
|
68
|
+
* lives ~15 seconds. Naming both numbers here turns that into a refusal the
|
|
69
|
+
* operator can act on.
|
|
70
|
+
*/
|
|
71
|
+
export const assertDaimonCredentialContainerOwner = (observedUid, label, requiredUid = DAIMON_CREDENTIAL_CONTAINER_UID) => {
|
|
72
|
+
if (observedUid === requiredUid)
|
|
73
|
+
return;
|
|
74
|
+
fail(`selected ${label} artifact is owned by uid ${observedUid} but the Daimon container reads it as uid ` +
|
|
75
|
+
`${requiredUid}; the credential is bind-mounted read-only and keeps its host owner, so deploy from an ` +
|
|
76
|
+
`account whose uid is exactly ${requiredUid} (for example \`usermod -u ${requiredUid} <deploy-user>\` ` +
|
|
77
|
+
`followed by \`chown -R ${requiredUid} <deploy-home>\`) instead of uid ${observedUid}`);
|
|
78
|
+
};
|
|
79
|
+
export const assertSafeDaimonSourceFile = async (sourcePath, label, maxBytes = MAX_OPAQUE_CREDENTIAL_BYTES, portableKind) => {
|
|
80
|
+
let entry;
|
|
81
|
+
try {
|
|
82
|
+
entry = await lstat(sourcePath);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return fail(`is missing the selected ${label} artifact`);
|
|
86
|
+
}
|
|
87
|
+
const callerUid = process.getuid?.();
|
|
88
|
+
if (isUnsafeDaimonSourceFile({
|
|
89
|
+
isFile: entry.isFile(),
|
|
90
|
+
isSymbolicLink: entry.isSymbolicLink(),
|
|
91
|
+
mode: entry.mode,
|
|
92
|
+
nlink: entry.nlink,
|
|
93
|
+
size: entry.size,
|
|
94
|
+
uid: entry.uid
|
|
95
|
+
}, callerUid, maxBytes) || typeof callerUid !== "number") {
|
|
96
|
+
return fail(`selected ${label} artifact must be one bounded caller-owned 0600 regular file`);
|
|
97
|
+
}
|
|
98
|
+
if (portableKind !== undefined) {
|
|
99
|
+
let handle;
|
|
100
|
+
let bytes;
|
|
101
|
+
try {
|
|
102
|
+
handle = await open(sourcePath, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0));
|
|
103
|
+
const opened = await handle.stat();
|
|
104
|
+
if (sourceFileIdentity(opened) !== sourceFileIdentity(entry)) {
|
|
105
|
+
return fail(`selected ${label} artifact changed during validation`);
|
|
106
|
+
}
|
|
107
|
+
bytes = await handle.readFile();
|
|
108
|
+
const after = await handle.stat();
|
|
109
|
+
if (sourceFileIdentity(after) !== sourceFileIdentity(opened)) {
|
|
110
|
+
return fail(`selected ${label} artifact changed during validation`);
|
|
111
|
+
}
|
|
112
|
+
if (!hasRefreshableCredential(portableKind, bytes)) {
|
|
113
|
+
return fail(`selected ${label} artifact is not a refreshable subscription credential`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
if (error instanceof SpawnfileError)
|
|
118
|
+
throw error;
|
|
119
|
+
return fail(`selected ${label} artifact could not be validated`);
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
bytes?.fill(0);
|
|
123
|
+
await handle?.close().catch(() => undefined);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return callerUid;
|
|
127
|
+
};
|
|
128
|
+
const hasRefreshableCredential = (kind, bytes) => {
|
|
129
|
+
let parsed;
|
|
130
|
+
try {
|
|
131
|
+
parsed = JSON.parse(bytes.toString("utf8"));
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
137
|
+
return false;
|
|
138
|
+
const root = parsed;
|
|
139
|
+
const source = kind === "codex"
|
|
140
|
+
? ((root.tokens && typeof root.tokens === "object" && !Array.isArray(root.tokens)) ? root.tokens : root)
|
|
141
|
+
: Object.entries(root).find(([key, value]) => /^https:\/\/auth\.x\.ai::/u.test(key) && value && typeof value === "object" && !Array.isArray(value))?.[1];
|
|
142
|
+
if (!source)
|
|
143
|
+
return false;
|
|
144
|
+
const access = kind === "grok" ? source.key : source.access_token ?? source.accessToken ?? source.token;
|
|
145
|
+
const refresh = kind === "grok" ? source.refresh_token : source.refresh_token ?? source.refreshToken;
|
|
146
|
+
if (typeof access !== "string" || !access.trim() || typeof refresh !== "string" || !refresh.trim())
|
|
147
|
+
return false;
|
|
148
|
+
if (kind === "grok" && (access.length < DAIMON_GROK_ACCESS_TOKEN_MIN_BYTES
|
|
149
|
+
|| refresh.length < DAIMON_GROK_REFRESH_TOKEN_MIN_BYTES))
|
|
150
|
+
return false;
|
|
151
|
+
return kind !== "grok" || (typeof source.expires_at === "string" && Number.isFinite(Date.parse(source.expires_at)));
|
|
152
|
+
};
|
|
153
|
+
const assertContainedPath = (root, candidate) => {
|
|
154
|
+
const normalizedRoot = path.resolve(root);
|
|
155
|
+
const normalizedCandidate = path.resolve(candidate);
|
|
156
|
+
const relative = path.relative(normalizedRoot, normalizedCandidate);
|
|
157
|
+
if (relative === "" || relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative)) {
|
|
158
|
+
return fail("attempted to stage outside its ephemeral support root");
|
|
159
|
+
}
|
|
160
|
+
return normalizedCandidate;
|
|
161
|
+
};
|
|
162
|
+
const configPathInOutput = (input) => {
|
|
163
|
+
if (!input.instance.config_path.startsWith("/"))
|
|
164
|
+
fail("has a non-absolute generated config path");
|
|
165
|
+
return assertContainedPath(path.join(input.outputDirectory, "container", "rootfs"), path.join(input.outputDirectory, "container", "rootfs", `.${input.instance.config_path}`));
|
|
166
|
+
};
|
|
167
|
+
const parseConfigAgents = (source) => {
|
|
168
|
+
let parsed;
|
|
169
|
+
try {
|
|
170
|
+
parsed = JSON.parse(source);
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
return fail("generated organization config is not JSON");
|
|
174
|
+
}
|
|
175
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
176
|
+
fail("generated organization config has an invalid shape");
|
|
177
|
+
const root = parsed;
|
|
178
|
+
if (!DAIMON_ORGANIZATION_RUNTIME_CONFIG_VERSIONS.includes(root.version) || !Array.isArray(root.agents))
|
|
179
|
+
fail("generated organization config is not a supported v1/v2 contract");
|
|
180
|
+
const rawAgents = root.agents;
|
|
181
|
+
const seenHomes = new Set();
|
|
182
|
+
const agents = [];
|
|
183
|
+
for (const value of rawAgents) {
|
|
184
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
185
|
+
fail("generated organization config has an invalid agent");
|
|
186
|
+
const agent = value;
|
|
187
|
+
const engine = agent.engine;
|
|
188
|
+
const engineKind = engine && typeof engine === "object" && !Array.isArray(engine)
|
|
189
|
+
? engine.kind
|
|
190
|
+
: undefined;
|
|
191
|
+
if (typeof agent.id !== "string" || !agent.id || typeof agent.runtimeHomePath !== "string"
|
|
192
|
+
|| typeof engineKind !== "string"
|
|
193
|
+
|| !DAIMON_ENGINE_KINDS.includes(engineKind)) {
|
|
194
|
+
fail("generated organization config has an invalid agent credential target");
|
|
195
|
+
}
|
|
196
|
+
const agentId = agent.id;
|
|
197
|
+
const runtimeHomePath = assertDaimonRuntimeHome(agent.runtimeHomePath);
|
|
198
|
+
if (seenHomes.has(runtimeHomePath))
|
|
199
|
+
fail("generated organization config has overlapping runtime homes");
|
|
200
|
+
seenHomes.add(runtimeHomePath);
|
|
201
|
+
agents.push({
|
|
202
|
+
engine: { kind: engineKind },
|
|
203
|
+
id: agentId,
|
|
204
|
+
runtimeHomePath
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
return agents.sort((left, right) => left.id.localeCompare(right.id));
|
|
208
|
+
};
|
|
209
|
+
const resolveCredentialSource = (agent, authProfile) => daimonSourcePathForEngine(agent.engine.kind, process.env, authProfile);
|
|
210
|
+
const prepareNeutralIngress = async (outputDirectory, agent) => {
|
|
211
|
+
const rootfs = path.join(outputDirectory, "container", "rootfs");
|
|
212
|
+
const runtimeHome = assertContainedPath(rootfs, path.join(rootfs, `.${agent.runtimeHomePath}`));
|
|
213
|
+
const inbound = assertContainedPath(runtimeHome, path.join(runtimeHome, path.posix.dirname(DAIMON_ENGINE_CREDENTIALS[agent.engine.kind].sourceRelativePath)));
|
|
214
|
+
await mkdir(runtimeHome, { mode: 0o700, recursive: true });
|
|
215
|
+
await chmod(runtimeHome, 0o700);
|
|
216
|
+
await mkdir(inbound, { mode: 0o700, recursive: true });
|
|
217
|
+
await chmod(inbound, 0o700);
|
|
218
|
+
return path.posix.join(agent.runtimeHomePath, DAIMON_ENGINE_CREDENTIALS[agent.engine.kind].sourceRelativePath);
|
|
219
|
+
};
|
|
220
|
+
/**
|
|
221
|
+
* Binds Codex leaves per agent and one Grok bootstrap leaf per organization.
|
|
222
|
+
* Every leaf is validated from a stable descriptor and mounted read-only;
|
|
223
|
+
* Daimon alone owns writable credential state and refresh reconciliation.
|
|
224
|
+
*/
|
|
225
|
+
export const prepareDaimonRuntimeAuth = async (input) => {
|
|
226
|
+
const containerCredentialUid = input.containerCredentialUid ?? DAIMON_CREDENTIAL_CONTAINER_UID;
|
|
227
|
+
const allowedSourceEnvironments = new Set([
|
|
228
|
+
...Object.values(DAIMON_ENGINE_CREDENTIALS).map((credential) => daimonSourceEnvironmentName(credential.sourceSlot)),
|
|
229
|
+
daimonSourceEnvironmentName(DAIMON_GROK_SUBSCRIPTION_REALM.bootstrapSourceSlot),
|
|
230
|
+
DAIMON_AGY_UNLOCK_SOURCE_ENV
|
|
231
|
+
]);
|
|
232
|
+
for (const name of Object.keys(process.env)) {
|
|
233
|
+
if (name.startsWith("SPAWNFILE_DAIMON_SOURCE_") && !allowedSourceEnvironments.has(name)) {
|
|
234
|
+
return fail(`source slot environment ${name} is not declared by the consumed manifest`);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
const configPath = configPathInOutput(input);
|
|
238
|
+
let configSource;
|
|
239
|
+
try {
|
|
240
|
+
configSource = await readFile(configPath, "utf8");
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
return fail("could not read its generated organization config");
|
|
244
|
+
}
|
|
245
|
+
const agents = parseConfigAgents(configSource);
|
|
246
|
+
const mountArgs = [];
|
|
247
|
+
for (const agent of agents) {
|
|
248
|
+
if (agent.engine.kind !== "codex")
|
|
249
|
+
continue;
|
|
250
|
+
const portableAgent = agent;
|
|
251
|
+
const sourcePath = resolveCredentialSource(portableAgent, input.authProfile);
|
|
252
|
+
const ingressPath = await prepareNeutralIngress(input.outputDirectory, portableAgent);
|
|
253
|
+
const ownerUid = await assertSafeDaimonSourceFile(sourcePath, agent.engine.kind, MAX_OPAQUE_CREDENTIAL_BYTES, "codex");
|
|
254
|
+
assertDaimonCredentialContainerOwner(ownerUid, agent.engine.kind, containerCredentialUid);
|
|
255
|
+
mountArgs.push("-v", `${sourcePath}:${ingressPath}:ro`);
|
|
256
|
+
}
|
|
257
|
+
// No container-owner assertion for the Grok bootstrap leaf: unlike the Codex
|
|
258
|
+
// credential and the AGY unlock secret, nothing in the organization runtime
|
|
259
|
+
// process reads it. The live Grok path goes through the engine broker, which
|
|
260
|
+
// runs under its own uid and reads only its durable realm, so pinning this
|
|
261
|
+
// leaf to the organization uid would refuse deployments that work today.
|
|
262
|
+
if (agents.some((agent) => agent.engine.kind === "grok")) {
|
|
263
|
+
const sourcePath = daimonSourcePathForEngine("grok");
|
|
264
|
+
await assertSafeDaimonSourceFile(sourcePath, "grok", DAIMON_GROK_SUBSCRIPTION_REALM.maxCredentialBytes, "grok");
|
|
265
|
+
mountArgs.push("-v", `${sourcePath}:${DAIMON_GROK_SUBSCRIPTION_REALM.bootstrapMountPath}:ro`);
|
|
266
|
+
}
|
|
267
|
+
if (agents.some((agent) => agent.engine.kind === "agy")) {
|
|
268
|
+
const source = process.env[DAIMON_AGY_UNLOCK_SOURCE_ENV]?.trim();
|
|
269
|
+
if (!source)
|
|
270
|
+
return fail("is missing the operator-authorized AGY realm unlock artifact");
|
|
271
|
+
const ownerUid = await assertSafeDaimonSourceFile(source, "AGY realm unlock", DAIMON_AGY_SUBSCRIPTION_REALM.maxUnlockBytes);
|
|
272
|
+
assertDaimonCredentialContainerOwner(ownerUid, "AGY realm unlock", containerCredentialUid);
|
|
273
|
+
mountArgs.push("-v", `${source}:${DAIMON_AGY_SUBSCRIPTION_REALM.unlockMountPath}:ro`);
|
|
274
|
+
}
|
|
275
|
+
return {
|
|
276
|
+
coveredModelSecrets: [],
|
|
277
|
+
mountArgs
|
|
278
|
+
};
|
|
279
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The fixed container-side uids a compiled Daimon image runs under.
|
|
3
|
+
*
|
|
4
|
+
* These are compiler-wide constants, not per-organization values: the rendered
|
|
5
|
+
* Daimon entrypoint pins `uid=DAIMON_ORGANIZATION_UID` and drops to it through
|
|
6
|
+
* `setpriv --reuid`, so every organization's Daimon runtime process shares the
|
|
7
|
+
* same uid. The engine broker and its Grok workers run under their own fixed
|
|
8
|
+
* uids alongside it.
|
|
9
|
+
*
|
|
10
|
+
* Why the deploy path cares: Daimon's own credential guards compare a
|
|
11
|
+
* credential file's owner against `process.getuid()` *inside* the container
|
|
12
|
+
* (`portableCredentialMaterial.ts` for Codex, `agySubscriptionRealm.ts` for the
|
|
13
|
+
* AGY unlock secret). Spawnfile bind-mounts those files read-only from the
|
|
14
|
+
* host, the daemon applies no user-namespace remapping, and the credential
|
|
15
|
+
* leaves are declared opaque so the entrypoint ownership guard never chowns
|
|
16
|
+
* them. A host file therefore keeps its host uid inside the container, which
|
|
17
|
+
* makes "owned by DAIMON_ORGANIZATION_UID" a host-side deployment requirement
|
|
18
|
+
* rather than something the container can repair.
|
|
19
|
+
*/
|
|
20
|
+
export declare const DAIMON_ORGANIZATION_UID = 2000;
|
|
21
|
+
export declare const DAIMON_BROKER_UID = 2100;
|
|
22
|
+
export declare const DAIMON_FIRST_WORKER_UID = 2200;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The fixed container-side uids a compiled Daimon image runs under.
|
|
3
|
+
*
|
|
4
|
+
* These are compiler-wide constants, not per-organization values: the rendered
|
|
5
|
+
* Daimon entrypoint pins `uid=DAIMON_ORGANIZATION_UID` and drops to it through
|
|
6
|
+
* `setpriv --reuid`, so every organization's Daimon runtime process shares the
|
|
7
|
+
* same uid. The engine broker and its Grok workers run under their own fixed
|
|
8
|
+
* uids alongside it.
|
|
9
|
+
*
|
|
10
|
+
* Why the deploy path cares: Daimon's own credential guards compare a
|
|
11
|
+
* credential file's owner against `process.getuid()` *inside* the container
|
|
12
|
+
* (`portableCredentialMaterial.ts` for Codex, `agySubscriptionRealm.ts` for the
|
|
13
|
+
* AGY unlock secret). Spawnfile bind-mounts those files read-only from the
|
|
14
|
+
* host, the daemon applies no user-namespace remapping, and the credential
|
|
15
|
+
* leaves are declared opaque so the entrypoint ownership guard never chowns
|
|
16
|
+
* them. A host file therefore keeps its host uid inside the container, which
|
|
17
|
+
* makes "owned by DAIMON_ORGANIZATION_UID" a host-side deployment requirement
|
|
18
|
+
* rather than something the container can repair.
|
|
19
|
+
*/
|
|
20
|
+
export const DAIMON_ORGANIZATION_UID = 2_000;
|
|
21
|
+
export const DAIMON_BROKER_UID = 2_100;
|
|
22
|
+
export const DAIMON_FIRST_WORKER_UID = 2_200;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SpawnfileError } from "../../shared/index.js";
|
|
2
|
+
import { DAIMON_LOCAL_RUNTIME_IDENTITY_ENV, loadLocalDaimonRuntimeIdentity } from "../localDaimonAuthority.js";
|
|
3
|
+
import { DAIMON_CONTRACT_MANIFEST_SHA256 } from "./contractManifest.js";
|
|
4
|
+
export const hasDaimonScheduleAuthority = async () => {
|
|
5
|
+
const identityPath = process.env[DAIMON_LOCAL_RUNTIME_IDENTITY_ENV]?.trim();
|
|
6
|
+
if (!identityPath)
|
|
7
|
+
return false;
|
|
8
|
+
return (await loadLocalDaimonRuntimeIdentity(identityPath)).manifestSha256 ===
|
|
9
|
+
DAIMON_CONTRACT_MANIFEST_SHA256;
|
|
10
|
+
};
|
|
11
|
+
/** Schedule lowering is allowed only when the selected image receipt binds v2. */
|
|
12
|
+
export const assertDaimonScheduleAuthority = async () => {
|
|
13
|
+
// The checked-in v0.2.0 production pin attests v1 only.
|
|
14
|
+
if (!await hasDaimonScheduleAuthority()) {
|
|
15
|
+
throw new SpawnfileError("runtime_error", "Daimon schedules are disabled: the selected image capability receipt does not attest organization runtime v2");
|
|
16
|
+
}
|
|
17
|
+
};
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
export * from "./common.js";
|
|
1
2
|
export * from "./container.js";
|
|
3
|
+
export * from "./containerPackageOverrides.js";
|
|
2
4
|
export * from "./install.js";
|
|
5
|
+
export * from "./localDaimonAuthority.js";
|
|
3
6
|
export * from "./registry.js";
|
|
4
7
|
export * from "./statusProbes.js";
|
|
5
8
|
export * from "./types.js";
|
|
9
|
+
export * from "./usageLedger.js";
|
|
10
|
+
export * from "./usageLedgerRead.js";
|
|
11
|
+
export * from "./usageRequestLedger.js";
|
package/dist/runtime/index.js
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
export * from "./common.js";
|
|
1
2
|
export * from "./container.js";
|
|
3
|
+
export * from "./containerPackageOverrides.js";
|
|
2
4
|
export * from "./install.js";
|
|
5
|
+
export * from "./localDaimonAuthority.js";
|
|
3
6
|
export * from "./registry.js";
|
|
4
7
|
export * from "./statusProbes.js";
|
|
5
8
|
export * from "./types.js";
|
|
9
|
+
export * from "./usageLedger.js";
|
|
10
|
+
export * from "./usageLedgerRead.js";
|
|
11
|
+
export * from "./usageRequestLedger.js";
|
package/dist/runtime/install.js
CHANGED
|
@@ -104,6 +104,9 @@ export const resolveRuntimeInstallSelection = async (runtimeName) => {
|
|
|
104
104
|
case "container_image":
|
|
105
105
|
return {
|
|
106
106
|
ecosystem: installProfile.container_image.ecosystem,
|
|
107
|
+
capabilityReceipt: runtime.install.capabilityReceipt,
|
|
108
|
+
contractManifestSha256: runtime.install.contractManifestSha256,
|
|
109
|
+
digest: runtime.install.digest,
|
|
107
110
|
image: runtime.install.image,
|
|
108
111
|
installHint: installProfile.container_image.installHint,
|
|
109
112
|
kind: "container_image",
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const DAIMON_LOCAL_RUNTIME_IDENTITY_ENV = "SPAWNFILE_DAIMON_LOCAL_RUNTIME_IDENTITY";
|
|
2
|
+
export interface LocalDaimonRuntimeIdentity {
|
|
3
|
+
capabilityReceipt: string;
|
|
4
|
+
imageArchitecture: "amd64" | "arm64";
|
|
5
|
+
imageConfigDigest: string;
|
|
6
|
+
imageManifestDigest: string;
|
|
7
|
+
imageReference: string;
|
|
8
|
+
manifestSha256: string;
|
|
9
|
+
registryAuthority: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const loadLocalDaimonRuntimeIdentity: (identityPath: string) => Promise<LocalDaimonRuntimeIdentity>;
|