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,279 @@
|
|
|
1
|
+
// Not re-exported by src/ledger/index.js's barrel (see conformance.ts, which
|
|
2
|
+
// also imports it directly from principal.js rather than through the
|
|
3
|
+
// barrel); mirrored here for the same reason.
|
|
4
|
+
import { isAuthenticatedPrincipal } from "../ledger/principal.js";
|
|
5
|
+
import { CONTROL_TOKEN_ENV, DENIAL_MINIMUMS_BY_TYPE, escapeRegExp, FAIL_CLOSED_MARKER, literalAssignmentPattern, missingRequiredKeys, notApplicable, statusFor } from "./checksShared.js";
|
|
6
|
+
/**
|
|
7
|
+
* Check 1 — `causal.principals-authenticated` (run). Grounded in
|
|
8
|
+
* `runRealConformance` reporting zero issues over the ledger jsonl, and in
|
|
9
|
+
* `isAuthenticatedPrincipal` (src/ledger/principal.ts:87) rejecting a bare,
|
|
10
|
+
* literal-`anonymous`, or `system:moltnet.anonymous` principal
|
|
11
|
+
* (principal.ts:45,93). Fails on either a nonempty `issues` list (any
|
|
12
|
+
* schema/seq/payload/principal/chain problem `runRealConformance` found) or
|
|
13
|
+
* an event whose `principal_id` is not authenticated — evidence names the
|
|
14
|
+
* offending event and principal directly rather than relying on issue-
|
|
15
|
+
* message string matching.
|
|
16
|
+
*/
|
|
17
|
+
export const checkPrincipalsAuthenticated = (evidence) => {
|
|
18
|
+
const id = "causal.principals-authenticated";
|
|
19
|
+
const category = "causal";
|
|
20
|
+
const severity = "critical";
|
|
21
|
+
if (!evidence) {
|
|
22
|
+
return notApplicable(id, category, severity, "no run artifacts provided");
|
|
23
|
+
}
|
|
24
|
+
const offendingPrincipals = evidence.events
|
|
25
|
+
.filter((event) => !isAuthenticatedPrincipal(event.principal_id))
|
|
26
|
+
.map((event) => ({ event_id: event.event_id, principal_id: event.principal_id }));
|
|
27
|
+
return {
|
|
28
|
+
category,
|
|
29
|
+
evidence: {
|
|
30
|
+
eventCount: evidence.eventCount,
|
|
31
|
+
issueCount: evidence.issues.length,
|
|
32
|
+
offendingPrincipals,
|
|
33
|
+
sources: evidence.sources
|
|
34
|
+
},
|
|
35
|
+
id,
|
|
36
|
+
severity,
|
|
37
|
+
status: statusFor(evidence.issues.length === 0 && offendingPrincipals.length === 0)
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Check 2 — `causal.denied-ledger-visible` (run). Grounded in
|
|
42
|
+
* `DEFAULT_PAYLOAD_MINIMUMS` (conformance.ts:67-69) for every `*.denied`
|
|
43
|
+
* type: any such event that appears must carry its required keys. Also
|
|
44
|
+
* detects a silent drop — this fixture's `expected-denials.json` asserted a
|
|
45
|
+
* denial type occurred, but no matching `*.denied` event exists in the
|
|
46
|
+
* ledger — which fails even when every event that *is* present is well
|
|
47
|
+
* shaped.
|
|
48
|
+
*
|
|
49
|
+
* `not_applicable`, never `pass`, when there is no `expected-denials.json`
|
|
50
|
+
* manifest AND zero `*.denied` events are present in the ledger — with
|
|
51
|
+
* neither an assertion to check against nor an event to inspect, there is
|
|
52
|
+
* nothing here to actually assess (see AGENTS.md's cardinal rule: absent
|
|
53
|
+
* evidence is `not_applicable`, never `pass`). A manifest being present is
|
|
54
|
+
* enough to keep evaluating (silent-drop detection needs no observed event
|
|
55
|
+
* to fire), and any `*.denied` event that *is* present is always
|
|
56
|
+
* key-validated regardless of manifest presence.
|
|
57
|
+
*/
|
|
58
|
+
export const checkDeniedLedgerVisible = (evidence) => {
|
|
59
|
+
const id = "causal.denied-ledger-visible";
|
|
60
|
+
const category = "causal";
|
|
61
|
+
const severity = "high";
|
|
62
|
+
if (!evidence) {
|
|
63
|
+
return notApplicable(id, category, severity, "no run artifacts provided");
|
|
64
|
+
}
|
|
65
|
+
const presentDenials = evidence.events.filter((event) => DENIAL_MINIMUMS_BY_TYPE.has(event.type));
|
|
66
|
+
if (!evidence.manifestPresent && presentDenials.length === 0) {
|
|
67
|
+
return notApplicable(id, category, severity, "no denial events and no expected-denials manifest; cannot assess silent-drop");
|
|
68
|
+
}
|
|
69
|
+
const malformed = presentDenials
|
|
70
|
+
.map((event) => ({
|
|
71
|
+
event_id: event.event_id,
|
|
72
|
+
/* v8 ignore next -- presentDenials already filtered by DENIAL_MINIMUMS_BY_TYPE.has(event.type), so .get() always hits; defensive fallback only */
|
|
73
|
+
missingKeys: missingRequiredKeys(event, DENIAL_MINIMUMS_BY_TYPE.get(event.type) ?? []),
|
|
74
|
+
type: event.type
|
|
75
|
+
}))
|
|
76
|
+
.filter((entry) => entry.missingKeys.length > 0);
|
|
77
|
+
const presentTypes = new Set(presentDenials.map((event) => event.type));
|
|
78
|
+
const silentlyDropped = evidence.expectedDenialTypes.filter((type) => !presentTypes.has(type));
|
|
79
|
+
return {
|
|
80
|
+
category,
|
|
81
|
+
evidence: {
|
|
82
|
+
deniedEventCount: presentDenials.length,
|
|
83
|
+
expectedDenialTypes: evidence.expectedDenialTypes,
|
|
84
|
+
malformed,
|
|
85
|
+
silentlyDropped
|
|
86
|
+
},
|
|
87
|
+
id,
|
|
88
|
+
severity,
|
|
89
|
+
status: statusFor(malformed.length === 0 && silentlyDropped.length === 0)
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Check 3 — `control.wake-fail-closed` (static). Grounded in
|
|
94
|
+
* appControlSource.ts:31-47 (B62 Option B): the operator wake endpoint must
|
|
95
|
+
* fail closed when `SPAWNFILE_PI_CONTROL_TOKEN` is unset, never treat an
|
|
96
|
+
* unset token as "auth disabled". Passes only when the compiled Pi app
|
|
97
|
+
* source references the token env, contains the verbatim fail-closed
|
|
98
|
+
* rejection text, and never bakes a literal default value for it.
|
|
99
|
+
*/
|
|
100
|
+
export const checkControlWakeFailClosed = (evidence) => {
|
|
101
|
+
const combined = `${evidence.dockerfile}\n${evidence.entrypoint}\n${evidence.piAppSource}`;
|
|
102
|
+
const tokenReferenced = combined.includes(CONTROL_TOKEN_ENV);
|
|
103
|
+
const failClosedMarkerFound = evidence.piAppSource.includes(FAIL_CLOSED_MARKER);
|
|
104
|
+
const bakedDefaultFound = literalAssignmentPattern(CONTROL_TOKEN_ENV).test(combined);
|
|
105
|
+
return {
|
|
106
|
+
category: "control",
|
|
107
|
+
evidence: {
|
|
108
|
+
bakedDefaultFound,
|
|
109
|
+
envSourceList: [CONTROL_TOKEN_ENV],
|
|
110
|
+
failClosedMarkerFound,
|
|
111
|
+
tokenReferenced
|
|
112
|
+
},
|
|
113
|
+
id: "control.wake-fail-closed",
|
|
114
|
+
severity: "critical",
|
|
115
|
+
status: statusFor(tokenReferenced && failClosedMarkerFound && !bakedDefaultFound)
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Check 4 — `container.no-baked-secrets` (static). Grounded in
|
|
120
|
+
* containerEntrypointRender.ts:232-233: every required secret is emitted as
|
|
121
|
+
* a `require_env <name>` runtime check, never a literal value baked into the
|
|
122
|
+
* Dockerfile build layer or the entrypoint script. Passes only when every
|
|
123
|
+
* `requiredSecrets` name is `require_env`-guarded in the entrypoint AND no
|
|
124
|
+
* name is ever followed by a literal (non-`$`) assignment anywhere in the
|
|
125
|
+
* compiled Dockerfile/entrypoint text.
|
|
126
|
+
*/
|
|
127
|
+
export const checkContainerNoBakedSecrets = (evidence) => {
|
|
128
|
+
const combined = `${evidence.dockerfile}\n${evidence.entrypoint}`;
|
|
129
|
+
const missingRequireEnv = evidence.requiredSecrets.filter((name) => !new RegExp(`require_env\\s+['"]${escapeRegExp(name)}['"]`, "u").test(evidence.entrypoint));
|
|
130
|
+
const bakedLiteralValues = evidence.requiredSecrets.filter((name) => literalAssignmentPattern(name).test(combined));
|
|
131
|
+
return {
|
|
132
|
+
category: "container",
|
|
133
|
+
evidence: {
|
|
134
|
+
bakedLiteralValues,
|
|
135
|
+
missingRequireEnv,
|
|
136
|
+
requiredSecrets: evidence.requiredSecrets
|
|
137
|
+
},
|
|
138
|
+
id: "container.no-baked-secrets",
|
|
139
|
+
severity: "critical",
|
|
140
|
+
status: statusFor(missingRequireEnv.length === 0 && bakedLiteralValues.length === 0)
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Check 5 — `memory.cross-scope-capability` (run). Grounded in mneme's
|
|
145
|
+
* `mneme.cap.system.v1` foreign-scope escalation capability
|
|
146
|
+
* (ecosystem/mneme/src/policy/capability.ts:28) and the
|
|
147
|
+
* `memory.write.denied` payload minimum (conformance.ts:68:
|
|
148
|
+
* `requested_scope`, `reason`). `mneme.cap.system.v1` is carried as an
|
|
149
|
+
* informational `grounding` string only — this function performs no static
|
|
150
|
+
* check against mneme's source, so the status is never driven by that
|
|
151
|
+
* literal.
|
|
152
|
+
*
|
|
153
|
+
* `not_applicable`, never `pass`, when no `memory.write.denied` event is
|
|
154
|
+
* present in the ledger: enforcement was never exercised in this run, and
|
|
155
|
+
* "nothing to violate" is not evidence the capability guard works (see
|
|
156
|
+
* AGENTS.md). When one or more denial events are present, every one must
|
|
157
|
+
* carry both `requested_scope` and `reason` to pass.
|
|
158
|
+
*/
|
|
159
|
+
export const checkMemoryCrossScopeCapability = (evidence) => {
|
|
160
|
+
const id = "memory.cross-scope-capability";
|
|
161
|
+
const category = "memory";
|
|
162
|
+
const severity = "high";
|
|
163
|
+
if (!evidence) {
|
|
164
|
+
return notApplicable(id, category, severity, "no run artifacts provided");
|
|
165
|
+
}
|
|
166
|
+
const denials = evidence.events.filter((event) => event.type === "memory.write.denied");
|
|
167
|
+
if (denials.length === 0) {
|
|
168
|
+
return {
|
|
169
|
+
category,
|
|
170
|
+
evidence: {
|
|
171
|
+
deniedEventCount: 0,
|
|
172
|
+
reason: "no memory.write.denied events observed; cross-scope enforcement was not exercised in this run"
|
|
173
|
+
},
|
|
174
|
+
id,
|
|
175
|
+
severity,
|
|
176
|
+
status: "not_applicable"
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/* v8 ignore next -- "memory.write.denied" is always in DEFAULT_PAYLOAD_MINIMUMS (conformance.ts:68); defensive fallback only */
|
|
180
|
+
const requiredKeys = DENIAL_MINIMUMS_BY_TYPE.get("memory.write.denied") ?? [];
|
|
181
|
+
const malformed = denials
|
|
182
|
+
.map((event) => ({
|
|
183
|
+
event_id: event.event_id,
|
|
184
|
+
missingKeys: missingRequiredKeys(event, requiredKeys),
|
|
185
|
+
requested_scope: event.payload.requested_scope,
|
|
186
|
+
reason: event.payload.reason
|
|
187
|
+
}))
|
|
188
|
+
.filter((entry) => entry.missingKeys.length > 0);
|
|
189
|
+
return {
|
|
190
|
+
category,
|
|
191
|
+
evidence: {
|
|
192
|
+
deniedEventCount: denials.length,
|
|
193
|
+
grounding: "mneme.cap.system.v1",
|
|
194
|
+
malformed
|
|
195
|
+
},
|
|
196
|
+
id,
|
|
197
|
+
severity,
|
|
198
|
+
status: statusFor(malformed.length === 0)
|
|
199
|
+
};
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* Check 6 — `network.non-member-write-denied` (run). Grounded in moltnet's
|
|
203
|
+
* `writeForbiddenError` (ecosystem/moltnet/internal/rooms/access_policy.go:23,71-72)
|
|
204
|
+
* and the `message.denied` payload minimum (conformance.ts:67: `target`,
|
|
205
|
+
* `reason`, `content_sha256`). The `writeForbiddenError` path is carried as
|
|
206
|
+
* an informational `grounding` string only — this function performs no
|
|
207
|
+
* static check against moltnet's source, so the status is never driven by
|
|
208
|
+
* that literal.
|
|
209
|
+
*
|
|
210
|
+
* `not_applicable`, never `pass`, when no `message.denied` event is present:
|
|
211
|
+
* non-member-write enforcement was never exercised in this run, which is not
|
|
212
|
+
* evidence it works (see AGENTS.md). When one or more denial events are
|
|
213
|
+
* present, every one must carry `target`, `reason`, and `content_sha256` to
|
|
214
|
+
* pass.
|
|
215
|
+
*/
|
|
216
|
+
export const checkNonMemberWriteDenied = (evidence) => {
|
|
217
|
+
const id = "network.non-member-write-denied";
|
|
218
|
+
const category = "network";
|
|
219
|
+
const severity = "high";
|
|
220
|
+
if (!evidence) {
|
|
221
|
+
return notApplicable(id, category, severity, "no run artifacts provided");
|
|
222
|
+
}
|
|
223
|
+
const denials = evidence.events.filter((event) => event.type === "message.denied");
|
|
224
|
+
if (denials.length === 0) {
|
|
225
|
+
return {
|
|
226
|
+
category,
|
|
227
|
+
evidence: {
|
|
228
|
+
deniedEventCount: 0,
|
|
229
|
+
reason: "no message.denied events observed; non-member write enforcement was not exercised in this run"
|
|
230
|
+
},
|
|
231
|
+
id,
|
|
232
|
+
severity,
|
|
233
|
+
status: "not_applicable"
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
/* v8 ignore next -- "message.denied" is always in DEFAULT_PAYLOAD_MINIMUMS (conformance.ts:67); defensive fallback only */
|
|
237
|
+
const requiredKeys = DENIAL_MINIMUMS_BY_TYPE.get("message.denied") ?? [];
|
|
238
|
+
const malformed = denials
|
|
239
|
+
.map((event) => ({
|
|
240
|
+
event_id: event.event_id,
|
|
241
|
+
missingKeys: missingRequiredKeys(event, requiredKeys),
|
|
242
|
+
target: event.payload.target,
|
|
243
|
+
reason: event.payload.reason
|
|
244
|
+
}))
|
|
245
|
+
.filter((entry) => entry.missingKeys.length > 0);
|
|
246
|
+
return {
|
|
247
|
+
category,
|
|
248
|
+
evidence: {
|
|
249
|
+
deniedEventCount: denials.length,
|
|
250
|
+
grounding: "ecosystem/moltnet/internal/rooms/access_policy.go writeForbiddenError",
|
|
251
|
+
malformed
|
|
252
|
+
},
|
|
253
|
+
id,
|
|
254
|
+
severity,
|
|
255
|
+
status: statusFor(malformed.length === 0)
|
|
256
|
+
};
|
|
257
|
+
};
|
|
258
|
+
/**
|
|
259
|
+
* Check 7 — `provenance.signed-report` — always `not_applicable`. Report
|
|
260
|
+
* signing/provenance is deferred to B66; this audit generator has no
|
|
261
|
+
* signing input to check and must never claim it. Takes no evidence input
|
|
262
|
+
* on purpose: there is nothing yet for it to inspect.
|
|
263
|
+
*/
|
|
264
|
+
export const checkProvenanceSignedReport = () => notApplicable("provenance.signed-report", "provenance", "medium", "not yet enforced (see B66)");
|
|
265
|
+
/**
|
|
266
|
+
* The seven check ids in the order `generateAudit.ts` assembles
|
|
267
|
+
* `AuditReport.checks` in (each check function above takes a different
|
|
268
|
+
* evidence shape, so this is a documentation/ordering list only — not a
|
|
269
|
+
* uniformly-callable array).
|
|
270
|
+
*/
|
|
271
|
+
export const AUDIT_CHECK_IDS = [
|
|
272
|
+
"causal.principals-authenticated",
|
|
273
|
+
"causal.denied-ledger-visible",
|
|
274
|
+
"control.wake-fail-closed",
|
|
275
|
+
"container.no-baked-secrets",
|
|
276
|
+
"memory.cross-scope-capability",
|
|
277
|
+
"network.non-member-write-denied",
|
|
278
|
+
"provenance.signed-report"
|
|
279
|
+
];
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evidence input types and small pure helpers shared by every check function
|
|
3
|
+
* in checks.ts. Split out purely to keep checks.ts under the repo's 400-line
|
|
4
|
+
* cap (see the repo CLAUDE.md) — nothing here is
|
|
5
|
+
* a different layer or a different contract, it is checks.ts's own
|
|
6
|
+
* plumbing. No I/O, same as checks.ts itself.
|
|
7
|
+
*/
|
|
8
|
+
import type { CausalEvent, ConformanceIssue } from "../ledger/index.js";
|
|
9
|
+
import type { AuditCheck, AuditCheckCategory, AuditCheckSeverity, AuditCheckStatus } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Ledger evidence handed to every run-mode check (1, 2, 5, 6). Built once by
|
|
12
|
+
* `generateAudit.ts` from `runRealConformance` (offline-mode: an injected
|
|
13
|
+
* `exec` that reads fixture files instead of spawning a sibling process —
|
|
14
|
+
* see generateAudit.ts) plus the audit's own `expected-denials.json`
|
|
15
|
+
* manifest. `undefined` means "no run artifacts provided" — every run-mode
|
|
16
|
+
* check below returns `not_applicable` in that case, and never `pass`.
|
|
17
|
+
*/
|
|
18
|
+
export interface RunLedgerEvidence {
|
|
19
|
+
eventCount: number;
|
|
20
|
+
events: CausalEvent[];
|
|
21
|
+
/** Denial types this fixture's `expected-denials.json` asserts a `*.denied` event must exist for (silent-drop detection, check 2). */
|
|
22
|
+
expectedDenialTypes: string[];
|
|
23
|
+
/** Every schema/seq/payload-minimum/principal-grammar/chain-stitch issue `runRealConformance` reported — reused, never recomputed. */
|
|
24
|
+
issues: ConformanceIssue[];
|
|
25
|
+
/** Whether the ledger directory actually contained an `expected-denials.json` file — distinct from `expectedDenialTypes.length === 0`, which is also true for a *present-but-empty* manifest. Check 2 uses this to tell "no manifest, so silent-drop cannot be assessed" apart from "a manifest exists and asserts nothing". */
|
|
26
|
+
manifestPresent: boolean;
|
|
27
|
+
sources: string[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Compiled-output evidence handed to every static check (3, 4). Plain
|
|
31
|
+
* strings, not paths — `generateAudit.ts` owns the file reads, these
|
|
32
|
+
* functions stay pure. Any file that does not exist in the compiled output
|
|
33
|
+
* directory reads as an empty string; that is itself audit-worthy (absence
|
|
34
|
+
* of proof is not proof of enforcement), never treated as not_applicable —
|
|
35
|
+
* unlike run-mode checks, the compiled-output directory is a required
|
|
36
|
+
* `generateAudit` input, never optional.
|
|
37
|
+
*/
|
|
38
|
+
export interface StaticContainerEvidence {
|
|
39
|
+
/** Rendered Dockerfile text (containerArtifactsRender.ts's `renderDockerfile` output shape). */
|
|
40
|
+
dockerfile: string;
|
|
41
|
+
/** Rendered entrypoint.sh text (containerEntrypointRender.ts's `renderEntrypoint` output shape). */
|
|
42
|
+
entrypoint: string;
|
|
43
|
+
/** Rendered generated Pi app source, if this compile targeted Pi (appControlSource.ts's `renderPiControlSource` output is inlined into it). Empty string if the compiled output has no such file. */
|
|
44
|
+
piAppSource: string;
|
|
45
|
+
/** Secret env var NAMES this compile declared required (containerEntrypointRender.ts's `renderEntrypoint(runtimePlans, requiredSecrets, ...)` second argument) — never the values. */
|
|
46
|
+
requiredSecrets: string[];
|
|
47
|
+
}
|
|
48
|
+
export declare const notApplicable: (id: string, category: AuditCheckCategory, severity: AuditCheckSeverity, reason: string) => AuditCheck;
|
|
49
|
+
export declare const statusFor: (ok: boolean) => AuditCheckStatus;
|
|
50
|
+
/** `conformance.ts`'s `checkPayloadMinimums` is not exported (it is that module's private helper); this is the same one-line key-presence rule applied directly to already-parsed events, not a reimplementation of `validateConformanceSources`'s schema/seq/stitch pipeline. */
|
|
51
|
+
export declare const missingRequiredKeys: (event: CausalEvent, requiredKeys: string[]) => string[];
|
|
52
|
+
export declare const DENIAL_MINIMUMS_BY_TYPE: Map<string, string[]>;
|
|
53
|
+
/** Env name gating the operator-only wake endpoint (appControlSource.ts:45, `CONTROL_TOKEN_ENV`). */
|
|
54
|
+
export declare const CONTROL_TOKEN_ENV = "SPAWNFILE_PI_CONTROL_TOKEN";
|
|
55
|
+
/**
|
|
56
|
+
* Verbatim source-text substring of appControlSource.ts:75's fail-closed
|
|
57
|
+
* rejection branch (`return { ok: false, reason: "no operator token
|
|
58
|
+
* configured (" + CONTROL_TOKEN_ENV + " is unset)" }`). The literal string
|
|
59
|
+
* checked here is only the first concatenated chunk — the source
|
|
60
|
+
* concatenates `CONTROL_TOKEN_ENV` in with `+`, so the fully-assembled
|
|
61
|
+
* runtime message never appears as one literal in the source text itself.
|
|
62
|
+
* Its presence is direct evidence the fail-closed branch was actually
|
|
63
|
+
* emitted, not paraphrased.
|
|
64
|
+
*/
|
|
65
|
+
export declare const FAIL_CLOSED_MARKER = "no operator token configured (";
|
|
66
|
+
export declare const escapeRegExp: (value: string) => string;
|
|
67
|
+
/**
|
|
68
|
+
* Matches a literal (non-`$`-expansion) shell/Dockerfile assignment
|
|
69
|
+
* `NAME=<value>` — never a `require_env 'NAME'` call (no `=` follows the
|
|
70
|
+
* name there at all) and never a same-name passthrough reference like
|
|
71
|
+
* `NAME="$NAME"`/`NAME=${NAME}` (an optional quote followed by `$`), both of
|
|
72
|
+
* which read the env rather than bake a value into it.
|
|
73
|
+
*/
|
|
74
|
+
export declare const literalAssignmentPattern: (name: string) => RegExp;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { DEFAULT_PAYLOAD_MINIMUMS } from "../ledger/index.js";
|
|
2
|
+
export const notApplicable = (id, category, severity, reason) => ({
|
|
3
|
+
category,
|
|
4
|
+
evidence: { reason },
|
|
5
|
+
id,
|
|
6
|
+
severity,
|
|
7
|
+
status: "not_applicable"
|
|
8
|
+
});
|
|
9
|
+
export const statusFor = (ok) => (ok ? "pass" : "fail");
|
|
10
|
+
/** `conformance.ts`'s `checkPayloadMinimums` is not exported (it is that module's private helper); this is the same one-line key-presence rule applied directly to already-parsed events, not a reimplementation of `validateConformanceSources`'s schema/seq/stitch pipeline. */
|
|
11
|
+
export const missingRequiredKeys = (event, requiredKeys) => requiredKeys.filter((key) => !(key in event.payload) || event.payload[key] === undefined);
|
|
12
|
+
export const DENIAL_MINIMUMS_BY_TYPE = new Map(DEFAULT_PAYLOAD_MINIMUMS.filter((minimum) => minimum.type.endsWith(".denied")).map((minimum) => [
|
|
13
|
+
minimum.type,
|
|
14
|
+
minimum.requiredKeys
|
|
15
|
+
]));
|
|
16
|
+
/** Env name gating the operator-only wake endpoint (appControlSource.ts:45, `CONTROL_TOKEN_ENV`). */
|
|
17
|
+
export const CONTROL_TOKEN_ENV = "SPAWNFILE_PI_CONTROL_TOKEN";
|
|
18
|
+
/**
|
|
19
|
+
* Verbatim source-text substring of appControlSource.ts:75's fail-closed
|
|
20
|
+
* rejection branch (`return { ok: false, reason: "no operator token
|
|
21
|
+
* configured (" + CONTROL_TOKEN_ENV + " is unset)" }`). The literal string
|
|
22
|
+
* checked here is only the first concatenated chunk — the source
|
|
23
|
+
* concatenates `CONTROL_TOKEN_ENV` in with `+`, so the fully-assembled
|
|
24
|
+
* runtime message never appears as one literal in the source text itself.
|
|
25
|
+
* Its presence is direct evidence the fail-closed branch was actually
|
|
26
|
+
* emitted, not paraphrased.
|
|
27
|
+
*/
|
|
28
|
+
export const FAIL_CLOSED_MARKER = "no operator token configured (";
|
|
29
|
+
export const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&");
|
|
30
|
+
/**
|
|
31
|
+
* Matches a literal (non-`$`-expansion) shell/Dockerfile assignment
|
|
32
|
+
* `NAME=<value>` — never a `require_env 'NAME'` call (no `=` follows the
|
|
33
|
+
* name there at all) and never a same-name passthrough reference like
|
|
34
|
+
* `NAME="$NAME"`/`NAME=${NAME}` (an optional quote followed by `$`), both of
|
|
35
|
+
* which read the env rather than bake a value into it.
|
|
36
|
+
*/
|
|
37
|
+
export const literalAssignmentPattern = (name) => new RegExp(`\\b${escapeRegExp(name)}=(?!['"]?\\$)\\S`, "u");
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AuditReport } from "./types.js";
|
|
2
|
+
export interface GenerateAuditOptions {
|
|
3
|
+
/** Required. The compiled-output directory (`spawnfile compile`'s emitted `Dockerfile`, `entrypoint.sh`, and — for a Pi-targeted compile — `runtime/app.mjs`). Static checks 3-4 always evaluate pass/fail against whatever is (or is not) present here; a missing file reads as an empty string, never a silent skip. */
|
|
4
|
+
compiledOutputDirPath: string;
|
|
5
|
+
/** Optional. A directory of `*.jsonl` ledger fixture files plus an optional `expected-denials.json` manifest (see checks.ts's `RunLedgerEvidence`). Omitting it (or an empty directory) is what makes run-mode checks 1, 2, 5, 6 report `not_applicable` — they never `pass` without it. */
|
|
6
|
+
ledgerDirPath?: string;
|
|
7
|
+
/** Injectable clock for `generated_at`, defaulting to `() => new Date()`. Every other report field is deterministic given the same inputs. */
|
|
8
|
+
now?: () => Date;
|
|
9
|
+
/** Secret env var NAMES this compile declared required (`requiredSecrets` passed to `renderEntrypoint`). Defaults to `[]`. */
|
|
10
|
+
requiredSecrets?: string[];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Orchestrator: the only I/O-performing function in src/audit/. Reads the
|
|
14
|
+
* compiled-output directory and, if given, the ledger directory, then runs
|
|
15
|
+
* the seven pure checks (checks.ts) and assembles the `AuditReport`.
|
|
16
|
+
* Deterministic across repeated calls with the same inputs except for
|
|
17
|
+
* `generated_at`.
|
|
18
|
+
*/
|
|
19
|
+
export declare const generateAudit: (options: GenerateAuditOptions) => Promise<AuditReport>;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { readdir } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileExists, readUtf8File } from "../filesystem/index.js";
|
|
4
|
+
import { runRealConformance } from "../ledger/index.js";
|
|
5
|
+
import { checkContainerNoBakedSecrets, checkControlWakeFailClosed, checkDeniedLedgerVisible, checkMemoryCrossScopeCapability, checkNonMemberWriteDenied, checkPrincipalsAuthenticated, checkProvenanceSignedReport } from "./checks.js";
|
|
6
|
+
import { SPAWNFILE_AUDIT_SCHEMA } from "./types.js";
|
|
7
|
+
const readOptionalFile = async (filePath) => (await fileExists(filePath)) ? readUtf8File(filePath) : "";
|
|
8
|
+
const readExpectedDenials = async (ledgerDirPath) => {
|
|
9
|
+
const manifestPath = path.join(ledgerDirPath, "expected-denials.json");
|
|
10
|
+
if (!(await fileExists(manifestPath))) {
|
|
11
|
+
return { expectedDenialTypes: [], manifestPresent: false };
|
|
12
|
+
}
|
|
13
|
+
const raw = await readUtf8File(manifestPath);
|
|
14
|
+
const parsed = JSON.parse(raw);
|
|
15
|
+
if (!Array.isArray(parsed.expectedDenialTypes)) {
|
|
16
|
+
return { expectedDenialTypes: [], manifestPresent: true };
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
expectedDenialTypes: parsed.expectedDenialTypes.filter((value) => typeof value === "string"),
|
|
20
|
+
manifestPresent: true
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Reads every `*.jsonl` file in `ledgerDirPath` and feeds it to
|
|
25
|
+
* `runRealConformance` (src/ledger/conformance.ts) through an injected
|
|
26
|
+
* `exec` that returns each file's pre-read text instead of spawning a real
|
|
27
|
+
* sibling emitter process. This is what keeps the whole B54 generator
|
|
28
|
+
* offline while still reusing `runRealConformance`'s real schema/seq/
|
|
29
|
+
* payload-minimum/principal-grammar/chain-stitch pipeline rather than
|
|
30
|
+
* reimplementing any of it — see src/ledger/emitters.ts for the `Exec`/
|
|
31
|
+
* `EmitterSpec` contract this fills in. Returns `undefined` (never an empty
|
|
32
|
+
* evidence object) when the directory has no `*.jsonl` files, so callers can
|
|
33
|
+
* distinguish "no run artifacts" from "ledger with zero events".
|
|
34
|
+
*/
|
|
35
|
+
const collectRunLedgerEvidence = async (ledgerDirPath) => {
|
|
36
|
+
const entries = await readdir(ledgerDirPath, { withFileTypes: true }).catch(() => []);
|
|
37
|
+
const jsonlFileNames = entries
|
|
38
|
+
.filter((entry) => entry.isFile() && entry.name.endsWith(".jsonl"))
|
|
39
|
+
.map((entry) => entry.name)
|
|
40
|
+
.sort((left, right) => left.localeCompare(right));
|
|
41
|
+
if (jsonlFileNames.length === 0) {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
const contentByFileName = new Map();
|
|
45
|
+
for (const fileName of jsonlFileNames) {
|
|
46
|
+
contentByFileName.set(fileName, await readUtf8File(path.join(ledgerDirPath, fileName)));
|
|
47
|
+
}
|
|
48
|
+
const specs = jsonlFileNames.map((fileName) => ({
|
|
49
|
+
command: [fileName],
|
|
50
|
+
cwd: ledgerDirPath,
|
|
51
|
+
name: fileName.replace(/\.jsonl$/u, ""),
|
|
52
|
+
output: "stdout-jsonl"
|
|
53
|
+
}));
|
|
54
|
+
// Offline exec: returns the pre-read fixture text for the named source,
|
|
55
|
+
// never spawns a process. Matches src/ledger/emitters.ts's `Exec` contract.
|
|
56
|
+
const exec = (spec) => Promise.resolve({
|
|
57
|
+
exitCode: 0,
|
|
58
|
+
stderr: "",
|
|
59
|
+
stdout: contentByFileName.get(`${spec.name}.jsonl`) ?? "",
|
|
60
|
+
timedOut: false
|
|
61
|
+
});
|
|
62
|
+
const report = await runRealConformance({ exec, specs });
|
|
63
|
+
const { expectedDenialTypes, manifestPresent } = await readExpectedDenials(ledgerDirPath);
|
|
64
|
+
return {
|
|
65
|
+
eventCount: report.eventCount,
|
|
66
|
+
events: report.events,
|
|
67
|
+
expectedDenialTypes,
|
|
68
|
+
issues: report.issues,
|
|
69
|
+
manifestPresent,
|
|
70
|
+
sources: report.sourceCounts.map((entry) => entry.source)
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
const collectStaticEvidence = async (compiledOutputDirPath, requiredSecrets) => ({
|
|
74
|
+
dockerfile: await readOptionalFile(path.join(compiledOutputDirPath, "Dockerfile")),
|
|
75
|
+
entrypoint: await readOptionalFile(path.join(compiledOutputDirPath, "entrypoint.sh")),
|
|
76
|
+
piAppSource: await readOptionalFile(path.join(compiledOutputDirPath, "runtime", "app.mjs")),
|
|
77
|
+
requiredSecrets
|
|
78
|
+
});
|
|
79
|
+
const summarize = (checks) => ({
|
|
80
|
+
failed: checks.filter((check) => check.status === "fail").length,
|
|
81
|
+
na: checks.filter((check) => check.status === "not_applicable").length,
|
|
82
|
+
passed: checks.filter((check) => check.status === "pass").length
|
|
83
|
+
});
|
|
84
|
+
/** `null` unless every ledger event shares one `run_id` (see specs/CAUSAL.md — a single audit always covers one run). */
|
|
85
|
+
const resolveRunId = (events) => {
|
|
86
|
+
if (events.length === 0) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
const runIds = new Set(events.map((event) => event.run_id));
|
|
90
|
+
return runIds.size === 1 ? runIds.values().next().value : null;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Orchestrator: the only I/O-performing function in src/audit/. Reads the
|
|
94
|
+
* compiled-output directory and, if given, the ledger directory, then runs
|
|
95
|
+
* the seven pure checks (checks.ts) and assembles the `AuditReport`.
|
|
96
|
+
* Deterministic across repeated calls with the same inputs except for
|
|
97
|
+
* `generated_at`.
|
|
98
|
+
*/
|
|
99
|
+
export const generateAudit = async (options) => {
|
|
100
|
+
const now = options.now ?? (() => new Date());
|
|
101
|
+
const requiredSecrets = options.requiredSecrets ?? [];
|
|
102
|
+
const [ledgerEvidence, staticEvidence] = await Promise.all([
|
|
103
|
+
options.ledgerDirPath ? collectRunLedgerEvidence(options.ledgerDirPath) : Promise.resolve(undefined),
|
|
104
|
+
collectStaticEvidence(options.compiledOutputDirPath, requiredSecrets)
|
|
105
|
+
]);
|
|
106
|
+
const checks = [
|
|
107
|
+
checkPrincipalsAuthenticated(ledgerEvidence),
|
|
108
|
+
checkDeniedLedgerVisible(ledgerEvidence),
|
|
109
|
+
checkControlWakeFailClosed(staticEvidence),
|
|
110
|
+
checkContainerNoBakedSecrets(staticEvidence),
|
|
111
|
+
checkMemoryCrossScopeCapability(ledgerEvidence),
|
|
112
|
+
checkNonMemberWriteDenied(ledgerEvidence),
|
|
113
|
+
checkProvenanceSignedReport()
|
|
114
|
+
];
|
|
115
|
+
return {
|
|
116
|
+
checks,
|
|
117
|
+
generated_at: now().toISOString(),
|
|
118
|
+
run_id: ledgerEvidence ? resolveRunId(ledgerEvidence.events) : null,
|
|
119
|
+
schema: SPAWNFILE_AUDIT_SCHEMA,
|
|
120
|
+
summary: summarize(checks)
|
|
121
|
+
};
|
|
122
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { AuditReport } from "./types.js";
|
|
3
|
+
export declare const auditReportSchema: z.ZodObject<{
|
|
4
|
+
checks: z.ZodArray<z.ZodObject<{
|
|
5
|
+
category: z.ZodEnum<{
|
|
6
|
+
provenance: "provenance";
|
|
7
|
+
causal: "causal";
|
|
8
|
+
container: "container";
|
|
9
|
+
control: "control";
|
|
10
|
+
memory: "memory";
|
|
11
|
+
network: "network";
|
|
12
|
+
}>;
|
|
13
|
+
evidence: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
14
|
+
id: z.ZodString;
|
|
15
|
+
severity: z.ZodEnum<{
|
|
16
|
+
critical: "critical";
|
|
17
|
+
high: "high";
|
|
18
|
+
medium: "medium";
|
|
19
|
+
}>;
|
|
20
|
+
status: z.ZodEnum<{
|
|
21
|
+
pass: "pass";
|
|
22
|
+
fail: "fail";
|
|
23
|
+
not_applicable: "not_applicable";
|
|
24
|
+
}>;
|
|
25
|
+
}, z.core.$strict>>;
|
|
26
|
+
generated_at: z.ZodString;
|
|
27
|
+
run_id: z.ZodNullable<z.ZodString>;
|
|
28
|
+
schema: z.ZodLiteral<"spawnfile.audit.v1">;
|
|
29
|
+
summary: z.ZodObject<{
|
|
30
|
+
failed: z.ZodNumber;
|
|
31
|
+
na: z.ZodNumber;
|
|
32
|
+
passed: z.ZodNumber;
|
|
33
|
+
}, z.core.$strict>;
|
|
34
|
+
}, z.core.$strict>;
|
|
35
|
+
export interface AuditReadError {
|
|
36
|
+
message: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Safe (non-throwing) validator. Rejects an unknown `schema` string as a
|
|
40
|
+
* top-level structural mismatch — `z.literal` already fails it — rather
|
|
41
|
+
* than accepting any string and comparing separately, so a caller cannot
|
|
42
|
+
* bypass the schema gate with a structurally-valid-but-wrong-version report.
|
|
43
|
+
*/
|
|
44
|
+
export declare const validateAuditReport: (value: unknown) => {
|
|
45
|
+
report: AuditReport;
|
|
46
|
+
} | {
|
|
47
|
+
error: AuditReadError;
|
|
48
|
+
};
|
|
49
|
+
/** Throwing counterpart of `validateAuditReport`, mirroring `envelope.ts`'s `parseCausalEvent`. */
|
|
50
|
+
export declare const readAuditReport: (value: unknown) => AuditReport;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { SPAWNFILE_AUDIT_SCHEMA } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Pure reader/validator for an existing `spawnfile.audit.v1` report — the
|
|
5
|
+
* `envelope.ts` precedent (a zod schema mirroring the hand-written
|
|
6
|
+
* `AuditReport` interface, plus a `parse*`/`validate*` pair). No I/O:
|
|
7
|
+
* callers pass already-read JSON (typically `JSON.parse`d from a file
|
|
8
|
+
* `generateAudit.ts` wrote), this module only checks shape.
|
|
9
|
+
*/
|
|
10
|
+
const auditCheckSchema = z
|
|
11
|
+
.object({
|
|
12
|
+
category: z.enum(["causal", "container", "control", "memory", "network", "provenance"]),
|
|
13
|
+
evidence: z.record(z.string(), z.unknown()),
|
|
14
|
+
id: z.string().min(1),
|
|
15
|
+
severity: z.enum(["critical", "high", "medium"]),
|
|
16
|
+
status: z.enum(["pass", "fail", "not_applicable"])
|
|
17
|
+
})
|
|
18
|
+
.strict();
|
|
19
|
+
const auditSummarySchema = z
|
|
20
|
+
.object({
|
|
21
|
+
failed: z.number().int().min(0),
|
|
22
|
+
na: z.number().int().min(0),
|
|
23
|
+
passed: z.number().int().min(0)
|
|
24
|
+
})
|
|
25
|
+
.strict();
|
|
26
|
+
export const auditReportSchema = z
|
|
27
|
+
.object({
|
|
28
|
+
checks: z.array(auditCheckSchema),
|
|
29
|
+
generated_at: z.string().min(1),
|
|
30
|
+
run_id: z.string().min(1).nullable(),
|
|
31
|
+
schema: z.literal(SPAWNFILE_AUDIT_SCHEMA),
|
|
32
|
+
summary: auditSummarySchema
|
|
33
|
+
})
|
|
34
|
+
.strict();
|
|
35
|
+
/**
|
|
36
|
+
* Safe (non-throwing) validator. Rejects an unknown `schema` string as a
|
|
37
|
+
* top-level structural mismatch — `z.literal` already fails it — rather
|
|
38
|
+
* than accepting any string and comparing separately, so a caller cannot
|
|
39
|
+
* bypass the schema gate with a structurally-valid-but-wrong-version report.
|
|
40
|
+
*/
|
|
41
|
+
export const validateAuditReport = (value) => {
|
|
42
|
+
const result = auditReportSchema.safeParse(value);
|
|
43
|
+
if (!result.success) {
|
|
44
|
+
return {
|
|
45
|
+
error: {
|
|
46
|
+
message: result.error.issues.map((issue) => `${issue.path.join(".")}: ${issue.message}`).join("; ")
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return { report: result.data };
|
|
51
|
+
};
|
|
52
|
+
/** Throwing counterpart of `validateAuditReport`, mirroring `envelope.ts`'s `parseCausalEvent`. */
|
|
53
|
+
export const readAuditReport = (value) => {
|
|
54
|
+
const result = validateAuditReport(value);
|
|
55
|
+
if ("error" in result) {
|
|
56
|
+
throw new Error(`invalid spawnfile.audit.v1 report: ${result.error.message}`);
|
|
57
|
+
}
|
|
58
|
+
return result.report;
|
|
59
|
+
};
|