@xenosystem/agent-interface-host 0.1.3
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/LICENSE +67 -0
- package/dist/acp/AcpAgentRegistryService.d.ts +77 -0
- package/dist/acp/AcpAgentRegistryService.d.ts.map +1 -0
- package/dist/acp/AcpAgentRegistryService.js +754 -0
- package/dist/acp/AcpAgentRegistryService.js.map +1 -0
- package/dist/acp/AcpAgentTurnExecutionAdapter.d.ts +56 -0
- package/dist/acp/AcpAgentTurnExecutionAdapter.d.ts.map +1 -0
- package/dist/acp/AcpAgentTurnExecutionAdapter.js +323 -0
- package/dist/acp/AcpAgentTurnExecutionAdapter.js.map +1 -0
- package/dist/acp/AcpApprovalPortAdapter.d.ts +41 -0
- package/dist/acp/AcpApprovalPortAdapter.d.ts.map +1 -0
- package/dist/acp/AcpApprovalPortAdapter.js +82 -0
- package/dist/acp/AcpApprovalPortAdapter.js.map +1 -0
- package/dist/acp/AcpCoordinationBridge.d.ts +13 -0
- package/dist/acp/AcpCoordinationBridge.d.ts.map +1 -0
- package/dist/acp/AcpCoordinationBridge.js +13 -0
- package/dist/acp/AcpCoordinationBridge.js.map +1 -0
- package/dist/acp/AcpDiagnosticsService.d.ts +61 -0
- package/dist/acp/AcpDiagnosticsService.d.ts.map +1 -0
- package/dist/acp/AcpDiagnosticsService.js +203 -0
- package/dist/acp/AcpDiagnosticsService.js.map +1 -0
- package/dist/acp/AcpExternalCertificationHarness.d.ts +47 -0
- package/dist/acp/AcpExternalCertificationHarness.d.ts.map +1 -0
- package/dist/acp/AcpExternalCertificationHarness.js +176 -0
- package/dist/acp/AcpExternalCertificationHarness.js.map +1 -0
- package/dist/acp/AcpHostBridge.d.ts +81 -0
- package/dist/acp/AcpHostBridge.d.ts.map +1 -0
- package/dist/acp/AcpHostBridge.js +101 -0
- package/dist/acp/AcpHostBridge.js.map +1 -0
- package/dist/acp/AcpInteractivePermissionBridge.d.ts +77 -0
- package/dist/acp/AcpInteractivePermissionBridge.d.ts.map +1 -0
- package/dist/acp/AcpInteractivePermissionBridge.js +127 -0
- package/dist/acp/AcpInteractivePermissionBridge.js.map +1 -0
- package/dist/acp/AcpPermissionBridge.d.ts +19 -0
- package/dist/acp/AcpPermissionBridge.d.ts.map +1 -0
- package/dist/acp/AcpPermissionBridge.js +110 -0
- package/dist/acp/AcpPermissionBridge.js.map +1 -0
- package/dist/acp/AcpPermissionPolicy.d.ts +111 -0
- package/dist/acp/AcpPermissionPolicy.d.ts.map +1 -0
- package/dist/acp/AcpPermissionPolicy.js +167 -0
- package/dist/acp/AcpPermissionPolicy.js.map +1 -0
- package/dist/acp/AcpProcessSupervisor.d.ts +134 -0
- package/dist/acp/AcpProcessSupervisor.d.ts.map +1 -0
- package/dist/acp/AcpProcessSupervisor.js +674 -0
- package/dist/acp/AcpProcessSupervisor.js.map +1 -0
- package/dist/acp/AcpProviderApprovalService.d.ts +27 -0
- package/dist/acp/AcpProviderApprovalService.d.ts.map +1 -0
- package/dist/acp/AcpProviderApprovalService.js +128 -0
- package/dist/acp/AcpProviderApprovalService.js.map +1 -0
- package/dist/acp/AcpProviderCatalogService.d.ts +69 -0
- package/dist/acp/AcpProviderCatalogService.d.ts.map +1 -0
- package/dist/acp/AcpProviderCatalogService.js +707 -0
- package/dist/acp/AcpProviderCatalogService.js.map +1 -0
- package/dist/acp/AcpProviderModelService.d.ts +6 -0
- package/dist/acp/AcpProviderModelService.d.ts.map +1 -0
- package/dist/acp/AcpProviderModelService.js +274 -0
- package/dist/acp/AcpProviderModelService.js.map +1 -0
- package/dist/acp/AcpProviderVersionReadiness.d.ts +6 -0
- package/dist/acp/AcpProviderVersionReadiness.d.ts.map +1 -0
- package/dist/acp/AcpProviderVersionReadiness.js +100 -0
- package/dist/acp/AcpProviderVersionReadiness.js.map +1 -0
- package/dist/acp/AcpRuntimeEventMapper.d.ts +16 -0
- package/dist/acp/AcpRuntimeEventMapper.d.ts.map +1 -0
- package/dist/acp/AcpRuntimeEventMapper.js +326 -0
- package/dist/acp/AcpRuntimeEventMapper.js.map +1 -0
- package/dist/acp/AcpSessionService.d.ts +65 -0
- package/dist/acp/AcpSessionService.d.ts.map +1 -0
- package/dist/acp/AcpSessionService.js +931 -0
- package/dist/acp/AcpSessionService.js.map +1 -0
- package/dist/acp/DurableAcpPermissionPolicyStore.d.ts +25 -0
- package/dist/acp/DurableAcpPermissionPolicyStore.d.ts.map +1 -0
- package/dist/acp/DurableAcpPermissionPolicyStore.js +100 -0
- package/dist/acp/DurableAcpPermissionPolicyStore.js.map +1 -0
- package/dist/acp/acpCommandSafety.d.ts +63 -0
- package/dist/acp/acpCommandSafety.d.ts.map +1 -0
- package/dist/acp/acpCommandSafety.js +90 -0
- package/dist/acp/acpCommandSafety.js.map +1 -0
- package/dist/acp/acpErrors.d.ts +47 -0
- package/dist/acp/acpErrors.d.ts.map +1 -0
- package/dist/acp/acpErrors.js +93 -0
- package/dist/acp/acpErrors.js.map +1 -0
- package/dist/acp/acpRedaction.d.ts +9 -0
- package/dist/acp/acpRedaction.d.ts.map +1 -0
- package/dist/acp/acpRedaction.js +69 -0
- package/dist/acp/acpRedaction.js.map +1 -0
- package/dist/acp/acpSessionResume.d.ts +8 -0
- package/dist/acp/acpSessionResume.d.ts.map +1 -0
- package/dist/acp/acpSessionResume.js +31 -0
- package/dist/acp/acpSessionResume.js.map +1 -0
- package/dist/acp/acpTypes.d.ts +467 -0
- package/dist/acp/acpTypes.d.ts.map +1 -0
- package/dist/acp/acpTypes.js +2 -0
- package/dist/acp/acpTypes.js.map +1 -0
- package/dist/agent/chooseDirectoryBridge.d.ts +29 -0
- package/dist/agent/chooseDirectoryBridge.d.ts.map +1 -0
- package/dist/agent/chooseDirectoryBridge.js +116 -0
- package/dist/agent/chooseDirectoryBridge.js.map +1 -0
- package/dist/agent/permissionProfiles.d.ts +29 -0
- package/dist/agent/permissionProfiles.d.ts.map +1 -0
- package/dist/agent/permissionProfiles.js +107 -0
- package/dist/agent/permissionProfiles.js.map +1 -0
- package/dist/agent/runtimeAuthorityPrompt.d.ts +13 -0
- package/dist/agent/runtimeAuthorityPrompt.d.ts.map +1 -0
- package/dist/agent/runtimeAuthorityPrompt.js +45 -0
- package/dist/agent/runtimeAuthorityPrompt.js.map +1 -0
- package/dist/agent/runtimeModeOutputGuard.d.ts +6 -0
- package/dist/agent/runtimeModeOutputGuard.d.ts.map +1 -0
- package/dist/agent/runtimeModeOutputGuard.js +40 -0
- package/dist/agent/runtimeModeOutputGuard.js.map +1 -0
- package/dist/agent/workspacePlacementBridge.d.ts +29 -0
- package/dist/agent/workspacePlacementBridge.d.ts.map +1 -0
- package/dist/agent/workspacePlacementBridge.js +143 -0
- package/dist/agent/workspacePlacementBridge.js.map +1 -0
- package/dist/agentSearch/AgentSearchService.d.ts +81 -0
- package/dist/agentSearch/AgentSearchService.d.ts.map +1 -0
- package/dist/agentSearch/AgentSearchService.js +1038 -0
- package/dist/agentSearch/AgentSearchService.js.map +1 -0
- package/dist/agentSearch/JsonInvertedIndexAdapter.d.ts +44 -0
- package/dist/agentSearch/JsonInvertedIndexAdapter.d.ts.map +1 -0
- package/dist/agentSearch/JsonInvertedIndexAdapter.js +307 -0
- package/dist/agentSearch/JsonInvertedIndexAdapter.js.map +1 -0
- package/dist/agentSearch/SearchIndexAdapter.d.ts +33 -0
- package/dist/agentSearch/SearchIndexAdapter.d.ts.map +1 -0
- package/dist/agentSearch/SearchIndexAdapter.js +2 -0
- package/dist/agentSearch/SearchIndexAdapter.js.map +1 -0
- package/dist/agentSearch/SearchSourceWatcher.d.ts +29 -0
- package/dist/agentSearch/SearchSourceWatcher.d.ts.map +1 -0
- package/dist/agentSearch/SearchSourceWatcher.js +150 -0
- package/dist/agentSearch/SearchSourceWatcher.js.map +1 -0
- package/dist/agentSearch/SqliteFtsIndexAdapter.d.ts +58 -0
- package/dist/agentSearch/SqliteFtsIndexAdapter.d.ts.map +1 -0
- package/dist/agentSearch/SqliteFtsIndexAdapter.js +420 -0
- package/dist/agentSearch/SqliteFtsIndexAdapter.js.map +1 -0
- package/dist/agentSearch/conversationIndexer.d.ts +69 -0
- package/dist/agentSearch/conversationIndexer.d.ts.map +1 -0
- package/dist/agentSearch/conversationIndexer.js +313 -0
- package/dist/agentSearch/conversationIndexer.js.map +1 -0
- package/dist/agentSearch/searchTypes.d.ts +264 -0
- package/dist/agentSearch/searchTypes.d.ts.map +1 -0
- package/dist/agentSearch/searchTypes.js +2 -0
- package/dist/agentSearch/searchTypes.js.map +1 -0
- package/dist/agentSearch/searchUtils.d.ts +12 -0
- package/dist/agentSearch/searchUtils.d.ts.map +1 -0
- package/dist/agentSearch/searchUtils.js +125 -0
- package/dist/agentSearch/searchUtils.js.map +1 -0
- package/dist/agentSearch/workspaceMetadataIndexer.d.ts +3 -0
- package/dist/agentSearch/workspaceMetadataIndexer.d.ts.map +1 -0
- package/dist/agentSearch/workspaceMetadataIndexer.js +125 -0
- package/dist/agentSearch/workspaceMetadataIndexer.js.map +1 -0
- package/dist/cli/CliControlPlaneService.d.ts +269 -0
- package/dist/cli/CliControlPlaneService.d.ts.map +1 -0
- package/dist/cli/CliControlPlaneService.js +1874 -0
- package/dist/cli/CliControlPlaneService.js.map +1 -0
- package/dist/cloud/XenoCloudAgentTurnExecutionAdapter.d.ts +91 -0
- package/dist/cloud/XenoCloudAgentTurnExecutionAdapter.d.ts.map +1 -0
- package/dist/cloud/XenoCloudAgentTurnExecutionAdapter.js +379 -0
- package/dist/cloud/XenoCloudAgentTurnExecutionAdapter.js.map +1 -0
- package/dist/codebase/CodebaseIntelligenceService.d.ts +68 -0
- package/dist/codebase/CodebaseIntelligenceService.d.ts.map +1 -0
- package/dist/codebase/CodebaseIntelligenceService.js +1717 -0
- package/dist/codebase/CodebaseIntelligenceService.js.map +1 -0
- package/dist/codebase/LanguageServerProcessManager.d.ts +85 -0
- package/dist/codebase/LanguageServerProcessManager.d.ts.map +1 -0
- package/dist/codebase/LanguageServerProcessManager.js +607 -0
- package/dist/codebase/LanguageServerProcessManager.js.map +1 -0
- package/dist/codebase/codeTypes.d.ts +485 -0
- package/dist/codebase/codeTypes.d.ts.map +1 -0
- package/dist/codebase/codeTypes.js +2 -0
- package/dist/codebase/codeTypes.js.map +1 -0
- package/dist/codebase/codeUtils.d.ts +24 -0
- package/dist/codebase/codeUtils.d.ts.map +1 -0
- package/dist/codebase/codeUtils.js +177 -0
- package/dist/codebase/codeUtils.js.map +1 -0
- package/dist/codebase/contextPacks.d.ts +18 -0
- package/dist/codebase/contextPacks.d.ts.map +1 -0
- package/dist/codebase/contextPacks.js +180 -0
- package/dist/codebase/contextPacks.js.map +1 -0
- package/dist/codebase/dependencyGraph.d.ts +3 -0
- package/dist/codebase/dependencyGraph.d.ts.map +1 -0
- package/dist/codebase/dependencyGraph.js +209 -0
- package/dist/codebase/dependencyGraph.js.map +1 -0
- package/dist/codebase/fileIndexer.d.ts +27 -0
- package/dist/codebase/fileIndexer.d.ts.map +1 -0
- package/dist/codebase/fileIndexer.js +167 -0
- package/dist/codebase/fileIndexer.js.map +1 -0
- package/dist/codebase/symbolIndexer.d.ts +3 -0
- package/dist/codebase/symbolIndexer.d.ts.map +1 -0
- package/dist/codebase/symbolIndexer.js +184 -0
- package/dist/codebase/symbolIndexer.js.map +1 -0
- package/dist/codebase/whatChanged.d.ts +4 -0
- package/dist/codebase/whatChanged.d.ts.map +1 -0
- package/dist/codebase/whatChanged.js +138 -0
- package/dist/codebase/whatChanged.js.map +1 -0
- package/dist/coordination/CoordinationService.d.ts +166 -0
- package/dist/coordination/CoordinationService.d.ts.map +1 -0
- package/dist/coordination/CoordinationService.js +247 -0
- package/dist/coordination/CoordinationService.js.map +1 -0
- package/dist/coordination/claims.d.ts +122 -0
- package/dist/coordination/claims.d.ts.map +1 -0
- package/dist/coordination/claims.js +196 -0
- package/dist/coordination/claims.js.map +1 -0
- package/dist/coordination/coordinationTools.d.ts +40 -0
- package/dist/coordination/coordinationTools.d.ts.map +1 -0
- package/dist/coordination/coordinationTools.js +92 -0
- package/dist/coordination/coordinationTools.js.map +1 -0
- package/dist/coordination/laneBridge.d.ts +84 -0
- package/dist/coordination/laneBridge.d.ts.map +1 -0
- package/dist/coordination/laneBridge.js +86 -0
- package/dist/coordination/laneBridge.js.map +1 -0
- package/dist/coordination/messages.d.ts +225 -0
- package/dist/coordination/messages.d.ts.map +1 -0
- package/dist/coordination/messages.js +335 -0
- package/dist/coordination/messages.js.map +1 -0
- package/dist/coordination/permissionWaitRegistry.d.ts +32 -0
- package/dist/coordination/permissionWaitRegistry.d.ts.map +1 -0
- package/dist/coordination/permissionWaitRegistry.js +59 -0
- package/dist/coordination/permissionWaitRegistry.js.map +1 -0
- package/dist/coordination/query.d.ts +187 -0
- package/dist/coordination/query.d.ts.map +1 -0
- package/dist/coordination/query.js +138 -0
- package/dist/coordination/query.js.map +1 -0
- package/dist/coordination/renderInbox.d.ts +15 -0
- package/dist/coordination/renderInbox.d.ts.map +1 -0
- package/dist/coordination/renderInbox.js +19 -0
- package/dist/coordination/renderInbox.js.map +1 -0
- package/dist/coordination/runtimeEvents.d.ts +53 -0
- package/dist/coordination/runtimeEvents.d.ts.map +1 -0
- package/dist/coordination/runtimeEvents.js +112 -0
- package/dist/coordination/runtimeEvents.js.map +1 -0
- package/dist/detachedHostService.d.ts +77 -0
- package/dist/detachedHostService.d.ts.map +1 -0
- package/dist/detachedHostService.js +66 -0
- package/dist/detachedHostService.js.map +1 -0
- package/dist/detachedHostSupervisor.d.ts +102 -0
- package/dist/detachedHostSupervisor.d.ts.map +1 -0
- package/dist/detachedHostSupervisor.js +168 -0
- package/dist/detachedHostSupervisor.js.map +1 -0
- package/dist/durableRuntimeEventStore.d.ts +49 -0
- package/dist/durableRuntimeEventStore.d.ts.map +1 -0
- package/dist/durableRuntimeEventStore.js +364 -0
- package/dist/durableRuntimeEventStore.js.map +1 -0
- package/dist/engineering/EngineeringWorkbenchService.d.ts +142 -0
- package/dist/engineering/EngineeringWorkbenchService.d.ts.map +1 -0
- package/dist/engineering/EngineeringWorkbenchService.js +2301 -0
- package/dist/engineering/EngineeringWorkbenchService.js.map +1 -0
- package/dist/engineering/LandingService.d.ts +112 -0
- package/dist/engineering/LandingService.d.ts.map +1 -0
- package/dist/engineering/LandingService.js +239 -0
- package/dist/engineering/LandingService.js.map +1 -0
- package/dist/engineering/engineeringTypes.d.ts +2 -0
- package/dist/engineering/engineeringTypes.d.ts.map +1 -0
- package/dist/engineering/engineeringTypes.js +2 -0
- package/dist/engineering/engineeringTypes.js.map +1 -0
- package/dist/engineering/patchReview.d.ts +11 -0
- package/dist/engineering/patchReview.d.ts.map +1 -0
- package/dist/engineering/patchReview.js +174 -0
- package/dist/engineering/patchReview.js.map +1 -0
- package/dist/index.d.ts +834 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3242 -0
- package/dist/index.js.map +1 -0
- package/dist/intake/IntakeService.d.ts +84 -0
- package/dist/intake/IntakeService.d.ts.map +1 -0
- package/dist/intake/IntakeService.js +117 -0
- package/dist/intake/IntakeService.js.map +1 -0
- package/dist/intake/RepositoryTodoIntakeSource.d.ts +72 -0
- package/dist/intake/RepositoryTodoIntakeSource.d.ts.map +1 -0
- package/dist/intake/RepositoryTodoIntakeSource.js +168 -0
- package/dist/intake/RepositoryTodoIntakeSource.js.map +1 -0
- package/dist/intake/WorkspaceTodoIntakeSource.d.ts +53 -0
- package/dist/intake/WorkspaceTodoIntakeSource.d.ts.map +1 -0
- package/dist/intake/WorkspaceTodoIntakeSource.js +81 -0
- package/dist/intake/WorkspaceTodoIntakeSource.js.map +1 -0
- package/dist/isolation/CommandExecution.d.ts +132 -0
- package/dist/isolation/CommandExecution.d.ts.map +1 -0
- package/dist/isolation/CommandExecution.js +48 -0
- package/dist/isolation/CommandExecution.js.map +1 -0
- package/dist/isolation/LocalCommandExecutor.d.ts +27 -0
- package/dist/isolation/LocalCommandExecutor.d.ts.map +1 -0
- package/dist/isolation/LocalCommandExecutor.js +97 -0
- package/dist/isolation/LocalCommandExecutor.js.map +1 -0
- package/dist/isolation/RunExecutionEnvironment.d.ts +135 -0
- package/dist/isolation/RunExecutionEnvironment.d.ts.map +1 -0
- package/dist/isolation/RunExecutionEnvironment.js +206 -0
- package/dist/isolation/RunExecutionEnvironment.js.map +1 -0
- package/dist/isolation/RunIsolationService.d.ts +90 -0
- package/dist/isolation/RunIsolationService.d.ts.map +1 -0
- package/dist/isolation/RunIsolationService.js +86 -0
- package/dist/isolation/RunIsolationService.js.map +1 -0
- package/dist/isolation/SandboxCommandExecutor.d.ts +93 -0
- package/dist/isolation/SandboxCommandExecutor.d.ts.map +1 -0
- package/dist/isolation/SandboxCommandExecutor.js +189 -0
- package/dist/isolation/SandboxCommandExecutor.js.map +1 -0
- package/dist/knowledge/WorkspaceKnowledgeService.d.ts +71 -0
- package/dist/knowledge/WorkspaceKnowledgeService.d.ts.map +1 -0
- package/dist/knowledge/WorkspaceKnowledgeService.js +103 -0
- package/dist/knowledge/WorkspaceKnowledgeService.js.map +1 -0
- package/dist/localHostAuthority.d.ts +24 -0
- package/dist/localHostAuthority.d.ts.map +1 -0
- package/dist/localHostAuthority.js +87 -0
- package/dist/localHostAuthority.js.map +1 -0
- package/dist/localHostLease.d.ts +51 -0
- package/dist/localHostLease.d.ts.map +1 -0
- package/dist/localHostLease.js +167 -0
- package/dist/localHostLease.js.map +1 -0
- package/dist/localHostPaths.d.ts +30 -0
- package/dist/localHostPaths.d.ts.map +1 -0
- package/dist/localHostPaths.js +60 -0
- package/dist/localHostPaths.js.map +1 -0
- package/dist/localRpcTransport.d.ts +21 -0
- package/dist/localRpcTransport.d.ts.map +1 -0
- package/dist/localRpcTransport.js +423 -0
- package/dist/localRpcTransport.js.map +1 -0
- package/dist/node.d.ts +104 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +103 -0
- package/dist/node.js.map +1 -0
- package/dist/observation/DirectoryBaselineScanner.d.ts +44 -0
- package/dist/observation/DirectoryBaselineScanner.d.ts.map +1 -0
- package/dist/observation/DirectoryBaselineScanner.js +112 -0
- package/dist/observation/DirectoryBaselineScanner.js.map +1 -0
- package/dist/observation/MountContentReader.d.ts +63 -0
- package/dist/observation/MountContentReader.d.ts.map +1 -0
- package/dist/observation/MountContentReader.js +158 -0
- package/dist/observation/MountContentReader.js.map +1 -0
- package/dist/observation/RunObservationService.d.ts +229 -0
- package/dist/observation/RunObservationService.d.ts.map +1 -0
- package/dist/observation/RunObservationService.js +248 -0
- package/dist/observation/RunObservationService.js.map +1 -0
- package/dist/observation/XenoUseObservationSource.d.ts +42 -0
- package/dist/observation/XenoUseObservationSource.d.ts.map +1 -0
- package/dist/observation/XenoUseObservationSource.js +104 -0
- package/dist/observation/XenoUseObservationSource.js.map +1 -0
- package/dist/observation/XenoUseRunObserver.d.ts +140 -0
- package/dist/observation/XenoUseRunObserver.d.ts.map +1 -0
- package/dist/observation/XenoUseRunObserver.js +256 -0
- package/dist/observation/XenoUseRunObserver.js.map +1 -0
- package/dist/pluginMcp/PluginMcpManagerService.d.ts +141 -0
- package/dist/pluginMcp/PluginMcpManagerService.d.ts.map +1 -0
- package/dist/pluginMcp/PluginMcpManagerService.js +1821 -0
- package/dist/pluginMcp/PluginMcpManagerService.js.map +1 -0
- package/dist/pluginMcp/pluginMcpTypes.d.ts +349 -0
- package/dist/pluginMcp/pluginMcpTypes.d.ts.map +1 -0
- package/dist/pluginMcp/pluginMcpTypes.js +2 -0
- package/dist/pluginMcp/pluginMcpTypes.js.map +1 -0
- package/dist/policy/WorkspacePolicyService.d.ts +83 -0
- package/dist/policy/WorkspacePolicyService.d.ts.map +1 -0
- package/dist/policy/WorkspacePolicyService.js +809 -0
- package/dist/policy/WorkspacePolicyService.js.map +1 -0
- package/dist/policy/policyGuard.d.ts +27 -0
- package/dist/policy/policyGuard.d.ts.map +1 -0
- package/dist/policy/policyGuard.js +143 -0
- package/dist/policy/policyGuard.js.map +1 -0
- package/dist/policy/policyTypes.d.ts +190 -0
- package/dist/policy/policyTypes.d.ts.map +1 -0
- package/dist/policy/policyTypes.js +2 -0
- package/dist/policy/policyTypes.js.map +1 -0
- package/dist/runtime/RuntimeEventStore.d.ts +42 -0
- package/dist/runtime/RuntimeEventStore.d.ts.map +1 -0
- package/dist/runtime/RuntimeEventStore.js +412 -0
- package/dist/runtime/RuntimeEventStore.js.map +1 -0
- package/dist/runtime/RuntimeEventStoreRepositoryAdapter.d.ts +21 -0
- package/dist/runtime/RuntimeEventStoreRepositoryAdapter.d.ts.map +1 -0
- package/dist/runtime/RuntimeEventStoreRepositoryAdapter.js +41 -0
- package/dist/runtime/RuntimeEventStoreRepositoryAdapter.js.map +1 -0
- package/dist/runtime/RuntimeTimelineProjection.d.ts +5 -0
- package/dist/runtime/RuntimeTimelineProjection.d.ts.map +1 -0
- package/dist/runtime/RuntimeTimelineProjection.js +705 -0
- package/dist/runtime/RuntimeTimelineProjection.js.map +1 -0
- package/dist/runtime/runtimeEventTypes.d.ts +73 -0
- package/dist/runtime/runtimeEventTypes.d.ts.map +1 -0
- package/dist/runtime/runtimeEventTypes.js +2 -0
- package/dist/runtime/runtimeEventTypes.js.map +1 -0
- package/dist/sdk/SdkNativeAgentTurnExecutionAdapter.d.ts +117 -0
- package/dist/sdk/SdkNativeAgentTurnExecutionAdapter.d.ts.map +1 -0
- package/dist/sdk/SdkNativeAgentTurnExecutionAdapter.js +214 -0
- package/dist/sdk/SdkNativeAgentTurnExecutionAdapter.js.map +1 -0
- package/dist/session/AgentSessionService.d.ts +285 -0
- package/dist/session/AgentSessionService.d.ts.map +1 -0
- package/dist/session/AgentSessionService.js +444 -0
- package/dist/session/AgentSessionService.js.map +1 -0
- package/dist/session/bufferedSessionPty.d.ts +27 -0
- package/dist/session/bufferedSessionPty.d.ts.map +1 -0
- package/dist/session/bufferedSessionPty.js +49 -0
- package/dist/session/bufferedSessionPty.js.map +1 -0
- package/dist/session/renderSupport.d.ts +53 -0
- package/dist/session/renderSupport.d.ts.map +1 -0
- package/dist/session/renderSupport.js +41 -0
- package/dist/session/renderSupport.js.map +1 -0
- package/dist/session/runtimeEventChannel.d.ts +56 -0
- package/dist/session/runtimeEventChannel.d.ts.map +1 -0
- package/dist/session/runtimeEventChannel.js +53 -0
- package/dist/session/runtimeEventChannel.js.map +1 -0
- package/dist/state/JsonAgentStateRepository.d.ts +29 -0
- package/dist/state/JsonAgentStateRepository.d.ts.map +1 -0
- package/dist/state/JsonAgentStateRepository.js +165 -0
- package/dist/state/JsonAgentStateRepository.js.map +1 -0
- package/dist/state/SqliteAgentStateRepository.d.ts +58 -0
- package/dist/state/SqliteAgentStateRepository.d.ts.map +1 -0
- package/dist/state/SqliteAgentStateRepository.js +777 -0
- package/dist/state/SqliteAgentStateRepository.js.map +1 -0
- package/dist/state/createAgentStateRepository.d.ts +4 -0
- package/dist/state/createAgentStateRepository.d.ts.map +1 -0
- package/dist/state/createAgentStateRepository.js +12 -0
- package/dist/state/createAgentStateRepository.js.map +1 -0
- package/dist/state/stateSanitizers.d.ts +7 -0
- package/dist/state/stateSanitizers.d.ts.map +1 -0
- package/dist/state/stateSanitizers.js +87 -0
- package/dist/state/stateSanitizers.js.map +1 -0
- package/dist/subagents/AcpSubagentExecutionAdapter.d.ts +12 -0
- package/dist/subagents/AcpSubagentExecutionAdapter.d.ts.map +1 -0
- package/dist/subagents/AcpSubagentExecutionAdapter.js +119 -0
- package/dist/subagents/AcpSubagentExecutionAdapter.js.map +1 -0
- package/dist/subagents/CliSubagentExecutionAdapter.d.ts +13 -0
- package/dist/subagents/CliSubagentExecutionAdapter.d.ts.map +1 -0
- package/dist/subagents/CliSubagentExecutionAdapter.js +217 -0
- package/dist/subagents/CliSubagentExecutionAdapter.js.map +1 -0
- package/dist/subagents/HostTurnSubagentExecutionAdapter.d.ts +78 -0
- package/dist/subagents/HostTurnSubagentExecutionAdapter.d.ts.map +1 -0
- package/dist/subagents/HostTurnSubagentExecutionAdapter.js +160 -0
- package/dist/subagents/HostTurnSubagentExecutionAdapter.js.map +1 -0
- package/dist/subagents/SubagentRunService.d.ts +103 -0
- package/dist/subagents/SubagentRunService.d.ts.map +1 -0
- package/dist/subagents/SubagentRunService.js +1183 -0
- package/dist/subagents/SubagentRunService.js.map +1 -0
- package/dist/subagents/SubagentScheduler.d.ts +167 -0
- package/dist/subagents/SubagentScheduler.d.ts.map +1 -0
- package/dist/subagents/SubagentScheduler.js +530 -0
- package/dist/subagents/SubagentScheduler.js.map +1 -0
- package/dist/subagents/TeamAgentRouter.d.ts +104 -0
- package/dist/subagents/TeamAgentRouter.d.ts.map +1 -0
- package/dist/subagents/TeamAgentRouter.js +435 -0
- package/dist/subagents/TeamAgentRouter.js.map +1 -0
- package/dist/subagents/capabilityMatcher.d.ts +3 -0
- package/dist/subagents/capabilityMatcher.d.ts.map +1 -0
- package/dist/subagents/capabilityMatcher.js +127 -0
- package/dist/subagents/capabilityMatcher.js.map +1 -0
- package/dist/subagents/subagentRunPort.d.ts +43 -0
- package/dist/subagents/subagentRunPort.d.ts.map +1 -0
- package/dist/subagents/subagentRunPort.js +24 -0
- package/dist/subagents/subagentRunPort.js.map +1 -0
- package/dist/subagents/subagentTypes.d.ts +330 -0
- package/dist/subagents/subagentTypes.d.ts.map +1 -0
- package/dist/subagents/subagentTypes.js +2 -0
- package/dist/subagents/subagentTypes.js.map +1 -0
- package/dist/subagents/subagentWorkspaceAuthority.d.ts +29 -0
- package/dist/subagents/subagentWorkspaceAuthority.d.ts.map +1 -0
- package/dist/subagents/subagentWorkspaceAuthority.js +173 -0
- package/dist/subagents/subagentWorkspaceAuthority.js.map +1 -0
- package/dist/support/SupportDiagnosticsService.d.ts +87 -0
- package/dist/support/SupportDiagnosticsService.d.ts.map +1 -0
- package/dist/support/SupportDiagnosticsService.js +1199 -0
- package/dist/support/SupportDiagnosticsService.js.map +1 -0
- package/dist/turns/DurableInterruptedTurnStore.d.ts +14 -0
- package/dist/turns/DurableInterruptedTurnStore.d.ts.map +1 -0
- package/dist/turns/DurableInterruptedTurnStore.js +63 -0
- package/dist/turns/DurableInterruptedTurnStore.js.map +1 -0
- package/dist/turns/interruptedTurns.d.ts +50 -0
- package/dist/turns/interruptedTurns.d.ts.map +1 -0
- package/dist/turns/interruptedTurns.js +54 -0
- package/dist/turns/interruptedTurns.js.map +1 -0
- package/dist/turns/turnAdmission.d.ts +113 -0
- package/dist/turns/turnAdmission.d.ts.map +1 -0
- package/dist/turns/turnAdmission.js +136 -0
- package/dist/turns/turnAdmission.js.map +1 -0
- package/dist/workspace/WorkspaceHostService.d.ts +126 -0
- package/dist/workspace/WorkspaceHostService.d.ts.map +1 -0
- package/dist/workspace/WorkspaceHostService.js +841 -0
- package/dist/workspace/WorkspaceHostService.js.map +1 -0
- package/dist/workspace/WorkspaceShellService.d.ts +71 -0
- package/dist/workspace/WorkspaceShellService.d.ts.map +1 -0
- package/dist/workspace/WorkspaceShellService.js +273 -0
- package/dist/workspace/WorkspaceShellService.js.map +1 -0
- package/dist/workspace/fileAssociations.d.ts +12 -0
- package/dist/workspace/fileAssociations.d.ts.map +1 -0
- package/dist/workspace/fileAssociations.js +202 -0
- package/dist/workspace/fileAssociations.js.map +1 -0
- package/dist/workspace/scrollbackBuffer.d.ts +48 -0
- package/dist/workspace/scrollbackBuffer.d.ts.map +1 -0
- package/dist/workspace/scrollbackBuffer.js +94 -0
- package/dist/workspace/scrollbackBuffer.js.map +1 -0
- package/package.json +42 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export function createPermissionWaitRegistry() {
|
|
2
|
+
const entries = new Map();
|
|
3
|
+
const listeners = new Set();
|
|
4
|
+
const outstanding = (requestId) => {
|
|
5
|
+
if (!requestId)
|
|
6
|
+
return 0;
|
|
7
|
+
let count = 0;
|
|
8
|
+
for (const entry of entries.values()) {
|
|
9
|
+
if (entry.requestId === requestId)
|
|
10
|
+
count += 1;
|
|
11
|
+
}
|
|
12
|
+
return count;
|
|
13
|
+
};
|
|
14
|
+
const announce = (requestId, waiting) => {
|
|
15
|
+
if (!requestId)
|
|
16
|
+
return;
|
|
17
|
+
for (const listener of [...listeners]) {
|
|
18
|
+
// Contained: a listener that throws must not break the permission flow it
|
|
19
|
+
// is only observing. Losing the report costs a peer an accurate state;
|
|
20
|
+
// losing the prompt would hang the turn.
|
|
21
|
+
try {
|
|
22
|
+
listener(requestId, waiting);
|
|
23
|
+
}
|
|
24
|
+
catch { /* observer's fault, not ours */ }
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
return {
|
|
28
|
+
set(key, entry) {
|
|
29
|
+
const before = outstanding(entry.requestId);
|
|
30
|
+
entries.set(key, entry);
|
|
31
|
+
// The FIRST outstanding prompt is what makes a run blocked; a second
|
|
32
|
+
// concurrent one does not make it more blocked, and announcing again
|
|
33
|
+
// would have a listener count transitions rather than read a state.
|
|
34
|
+
if (before === 0)
|
|
35
|
+
announce(entry.requestId, true);
|
|
36
|
+
},
|
|
37
|
+
get(key) {
|
|
38
|
+
return entries.get(key);
|
|
39
|
+
},
|
|
40
|
+
delete(key) {
|
|
41
|
+
const entry = entries.get(key);
|
|
42
|
+
const removed = entries.delete(key);
|
|
43
|
+
// The LAST removal clears it. Announcing on every resolution would report
|
|
44
|
+
// a run free while another prompt is still on screen.
|
|
45
|
+
if (removed && entry && outstanding(entry.requestId) === 0) {
|
|
46
|
+
announce(entry.requestId, false);
|
|
47
|
+
}
|
|
48
|
+
return removed;
|
|
49
|
+
},
|
|
50
|
+
entries() {
|
|
51
|
+
return entries.entries();
|
|
52
|
+
},
|
|
53
|
+
onChange(listener) {
|
|
54
|
+
listeners.add(listener);
|
|
55
|
+
return () => { listeners.delete(listener); };
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=permissionWaitRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissionWaitRegistry.js","sourceRoot":"","sources":["../../src/coordination/permissionWaitRegistry.ts"],"names":[],"mappings":"AAiCA,MAAM,UAAU,4BAA4B;IAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAa,CAAA;IACpC,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAA;IAEnD,MAAM,WAAW,GAAG,CAAC,SAA6B,EAAU,EAAE;QAC5D,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,CAAA;QACxB,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;gBAAE,KAAK,IAAI,CAAC,CAAA;QAC/C,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,CAAC,SAA6B,EAAE,OAAgB,EAAQ,EAAE;QACzE,IAAI,CAAC,SAAS;YAAE,OAAM;QACtB,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;YACtC,0EAA0E;YAC1E,uEAAuE;YACvE,yCAAyC;YACzC,IAAI,CAAC;gBAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,gCAAgC,CAAC,CAAC;QACjF,CAAC;IACH,CAAC,CAAA;IAED,OAAO;QACL,GAAG,CAAC,GAAG,EAAE,KAAK;YACZ,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YAC3C,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;YACvB,qEAAqE;YACrE,qEAAqE;YACrE,oEAAoE;YACpE,IAAI,MAAM,KAAK,CAAC;gBAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QACnD,CAAC;QACD,GAAG,CAAC,GAAG;YACL,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC;QACD,MAAM,CAAC,GAAG;YACR,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACnC,0EAA0E;YAC1E,sDAAsD;YACtD,IAAI,OAAO,IAAI,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3D,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;YAClC,CAAC;YACD,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,OAAO;YACL,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAC1B,CAAC;QACD,QAAQ,CAAC,QAAQ;YACf,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACvB,OAAO,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC,CAAA;QAC7C,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query — the pull half of coordination.
|
|
3
|
+
*
|
|
4
|
+
* `XENO_AGENT_COORDINATION_SPEC.md` §7: messaging is a notification channel, but
|
|
5
|
+
* because runs share a host an agent can also **ask**. That changes the
|
|
6
|
+
* coordination style from *"hope someone told me"* to *"check before you act"*,
|
|
7
|
+
* which the spec calls the only version that scales past a handful of agents.
|
|
8
|
+
*
|
|
9
|
+
* > "This is the capability a peer-to-peer design cannot offer, because peers
|
|
10
|
+
* > hold no shared state."
|
|
11
|
+
*
|
|
12
|
+
* ## Summary, never transcript — enforced by the type, not by discipline
|
|
13
|
+
*
|
|
14
|
+
* Gate 9 requires `run.summary` to return a summary and **never** a transcript
|
|
15
|
+
* or file contents, and §2.3's rule holds for pull as well as push: moving whole
|
|
16
|
+
* context between runs "prevents context bleeding between runs that the user
|
|
17
|
+
* separated on purpose".
|
|
18
|
+
*
|
|
19
|
+
* So `RunSummary` has **no field capable of holding one**. There is no
|
|
20
|
+
* `transcript`, no `messages`, no `contents`, no `diff` — `filesTouched` is a
|
|
21
|
+
* list of PATHS. A reviewer checking this rule reads the type, not the call
|
|
22
|
+
* sites, and a future field that could carry content has to be added
|
|
23
|
+
* deliberately rather than slipped in.
|
|
24
|
+
*
|
|
25
|
+
* ## Truncation is reported, never silent
|
|
26
|
+
*
|
|
27
|
+
* A summary is bounded, because an unbounded one is a transcript wearing a
|
|
28
|
+
* different name. When the caps bite, the result SAYS SO: a shortened list that
|
|
29
|
+
* does not announce itself is indistinguishable from a run that touched fewer
|
|
30
|
+
* files, and the reader would draw a conclusion from an absence that is an
|
|
31
|
+
* artefact.
|
|
32
|
+
*/
|
|
33
|
+
import type { Claim, ClaimScope } from './claims.js';
|
|
34
|
+
import type { RunPosture } from './messages.js';
|
|
35
|
+
export type RunState = 'idle' | 'running' | 'awaiting-approval' | 'stopped';
|
|
36
|
+
/** What a peer looks like from another run (§3, §7). */
|
|
37
|
+
/**
|
|
38
|
+
* A run's activity changed — ADE §5.2b, §7's "last decision".
|
|
39
|
+
*
|
|
40
|
+
* 🔴 `awaiting-approval` is a DECLARED state that nothing ever produced, and
|
|
41
|
+
* the gap is not cosmetic: a peer deciding whether to wait for a run or take
|
|
42
|
+
* the work itself needs "blocked on a human" to look different from "busy". A
|
|
43
|
+
* run reported `running` while it sits on a permission prompt is the one case
|
|
44
|
+
* where waiting is guaranteed to be wrong.
|
|
45
|
+
*/
|
|
46
|
+
export interface RunActivitySignal {
|
|
47
|
+
runId: string;
|
|
48
|
+
state: RunState;
|
|
49
|
+
/** §7's fourth summary field. Absent means "no change", never "none". */
|
|
50
|
+
lastDecision?: string;
|
|
51
|
+
}
|
|
52
|
+
export type RunActivityListener = (signal: RunActivitySignal) => void;
|
|
53
|
+
export interface PeerDescriptor {
|
|
54
|
+
runId: string;
|
|
55
|
+
/** Human-readable, defaults from the workspace, settable by the user (§3). */
|
|
56
|
+
name: string;
|
|
57
|
+
state: RunState;
|
|
58
|
+
/** Workspace IDENTITY so a human can disambiguate — never its contents. */
|
|
59
|
+
workspace: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* What a run has changed, as §7 defines it: "files touched, commands run,
|
|
63
|
+
* current claim set, last decision."
|
|
64
|
+
*/
|
|
65
|
+
export interface RunSummary {
|
|
66
|
+
runId: string;
|
|
67
|
+
name: string;
|
|
68
|
+
state: RunState;
|
|
69
|
+
workspace: string;
|
|
70
|
+
/** Paths only. There is deliberately no field for their contents. */
|
|
71
|
+
filesTouched: string[];
|
|
72
|
+
commandsRun: string[];
|
|
73
|
+
/**
|
|
74
|
+
* False when the lists above are not the whole story — see `RunRecord`.
|
|
75
|
+
*
|
|
76
|
+
* Distinct from `truncated`, which says a complete account was CUT to a cap.
|
|
77
|
+
* This says the account was never complete to begin with, and the reader's
|
|
78
|
+
* next action differs: ask for more versus do not conclude anything from an
|
|
79
|
+
* empty list.
|
|
80
|
+
*/
|
|
81
|
+
complete: boolean;
|
|
82
|
+
claims: ClaimScope[];
|
|
83
|
+
/** One line. Not a transcript, not the reasoning that produced it. */
|
|
84
|
+
lastDecision?: string;
|
|
85
|
+
/**
|
|
86
|
+
* True when a cap shortened any list above.
|
|
87
|
+
*
|
|
88
|
+
* Present so a bounded summary cannot be mistaken for a complete one — the
|
|
89
|
+
* same reason the sandbox observation surface reports `degraded` rather than
|
|
90
|
+
* letting an empty result mean two different things.
|
|
91
|
+
*/
|
|
92
|
+
truncated: boolean;
|
|
93
|
+
}
|
|
94
|
+
export interface RunRecord {
|
|
95
|
+
runId: string;
|
|
96
|
+
name: string;
|
|
97
|
+
state: RunState;
|
|
98
|
+
workspace: string;
|
|
99
|
+
filesTouched: string[];
|
|
100
|
+
commandsRun: string[];
|
|
101
|
+
lastDecision?: string;
|
|
102
|
+
/**
|
|
103
|
+
* Whether this account of what the run has done is WHOLE.
|
|
104
|
+
*
|
|
105
|
+
* 🔴 Defaults to false, and the default is the point. An empty
|
|
106
|
+
* `commandsRun` means "ran nothing" to whoever reads it, and a host that
|
|
107
|
+
* simply does not observe commands would be asserting that — the same
|
|
108
|
+
* empty-versus-unknown conflation `runSummary` already refuses when it
|
|
109
|
+
* returns `undefined` for an invisible run rather than an empty summary.
|
|
110
|
+
*
|
|
111
|
+
* Today the standalone host observes FILES and not commands: the process
|
|
112
|
+
* sensor lives behind `xeno-use` and this host consumes only the
|
|
113
|
+
* file-change port. So it registers runs with this false, and a peer reading
|
|
114
|
+
* the summary can tell "no commands" from "commands unknown".
|
|
115
|
+
*/
|
|
116
|
+
complete?: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* The capabilities this run is executing with — §6's derivation input.
|
|
119
|
+
*
|
|
120
|
+
* ⚠️ Optional, and absent means UNKNOWN rather than "no capabilities" — the
|
|
121
|
+
* same distinction `complete` above exists to preserve. A host that does not
|
|
122
|
+
* know a run's posture must not have that read as the most constrained
|
|
123
|
+
* posture, because a maximally-constrained *receiver* is precisely the case
|
|
124
|
+
* that holds everything, and a maximally-constrained *sender* is the case that
|
|
125
|
+
* is never held. Guessing in either direction would be a safety decision
|
|
126
|
+
* disguised as a default; `deriveInboundPolicy` refuses to compare instead.
|
|
127
|
+
*
|
|
128
|
+
* Not part of `RunSummary`: §7 answers what a run has CHANGED, and a peer
|
|
129
|
+
* learning exactly which capabilities another run holds is reconnaissance,
|
|
130
|
+
* not coordination.
|
|
131
|
+
*/
|
|
132
|
+
posture?: RunPosture;
|
|
133
|
+
}
|
|
134
|
+
export interface CoordinationQueryOptions {
|
|
135
|
+
maxFiles?: number;
|
|
136
|
+
maxCommands?: number;
|
|
137
|
+
/**
|
|
138
|
+
* Decides which runs a caller may see (§7: "every run the caller is permitted
|
|
139
|
+
* to see"). Defaults to same-workspace visibility, which is the conservative
|
|
140
|
+
* reading: a run should not learn that unrelated work exists just because it
|
|
141
|
+
* shares a host.
|
|
142
|
+
*/
|
|
143
|
+
canSee?: (caller: RunRecord, candidate: RunRecord) => boolean;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* The host's read side.
|
|
147
|
+
*
|
|
148
|
+
* Every method is a host call over host-held state. §3: "Discovery is a host
|
|
149
|
+
* query, never a filesystem scan" — which is also why this works across sandbox
|
|
150
|
+
* boundaries at all, since a container cannot scan a directory it cannot see.
|
|
151
|
+
*/
|
|
152
|
+
export declare class CoordinationQuery {
|
|
153
|
+
#private;
|
|
154
|
+
constructor(options?: CoordinationQueryOptions);
|
|
155
|
+
upsertRun(record: RunRecord): void;
|
|
156
|
+
removeRun(runId: string): void;
|
|
157
|
+
/**
|
|
158
|
+
* §7 `coordination.peers.list`.
|
|
159
|
+
*
|
|
160
|
+
* A run that no window is attached to is still listed: §3 says addressing
|
|
161
|
+
* survives the disappearance of any surface, because the run lives in the
|
|
162
|
+
* host rather than in a window.
|
|
163
|
+
*/
|
|
164
|
+
peers(callerRunId: string): PeerDescriptor[];
|
|
165
|
+
/**
|
|
166
|
+
* A run's permission posture, for §6's inbound-policy derivation.
|
|
167
|
+
*
|
|
168
|
+
* ⚠️ NOT a host method and NOT reachable by an agent — deliberately. It is
|
|
169
|
+
* read by the message bus inside the host to decide a policy; exposing it as a
|
|
170
|
+
* peer-visible fact would hand one agent an inventory of another's
|
|
171
|
+
* capabilities, which §7's summary-not-transcript rule exists to prevent.
|
|
172
|
+
*
|
|
173
|
+
* `undefined` for a run this registry has never seen AND for a registered run
|
|
174
|
+
* that carried no posture — both are honestly "unknown", and the caller must
|
|
175
|
+
* not be able to tell them apart, because it must treat them identically.
|
|
176
|
+
*/
|
|
177
|
+
postureOf(runId: string): RunPosture | undefined;
|
|
178
|
+
/**
|
|
179
|
+
* §7 `coordination.run.summary`. Gate 9: a summary, never a transcript.
|
|
180
|
+
*
|
|
181
|
+
* Returns `undefined` rather than an empty summary when the caller may not see
|
|
182
|
+
* the run: an empty summary would report "this run changed nothing", which is
|
|
183
|
+
* a different and false statement from "you cannot see this run".
|
|
184
|
+
*/
|
|
185
|
+
runSummary(callerRunId: string, targetRunId: string, claims: Claim[]): RunSummary | undefined;
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/coordination/query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,mBAAmB,GAAG,SAAS,CAAA;AAE3E,wDAAwD;AACxD;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,QAAQ,CAAA;IACf,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAA;AAErE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,QAAQ,CAAA;IACf,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,QAAQ,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,qEAAqE;IACrE,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB;;;;;;;OAOG;IACH,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;OAMG;IACH,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,QAAQ,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,UAAU,CAAA;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,KAAK,OAAO,CAAA;CAC9D;AAKD;;;;;;GAMG;AACH,qBAAa,iBAAiB;;gBAMhB,OAAO,GAAE,wBAA6B;IAmBlD,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAIlC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI9B;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,EAAE;IAa5C;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIhD;;;;;;OAMG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,GAAG,SAAS;CAyB9F"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query — the pull half of coordination.
|
|
3
|
+
*
|
|
4
|
+
* `XENO_AGENT_COORDINATION_SPEC.md` §7: messaging is a notification channel, but
|
|
5
|
+
* because runs share a host an agent can also **ask**. That changes the
|
|
6
|
+
* coordination style from *"hope someone told me"* to *"check before you act"*,
|
|
7
|
+
* which the spec calls the only version that scales past a handful of agents.
|
|
8
|
+
*
|
|
9
|
+
* > "This is the capability a peer-to-peer design cannot offer, because peers
|
|
10
|
+
* > hold no shared state."
|
|
11
|
+
*
|
|
12
|
+
* ## Summary, never transcript — enforced by the type, not by discipline
|
|
13
|
+
*
|
|
14
|
+
* Gate 9 requires `run.summary` to return a summary and **never** a transcript
|
|
15
|
+
* or file contents, and §2.3's rule holds for pull as well as push: moving whole
|
|
16
|
+
* context between runs "prevents context bleeding between runs that the user
|
|
17
|
+
* separated on purpose".
|
|
18
|
+
*
|
|
19
|
+
* So `RunSummary` has **no field capable of holding one**. There is no
|
|
20
|
+
* `transcript`, no `messages`, no `contents`, no `diff` — `filesTouched` is a
|
|
21
|
+
* list of PATHS. A reviewer checking this rule reads the type, not the call
|
|
22
|
+
* sites, and a future field that could carry content has to be added
|
|
23
|
+
* deliberately rather than slipped in.
|
|
24
|
+
*
|
|
25
|
+
* ## Truncation is reported, never silent
|
|
26
|
+
*
|
|
27
|
+
* A summary is bounded, because an unbounded one is a transcript wearing a
|
|
28
|
+
* different name. When the caps bite, the result SAYS SO: a shortened list that
|
|
29
|
+
* does not announce itself is indistinguishable from a run that touched fewer
|
|
30
|
+
* files, and the reader would draw a conclusion from an absence that is an
|
|
31
|
+
* artefact.
|
|
32
|
+
*/
|
|
33
|
+
const DEFAULT_MAX_FILES = 50;
|
|
34
|
+
const DEFAULT_MAX_COMMANDS = 25;
|
|
35
|
+
/**
|
|
36
|
+
* The host's read side.
|
|
37
|
+
*
|
|
38
|
+
* Every method is a host call over host-held state. §3: "Discovery is a host
|
|
39
|
+
* query, never a filesystem scan" — which is also why this works across sandbox
|
|
40
|
+
* boundaries at all, since a container cannot scan a directory it cannot see.
|
|
41
|
+
*/
|
|
42
|
+
export class CoordinationQuery {
|
|
43
|
+
#runs = new Map();
|
|
44
|
+
#maxFiles;
|
|
45
|
+
#maxCommands;
|
|
46
|
+
#canSee;
|
|
47
|
+
constructor(options = {}) {
|
|
48
|
+
this.#maxFiles = options.maxFiles ?? DEFAULT_MAX_FILES;
|
|
49
|
+
this.#maxCommands = options.maxCommands ?? DEFAULT_MAX_COMMANDS;
|
|
50
|
+
/**
|
|
51
|
+
* 🔴 An UNIDENTIFIED workspace matches nothing, including another
|
|
52
|
+
* unidentified one.
|
|
53
|
+
*
|
|
54
|
+
* Plain string equality made two runs with no workspace id peers of each
|
|
55
|
+
* other, which is precisely what this rule exists to prevent: §7 says a run
|
|
56
|
+
* "should not learn that unrelated work exists just because it shares a
|
|
57
|
+
* host", and `''` is not evidence of shared work — it is the absence of
|
|
58
|
+
* evidence either way.
|
|
59
|
+
*/
|
|
60
|
+
this.#canSee =
|
|
61
|
+
options.canSee
|
|
62
|
+
?? ((caller, candidate) => caller.workspace !== '' && caller.workspace === candidate.workspace);
|
|
63
|
+
}
|
|
64
|
+
upsertRun(record) {
|
|
65
|
+
this.#runs.set(record.runId, record);
|
|
66
|
+
}
|
|
67
|
+
removeRun(runId) {
|
|
68
|
+
this.#runs.delete(runId);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* §7 `coordination.peers.list`.
|
|
72
|
+
*
|
|
73
|
+
* A run that no window is attached to is still listed: §3 says addressing
|
|
74
|
+
* survives the disappearance of any surface, because the run lives in the
|
|
75
|
+
* host rather than in a window.
|
|
76
|
+
*/
|
|
77
|
+
peers(callerRunId) {
|
|
78
|
+
const caller = this.#runs.get(callerRunId);
|
|
79
|
+
if (!caller)
|
|
80
|
+
return [];
|
|
81
|
+
return [...this.#runs.values()]
|
|
82
|
+
.filter((candidate) => candidate.runId !== callerRunId && this.#canSee(caller, candidate))
|
|
83
|
+
.map((candidate) => ({
|
|
84
|
+
runId: candidate.runId,
|
|
85
|
+
name: candidate.name,
|
|
86
|
+
state: candidate.state,
|
|
87
|
+
workspace: candidate.workspace,
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* A run's permission posture, for §6's inbound-policy derivation.
|
|
92
|
+
*
|
|
93
|
+
* ⚠️ NOT a host method and NOT reachable by an agent — deliberately. It is
|
|
94
|
+
* read by the message bus inside the host to decide a policy; exposing it as a
|
|
95
|
+
* peer-visible fact would hand one agent an inventory of another's
|
|
96
|
+
* capabilities, which §7's summary-not-transcript rule exists to prevent.
|
|
97
|
+
*
|
|
98
|
+
* `undefined` for a run this registry has never seen AND for a registered run
|
|
99
|
+
* that carried no posture — both are honestly "unknown", and the caller must
|
|
100
|
+
* not be able to tell them apart, because it must treat them identically.
|
|
101
|
+
*/
|
|
102
|
+
postureOf(runId) {
|
|
103
|
+
return this.#runs.get(runId)?.posture;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* §7 `coordination.run.summary`. Gate 9: a summary, never a transcript.
|
|
107
|
+
*
|
|
108
|
+
* Returns `undefined` rather than an empty summary when the caller may not see
|
|
109
|
+
* the run: an empty summary would report "this run changed nothing", which is
|
|
110
|
+
* a different and false statement from "you cannot see this run".
|
|
111
|
+
*/
|
|
112
|
+
runSummary(callerRunId, targetRunId, claims) {
|
|
113
|
+
const caller = this.#runs.get(callerRunId);
|
|
114
|
+
const target = this.#runs.get(targetRunId);
|
|
115
|
+
if (!caller || !target)
|
|
116
|
+
return undefined;
|
|
117
|
+
if (target.runId !== caller.runId && !this.#canSee(caller, target))
|
|
118
|
+
return undefined;
|
|
119
|
+
const files = target.filesTouched.slice(0, this.#maxFiles);
|
|
120
|
+
const commands = target.commandsRun.slice(0, this.#maxCommands);
|
|
121
|
+
return {
|
|
122
|
+
runId: target.runId,
|
|
123
|
+
name: target.name,
|
|
124
|
+
state: target.state,
|
|
125
|
+
workspace: target.workspace,
|
|
126
|
+
filesTouched: files,
|
|
127
|
+
commandsRun: commands,
|
|
128
|
+
complete: target.complete === true,
|
|
129
|
+
claims: claims
|
|
130
|
+
.filter((claim) => claim.runId === target.runId)
|
|
131
|
+
.map((claim) => claim.scope),
|
|
132
|
+
...(target.lastDecision === undefined ? {} : { lastDecision: target.lastDecision }),
|
|
133
|
+
truncated: files.length < target.filesTouched.length ||
|
|
134
|
+
commands.length < target.commandsRun.length,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/coordination/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { DeliveredMessage } from './messages.js';
|
|
2
|
+
/**
|
|
3
|
+
* What a run's peers said, as text an agent will read — ADE §5.2b, §6.
|
|
4
|
+
*
|
|
5
|
+
* 🔴 A separate function because the DELIVERY and the WORDING fail
|
|
6
|
+
* differently: delivery is a host wire that either happens or does not, and the
|
|
7
|
+
* wording is a prompt-space decision. Keeping them apart is also what makes the
|
|
8
|
+
* wording assertable without starting a turn.
|
|
9
|
+
*
|
|
10
|
+
* Names the sender on every line. A message an agent cannot attribute is one it
|
|
11
|
+
* cannot reply to — and replying is a `CoordinationSend` away, which is the
|
|
12
|
+
* whole point of pushing these in rather than letting the agent poll.
|
|
13
|
+
*/
|
|
14
|
+
export declare function renderInbox(delivered: readonly DeliveredMessage[]): string;
|
|
15
|
+
//# sourceMappingURL=renderInbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderInbox.d.ts","sourceRoot":"","sources":["../../src/coordination/renderInbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,GAAG,MAAM,CAI1E"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a run's peers said, as text an agent will read — ADE §5.2b, §6.
|
|
3
|
+
*
|
|
4
|
+
* 🔴 A separate function because the DELIVERY and the WORDING fail
|
|
5
|
+
* differently: delivery is a host wire that either happens or does not, and the
|
|
6
|
+
* wording is a prompt-space decision. Keeping them apart is also what makes the
|
|
7
|
+
* wording assertable without starting a turn.
|
|
8
|
+
*
|
|
9
|
+
* Names the sender on every line. A message an agent cannot attribute is one it
|
|
10
|
+
* cannot reply to — and replying is a `CoordinationSend` away, which is the
|
|
11
|
+
* whole point of pushing these in rather than letting the agent poll.
|
|
12
|
+
*/
|
|
13
|
+
export function renderInbox(delivered) {
|
|
14
|
+
if (delivered.length === 0)
|
|
15
|
+
return '';
|
|
16
|
+
const lines = delivered.map((item) => `- ${item.message.fromRunId}: ${item.message.text}`);
|
|
17
|
+
return lines.join('\n');
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=renderInbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderInbox.js","sourceRoot":"","sources":["../../src/coordination/renderInbox.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,SAAsC;IAChE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACrC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1F,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coordination events as runtime-timeline events — the other half of gate 8.
|
|
3
|
+
*
|
|
4
|
+
* `XENO_AGENT_COORDINATION_SPEC.md` §9 sets the bar and states the consequence
|
|
5
|
+
* of missing it:
|
|
6
|
+
*
|
|
7
|
+
* > "Every message and every claim is a first-class runtime event, recorded in
|
|
8
|
+
* > the run timeline and the audit trail with sender, recipient, outcome and
|
|
9
|
+
* > timestamp… A reviewer looking at a surprising diff must be able to trace it
|
|
10
|
+
* > back to the message that prompted it. **If they cannot, this section is not
|
|
11
|
+
* > implemented.**"
|
|
12
|
+
*
|
|
13
|
+
* That is why the message TEXT is carried rather than only its id. A reviewer
|
|
14
|
+
* following an id to a message they cannot read has traced a pointer, not a
|
|
15
|
+
* reason — and §9's whole claim is that a message is "reviewable evidence of why
|
|
16
|
+
* a run changed course" rather than "an invisible nudge that changed an agent's
|
|
17
|
+
* behaviour for reasons a reviewer cannot reconstruct". Carrying the text costs
|
|
18
|
+
* nothing precisely because §2.3 already bounds a message to one line.
|
|
19
|
+
*
|
|
20
|
+
* ## Why this is an adapter and not a method on the service
|
|
21
|
+
*
|
|
22
|
+
* `CoordinationService` emits DOMAIN events and knows nothing about the event
|
|
23
|
+
* store; this maps them onto the timeline contract. Keeping the seam explicit
|
|
24
|
+
* means the coordination rules stay testable without a store, and the store's
|
|
25
|
+
* schema can change without touching them.
|
|
26
|
+
*/
|
|
27
|
+
import type { AgentRuntimeEventDraft } from '@xenosystem/agent-interface-contract';
|
|
28
|
+
import type { CoordinationEvent } from './CoordinationService.js';
|
|
29
|
+
export interface CoordinationEventContext {
|
|
30
|
+
conversationId: string;
|
|
31
|
+
requestId: string;
|
|
32
|
+
workspaceId?: string;
|
|
33
|
+
agentId?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Every coordination event shares this source, so a timeline query can select
|
|
37
|
+
* coordination without matching on each type — and a reviewer can see at a
|
|
38
|
+
* glance which lines are agents talking rather than an agent working.
|
|
39
|
+
*/
|
|
40
|
+
export declare const COORDINATION_EVENT_SOURCE = "coordination";
|
|
41
|
+
/**
|
|
42
|
+
* Maps one coordination event onto a runtime-event draft.
|
|
43
|
+
*
|
|
44
|
+
* `sequence` is deliberately absent: the store assigns it. A caller inventing
|
|
45
|
+
* one would be asserting an ordering it cannot know, and two callers inventing
|
|
46
|
+
* them would silently interleave.
|
|
47
|
+
*/
|
|
48
|
+
export declare function coordinationRuntimeEventDraft(event: CoordinationEvent, context: CoordinationEventContext, options: {
|
|
49
|
+
id: string;
|
|
50
|
+
timestamp: string;
|
|
51
|
+
text?: string;
|
|
52
|
+
}): AgentRuntimeEventDraft;
|
|
53
|
+
//# sourceMappingURL=runtimeEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeEvents.d.ts","sourceRoot":"","sources":["../../src/coordination/runtimeEvents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAA;AAGlF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,iBAAiB,CAAA;AAEvD;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,sBAAsB,CAwExB"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coordination events as runtime-timeline events — the other half of gate 8.
|
|
3
|
+
*
|
|
4
|
+
* `XENO_AGENT_COORDINATION_SPEC.md` §9 sets the bar and states the consequence
|
|
5
|
+
* of missing it:
|
|
6
|
+
*
|
|
7
|
+
* > "Every message and every claim is a first-class runtime event, recorded in
|
|
8
|
+
* > the run timeline and the audit trail with sender, recipient, outcome and
|
|
9
|
+
* > timestamp… A reviewer looking at a surprising diff must be able to trace it
|
|
10
|
+
* > back to the message that prompted it. **If they cannot, this section is not
|
|
11
|
+
* > implemented.**"
|
|
12
|
+
*
|
|
13
|
+
* That is why the message TEXT is carried rather than only its id. A reviewer
|
|
14
|
+
* following an id to a message they cannot read has traced a pointer, not a
|
|
15
|
+
* reason — and §9's whole claim is that a message is "reviewable evidence of why
|
|
16
|
+
* a run changed course" rather than "an invisible nudge that changed an agent's
|
|
17
|
+
* behaviour for reasons a reviewer cannot reconstruct". Carrying the text costs
|
|
18
|
+
* nothing precisely because §2.3 already bounds a message to one line.
|
|
19
|
+
*
|
|
20
|
+
* ## Why this is an adapter and not a method on the service
|
|
21
|
+
*
|
|
22
|
+
* `CoordinationService` emits DOMAIN events and knows nothing about the event
|
|
23
|
+
* store; this maps them onto the timeline contract. Keeping the seam explicit
|
|
24
|
+
* means the coordination rules stay testable without a store, and the store's
|
|
25
|
+
* schema can change without touching them.
|
|
26
|
+
*/
|
|
27
|
+
import { describeClaimScope } from './claims.js';
|
|
28
|
+
/**
|
|
29
|
+
* Every coordination event shares this source, so a timeline query can select
|
|
30
|
+
* coordination without matching on each type — and a reviewer can see at a
|
|
31
|
+
* glance which lines are agents talking rather than an agent working.
|
|
32
|
+
*/
|
|
33
|
+
export const COORDINATION_EVENT_SOURCE = 'coordination';
|
|
34
|
+
/**
|
|
35
|
+
* Maps one coordination event onto a runtime-event draft.
|
|
36
|
+
*
|
|
37
|
+
* `sequence` is deliberately absent: the store assigns it. A caller inventing
|
|
38
|
+
* one would be asserting an ordering it cannot know, and two callers inventing
|
|
39
|
+
* them would silently interleave.
|
|
40
|
+
*/
|
|
41
|
+
export function coordinationRuntimeEventDraft(event, context, options) {
|
|
42
|
+
const base = {
|
|
43
|
+
conversationId: context.conversationId,
|
|
44
|
+
requestId: context.requestId,
|
|
45
|
+
...(context.workspaceId === undefined ? {} : { workspaceId: context.workspaceId }),
|
|
46
|
+
...(context.agentId === undefined ? {} : { agentId: context.agentId }),
|
|
47
|
+
source: COORDINATION_EVENT_SOURCE,
|
|
48
|
+
};
|
|
49
|
+
const envelope = {
|
|
50
|
+
id: options.id,
|
|
51
|
+
type: event.type,
|
|
52
|
+
timestamp: options.timestamp,
|
|
53
|
+
};
|
|
54
|
+
switch (event.type) {
|
|
55
|
+
case 'coordination.message.sent':
|
|
56
|
+
return {
|
|
57
|
+
...base,
|
|
58
|
+
event: {
|
|
59
|
+
...envelope,
|
|
60
|
+
fromRunId: event.fromRunId,
|
|
61
|
+
toRunId: event.toRunId,
|
|
62
|
+
messageId: event.messageId,
|
|
63
|
+
outcome: event.outcome,
|
|
64
|
+
// §9 requires sender, recipient, OUTCOME and timestamp. The outcome is
|
|
65
|
+
// what makes a refused or held message auditable rather than absent —
|
|
66
|
+
// a timeline showing only delivered messages would imply the others
|
|
67
|
+
// were never attempted.
|
|
68
|
+
...(options.text === undefined ? {} : { text: options.text }),
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
case 'coordination.message.delivered':
|
|
72
|
+
return {
|
|
73
|
+
...base,
|
|
74
|
+
event: {
|
|
75
|
+
...envelope,
|
|
76
|
+
fromRunId: event.fromRunId,
|
|
77
|
+
toRunId: event.toRunId,
|
|
78
|
+
messageId: event.messageId,
|
|
79
|
+
// The text again, on the DELIVERY, because delivery is the moment the
|
|
80
|
+
// receiving run could have changed course — and that is the line a
|
|
81
|
+
// reviewer lands on when tracing a diff backwards.
|
|
82
|
+
...(options.text === undefined ? {} : { text: options.text }),
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
case 'coordination.claim.acquired':
|
|
86
|
+
return {
|
|
87
|
+
...base,
|
|
88
|
+
event: {
|
|
89
|
+
...envelope,
|
|
90
|
+
runId: event.runId,
|
|
91
|
+
scope: describeClaimScope(event.scope),
|
|
92
|
+
claimId: event.claimId,
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
case 'coordination.claim.refused':
|
|
96
|
+
return {
|
|
97
|
+
...base,
|
|
98
|
+
event: {
|
|
99
|
+
...envelope,
|
|
100
|
+
runId: event.runId,
|
|
101
|
+
scope: describeClaimScope(event.scope),
|
|
102
|
+
// The holder, so the timeline records the COLLISION rather than just a
|
|
103
|
+
// failure. §5: the fleet view showing what is claimed by whom is the
|
|
104
|
+
// fastest way to see a collision before it becomes a merge.
|
|
105
|
+
heldByRunId: event.heldByRunId,
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
case 'coordination.claim.released':
|
|
109
|
+
return { ...base, event: { ...envelope, runId: event.runId, released: event.released } };
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=runtimeEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtimeEvents.js","sourceRoot":"","sources":["../../src/coordination/runtimeEvents.ts"],"names":[],"mappings":"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"}
|