@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,77 @@
|
|
|
1
|
+
import { type StartLocalAgentHostAuthorityOptions } from './localHostAuthority.js';
|
|
2
|
+
/**
|
|
3
|
+
* DETACHED HOST SERVICE — ADE spec §9, build-order step 3.
|
|
4
|
+
*
|
|
5
|
+
* The lifecycle wrapper that lets the host own its own OS process instead of
|
|
6
|
+
* living inside the Electron main process.
|
|
7
|
+
*
|
|
8
|
+
* @unadopted-by-design ADE §9 step 3 — transport, election and lifecycle are done;
|
|
9
|
+
* the standalone app does not spawn or supervise this process yet, and cannot
|
|
10
|
+
* fully until the SDK-native lane stops threading a live `BrowserWindow` into
|
|
11
|
+
* its tool implementations (`electron-host/src/sdkAgent.ts`). Adopting it early
|
|
12
|
+
* for ACP + Cloud only IS possible — the adapter registry already refuses
|
|
13
|
+
* `sdk-native` by name — but that is a composition decision, not a wiring fix.
|
|
14
|
+
*
|
|
15
|
+
* 🔴 That marker is not decoration. `scripts/find-unwired-modules.mjs` flagged
|
|
16
|
+
* this module as the FOURTH instance of the "built, tested, unreachable" shape
|
|
17
|
+
* (after xeno-workflow's 76 node types, xeno-tools' `install`, and twice in this
|
|
18
|
+
* repo the same day), and it was right to: from outside, deliberately staged and
|
|
19
|
+
* accidentally orphaned are indistinguishable. The marker is what makes the
|
|
20
|
+
* difference visible, and it carries a reason so it can be argued with.
|
|
21
|
+
*
|
|
22
|
+
* Almost none of the hard work is here: `startLocalAgentHostAuthority` already
|
|
23
|
+
* elects a single local authority, serves it over an authenticated OS endpoint,
|
|
24
|
+
* and attaches every other process as a client. What was missing is a process
|
|
25
|
+
* whose ONLY job is to be that owner — and the lifecycle rules that make such a
|
|
26
|
+
* process safe to run unattended.
|
|
27
|
+
*
|
|
28
|
+
* ## Why this refuses to run as a client (§7.1, capability honesty)
|
|
29
|
+
*
|
|
30
|
+
* `startLocalAgentHostAuthority` is deliberately forgiving: if someone else owns
|
|
31
|
+
* the lease it hands back an attached client, because that is exactly right for
|
|
32
|
+
* a GUI that just wants to reach the host however it can.
|
|
33
|
+
*
|
|
34
|
+
* It is exactly wrong for a service whose purpose is to BE the host. Such a
|
|
35
|
+
* process, demoted to a client, would start cleanly, report healthy, hold an
|
|
36
|
+
* idle connection and serve nothing — the failure mode where a supervisor keeps
|
|
37
|
+
* restarting a process that is doing no work and saying nothing about it. So a
|
|
38
|
+
* demotion is a NAMED startup failure here, not a silent degradation.
|
|
39
|
+
*
|
|
40
|
+
* ## Why losing authority stops the process
|
|
41
|
+
*
|
|
42
|
+
* The lease can be lost — the heartbeat fails, or the file is taken over after a
|
|
43
|
+
* stall. Once that happens this process is no longer the authority, and the one
|
|
44
|
+
* thing it must not do is keep running as though it were: two writers to the
|
|
45
|
+
* same durable state is the split-brain the lease exists to prevent. It stops
|
|
46
|
+
* and reports why, leaving restart policy to whatever supervises it.
|
|
47
|
+
*/
|
|
48
|
+
export interface DetachedAgentHostOptions extends Omit<StartLocalAgentHostAuthorityOptions, 'onAuthorityLost'> {
|
|
49
|
+
/**
|
|
50
|
+
* Signals that trigger a graceful shutdown. Defaults to SIGINT/SIGTERM.
|
|
51
|
+
* Pass an empty array when the embedder owns signal handling.
|
|
52
|
+
*/
|
|
53
|
+
shutdownSignals?: NodeJS.Signals[];
|
|
54
|
+
/** Called once the service is the elected owner and is serving requests. */
|
|
55
|
+
onReady?: (info: DetachedAgentHostReadyInfo) => void;
|
|
56
|
+
/** Called when the service stops, with the reason. */
|
|
57
|
+
onStopped?: (reason: DetachedAgentHostStopReason, error?: Error) => void;
|
|
58
|
+
}
|
|
59
|
+
export interface DetachedAgentHostReadyInfo {
|
|
60
|
+
endpoint: string;
|
|
61
|
+
instanceId: string;
|
|
62
|
+
protocolVersion: number;
|
|
63
|
+
}
|
|
64
|
+
export type DetachedAgentHostStopReason = 'requested' | 'signal' | 'authority-lost';
|
|
65
|
+
export declare class DetachedAgentHostDemotedError extends Error {
|
|
66
|
+
readonly ownerInstanceId: string;
|
|
67
|
+
constructor(ownerInstanceId: string);
|
|
68
|
+
}
|
|
69
|
+
export interface DetachedAgentHostHandle {
|
|
70
|
+
readonly endpoint: string;
|
|
71
|
+
readonly instanceId: string;
|
|
72
|
+
/** Resolves when the service has stopped, with the reason it stopped. */
|
|
73
|
+
readonly stopped: Promise<DetachedAgentHostStopReason>;
|
|
74
|
+
stop(): Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
export declare function runDetachedAgentHost(options: DetachedAgentHostOptions): Promise<DetachedAgentHostHandle>;
|
|
77
|
+
//# sourceMappingURL=detachedHostService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detachedHostService.d.ts","sourceRoot":"","sources":["../src/detachedHostService.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mCAAmC,EACzC,MAAM,yBAAyB,CAAA;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,MAAM,WAAW,wBACf,SAAQ,IAAI,CAAC,mCAAmC,EAAE,iBAAiB,CAAC;IACpE;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,CAAA;IAClC,4EAA4E;IAC5E,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,IAAI,CAAA;IACpD,sDAAsD;IACtD,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,2BAA2B,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;CACzE;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,MAAM,2BAA2B,GAAG,WAAW,GAAG,QAAQ,GAAG,gBAAgB,CAAA;AAEnF,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;gBAEpB,eAAe,EAAE,MAAM;CASpC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAA;IACtD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CA2DlC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { startLocalAgentHostAuthority, } from './localHostAuthority.js';
|
|
2
|
+
export class DetachedAgentHostDemotedError extends Error {
|
|
3
|
+
ownerInstanceId;
|
|
4
|
+
constructor(ownerInstanceId) {
|
|
5
|
+
super('Another process already owns the local Agent host authority '
|
|
6
|
+
+ `(instance ${ownerInstanceId}). A detached host service must be the owner; `
|
|
7
|
+
+ 'stop the existing owner or run this service against a different endpoint scope.');
|
|
8
|
+
this.name = 'DetachedAgentHostDemotedError';
|
|
9
|
+
this.ownerInstanceId = ownerInstanceId;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export async function runDetachedAgentHost(options) {
|
|
13
|
+
const { shutdownSignals, onReady, onStopped, ...authorityOptions } = options;
|
|
14
|
+
let session;
|
|
15
|
+
let settleStopped = () => { };
|
|
16
|
+
const stopped = new Promise((resolve) => {
|
|
17
|
+
settleStopped = resolve;
|
|
18
|
+
});
|
|
19
|
+
let stopping = false;
|
|
20
|
+
const registeredSignals = [];
|
|
21
|
+
const finish = async (reason, error) => {
|
|
22
|
+
if (stopping)
|
|
23
|
+
return;
|
|
24
|
+
stopping = true;
|
|
25
|
+
for (const { signal, handler } of registeredSignals.splice(0)) {
|
|
26
|
+
process.off(signal, handler);
|
|
27
|
+
}
|
|
28
|
+
// A lost authority has already closed the session from underneath us, and
|
|
29
|
+
// closing twice would try to release a lease we no longer hold.
|
|
30
|
+
if (reason !== 'authority-lost')
|
|
31
|
+
await session?.close().catch(() => undefined);
|
|
32
|
+
onStopped?.(reason, error);
|
|
33
|
+
settleStopped(reason);
|
|
34
|
+
};
|
|
35
|
+
session = await startLocalAgentHostAuthority({
|
|
36
|
+
...authorityOptions,
|
|
37
|
+
onAuthorityLost: (error) => {
|
|
38
|
+
void finish('authority-lost', error);
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
if (session.role !== 'owner') {
|
|
42
|
+
const ownerInstanceId = session.descriptor.instanceId;
|
|
43
|
+
// Release the client connection before reporting: a failed startup must not
|
|
44
|
+
// leave a socket attached to someone else's host.
|
|
45
|
+
await session.close().catch(() => undefined);
|
|
46
|
+
throw new DetachedAgentHostDemotedError(ownerInstanceId);
|
|
47
|
+
}
|
|
48
|
+
for (const signal of shutdownSignals ?? ['SIGINT', 'SIGTERM']) {
|
|
49
|
+
const handler = () => { void finish('signal'); };
|
|
50
|
+
process.on(signal, handler);
|
|
51
|
+
registeredSignals.push({ signal, handler });
|
|
52
|
+
}
|
|
53
|
+
const ready = {
|
|
54
|
+
endpoint: session.descriptor.endpoint,
|
|
55
|
+
instanceId: session.descriptor.instanceId,
|
|
56
|
+
protocolVersion: session.descriptor.protocolVersion,
|
|
57
|
+
};
|
|
58
|
+
onReady?.(ready);
|
|
59
|
+
return {
|
|
60
|
+
endpoint: ready.endpoint,
|
|
61
|
+
instanceId: ready.instanceId,
|
|
62
|
+
stopped,
|
|
63
|
+
stop: async () => { await finish('requested'); },
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=detachedHostService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detachedHostService.js","sourceRoot":"","sources":["../src/detachedHostService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spawns and watches the detached host process — ADE §9 build-order step 3.
|
|
3
|
+
*
|
|
4
|
+
* `runDetachedAgentHost` is the process's own lifecycle: it elects itself owner,
|
|
5
|
+
* refuses to run demoted, and stops when it loses the lease. This is the other
|
|
6
|
+
* half — the parent that starts it, learns when it is actually serving, and
|
|
7
|
+
* notices when it dies.
|
|
8
|
+
*
|
|
9
|
+
* ## 🔴 Readiness is a SIGNAL, never a sleep
|
|
10
|
+
*
|
|
11
|
+
* The parent has to attach as a client, and attaching before the child owns the
|
|
12
|
+
* lease means the parent wins the election instead. The two processes then both
|
|
13
|
+
* believe they are the host, which is the split-brain the lease exists to
|
|
14
|
+
* prevent — reached by way of a race that only shows up on a slow machine.
|
|
15
|
+
*
|
|
16
|
+
* So the child prints one line of JSON when it is serving, and this waits for
|
|
17
|
+
* that line. A fixed sleep would be either flaky or slow, and usually both.
|
|
18
|
+
*
|
|
19
|
+
* ## An exit is reported, never retried in a loop
|
|
20
|
+
*
|
|
21
|
+
* A supervisor that restarts unconditionally turns a permanent failure — a bad
|
|
22
|
+
* endpoint, a corrupt state directory, another owner already holding the lease —
|
|
23
|
+
* into an infinite loop that looks like activity. This reports the exit and the
|
|
24
|
+
* child's own words, and lets the caller decide. `DetachedAgentHostDemotedError`
|
|
25
|
+
* exists precisely so "someone else is already the host" arrives as a named
|
|
26
|
+
* failure rather than as a crash to retry.
|
|
27
|
+
*
|
|
28
|
+
* @unadopted-by-design ADE §9 step 3 — the child ENTRY POINT now EXISTS
|
|
29
|
+
* (`apps/desktop/src/main/detachedHostEntry.ts`) and this supervisor is proven
|
|
30
|
+
* to spawn it: `detachedHostEntry.test.ts` starts the BUILT entry through this
|
|
31
|
+
* code, connects a real client to the endpoint it publishes, and asserts a
|
|
32
|
+
* second one refuses rather than demoting. What is still missing is the app
|
|
33
|
+
* calling it — `index.ts` remains its own in-process host. The app SAYS SO when
|
|
34
|
+
* the flag is set rather than ignoring it; a requested capability that silently
|
|
35
|
+
* does nothing is the defect this marker exists to keep visible.
|
|
36
|
+
*
|
|
37
|
+
* 🔴 CORRECTED 2026-08-14. This said extracting a headless entry was "a
|
|
38
|
+
* refactor rather than a wiring step" because the composition is "written
|
|
39
|
+
* against Electron". It was not: `HostSurfaceCapabilities` has no required
|
|
40
|
+
* fields, so `surface: {}` composes a working host. The one REAL Electron
|
|
41
|
+
* coupling was a static import of the electron-host package pulling `electron`
|
|
42
|
+
* into the shared bundle chunk — invisible to every in-process test, fatal to
|
|
43
|
+
* the built entry, and now a dynamic import gated on a window.
|
|
44
|
+
*/
|
|
45
|
+
import { spawn } from 'node:child_process';
|
|
46
|
+
/** The line the child prints once it owns the lease and is serving. */
|
|
47
|
+
export interface DetachedHostReadySignal {
|
|
48
|
+
type: 'xeno-agent-detached-host-ready';
|
|
49
|
+
endpoint: string;
|
|
50
|
+
instanceId: string;
|
|
51
|
+
protocolVersion: number;
|
|
52
|
+
}
|
|
53
|
+
export interface DetachedHostSupervisorOptions {
|
|
54
|
+
/**
|
|
55
|
+
* Executable to run the child with.
|
|
56
|
+
*
|
|
57
|
+
* In a packaged Electron app this is `process.execPath` — the Electron binary
|
|
58
|
+
* — run with `ELECTRON_RUN_AS_NODE=1`. There is no separate node binary in the
|
|
59
|
+
* bundle, and it is the right choice rather than a workaround: the host loads
|
|
60
|
+
* `better-sqlite3`, which is rebuilt for Electron's ABI, and Electron's own
|
|
61
|
+
* Node is the runtime that ABI matches. A system `node` would fail to load it.
|
|
62
|
+
*/
|
|
63
|
+
execPath: string;
|
|
64
|
+
/** Entry script for the child. */
|
|
65
|
+
entryPath: string;
|
|
66
|
+
/** Extra environment for the child, merged over the parent's. */
|
|
67
|
+
env?: Record<string, string | undefined>;
|
|
68
|
+
cwd?: string;
|
|
69
|
+
/**
|
|
70
|
+
* How long to wait for the ready line.
|
|
71
|
+
*
|
|
72
|
+
* Bounded because the failure it guards is silent: a child that starts, prints
|
|
73
|
+
* nothing and hangs would otherwise leave the app waiting forever with no
|
|
74
|
+
* window and no error.
|
|
75
|
+
*/
|
|
76
|
+
readyTimeoutMs?: number;
|
|
77
|
+
/** Called when the child exits, however it exits. */
|
|
78
|
+
onExit?: (info: {
|
|
79
|
+
code: number | null;
|
|
80
|
+
signal: NodeJS.Signals | null;
|
|
81
|
+
output: string;
|
|
82
|
+
}) => void;
|
|
83
|
+
/** Injected for tests. */
|
|
84
|
+
spawnFn?: typeof spawn;
|
|
85
|
+
}
|
|
86
|
+
export declare class DetachedHostStartError extends Error {
|
|
87
|
+
/** Everything the child said, so a failure is diagnosable from one message. */
|
|
88
|
+
readonly childOutput: string;
|
|
89
|
+
constructor(message: string, childOutput: string);
|
|
90
|
+
}
|
|
91
|
+
export interface DetachedHostSupervisorHandle {
|
|
92
|
+
readonly ready: DetachedHostReadySignal;
|
|
93
|
+
readonly pid: number | undefined;
|
|
94
|
+
/** Resolves when the child has exited. */
|
|
95
|
+
readonly exited: Promise<{
|
|
96
|
+
code: number | null;
|
|
97
|
+
signal: NodeJS.Signals | null;
|
|
98
|
+
}>;
|
|
99
|
+
stop(): Promise<void>;
|
|
100
|
+
}
|
|
101
|
+
export declare function superviseDetachedHost(options: DetachedHostSupervisorOptions): Promise<DetachedHostSupervisorHandle>;
|
|
102
|
+
//# sourceMappingURL=detachedHostSupervisor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detachedHostSupervisor.d.ts","sourceRoot":"","sources":["../src/detachedHostSupervisor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAA;AAE7D,uEAAuE;AACvE,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,gCAAgC,CAAA;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,6BAA6B;IAC5C;;;;;;;;OAQG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,iEAAiE;IACjE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACxC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,qDAAqD;IACrD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAC/F,0BAA0B;IAC1B,OAAO,CAAC,EAAE,OAAO,KAAK,CAAA;CACvB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,+EAA+E;IAC/E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;gBAEhB,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAKjD;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAA;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC,CAAA;IAChF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAID,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,4BAA4B,CAAC,CAiGvC"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spawns and watches the detached host process — ADE §9 build-order step 3.
|
|
3
|
+
*
|
|
4
|
+
* `runDetachedAgentHost` is the process's own lifecycle: it elects itself owner,
|
|
5
|
+
* refuses to run demoted, and stops when it loses the lease. This is the other
|
|
6
|
+
* half — the parent that starts it, learns when it is actually serving, and
|
|
7
|
+
* notices when it dies.
|
|
8
|
+
*
|
|
9
|
+
* ## 🔴 Readiness is a SIGNAL, never a sleep
|
|
10
|
+
*
|
|
11
|
+
* The parent has to attach as a client, and attaching before the child owns the
|
|
12
|
+
* lease means the parent wins the election instead. The two processes then both
|
|
13
|
+
* believe they are the host, which is the split-brain the lease exists to
|
|
14
|
+
* prevent — reached by way of a race that only shows up on a slow machine.
|
|
15
|
+
*
|
|
16
|
+
* So the child prints one line of JSON when it is serving, and this waits for
|
|
17
|
+
* that line. A fixed sleep would be either flaky or slow, and usually both.
|
|
18
|
+
*
|
|
19
|
+
* ## An exit is reported, never retried in a loop
|
|
20
|
+
*
|
|
21
|
+
* A supervisor that restarts unconditionally turns a permanent failure — a bad
|
|
22
|
+
* endpoint, a corrupt state directory, another owner already holding the lease —
|
|
23
|
+
* into an infinite loop that looks like activity. This reports the exit and the
|
|
24
|
+
* child's own words, and lets the caller decide. `DetachedAgentHostDemotedError`
|
|
25
|
+
* exists precisely so "someone else is already the host" arrives as a named
|
|
26
|
+
* failure rather than as a crash to retry.
|
|
27
|
+
*
|
|
28
|
+
* @unadopted-by-design ADE §9 step 3 — the child ENTRY POINT now EXISTS
|
|
29
|
+
* (`apps/desktop/src/main/detachedHostEntry.ts`) and this supervisor is proven
|
|
30
|
+
* to spawn it: `detachedHostEntry.test.ts` starts the BUILT entry through this
|
|
31
|
+
* code, connects a real client to the endpoint it publishes, and asserts a
|
|
32
|
+
* second one refuses rather than demoting. What is still missing is the app
|
|
33
|
+
* calling it — `index.ts` remains its own in-process host. The app SAYS SO when
|
|
34
|
+
* the flag is set rather than ignoring it; a requested capability that silently
|
|
35
|
+
* does nothing is the defect this marker exists to keep visible.
|
|
36
|
+
*
|
|
37
|
+
* 🔴 CORRECTED 2026-08-14. This said extracting a headless entry was "a
|
|
38
|
+
* refactor rather than a wiring step" because the composition is "written
|
|
39
|
+
* against Electron". It was not: `HostSurfaceCapabilities` has no required
|
|
40
|
+
* fields, so `surface: {}` composes a working host. The one REAL Electron
|
|
41
|
+
* coupling was a static import of the electron-host package pulling `electron`
|
|
42
|
+
* into the shared bundle chunk — invisible to every in-process test, fatal to
|
|
43
|
+
* the built entry, and now a dynamic import gated on a window.
|
|
44
|
+
*/
|
|
45
|
+
import { spawn } from 'node:child_process';
|
|
46
|
+
export class DetachedHostStartError extends Error {
|
|
47
|
+
/** Everything the child said, so a failure is diagnosable from one message. */
|
|
48
|
+
childOutput;
|
|
49
|
+
constructor(message, childOutput) {
|
|
50
|
+
super(childOutput ? `${message} The host process said: ${childOutput.trim()}` : message);
|
|
51
|
+
this.name = 'DetachedHostStartError';
|
|
52
|
+
this.childOutput = childOutput;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const DEFAULT_READY_TIMEOUT_MS = 30_000;
|
|
56
|
+
export async function superviseDetachedHost(options) {
|
|
57
|
+
const spawnImpl = options.spawnFn ?? spawn;
|
|
58
|
+
const child = spawnImpl(options.execPath, [options.entryPath], {
|
|
59
|
+
...(options.cwd ? { cwd: options.cwd } : {}),
|
|
60
|
+
env: {
|
|
61
|
+
...process.env,
|
|
62
|
+
// Runs the Electron binary as plain Node. Without it the child would try
|
|
63
|
+
// to start a second Electron app: a GUI process, an app lock, and no host.
|
|
64
|
+
ELECTRON_RUN_AS_NODE: '1',
|
|
65
|
+
...options.env,
|
|
66
|
+
},
|
|
67
|
+
// `pipe` on both, so the ready line is readable AND a failure is quotable.
|
|
68
|
+
// `ignore` would make a child that dies on startup indistinguishable from
|
|
69
|
+
// one that never started.
|
|
70
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
71
|
+
// NOT detached. A truly detached child survives the parent, which sounds
|
|
72
|
+
// like the goal and is not: the point is that runs survive a WINDOW, and the
|
|
73
|
+
// host is still owned by this app. An orphan holding the lease with nobody
|
|
74
|
+
// to stop it is how the next launch finds itself permanently demoted.
|
|
75
|
+
detached: false,
|
|
76
|
+
});
|
|
77
|
+
let output = '';
|
|
78
|
+
const collect = (chunk) => { output += String(chunk); };
|
|
79
|
+
child.stdout?.on('data', collect);
|
|
80
|
+
child.stderr?.on('data', collect);
|
|
81
|
+
let settleExit = () => { };
|
|
82
|
+
const exited = new Promise((resolve) => {
|
|
83
|
+
settleExit = resolve;
|
|
84
|
+
});
|
|
85
|
+
let hasExited = false;
|
|
86
|
+
child.on('exit', (code, signal) => {
|
|
87
|
+
hasExited = true;
|
|
88
|
+
options.onExit?.({ code, signal, output });
|
|
89
|
+
settleExit({ code, signal });
|
|
90
|
+
});
|
|
91
|
+
const ready = await new Promise((resolve, reject) => {
|
|
92
|
+
const timer = setTimeout(() => {
|
|
93
|
+
finish();
|
|
94
|
+
// Killed rather than left running: a child that never reported ready may
|
|
95
|
+
// still be holding the lease, and leaving it would demote every future
|
|
96
|
+
// launch of this app.
|
|
97
|
+
child.kill();
|
|
98
|
+
reject(new DetachedHostStartError(`The Agent host process did not report ready within ${options.readyTimeoutMs ?? DEFAULT_READY_TIMEOUT_MS}ms.`, output));
|
|
99
|
+
}, options.readyTimeoutMs ?? DEFAULT_READY_TIMEOUT_MS);
|
|
100
|
+
let buffer = '';
|
|
101
|
+
const onData = (chunk) => {
|
|
102
|
+
buffer += String(chunk);
|
|
103
|
+
// Line-delimited: the child may print other things, and a JSON.parse of
|
|
104
|
+
// the whole buffer would fail on the first log line it happened to emit.
|
|
105
|
+
let index = buffer.indexOf('\n');
|
|
106
|
+
while (index >= 0) {
|
|
107
|
+
const line = buffer.slice(0, index).trim();
|
|
108
|
+
buffer = buffer.slice(index + 1);
|
|
109
|
+
const signal = parseReady(line);
|
|
110
|
+
if (signal) {
|
|
111
|
+
finish();
|
|
112
|
+
clearTimeout(timer);
|
|
113
|
+
resolve(signal);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
index = buffer.indexOf('\n');
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
const onExit = () => {
|
|
120
|
+
finish();
|
|
121
|
+
clearTimeout(timer);
|
|
122
|
+
reject(new DetachedHostStartError('The Agent host process exited before it was ready.', output));
|
|
123
|
+
};
|
|
124
|
+
function finish() {
|
|
125
|
+
child.stdout?.off('data', onData);
|
|
126
|
+
child.off('exit', onExit);
|
|
127
|
+
}
|
|
128
|
+
child.stdout?.on('data', onData);
|
|
129
|
+
child.on('exit', onExit);
|
|
130
|
+
});
|
|
131
|
+
return {
|
|
132
|
+
ready,
|
|
133
|
+
pid: child.pid,
|
|
134
|
+
exited,
|
|
135
|
+
stop: async () => {
|
|
136
|
+
if (hasExited)
|
|
137
|
+
return;
|
|
138
|
+
// SIGTERM, which `runDetachedAgentHost` handles as a graceful stop — it
|
|
139
|
+
// releases the lease. Killing hard would leave a lease file whose owner is
|
|
140
|
+
// gone, and the next launch would wait out its stall timeout for nothing.
|
|
141
|
+
child.kill('SIGTERM');
|
|
142
|
+
await exited;
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
function parseReady(line) {
|
|
147
|
+
if (!line.startsWith('{'))
|
|
148
|
+
return null;
|
|
149
|
+
try {
|
|
150
|
+
const parsed = JSON.parse(line);
|
|
151
|
+
if (parsed.type !== 'xeno-agent-detached-host-ready')
|
|
152
|
+
return null;
|
|
153
|
+
if (typeof parsed.endpoint !== 'string' || typeof parsed.instanceId !== 'string')
|
|
154
|
+
return null;
|
|
155
|
+
return {
|
|
156
|
+
type: 'xeno-agent-detached-host-ready',
|
|
157
|
+
endpoint: parsed.endpoint,
|
|
158
|
+
instanceId: parsed.instanceId,
|
|
159
|
+
protocolVersion: typeof parsed.protocolVersion === 'number' ? parsed.protocolVersion : 1,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// A line that is not our signal is not an error — the child is allowed to
|
|
164
|
+
// print. Only the absence of the signal within the timeout is.
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=detachedHostSupervisor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detachedHostSupervisor.js","sourceRoot":"","sources":["../src/detachedHostSupervisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type AgentRuntimeEventDraft, type AgentRuntimeEventEnvelope, type AgentRuntimeEventListRequest, type AgentRuntimeEventListResult } from '@xenosystem/agent-interface-contract';
|
|
2
|
+
export interface DurableRuntimeEventStoreOptions {
|
|
3
|
+
rootDirectory: string;
|
|
4
|
+
syncWrites?: boolean;
|
|
5
|
+
maxEventBytes?: number;
|
|
6
|
+
maxListLimit?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface DurableRuntimeEventAppendResult {
|
|
9
|
+
inserted: boolean;
|
|
10
|
+
event: AgentRuntimeEventEnvelope;
|
|
11
|
+
}
|
|
12
|
+
export interface DurableRuntimeEventRepairReport {
|
|
13
|
+
conversationId: string;
|
|
14
|
+
streamPath: string;
|
|
15
|
+
repaired: boolean;
|
|
16
|
+
truncatedBytes: number;
|
|
17
|
+
retainedEvents: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class DurableRuntimeEventStoreCorruptionError extends Error {
|
|
20
|
+
readonly streamPath: string;
|
|
21
|
+
readonly line: number;
|
|
22
|
+
constructor(streamPath: string, line: number, message: string);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Append-only runtime-event journal used by the single Agent host authority.
|
|
26
|
+
* Writes are serialized per conversation and fsynced by default. A partial
|
|
27
|
+
* final line is repaired on reopen; corruption before the tail fails closed.
|
|
28
|
+
*/
|
|
29
|
+
export declare class DurableRuntimeEventStore {
|
|
30
|
+
private readonly rootDirectory;
|
|
31
|
+
private readonly streamDirectory;
|
|
32
|
+
private readonly syncWrites;
|
|
33
|
+
private readonly maxEventBytes;
|
|
34
|
+
private readonly maxListLimit;
|
|
35
|
+
private readonly loaded;
|
|
36
|
+
private readonly queues;
|
|
37
|
+
constructor(options: DurableRuntimeEventStoreOptions);
|
|
38
|
+
initialize(): Promise<void>;
|
|
39
|
+
append(event: AgentRuntimeEventEnvelope): Promise<DurableRuntimeEventAppendResult>;
|
|
40
|
+
appendGenerated(event: AgentRuntimeEventDraft): Promise<DurableRuntimeEventAppendResult>;
|
|
41
|
+
appendGeneratedBatch(events: AgentRuntimeEventDraft[]): Promise<DurableRuntimeEventAppendResult[]>;
|
|
42
|
+
list(input: AgentRuntimeEventListRequest): Promise<AgentRuntimeEventListResult>;
|
|
43
|
+
repairReport(conversationId: string): Promise<DurableRuntimeEventRepairReport>;
|
|
44
|
+
streamPath(conversationId: string): string;
|
|
45
|
+
private loadStream;
|
|
46
|
+
private withConversationLock;
|
|
47
|
+
private appendToLoadedStream;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=durableRuntimeEventStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"durableRuntimeEventStore.d.ts","sourceRoot":"","sources":["../src/durableRuntimeEventStore.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EACjC,MAAM,sCAAsC,CAAA;AAE7C,MAAM,WAAW,+BAA+B;IAC9C,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,yBAAyB,CAAA;CACjC;AAED,MAAM,WAAW,+BAA+B;IAC9C,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,qBAAa,uCAAwC,SAAQ,KAAK;IAChE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;gBAET,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAM9D;AAYD;;;;GAIG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IACzD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAE9C,OAAO,EAAE,+BAA+B;IAS9C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,MAAM,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,+BAA+B,CAAC;IASlF,eAAe,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,+BAA+B,CAAC;IA8BxF,oBAAoB,CAAC,MAAM,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,+BAA+B,EAAE,CAAC;IA+DlG,IAAI,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAqB/E,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAKpF,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM;YAM5B,UAAU;YA2DV,oBAAoB;YAepB,oBAAoB;CAmCnC"}
|