spawnfile 0.1.14 → 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 +60 -159
- package/dist/audit/checksShared.d.ts +1 -1
- package/dist/auth/importers.d.ts +10 -0
- package/dist/auth/importers.js +29 -4
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.js +1 -0
- package/dist/auth/paths.d.ts +1 -1
- package/dist/auth/profileStore.js +9 -9
- package/dist/auth/targetSecretSourceFsIdentity.d.ts +40 -0
- package/dist/auth/targetSecretSourceFsIdentity.js +42 -0
- package/dist/auth/targetSecretSourceFsPublish.d.ts +2 -0
- package/dist/auth/targetSecretSourceFsPublish.js +3 -1
- package/dist/auth/targetSecretSourceFsPublishImmutable.d.ts +2 -1
- package/dist/auth/targetSecretSourceFsPublishImmutable.js +104 -71
- package/dist/auth/targetSecretSourceFsRead.js +5 -14
- 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/authCommands.d.ts +1 -1
- package/dist/cli/authCommands.js +9 -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.js +13 -0
- package/dist/cli/composedLifecycleContractSet.d.ts +21 -0
- package/dist/cli/composedLifecycleContractSet.js +204 -0
- package/dist/cli/devCommands.js +2 -0
- package/dist/cli/downCommand.js +19 -8
- package/dist/cli/evidenceExportHelperCommand.d.ts +13 -0
- package/dist/cli/evidenceExportHelperCommand.js +51 -0
- package/dist/cli/index.js +12 -3
- package/dist/cli/lifecycleMachine.d.ts +7 -1
- package/dist/cli/lifecycleMachine.js +2 -2
- 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 +13 -3
- package/dist/cli/runCli.js +37 -9
- package/dist/cli/targetCommands.d.ts +4 -7
- package/dist/cli/targetCommands.js +16 -46
- 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/targetDefaultAuthorities.d.ts +2 -0
- package/dist/cli/targetDefaultAuthorities.js +3 -0
- package/dist/cli/targetDefaultConfig.d.ts +7 -0
- package/dist/cli/targetDefaultConfig.js +22 -5
- package/dist/cli/targetDefaultConfigStdin.js +7 -1
- package/dist/cli/targetDefaultHandlerFactory.js +23 -2
- package/dist/cli/targetDefaultHandlers.d.ts +2 -2
- package/dist/cli/targetProductionCommands.d.ts +5 -0
- package/dist/cli/targetProductionCommands.js +45 -0
- package/dist/cli/trainCommand.d.ts +3 -0
- package/dist/cli/trainCommand.js +61 -0
- package/dist/cli/upCommand.js +35 -6
- package/dist/cli/upLifecycleRecovery.d.ts +2 -2
- package/dist/cli/upLifecycleRecovery.js +188 -44
- 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/buildCompilePlanTeams.d.ts +1 -1
- package/dist/compiler/buildCompilePlanTeams.js +6 -1
- package/dist/compiler/compilePlanHelpers.js +3 -0
- package/dist/compiler/compileProject.d.ts +2 -0
- package/dist/compiler/compileProject.js +5 -1
- package/dist/compiler/compileProjectSupport.js +9 -0
- package/dist/compiler/containerArtifacts.d.ts +3 -1
- package/dist/compiler/containerArtifacts.js +92 -40
- package/dist/compiler/containerArtifactsPlans.d.ts +1 -1
- package/dist/compiler/containerArtifactsPlans.js +24 -7
- package/dist/compiler/containerArtifactsRender.d.ts +2 -1
- package/dist/compiler/containerArtifactsRender.js +91 -58
- package/dist/compiler/containerArtifactsTypes.d.ts +8 -0
- package/dist/compiler/containerBackedMountRender.d.ts +56 -0
- package/dist/compiler/containerBackedMountRender.js +101 -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 +7 -0
- package/dist/compiler/containerEntrypointRender.js +28 -22
- 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/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 +2 -2
- package/dist/compiler/daimonTelemetryArtifacts.js +5 -10
- package/dist/compiler/deploymentLineage.d.ts +40 -0
- package/dist/compiler/deploymentLineage.js +50 -0
- package/dist/compiler/index.d.ts +3 -0
- package/dist/compiler/index.js +3 -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 +1 -1
- package/dist/compiler/memoryArtifacts.js +108 -32
- package/dist/compiler/modelEnv.d.ts +5 -0
- package/dist/compiler/modelEnv.js +8 -2
- package/dist/compiler/moltnetArtifactPaths.d.ts +17 -12
- package/dist/compiler/moltnetArtifactPaths.js +17 -15
- package/dist/compiler/moltnetArtifactTypes.d.ts +10 -0
- package/dist/compiler/moltnetArtifacts.d.ts +1 -1
- package/dist/compiler/moltnetArtifacts.js +52 -12
- package/dist/compiler/moltnetBinaries.d.ts +16 -4
- package/dist/compiler/moltnetBinaries.js +46 -6
- package/dist/compiler/moltnetClientConfig.js +1 -1
- package/dist/compiler/moltnetConfigLowering.d.ts +3 -1
- package/dist/compiler/moltnetConfigLowering.js +30 -6
- package/dist/compiler/moltnetNodeConfig.js +1 -1
- package/dist/compiler/moltnetReleaseAuthority.d.ts +24 -1
- package/dist/compiler/moltnetReleaseAuthority.js +33 -4
- package/dist/compiler/moltnetRepresentativeResolution.d.ts +1 -1
- package/dist/compiler/moltnetRepresentativeResolution.js +2 -2
- package/dist/compiler/moltnetResolution.js +9 -15
- package/dist/compiler/moltnetRoomMemberships.js +20 -5
- 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.js +19 -0
- package/dist/compiler/organizationExternalParticipants.d.ts +3 -0
- package/dist/compiler/organizationExternalParticipants.js +176 -0
- package/dist/compiler/organizationIdentity.d.ts +3 -9
- package/dist/compiler/organizationIdentity.js +37 -270
- package/dist/compiler/organizationIdentityGraph.d.ts +15 -0
- package/dist/compiler/organizationIdentityGraph.js +115 -0
- package/dist/compiler/organizationReadyEvidence.d.ts +8 -0
- package/dist/compiler/organizationReadyEvidence.js +23 -3
- package/dist/compiler/runProject.d.ts +4 -2
- package/dist/compiler/runProject.js +32 -6
- package/dist/compiler/runProjectAuth.d.ts +3 -1
- package/dist/compiler/runProjectAuth.js +19 -3
- package/dist/compiler/runProjectDaimonCodexDocker.d.ts +3 -0
- package/dist/compiler/runProjectDaimonCodexDocker.js +36 -0
- package/dist/compiler/runProjectDocker.d.ts +8 -4
- package/dist/compiler/runProjectDocker.js +43 -18
- 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.js +1 -1
- 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 +2 -0
- package/dist/compiler/upProject.d.ts +26 -1
- package/dist/compiler/upProject.js +117 -178
- package/dist/compiler/upProjectHandoff.d.ts +62 -0
- package/dist/compiler/upProjectHandoff.js +204 -0
- package/dist/compiler/upReceipt.js +49 -4
- package/dist/compiler/updateProjectModels.js +1 -0
- 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/deployment/artifactsExportPlan.js +51 -1
- 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/dockerLogs.js +4 -1
- package/dist/deployment/dockerManager.js +9 -3
- package/dist/deployment/dockerProbeGateway.d.ts +17 -0
- package/dist/deployment/dockerProbeGateway.js +17 -2
- package/dist/deployment/downDeployment.d.ts +5 -0
- package/dist/deployment/downDeployment.js +109 -8
- package/dist/deployment/downReceiptTypes.d.ts +17 -2
- package/dist/deployment/downReceiptTypes.js +17 -2
- package/dist/deployment/index.d.ts +4 -0
- package/dist/deployment/index.js +4 -0
- package/dist/deployment/lifecycleCompletionContracts.d.ts +66 -0
- package/dist/deployment/lifecycleCompletionContracts.js +34 -0
- package/dist/deployment/lifecycleCompletionPaths.d.ts +4 -1
- package/dist/deployment/lifecycleCompletionPaths.js +3 -0
- package/dist/deployment/lifecycleCompletionPublication.d.ts +2 -0
- package/dist/deployment/lifecycleCompletionPublication.js +18 -4
- package/dist/deployment/lifecycleCompletionStore.d.ts +1 -1
- package/dist/deployment/lifecycleCompletionStore.js +7 -7
- 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.js +82 -27
- package/dist/deployment/organizationHandoffAuthorityFsElection.d.ts +21 -0
- package/dist/deployment/organizationHandoffAuthorityFsElection.js +57 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorker.js +254 -108
- package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.d.ts +1 -0
- package/dist/deployment/organizationHandoffAuthorityFsWorkerStall.fixture.js +16 -0
- package/dist/deployment/organizationHandoffAuthorityStore.js +14 -7
- package/dist/deployment/organizationHandoffAuthorityTypes.d.ts +2 -2
- package/dist/deployment/organizationHandoffAuthorityTypes.js +2 -1
- package/dist/deployment/organizationReady.d.ts +2 -0
- package/dist/deployment/organizationReady.js +36 -4
- package/dist/deployment/productStateClone.d.ts +43 -0
- package/dist/deployment/productStateClone.js +319 -0
- package/dist/deployment/upLifecycleRecoveryState.d.ts +23 -0
- package/dist/deployment/upLifecycleRecoveryState.js +12 -0
- package/dist/deployment/upReceiptTypes.d.ts +32 -6
- package/dist/deployment/upReceiptTypes.js +29 -2
- 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 +9 -0
- 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 +11 -1
- package/dist/distribution/distributionReportSchema.js +15 -2
- 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 +1 -1
- package/dist/distribution/index.js +1 -1
- package/dist/distribution/preflight.js +5 -1
- package/dist/distribution/types.d.ts +14 -1
- package/dist/distribution/types.js +3 -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/manifest/executionSchemas.d.ts +27 -0
- package/dist/manifest/executionSchemas.js +21 -2
- package/dist/manifest/mcpSchemas.d.ts +1 -0
- package/dist/manifest/mcpSchemas.js +3 -0
- package/dist/manifest/renderSpawnfileNetworks.js +11 -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 +237 -12
- package/dist/manifest/schemas.js +5 -2
- package/dist/manifest/teamNetworkAccessSchemas.d.ts +5 -1
- package/dist/manifest/teamNetworkAccessSchemas.js +11 -0
- package/dist/manifest/teamNetworkAuthSchemas.d.ts +1 -1
- package/dist/manifest/teamNetworkSchemas.d.ts +17 -3
- package/dist/manifest/teamNetworkSchemas.js +19 -1
- package/dist/manifest/teamNetworkServerSchemas.d.ts +8 -3
- package/dist/manifest/teamNetworkServerSchemas.js +18 -2
- package/dist/manifest/workspaceSchemas.d.ts +16 -0
- package/dist/manifest/workspaceSchemas.js +11 -0
- package/dist/report/types.d.ts +34 -4
- package/dist/runtime/common.d.ts +28 -1
- package/dist/runtime/common.js +33 -3
- package/dist/runtime/container.js +49 -33
- 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 +4 -0
- package/dist/runtime/index.js +4 -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 +13 -0
- package/dist/runtime/mnemeMcp.js +26 -0
- package/dist/runtime/openclaw/adapter.js +2 -2
- package/dist/runtime/pi/adapter.d.ts +0 -1
- package/dist/runtime/pi/adapter.js +2 -6
- package/dist/runtime/pi/appCliSource.js +1 -1
- package/dist/runtime/pi/appScheduleSource.js +6 -2
- package/dist/runtime/pi/appTemplateTypes.d.ts +1 -1
- package/dist/runtime/picoclaw/adapter.js +2 -2
- package/dist/runtime/registry.d.ts +3 -0
- package/dist/runtime/registry.js +19 -2
- package/dist/runtime/scheduleUtils.d.ts +1 -0
- package/dist/runtime/scheduleUtils.js +5 -1
- package/dist/runtime/types.d.ts +25 -0
- 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/index.d.ts +2 -0
- package/dist/shared/index.js +2 -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/target/dockerArtifactsProvider.js +34 -7
- package/dist/target/dockerBaseImage.d.ts +2 -0
- package/dist/target/dockerBaseImage.js +11 -0
- package/dist/target/dockerCommandExecutor.d.ts +11 -0
- package/dist/target/dockerCommandExecutor.js +53 -2
- package/dist/target/dockerCommandExecutorCore.d.ts +2 -1
- package/dist/target/dockerCommandExecutorCore.js +4 -2
- package/dist/target/dockerPublicArtifactSnapshot.d.ts +3 -3
- package/dist/target/dockerPublicArtifactSnapshot.js +17 -33
- package/dist/target/dockerTarget.d.ts +1 -0
- package/dist/target/dockerTargetBinding.d.ts +1 -2
- package/dist/target/dockerTargetBinding.js +2 -3
- package/dist/target/dockerTargetExecFile.d.ts +19 -0
- package/dist/target/dockerTargetExecFile.js +194 -0
- package/dist/target/dockerWorldServiceProvider.d.ts +4 -0
- package/dist/target/dockerWorldServiceProvider.js +13 -1
- package/dist/target/evidenceExport.d.ts +3 -1
- package/dist/target/evidenceExport.js +12 -3
- package/dist/target/evidenceExportOperationsTestKit.js +3 -3
- package/dist/target/evidenceExportProvider.d.ts +2 -0
- package/dist/target/evidenceExportProvider.js +15 -5
- package/dist/target/publicArtifactSnapshot.d.ts +31 -0
- package/dist/target/publicArtifactSnapshot.js +37 -3
- 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 +5 -4
- package/package.json +36 -9
- package/runtimes.yaml +5 -2
- package/dist/cli/targetWorldClockCrossProcess.test-helper.d.ts +0 -13
- package/dist/cli/targetWorldClockCrossProcess.test-helper.js +0 -109
- package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.d.ts +0 -8
- package/dist/deployment/providerRuntimeBoundaryScanner.test-helper.js +0 -60
- package/dist/deployment/simfileFixtureBoundary.test-helper.d.ts +0 -8
- package/dist/deployment/simfileFixtureBoundary.test-helper.js +0 -103
- package/dist/ownership/simfileRunOperatorInputs.d.ts +0 -103
- package/dist/ownership/simfileRunOperatorInputs.js +0 -139
- package/dist/target/cleanupRunDocker.test-helper.d.ts +0 -67
- package/dist/target/cleanupRunDocker.test-helper.js +0 -238
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { chmod, mkdtemp, realpath, writeFile } from "node:fs/promises";
|
|
2
|
-
import os from "node:os";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import { parseOpaqueTargetHandle } from "../target/contracts.js";
|
|
5
|
-
import { createDockerArtifactSpec } from "../target/dockerArtifactsProvider.js";
|
|
6
|
-
import { createDockerResourceSpec } from "../target/dockerResourcesProvider.js";
|
|
7
|
-
import { createWorldServiceAuthorization, parseWorldServiceResolution } from "../target/dockerWorldServiceAuthority.js";
|
|
8
|
-
import { worldServiceSpecForBinding } from "../target/dockerWorldServiceLifecycle.js";
|
|
9
|
-
import { createWorldServiceBinding, initializeWorldServiceAuthorityStore, worldServiceResourceBindings, } from "../target/dockerWorldServiceStore.js";
|
|
10
|
-
import { createCanonicalWorldServiceActivationBytes, createTargetTopologyActivationReceiptDigest, createWorldServiceActivationDigest, parseWorldServiceActivation, } from "../target/topologyActivation.js";
|
|
11
|
-
import { parseTargetWorldClockRequest } from "../target/worldClock.js";
|
|
12
|
-
const d = (value) => `sha256:${value.repeat(64).slice(0, 64)}`;
|
|
13
|
-
const h = (value) => parseOpaqueTargetHandle(`opaque_${value.repeat(16)}`);
|
|
14
|
-
const containerId = "c".repeat(64);
|
|
15
|
-
const after = (args, flag) => args[args.indexOf(flag) + 1];
|
|
16
|
-
const inspection = (spec) => ({
|
|
17
|
-
AutoRemove: false, BindCount: 0, CapAddCount: 0, CapDrop: ["ALL"], CgroupnsMode: "private", DeviceCount: 0,
|
|
18
|
-
DeviceRequestCount: 0, DnsCount: 0, Domainname: "", ExposedPortCount: 0, ExtraHostCount: 0, GroupAddCount: 0,
|
|
19
|
-
Hostname: spec.containerName, Id: containerId, Image: spec.imageReference, IpcMode: "none", Labels: spec.receiptLabels,
|
|
20
|
-
LinkCount: 0, LogType: "none", Mounts: spec.createArgs.filter((value, index, values) => values[index - 1] === "--mount")
|
|
21
|
-
.map((value) => Object.fromEntries(value.split(",").map((part) => part.split("=", 2))))
|
|
22
|
-
.map((mount) => ({ Destination: mount.dst, Name: mount.src, RW: mount.dst === spec.evidenceMountPath, Type: "volume" })),
|
|
23
|
-
Name: `/${spec.containerName}`, NetworkAliases: spec.networkAlias ? [spec.networkAlias] : null,
|
|
24
|
-
NetworkAttachmentCount: 1, NetworkAttachmentId: "b".repeat(64), NetworkAttachmentName: after(spec.createArgs, "--network"),
|
|
25
|
-
NetworkMode: after(spec.createArgs, "--network"), PidMode: "", PortBindingCount: 0, Privileged: false,
|
|
26
|
-
PublishAllPorts: false, ReadonlyRootfs: true, RestartMaximumRetryCount: 0, RestartPolicyName: "no",
|
|
27
|
-
SecurityOpt: ["no-new-privileges=true"], Status: "running", Tmpfs: { "/tmp": "rw,noexec,nosuid,nodev,size=1m,mode=1777" },
|
|
28
|
-
UTSMode: "", UsernsMode: "", VolumesFromCount: 0,
|
|
29
|
-
});
|
|
30
|
-
const fixture = () => {
|
|
31
|
-
const selectedTarget = { fingerprint: `sha256:${"1".repeat(32)}`, handle: h("1") };
|
|
32
|
-
const runId = "run-built-clock";
|
|
33
|
-
const dataClaim = { operationHandle: h("2"), requestDigest: d("2") };
|
|
34
|
-
const evidenceClaim = { operationHandle: h("3"), requestDigest: d("3") };
|
|
35
|
-
const data = createDockerResourceSpec({ kind: "data_network", ...dataClaim, runId, selectedTargetHandle: selectedTarget.handle });
|
|
36
|
-
const evidence = createDockerResourceSpec({ kind: "evidence_volume", ...evidenceClaim, runId, selectedTargetHandle: selectedTarget.handle });
|
|
37
|
-
const artifact = createDockerArtifactSpec({ artifactManifestDigest: d("4"), imageDigest: d("5"),
|
|
38
|
-
imageReference: `registry.example/world@${d("5")}`, operationHandle: h("4"), requestDigest: d("4"),
|
|
39
|
-
selectedTargetHandle: selectedTarget.handle });
|
|
40
|
-
const authorization = createWorldServiceAuthorization({ dataNetworkHandle: data.resultHandle, descriptorDigest: d("6"),
|
|
41
|
-
evidenceMountPath: "/run/world/evidence", evidenceVolumeHandle: evidence.resultHandle, operationHandle: h("6"),
|
|
42
|
-
requestDigest: d("6"), runId, secretBindingsHandle: h("7"), selectedTarget, worldArtifactHandle: artifact.resultHandle });
|
|
43
|
-
const resolution = parseWorldServiceResolution({ artifact: { artifact_manifest_digest: d("4"), identity_kind: "oci_image_manifest",
|
|
44
|
-
image_digest: artifact.imageDigest, image_reference: artifact.imageReference, operation_handle: h("4"),
|
|
45
|
-
request_digest: d("4"), result_handle: artifact.resultHandle }, authorization });
|
|
46
|
-
const resources = worldServiceResourceBindings({ dataNetworkClaim: dataClaim, evidenceVolumeClaim: evidenceClaim, resolution });
|
|
47
|
-
const spec = worldServiceSpecForBinding({ resolution, resources });
|
|
48
|
-
const binding = createWorldServiceBinding({ containerId, dataNetwork: resources.data_network, evidenceVolume: resources.evidence_volume,
|
|
49
|
-
resolution, secretBindings: resources.secret_bindings, spec });
|
|
50
|
-
const marker = parseWorldServiceActivation({ bundle_digest: d("8"), run_id: runId, state: "activated",
|
|
51
|
-
topology_receipt_digest: d("9"), topology_request_digest: d("a"), version: "spawnfile.world-service-activation.v1" });
|
|
52
|
-
const activationDigest = createWorldServiceActivationDigest(marker);
|
|
53
|
-
const activationReceiptDigest = createTargetTopologyActivationReceiptDigest({ activation_digest: activationDigest,
|
|
54
|
-
bundle_digest: marker.bundle_digest, receipt_digest: d("0"), run_id: runId, state: "activated",
|
|
55
|
-
topology_receipt_digest: marker.topology_receipt_digest, topology_request_digest: marker.topology_request_digest,
|
|
56
|
-
version: "spawnfile.target-topology-activation-receipt.v1" });
|
|
57
|
-
const request = parseTargetWorldClockRequest({ activation_digest: activationDigest,
|
|
58
|
-
activation_receipt_digest: activationReceiptDigest, descriptor_digest: authorization.descriptor_digest,
|
|
59
|
-
endpoint: { internal_port: 4_070, path: "/v1/world/clock" },
|
|
60
|
-
expected: { document_version: "world.clock-document.v1", world_instance_id: "world-built-clock" }, run_id: runId,
|
|
61
|
-
selected_target: selectedTarget, topology_receipt_digest: marker.topology_receipt_digest,
|
|
62
|
-
topology_request_digest: marker.topology_request_digest, version: "spawnfile.target-world-clock.request.v1",
|
|
63
|
-
world_service_handle: binding.world_service_handle });
|
|
64
|
-
return { binding, marker, request, spec };
|
|
65
|
-
};
|
|
66
|
-
export const createBuiltWorldClockState = async () => {
|
|
67
|
-
const root = await realpath(await mkdtemp(path.join(os.tmpdir(), "spawnfile-built-world-clock-")));
|
|
68
|
-
const home = path.join(root, "home");
|
|
69
|
-
const callsPath = path.join(root, "docker-calls.ndjson");
|
|
70
|
-
const modePath = path.join(root, "mode");
|
|
71
|
-
const scenariosPath = path.join(root, "scenarios.json");
|
|
72
|
-
const fakeDocker = path.join(root, "docker-clock");
|
|
73
|
-
const requestPath = path.join(root, "request.json");
|
|
74
|
-
const { binding, marker, request, spec } = fixture();
|
|
75
|
-
const store = await initializeWorldServiceAuthorityStore(path.join(home, "target", "world-authority"));
|
|
76
|
-
await store.bindService(binding);
|
|
77
|
-
const observation = { action_count: 0, clock: { completed_tick: 1, next_tick: 2, state: "running" },
|
|
78
|
-
run_id: request.run_id, version: request.expected.document_version, world_instance_id: request.expected.world_instance_id };
|
|
79
|
-
const topologyMarker = parseWorldServiceActivation({ ...marker, topology_receipt_digest: d("b") });
|
|
80
|
-
const activationMarker = parseWorldServiceActivation({ ...marker, bundle_digest: d("c") });
|
|
81
|
-
const scenarios = {
|
|
82
|
-
success: { marker: createCanonicalWorldServiceActivationBytes(marker), observation: JSON.stringify(observation) },
|
|
83
|
-
"tick-zero": { marker: createCanonicalWorldServiceActivationBytes(marker), observation: JSON.stringify({ ...observation,
|
|
84
|
-
clock: { completed_tick: 0, next_tick: 1, state: "running" } }) },
|
|
85
|
-
stale: { marker: createCanonicalWorldServiceActivationBytes(marker), observation: JSON.stringify({ ...observation, run_id: "run-stale-clock" }) },
|
|
86
|
-
topology: { marker: createCanonicalWorldServiceActivationBytes(topologyMarker), observation: JSON.stringify(observation) },
|
|
87
|
-
activation: { marker: createCanonicalWorldServiceActivationBytes(activationMarker), observation: JSON.stringify(observation) },
|
|
88
|
-
"nonzero-action": { marker: createCanonicalWorldServiceActivationBytes(marker), observation: JSON.stringify({ ...observation, action_count: 1 }) },
|
|
89
|
-
};
|
|
90
|
-
await writeFile(callsPath, "", { mode: 0o600 });
|
|
91
|
-
await writeFile(modePath, "success", { mode: 0o600 });
|
|
92
|
-
await writeFile(scenariosPath, JSON.stringify(scenarios), { mode: 0o600 });
|
|
93
|
-
await writeFile(requestPath, JSON.stringify(request), { mode: 0o600 });
|
|
94
|
-
await writeFile(fakeDocker, `#!${process.execPath}
|
|
95
|
-
const fs=require("node:fs");const args=process.argv.slice(2);
|
|
96
|
-
fs.appendFileSync(${JSON.stringify(callsPath)},JSON.stringify(args)+"\\n");
|
|
97
|
-
const all=JSON.parse(fs.readFileSync(${JSON.stringify(scenariosPath)},"utf8"));
|
|
98
|
-
const current=all[fs.readFileSync(${JSON.stringify(modePath)},"utf8").trim()];
|
|
99
|
-
if(args[2]==="container"&&args[3]==="inspect")process.stdout.write(${JSON.stringify(JSON.stringify([inspection(spec)]))});
|
|
100
|
-
else if(args[2]==="container"&&args[3]==="exec"&&args.includes("/bin/cat"))process.stdout.write(current.marker);
|
|
101
|
-
else if(args[2]==="container"&&args[3]==="exec"&&args.includes("/usr/local/bin/node"))process.stdout.write(current.observation);
|
|
102
|
-
else{process.stderr.write("unexpected fake Docker command\\n");process.exitCode=71;}
|
|
103
|
-
`, { mode: 0o700 });
|
|
104
|
-
await chmod(fakeDocker, 0o700);
|
|
105
|
-
return { callsPath, config: { context: "built_clock", dockerCommand: fakeDocker,
|
|
106
|
-
evidenceDestination: path.join(root, "unused.tar"), timeoutMs: 10_000,
|
|
107
|
-
version: "spawnfile.target-default-config.v1" }, home, modePath, request, requestPath, root };
|
|
108
|
-
};
|
|
109
|
-
export const selectBuiltWorldClockMode = async (state, mode) => { await writeFile(state.modePath, mode, { mode: 0o600 }); };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export type ProviderRuntimeViolationKind = "moltnet-live-endpoint" | "provider-authenticated-http" | "docker-exec-http-transport" | "transport-receipt" | "generated-client" | "cursor-operation";
|
|
2
|
-
export type ProviderRuntimeViolation = {
|
|
3
|
-
classification: ProviderRuntimeViolationKind;
|
|
4
|
-
file: string;
|
|
5
|
-
matched: string;
|
|
6
|
-
};
|
|
7
|
-
export declare const scanProviderRuntimeSource: (source: string, file?: string) => ProviderRuntimeViolation[];
|
|
8
|
-
export declare const scanProviderRuntimeTree: (repositoryRoot: string) => Promise<ProviderRuntimeViolation[]>;
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { readdir, readFile } from "node:fs/promises";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
const forbiddenIdentifiers = [
|
|
4
|
-
["transport-receipt", /spawnfile\.moltnet-transport/u],
|
|
5
|
-
["transport-receipt", /ContainedMoltnetTransport/u],
|
|
6
|
-
["generated-client", /CONTAINED_MOLTNET_CLIENT/u],
|
|
7
|
-
["generated-client", /SendMessageRequest/u],
|
|
8
|
-
["cursor-operation", /ListRoomMessages/u]
|
|
9
|
-
];
|
|
10
|
-
const productionFiles = async (directory) => {
|
|
11
|
-
const entries = await readdir(directory, { withFileTypes: true });
|
|
12
|
-
const nested = await Promise.all(entries.map(async (entry) => {
|
|
13
|
-
const file = path.join(directory, entry.name);
|
|
14
|
-
if (entry.isDirectory())
|
|
15
|
-
return productionFiles(file);
|
|
16
|
-
if (!entry.isFile() || !entry.name.endsWith(".ts") || entry.name.endsWith(".test.ts") || entry.name.endsWith(".test-helper.ts"))
|
|
17
|
-
return [];
|
|
18
|
-
return [file];
|
|
19
|
-
}));
|
|
20
|
-
return nested.flat();
|
|
21
|
-
};
|
|
22
|
-
const violationsForSource = (source, file) => {
|
|
23
|
-
const violations = [];
|
|
24
|
-
for (const endpoint of ["/v1/messages", "/v1/network", "/v1/rooms", "/v1/agents"]) {
|
|
25
|
-
if (source.includes(endpoint))
|
|
26
|
-
violations.push({ classification: "moltnet-live-endpoint", file, matched: endpoint });
|
|
27
|
-
}
|
|
28
|
-
const providerSurface = /(?:fetch|httpGet|curl)[\s\S]*(?:\/healthz|\/v1\/)/u.test(source)
|
|
29
|
-
|| /(?:\/healthz|\/v1\/)[\s\S]*(?:fetch|httpGet|curl)/u.test(source);
|
|
30
|
-
const authenticatedMarker = [
|
|
31
|
-
[/\bAuthorization\s*:/u, "Authorization property"],
|
|
32
|
-
[/["']Authorization["']\s*:/u, "Authorization string key"],
|
|
33
|
-
[/\[\s*["']Authorization["']\s*\]\s*=/u, "Authorization element assignment"],
|
|
34
|
-
[/`Bearer\s+/u, "Bearer template"],
|
|
35
|
-
[/["']Bearer\s+["']\s*\+/u, "Bearer concatenation"],
|
|
36
|
-
[/["']Bearer\s+/u, "Bearer literal"]
|
|
37
|
-
].find(([pattern]) => pattern.test(source));
|
|
38
|
-
if (providerSurface && authenticatedMarker) {
|
|
39
|
-
violations.push({
|
|
40
|
-
classification: "provider-authenticated-http",
|
|
41
|
-
file,
|
|
42
|
-
matched: authenticatedMarker[1]
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
if (/(?:exec\s*\(\s*\[\s*["'](?:curl|wget)["'])|(?:["']exec["'][\s\S]{0,160}["'](?:curl|wget)["'])/u.test(source)) {
|
|
46
|
-
violations.push({ classification: "docker-exec-http-transport", file, matched: "exec curl/wget" });
|
|
47
|
-
}
|
|
48
|
-
for (const [classification, pattern] of forbiddenIdentifiers) {
|
|
49
|
-
if (pattern.test(source))
|
|
50
|
-
violations.push({ classification, file, matched: pattern.source });
|
|
51
|
-
}
|
|
52
|
-
return violations;
|
|
53
|
-
};
|
|
54
|
-
export const scanProviderRuntimeSource = (source, file = "synthetic.ts") => violationsForSource(source, file);
|
|
55
|
-
export const scanProviderRuntimeTree = async (repositoryRoot) => {
|
|
56
|
-
const roots = ["cli", "compiler", "deployment", "status"].map((folder) => path.join(repositoryRoot, "src", folder));
|
|
57
|
-
const files = (await Promise.all(roots.map(productionFiles))).flat();
|
|
58
|
-
const results = await Promise.all(files.map(async (file) => violationsForSource(await readFile(file, "utf8"), path.relative(repositoryRoot, file))));
|
|
59
|
-
return results.flat();
|
|
60
|
-
};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export type SimfileFixtureViolation = {
|
|
2
|
-
file: string;
|
|
3
|
-
classification: "simfile-scenario-direct-literal" | "simfile-scenario-path-join" | "simfile-scenario-path-resolve";
|
|
4
|
-
matchedPath: string;
|
|
5
|
-
};
|
|
6
|
-
export declare const scanSimfileFixtureSource: (text: string, file?: string) => SimfileFixtureViolation[];
|
|
7
|
-
export declare const scanSimfileFixtureFile: (file: string) => Promise<SimfileFixtureViolation[]>;
|
|
8
|
-
export declare const scanSimfileFixtureTree: (repositoryRoot: string) => Promise<SimfileFixtureViolation[]>;
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { readdir, readFile } from "node:fs/promises";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import * as ts from "typescript";
|
|
4
|
-
const normalize = (value) => value.replace(/\\/g, "/");
|
|
5
|
-
const fixturePath = (value) => {
|
|
6
|
-
const normalized = normalize(value);
|
|
7
|
-
const index = normalized.toLowerCase().indexOf("ecosystem/simfile/fixtures");
|
|
8
|
-
if (index < 0 || (index > 0 && !/[\\/]/u.test(normalized[index - 1])))
|
|
9
|
-
return null;
|
|
10
|
-
return normalized.slice(index);
|
|
11
|
-
};
|
|
12
|
-
const aliasesFor = (sourceFile) => {
|
|
13
|
-
const namespaceAliases = new Set();
|
|
14
|
-
const functionAliases = new Map();
|
|
15
|
-
for (const statement of sourceFile.statements) {
|
|
16
|
-
if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier)
|
|
17
|
-
|| !["node:path", "path"].includes(statement.moduleSpecifier.text))
|
|
18
|
-
continue;
|
|
19
|
-
const clause = statement.importClause;
|
|
20
|
-
if (!clause)
|
|
21
|
-
continue;
|
|
22
|
-
if (clause.name)
|
|
23
|
-
namespaceAliases.add(clause.name.text);
|
|
24
|
-
if (!clause.namedBindings)
|
|
25
|
-
continue;
|
|
26
|
-
if (ts.isNamespaceImport(clause.namedBindings))
|
|
27
|
-
namespaceAliases.add(clause.namedBindings.name.text);
|
|
28
|
-
if (ts.isNamedImports(clause.namedBindings)) {
|
|
29
|
-
for (const element of clause.namedBindings.elements) {
|
|
30
|
-
const imported = element.propertyName?.text ?? element.name.text;
|
|
31
|
-
if (imported === "join" || imported === "resolve")
|
|
32
|
-
functionAliases.set(element.name.text, imported);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return { namespaceAliases, functionAliases };
|
|
37
|
-
};
|
|
38
|
-
const pathCallViolations = (node, aliases, sourceFile) => {
|
|
39
|
-
const callee = node.expression;
|
|
40
|
-
let kind = null;
|
|
41
|
-
if (ts.isPropertyAccessExpression(callee) && ts.isIdentifier(callee.expression)
|
|
42
|
-
&& aliases.namespaceAliases.has(callee.expression.text) && ["join", "resolve"].includes(callee.name.text)) {
|
|
43
|
-
kind = callee.name.text;
|
|
44
|
-
}
|
|
45
|
-
else if (ts.isIdentifier(callee)) {
|
|
46
|
-
kind = aliases.functionAliases.get(callee.text) ?? null;
|
|
47
|
-
}
|
|
48
|
-
if (!kind)
|
|
49
|
-
return [];
|
|
50
|
-
const segments = node.arguments.map((argument) => ts.isStringLiteral(argument) || ts.isNoSubstitutionTemplateLiteral(argument) ? normalize(argument.text) : null);
|
|
51
|
-
const start = segments.findIndex((segment, index) => index <= segments.length - 3 && segment === "ecosystem" && segments[index + 1] === "simfile" && segments[index + 2] === "fixtures");
|
|
52
|
-
if (start < 0)
|
|
53
|
-
return [];
|
|
54
|
-
const matchedSegments = [];
|
|
55
|
-
for (const segment of segments.slice(start)) {
|
|
56
|
-
if (segment === null)
|
|
57
|
-
break;
|
|
58
|
-
matchedSegments.push(segment);
|
|
59
|
-
}
|
|
60
|
-
return [{
|
|
61
|
-
file: path.relative(process.cwd(), sourceFile.fileName),
|
|
62
|
-
classification: kind === "join" ? "simfile-scenario-path-join" : "simfile-scenario-path-resolve",
|
|
63
|
-
matchedPath: matchedSegments.join("/")
|
|
64
|
-
}];
|
|
65
|
-
};
|
|
66
|
-
export const scanSimfileFixtureSource = (text, file = "synthetic.ts") => {
|
|
67
|
-
const sourceFile = ts.createSourceFile(file, text, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TS);
|
|
68
|
-
const aliases = aliasesFor(sourceFile);
|
|
69
|
-
const violations = [];
|
|
70
|
-
const visit = (node) => {
|
|
71
|
-
if (ts.isStringLiteral(node) || ts.isNoSubstitutionTemplateLiteral(node)) {
|
|
72
|
-
const matchedPath = fixturePath(node.text);
|
|
73
|
-
if (matchedPath)
|
|
74
|
-
violations.push({ file, classification: "simfile-scenario-direct-literal", matchedPath });
|
|
75
|
-
}
|
|
76
|
-
if (ts.isCallExpression(node))
|
|
77
|
-
violations.push(...pathCallViolations(node, aliases, sourceFile));
|
|
78
|
-
ts.forEachChild(node, visit);
|
|
79
|
-
};
|
|
80
|
-
visit(sourceFile);
|
|
81
|
-
return violations;
|
|
82
|
-
};
|
|
83
|
-
export const scanSimfileFixtureFile = async (file) => scanSimfileFixtureSource(await readFile(file, "utf8"), file);
|
|
84
|
-
const typescriptFiles = async (directory) => {
|
|
85
|
-
const entries = await readdir(directory, { withFileTypes: true });
|
|
86
|
-
const nested = await Promise.all(entries.map(async (entry) => {
|
|
87
|
-
const file = path.join(directory, entry.name);
|
|
88
|
-
if (entry.isDirectory())
|
|
89
|
-
return typescriptFiles(file);
|
|
90
|
-
return entry.isFile() && entry.name.endsWith(".ts") ? [file] : [];
|
|
91
|
-
}));
|
|
92
|
-
return nested.flat();
|
|
93
|
-
};
|
|
94
|
-
export const scanSimfileFixtureTree = async (repositoryRoot) => {
|
|
95
|
-
const excluded = new Set([
|
|
96
|
-
path.resolve(repositoryRoot, "src/deployment/providerRuntimeBoundary.test.ts"),
|
|
97
|
-
path.resolve(repositoryRoot, "src/deployment/simfileFixtureBoundary.test-helper.ts")
|
|
98
|
-
]);
|
|
99
|
-
const files = (await typescriptFiles(path.join(repositoryRoot, "src")))
|
|
100
|
-
.map((file) => path.resolve(file))
|
|
101
|
-
.filter((file) => !excluded.has(file));
|
|
102
|
-
return (await Promise.all(files.map(scanSimfileFixtureFile))).flat();
|
|
103
|
-
};
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { type SelectedTargetReceipt } from "../target/contracts.js";
|
|
3
|
-
export declare const SIMFILE_RUN_OPERATOR_INPUT_VERSION: "spawnfile.simfile-run-operator-input.v1";
|
|
4
|
-
export declare const SIMFILE_RUN_OPERATOR_RESOLUTION_VERSION: "spawnfile.simfile-run-operator-resolution.v1";
|
|
5
|
-
export declare const SIMFILE_RUN_OPERATOR_RECEIPT_VERSION: "spawnfile.simfile-run-operator-receipt.v1";
|
|
6
|
-
export declare const simfileRunOperatorInputSchema: z.ZodObject<{
|
|
7
|
-
auth_profile: z.ZodString;
|
|
8
|
-
moltnet_release: z.ZodObject<{
|
|
9
|
-
directory_transport: z.ZodLiteral<"operator-path">;
|
|
10
|
-
required_capability: z.ZodLiteral<"pi-bridge">;
|
|
11
|
-
stamp_version: z.ZodLiteral<"spawnfile.moltnet-release-stamp.v1">;
|
|
12
|
-
}, z.core.$strict>;
|
|
13
|
-
run_id: z.ZodString;
|
|
14
|
-
run_root: z.ZodString;
|
|
15
|
-
target_config_transport: z.ZodLiteral<"stdin">;
|
|
16
|
-
target_selector: z.ZodString;
|
|
17
|
-
version: z.ZodLiteral<"spawnfile.simfile-run-operator-input.v1">;
|
|
18
|
-
}, z.core.$strict>;
|
|
19
|
-
export declare const simfileRunMoltnetIdentitySchema: z.ZodObject<{
|
|
20
|
-
architecture: z.ZodEnum<{
|
|
21
|
-
amd64: "amd64";
|
|
22
|
-
arm64: "arm64";
|
|
23
|
-
}>;
|
|
24
|
-
asset: z.ZodString;
|
|
25
|
-
asset_sha256: z.ZodString;
|
|
26
|
-
capabilities: z.ZodTuple<[z.ZodLiteral<"pi-bridge">], null>;
|
|
27
|
-
release_version: z.ZodString;
|
|
28
|
-
source_revision: z.ZodString;
|
|
29
|
-
version: z.ZodLiteral<"spawnfile.moltnet-release-identity.v1">;
|
|
30
|
-
}, z.core.$strict>;
|
|
31
|
-
export declare const simfileRunOperatorResolutionSchema: z.ZodObject<{
|
|
32
|
-
auth_profile: z.ZodString;
|
|
33
|
-
moltnet_release: z.ZodObject<{
|
|
34
|
-
architecture: z.ZodEnum<{
|
|
35
|
-
amd64: "amd64";
|
|
36
|
-
arm64: "arm64";
|
|
37
|
-
}>;
|
|
38
|
-
asset: z.ZodString;
|
|
39
|
-
asset_sha256: z.ZodString;
|
|
40
|
-
capabilities: z.ZodTuple<[z.ZodLiteral<"pi-bridge">], null>;
|
|
41
|
-
release_version: z.ZodString;
|
|
42
|
-
source_revision: z.ZodString;
|
|
43
|
-
version: z.ZodLiteral<"spawnfile.moltnet-release-identity.v1">;
|
|
44
|
-
}, z.core.$strict>;
|
|
45
|
-
request_digest: z.ZodString;
|
|
46
|
-
roots: z.ZodObject<{
|
|
47
|
-
cache: z.ZodString;
|
|
48
|
-
evidence: z.ZodString;
|
|
49
|
-
journal: z.ZodString;
|
|
50
|
-
output: z.ZodString;
|
|
51
|
-
}, z.core.$strict>;
|
|
52
|
-
roots_digest: z.ZodString;
|
|
53
|
-
run_id: z.ZodString;
|
|
54
|
-
target_selector: z.ZodString;
|
|
55
|
-
version: z.ZodLiteral<"spawnfile.simfile-run-operator-resolution.v1">;
|
|
56
|
-
}, z.core.$strict>;
|
|
57
|
-
export declare const simfileRunOperatorReceiptSchema: z.ZodObject<{
|
|
58
|
-
auth_profile: z.ZodString;
|
|
59
|
-
moltnet_release: z.ZodObject<{
|
|
60
|
-
architecture: z.ZodEnum<{
|
|
61
|
-
amd64: "amd64";
|
|
62
|
-
arm64: "arm64";
|
|
63
|
-
}>;
|
|
64
|
-
asset: z.ZodString;
|
|
65
|
-
asset_sha256: z.ZodString;
|
|
66
|
-
capabilities: z.ZodTuple<[z.ZodLiteral<"pi-bridge">], null>;
|
|
67
|
-
release_version: z.ZodString;
|
|
68
|
-
source_revision: z.ZodString;
|
|
69
|
-
version: z.ZodLiteral<"spawnfile.moltnet-release-identity.v1">;
|
|
70
|
-
}, z.core.$strict>;
|
|
71
|
-
request_digest: z.ZodString;
|
|
72
|
-
resolution_digest: z.ZodString;
|
|
73
|
-
roots_digest: z.ZodString;
|
|
74
|
-
run_id: z.ZodString;
|
|
75
|
-
selected_target: z.ZodObject<{
|
|
76
|
-
fingerprint: z.ZodString;
|
|
77
|
-
handle: z.ZodPipe<z.ZodString, z.ZodTransform<import("../target/contracts.js").OpaqueTargetHandle, string>>;
|
|
78
|
-
version: z.ZodLiteral<"spawnfile.target-resource.selected-target.v1">;
|
|
79
|
-
}, z.core.$strict>;
|
|
80
|
-
target_selector: z.ZodString;
|
|
81
|
-
version: z.ZodLiteral<"spawnfile.simfile-run-operator-receipt.v1">;
|
|
82
|
-
}, z.core.$strict>;
|
|
83
|
-
export type SimfileRunOperatorInput = z.infer<typeof simfileRunOperatorInputSchema>;
|
|
84
|
-
export type SimfileRunMoltnetIdentity = z.infer<typeof simfileRunMoltnetIdentitySchema>;
|
|
85
|
-
export type SimfileRunOperatorResolution = z.infer<typeof simfileRunOperatorResolutionSchema>;
|
|
86
|
-
export type SimfileRunOperatorReceipt = z.infer<typeof simfileRunOperatorReceiptSchema>;
|
|
87
|
-
export declare const parseSimfileRunOperatorInput: (raw: unknown) => SimfileRunOperatorInput;
|
|
88
|
-
export declare const parseSimfileRunOperatorResolution: (raw: unknown) => SimfileRunOperatorResolution;
|
|
89
|
-
export declare const parseSimfileRunOperatorReceipt: (raw: unknown) => SimfileRunOperatorReceipt;
|
|
90
|
-
export declare const createSimfileRunOperatorRequestDigest: (raw: unknown) => `sha256:${string}`;
|
|
91
|
-
export declare const resolveSimfileRunOperatorInput: (input: {
|
|
92
|
-
readonly request: unknown;
|
|
93
|
-
readonly moltnet_release: unknown;
|
|
94
|
-
}) => SimfileRunOperatorResolution;
|
|
95
|
-
export declare const createSimfileRunOperatorReceipt: (input: {
|
|
96
|
-
readonly resolution: unknown;
|
|
97
|
-
readonly selected_target: SelectedTargetReceipt;
|
|
98
|
-
}) => SimfileRunOperatorReceipt;
|
|
99
|
-
export declare const verifySimfileRunOperatorReceipt: (input: {
|
|
100
|
-
readonly receipt: unknown;
|
|
101
|
-
readonly resolution: unknown;
|
|
102
|
-
readonly selected_target: SelectedTargetReceipt;
|
|
103
|
-
}) => SimfileRunOperatorReceipt;
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { z } from "zod";
|
|
4
|
-
import { assertOrdinaryJsonGraph, selectedTargetReceiptSchema } from "../target/contracts.js";
|
|
5
|
-
export const SIMFILE_RUN_OPERATOR_INPUT_VERSION = "spawnfile.simfile-run-operator-input.v1";
|
|
6
|
-
export const SIMFILE_RUN_OPERATOR_RESOLUTION_VERSION = "spawnfile.simfile-run-operator-resolution.v1";
|
|
7
|
-
export const SIMFILE_RUN_OPERATOR_RECEIPT_VERSION = "spawnfile.simfile-run-operator-receipt.v1";
|
|
8
|
-
const identifier = z.string().regex(/^[a-z][a-z0-9_-]{0,63}$/u);
|
|
9
|
-
const runId = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/u);
|
|
10
|
-
const digest = z.string().regex(/^sha256:[a-f0-9]{64}$/u);
|
|
11
|
-
const revision = z.string().regex(/^[a-f0-9]{40}$/u);
|
|
12
|
-
const releaseVersion = z.string().regex(/^v?\d+\.\d+\.\d+(?:-\d+-g[a-f0-9]{7,40})?$/u)
|
|
13
|
-
.refine((value) => value !== "latest");
|
|
14
|
-
const absoluteRunRoot = z.string().max(4_096).refine((value) => path.isAbsolute(value) && path.normalize(value) === value && value !== path.parse(value).root);
|
|
15
|
-
export const simfileRunOperatorInputSchema = z.object({
|
|
16
|
-
auth_profile: identifier,
|
|
17
|
-
moltnet_release: z.object({
|
|
18
|
-
directory_transport: z.literal("operator-path"),
|
|
19
|
-
required_capability: z.literal("pi-bridge"),
|
|
20
|
-
stamp_version: z.literal("spawnfile.moltnet-release-stamp.v1")
|
|
21
|
-
}).strict(),
|
|
22
|
-
run_id: runId,
|
|
23
|
-
run_root: absoluteRunRoot,
|
|
24
|
-
target_config_transport: z.literal("stdin"),
|
|
25
|
-
target_selector: identifier,
|
|
26
|
-
version: z.literal(SIMFILE_RUN_OPERATOR_INPUT_VERSION)
|
|
27
|
-
}).strict().superRefine((value, context) => {
|
|
28
|
-
if (path.basename(value.run_root) !== value.run_id) {
|
|
29
|
-
context.addIssue({ code: z.ZodIssueCode.custom, message: "run_root must be owned by run_id" });
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
export const simfileRunMoltnetIdentitySchema = z.object({
|
|
33
|
-
architecture: z.enum(["amd64", "arm64"]),
|
|
34
|
-
asset: z.string().regex(/^moltnet_linux_(?:amd64|arm64)\.tar\.gz$/u),
|
|
35
|
-
asset_sha256: digest,
|
|
36
|
-
capabilities: z.tuple([z.literal("pi-bridge")]),
|
|
37
|
-
release_version: releaseVersion,
|
|
38
|
-
source_revision: revision,
|
|
39
|
-
version: z.literal("spawnfile.moltnet-release-identity.v1")
|
|
40
|
-
}).strict().superRefine((value, context) => {
|
|
41
|
-
if (value.asset !== `moltnet_linux_${value.architecture}.tar.gz`) {
|
|
42
|
-
context.addIssue({ code: z.ZodIssueCode.custom, message: "Moltnet asset architecture mismatch" });
|
|
43
|
-
}
|
|
44
|
-
const described = value.release_version.match(/-g([a-f0-9]{7,40})$/u)?.[1];
|
|
45
|
-
if (described && !value.source_revision.startsWith(described)) {
|
|
46
|
-
context.addIssue({ code: z.ZodIssueCode.custom, message: "Moltnet source revision mismatch" });
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
const runRootsSchema = z.object({
|
|
50
|
-
cache: absoluteRunRoot,
|
|
51
|
-
evidence: absoluteRunRoot,
|
|
52
|
-
journal: absoluteRunRoot,
|
|
53
|
-
output: absoluteRunRoot
|
|
54
|
-
}).strict();
|
|
55
|
-
export const simfileRunOperatorResolutionSchema = z.object({
|
|
56
|
-
auth_profile: identifier,
|
|
57
|
-
moltnet_release: simfileRunMoltnetIdentitySchema,
|
|
58
|
-
request_digest: digest,
|
|
59
|
-
roots: runRootsSchema,
|
|
60
|
-
roots_digest: digest,
|
|
61
|
-
run_id: runId,
|
|
62
|
-
target_selector: identifier,
|
|
63
|
-
version: z.literal(SIMFILE_RUN_OPERATOR_RESOLUTION_VERSION)
|
|
64
|
-
}).strict();
|
|
65
|
-
export const simfileRunOperatorReceiptSchema = z.object({
|
|
66
|
-
auth_profile: identifier,
|
|
67
|
-
moltnet_release: simfileRunMoltnetIdentitySchema,
|
|
68
|
-
request_digest: digest,
|
|
69
|
-
resolution_digest: digest,
|
|
70
|
-
roots_digest: digest,
|
|
71
|
-
run_id: runId,
|
|
72
|
-
selected_target: selectedTargetReceiptSchema,
|
|
73
|
-
target_selector: identifier,
|
|
74
|
-
version: z.literal(SIMFILE_RUN_OPERATOR_RECEIPT_VERSION)
|
|
75
|
-
}).strict();
|
|
76
|
-
const canonical = (value) => {
|
|
77
|
-
if (Array.isArray(value))
|
|
78
|
-
return `[${value.map(canonical).join(",")}]`;
|
|
79
|
-
if (value !== null && typeof value === "object") {
|
|
80
|
-
const record = value;
|
|
81
|
-
return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${canonical(record[key])}`).join(",")}}`;
|
|
82
|
-
}
|
|
83
|
-
return JSON.stringify(value);
|
|
84
|
-
};
|
|
85
|
-
const hash = (domain, value) => `sha256:${createHash("sha256").update(`${domain}\0${canonical(value)}`).digest("hex")}`;
|
|
86
|
-
const parse = (schema, raw) => {
|
|
87
|
-
assertOrdinaryJsonGraph(raw);
|
|
88
|
-
return schema.parse(raw);
|
|
89
|
-
};
|
|
90
|
-
export const parseSimfileRunOperatorInput = (raw) => parse(simfileRunOperatorInputSchema, raw);
|
|
91
|
-
export const parseSimfileRunOperatorResolution = (raw) => parse(simfileRunOperatorResolutionSchema, raw);
|
|
92
|
-
export const parseSimfileRunOperatorReceipt = (raw) => parse(simfileRunOperatorReceiptSchema, raw);
|
|
93
|
-
export const createSimfileRunOperatorRequestDigest = (raw) => hash(SIMFILE_RUN_OPERATOR_INPUT_VERSION, parseSimfileRunOperatorInput(raw));
|
|
94
|
-
export const resolveSimfileRunOperatorInput = (input) => {
|
|
95
|
-
const request = parseSimfileRunOperatorInput(input.request);
|
|
96
|
-
const moltnetRelease = parse(simfileRunMoltnetIdentitySchema, input.moltnet_release);
|
|
97
|
-
const roots = {
|
|
98
|
-
cache: path.join(request.run_root, "cache"),
|
|
99
|
-
evidence: path.join(request.run_root, "evidence"),
|
|
100
|
-
journal: path.join(request.run_root, "journal"),
|
|
101
|
-
output: path.join(request.run_root, "output")
|
|
102
|
-
};
|
|
103
|
-
return parseSimfileRunOperatorResolution({
|
|
104
|
-
auth_profile: request.auth_profile,
|
|
105
|
-
moltnet_release: moltnetRelease,
|
|
106
|
-
request_digest: createSimfileRunOperatorRequestDigest(request),
|
|
107
|
-
roots,
|
|
108
|
-
roots_digest: hash("spawnfile.simfile-run-roots.v1", roots),
|
|
109
|
-
run_id: request.run_id,
|
|
110
|
-
target_selector: request.target_selector,
|
|
111
|
-
version: SIMFILE_RUN_OPERATOR_RESOLUTION_VERSION
|
|
112
|
-
});
|
|
113
|
-
};
|
|
114
|
-
export const createSimfileRunOperatorReceipt = (input) => {
|
|
115
|
-
const resolution = parseSimfileRunOperatorResolution(input.resolution);
|
|
116
|
-
const selectedTarget = parse(selectedTargetReceiptSchema, input.selected_target);
|
|
117
|
-
return parseSimfileRunOperatorReceipt({
|
|
118
|
-
auth_profile: resolution.auth_profile,
|
|
119
|
-
moltnet_release: resolution.moltnet_release,
|
|
120
|
-
request_digest: resolution.request_digest,
|
|
121
|
-
resolution_digest: hash(SIMFILE_RUN_OPERATOR_RESOLUTION_VERSION, resolution),
|
|
122
|
-
roots_digest: resolution.roots_digest,
|
|
123
|
-
run_id: resolution.run_id,
|
|
124
|
-
selected_target: selectedTarget,
|
|
125
|
-
target_selector: resolution.target_selector,
|
|
126
|
-
version: SIMFILE_RUN_OPERATOR_RECEIPT_VERSION
|
|
127
|
-
});
|
|
128
|
-
};
|
|
129
|
-
export const verifySimfileRunOperatorReceipt = (input) => {
|
|
130
|
-
const receipt = parseSimfileRunOperatorReceipt(input.receipt);
|
|
131
|
-
const expected = createSimfileRunOperatorReceipt({
|
|
132
|
-
resolution: input.resolution,
|
|
133
|
-
selected_target: input.selected_target
|
|
134
|
-
});
|
|
135
|
-
if (canonical(receipt) !== canonical(expected)) {
|
|
136
|
-
throw new TypeError("Simfile run operator receipt correlation is invalid");
|
|
137
|
-
}
|
|
138
|
-
return receipt;
|
|
139
|
-
};
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { type OpaqueTargetHandle } from "./contracts.js";
|
|
2
|
-
import { type DockerResourceExecutor, type DockerResourceSpec } from "./dockerResourcesProvider.js";
|
|
3
|
-
import { type WorldServiceAuthorityStore } from "./dockerWorldServiceStore.js";
|
|
4
|
-
import { type OrganizationAttachmentAuthorityStore } from "./organizationAttachmentStore.js";
|
|
5
|
-
import { type EvidenceExportAuthorityStore } from "./evidenceExportStore.js";
|
|
6
|
-
export declare const canonicalCleanupBindings: (input: {
|
|
7
|
-
readonly attachmentOperationHandle: OpaqueTargetHandle;
|
|
8
|
-
readonly attachmentRequestDigest: string;
|
|
9
|
-
readonly descriptorDigest: string;
|
|
10
|
-
readonly evidence: DockerResourceSpec;
|
|
11
|
-
readonly evidenceOperationHandle: OpaqueTargetHandle;
|
|
12
|
-
readonly evidenceRequestDigest: string;
|
|
13
|
-
readonly network: DockerResourceSpec;
|
|
14
|
-
readonly networkOperationHandle: OpaqueTargetHandle;
|
|
15
|
-
readonly networkRequestDigest: string;
|
|
16
|
-
readonly runId: string;
|
|
17
|
-
readonly secretHandle: OpaqueTargetHandle;
|
|
18
|
-
readonly selected: {
|
|
19
|
-
readonly fingerprint: string;
|
|
20
|
-
readonly handle: OpaqueTargetHandle;
|
|
21
|
-
};
|
|
22
|
-
readonly worldOperationHandle: OpaqueTargetHandle;
|
|
23
|
-
readonly worldRequestDigest: string;
|
|
24
|
-
}) => {
|
|
25
|
-
attachment: import("./organizationAttachmentStore.js").OrganizationAttachmentBinding;
|
|
26
|
-
world: import("./dockerWorldServiceStore.js").WorldServiceBinding;
|
|
27
|
-
};
|
|
28
|
-
export declare const canonicalCleanupScenario: (input: Parameters<typeof canonicalCleanupBindings>[0]) => {
|
|
29
|
-
attachmentExecutor: (_file: string, args: string[]) => Promise<{
|
|
30
|
-
stderr: string;
|
|
31
|
-
stdout: string;
|
|
32
|
-
}>;
|
|
33
|
-
bindings: {
|
|
34
|
-
attachment: import("./organizationAttachmentStore.js").OrganizationAttachmentBinding;
|
|
35
|
-
world: import("./dockerWorldServiceStore.js").WorldServiceBinding;
|
|
36
|
-
};
|
|
37
|
-
calls: {
|
|
38
|
-
attachment: string[][];
|
|
39
|
-
secret: string[][];
|
|
40
|
-
world: string[][];
|
|
41
|
-
};
|
|
42
|
-
drift: {
|
|
43
|
-
attachment: import("./organizationAttachmentStore.js").OrganizationAttachmentBinding;
|
|
44
|
-
world: import("./dockerWorldServiceStore.js").WorldServiceBinding;
|
|
45
|
-
};
|
|
46
|
-
secretExecutor: (_file: string, args: string[]) => Promise<never>;
|
|
47
|
-
worldExecutor: (_file: string, args: string[]) => Promise<never>;
|
|
48
|
-
};
|
|
49
|
-
export declare const cleanupResourceExecutor: (specs: DockerResourceSpec[]) => {
|
|
50
|
-
calls: string[][];
|
|
51
|
-
executor: DockerResourceExecutor;
|
|
52
|
-
present: Set<string>;
|
|
53
|
-
};
|
|
54
|
-
export declare const cleanupAuthorityStores: (input?: {
|
|
55
|
-
readonly admission?: unknown;
|
|
56
|
-
readonly attachment?: unknown;
|
|
57
|
-
readonly index?: unknown;
|
|
58
|
-
readonly world?: unknown;
|
|
59
|
-
}) => {
|
|
60
|
-
attachmentStore: OrganizationAttachmentAuthorityStore;
|
|
61
|
-
evidenceExportStore: EvidenceExportAuthorityStore;
|
|
62
|
-
loads: {
|
|
63
|
-
attachment: number;
|
|
64
|
-
world: number;
|
|
65
|
-
};
|
|
66
|
-
worldStore: WorldServiceAuthorityStore;
|
|
67
|
-
};
|