@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.
Files changed (482) hide show
  1. package/LICENSE +67 -0
  2. package/dist/acp/AcpAgentRegistryService.d.ts +77 -0
  3. package/dist/acp/AcpAgentRegistryService.d.ts.map +1 -0
  4. package/dist/acp/AcpAgentRegistryService.js +754 -0
  5. package/dist/acp/AcpAgentRegistryService.js.map +1 -0
  6. package/dist/acp/AcpAgentTurnExecutionAdapter.d.ts +56 -0
  7. package/dist/acp/AcpAgentTurnExecutionAdapter.d.ts.map +1 -0
  8. package/dist/acp/AcpAgentTurnExecutionAdapter.js +323 -0
  9. package/dist/acp/AcpAgentTurnExecutionAdapter.js.map +1 -0
  10. package/dist/acp/AcpApprovalPortAdapter.d.ts +41 -0
  11. package/dist/acp/AcpApprovalPortAdapter.d.ts.map +1 -0
  12. package/dist/acp/AcpApprovalPortAdapter.js +82 -0
  13. package/dist/acp/AcpApprovalPortAdapter.js.map +1 -0
  14. package/dist/acp/AcpCoordinationBridge.d.ts +13 -0
  15. package/dist/acp/AcpCoordinationBridge.d.ts.map +1 -0
  16. package/dist/acp/AcpCoordinationBridge.js +13 -0
  17. package/dist/acp/AcpCoordinationBridge.js.map +1 -0
  18. package/dist/acp/AcpDiagnosticsService.d.ts +61 -0
  19. package/dist/acp/AcpDiagnosticsService.d.ts.map +1 -0
  20. package/dist/acp/AcpDiagnosticsService.js +203 -0
  21. package/dist/acp/AcpDiagnosticsService.js.map +1 -0
  22. package/dist/acp/AcpExternalCertificationHarness.d.ts +47 -0
  23. package/dist/acp/AcpExternalCertificationHarness.d.ts.map +1 -0
  24. package/dist/acp/AcpExternalCertificationHarness.js +176 -0
  25. package/dist/acp/AcpExternalCertificationHarness.js.map +1 -0
  26. package/dist/acp/AcpHostBridge.d.ts +81 -0
  27. package/dist/acp/AcpHostBridge.d.ts.map +1 -0
  28. package/dist/acp/AcpHostBridge.js +101 -0
  29. package/dist/acp/AcpHostBridge.js.map +1 -0
  30. package/dist/acp/AcpInteractivePermissionBridge.d.ts +77 -0
  31. package/dist/acp/AcpInteractivePermissionBridge.d.ts.map +1 -0
  32. package/dist/acp/AcpInteractivePermissionBridge.js +127 -0
  33. package/dist/acp/AcpInteractivePermissionBridge.js.map +1 -0
  34. package/dist/acp/AcpPermissionBridge.d.ts +19 -0
  35. package/dist/acp/AcpPermissionBridge.d.ts.map +1 -0
  36. package/dist/acp/AcpPermissionBridge.js +110 -0
  37. package/dist/acp/AcpPermissionBridge.js.map +1 -0
  38. package/dist/acp/AcpPermissionPolicy.d.ts +111 -0
  39. package/dist/acp/AcpPermissionPolicy.d.ts.map +1 -0
  40. package/dist/acp/AcpPermissionPolicy.js +167 -0
  41. package/dist/acp/AcpPermissionPolicy.js.map +1 -0
  42. package/dist/acp/AcpProcessSupervisor.d.ts +134 -0
  43. package/dist/acp/AcpProcessSupervisor.d.ts.map +1 -0
  44. package/dist/acp/AcpProcessSupervisor.js +674 -0
  45. package/dist/acp/AcpProcessSupervisor.js.map +1 -0
  46. package/dist/acp/AcpProviderApprovalService.d.ts +27 -0
  47. package/dist/acp/AcpProviderApprovalService.d.ts.map +1 -0
  48. package/dist/acp/AcpProviderApprovalService.js +128 -0
  49. package/dist/acp/AcpProviderApprovalService.js.map +1 -0
  50. package/dist/acp/AcpProviderCatalogService.d.ts +69 -0
  51. package/dist/acp/AcpProviderCatalogService.d.ts.map +1 -0
  52. package/dist/acp/AcpProviderCatalogService.js +707 -0
  53. package/dist/acp/AcpProviderCatalogService.js.map +1 -0
  54. package/dist/acp/AcpProviderModelService.d.ts +6 -0
  55. package/dist/acp/AcpProviderModelService.d.ts.map +1 -0
  56. package/dist/acp/AcpProviderModelService.js +274 -0
  57. package/dist/acp/AcpProviderModelService.js.map +1 -0
  58. package/dist/acp/AcpProviderVersionReadiness.d.ts +6 -0
  59. package/dist/acp/AcpProviderVersionReadiness.d.ts.map +1 -0
  60. package/dist/acp/AcpProviderVersionReadiness.js +100 -0
  61. package/dist/acp/AcpProviderVersionReadiness.js.map +1 -0
  62. package/dist/acp/AcpRuntimeEventMapper.d.ts +16 -0
  63. package/dist/acp/AcpRuntimeEventMapper.d.ts.map +1 -0
  64. package/dist/acp/AcpRuntimeEventMapper.js +326 -0
  65. package/dist/acp/AcpRuntimeEventMapper.js.map +1 -0
  66. package/dist/acp/AcpSessionService.d.ts +65 -0
  67. package/dist/acp/AcpSessionService.d.ts.map +1 -0
  68. package/dist/acp/AcpSessionService.js +931 -0
  69. package/dist/acp/AcpSessionService.js.map +1 -0
  70. package/dist/acp/DurableAcpPermissionPolicyStore.d.ts +25 -0
  71. package/dist/acp/DurableAcpPermissionPolicyStore.d.ts.map +1 -0
  72. package/dist/acp/DurableAcpPermissionPolicyStore.js +100 -0
  73. package/dist/acp/DurableAcpPermissionPolicyStore.js.map +1 -0
  74. package/dist/acp/acpCommandSafety.d.ts +63 -0
  75. package/dist/acp/acpCommandSafety.d.ts.map +1 -0
  76. package/dist/acp/acpCommandSafety.js +90 -0
  77. package/dist/acp/acpCommandSafety.js.map +1 -0
  78. package/dist/acp/acpErrors.d.ts +47 -0
  79. package/dist/acp/acpErrors.d.ts.map +1 -0
  80. package/dist/acp/acpErrors.js +93 -0
  81. package/dist/acp/acpErrors.js.map +1 -0
  82. package/dist/acp/acpRedaction.d.ts +9 -0
  83. package/dist/acp/acpRedaction.d.ts.map +1 -0
  84. package/dist/acp/acpRedaction.js +69 -0
  85. package/dist/acp/acpRedaction.js.map +1 -0
  86. package/dist/acp/acpSessionResume.d.ts +8 -0
  87. package/dist/acp/acpSessionResume.d.ts.map +1 -0
  88. package/dist/acp/acpSessionResume.js +31 -0
  89. package/dist/acp/acpSessionResume.js.map +1 -0
  90. package/dist/acp/acpTypes.d.ts +467 -0
  91. package/dist/acp/acpTypes.d.ts.map +1 -0
  92. package/dist/acp/acpTypes.js +2 -0
  93. package/dist/acp/acpTypes.js.map +1 -0
  94. package/dist/agent/chooseDirectoryBridge.d.ts +29 -0
  95. package/dist/agent/chooseDirectoryBridge.d.ts.map +1 -0
  96. package/dist/agent/chooseDirectoryBridge.js +116 -0
  97. package/dist/agent/chooseDirectoryBridge.js.map +1 -0
  98. package/dist/agent/permissionProfiles.d.ts +29 -0
  99. package/dist/agent/permissionProfiles.d.ts.map +1 -0
  100. package/dist/agent/permissionProfiles.js +107 -0
  101. package/dist/agent/permissionProfiles.js.map +1 -0
  102. package/dist/agent/runtimeAuthorityPrompt.d.ts +13 -0
  103. package/dist/agent/runtimeAuthorityPrompt.d.ts.map +1 -0
  104. package/dist/agent/runtimeAuthorityPrompt.js +45 -0
  105. package/dist/agent/runtimeAuthorityPrompt.js.map +1 -0
  106. package/dist/agent/runtimeModeOutputGuard.d.ts +6 -0
  107. package/dist/agent/runtimeModeOutputGuard.d.ts.map +1 -0
  108. package/dist/agent/runtimeModeOutputGuard.js +40 -0
  109. package/dist/agent/runtimeModeOutputGuard.js.map +1 -0
  110. package/dist/agent/workspacePlacementBridge.d.ts +29 -0
  111. package/dist/agent/workspacePlacementBridge.d.ts.map +1 -0
  112. package/dist/agent/workspacePlacementBridge.js +143 -0
  113. package/dist/agent/workspacePlacementBridge.js.map +1 -0
  114. package/dist/agentSearch/AgentSearchService.d.ts +81 -0
  115. package/dist/agentSearch/AgentSearchService.d.ts.map +1 -0
  116. package/dist/agentSearch/AgentSearchService.js +1038 -0
  117. package/dist/agentSearch/AgentSearchService.js.map +1 -0
  118. package/dist/agentSearch/JsonInvertedIndexAdapter.d.ts +44 -0
  119. package/dist/agentSearch/JsonInvertedIndexAdapter.d.ts.map +1 -0
  120. package/dist/agentSearch/JsonInvertedIndexAdapter.js +307 -0
  121. package/dist/agentSearch/JsonInvertedIndexAdapter.js.map +1 -0
  122. package/dist/agentSearch/SearchIndexAdapter.d.ts +33 -0
  123. package/dist/agentSearch/SearchIndexAdapter.d.ts.map +1 -0
  124. package/dist/agentSearch/SearchIndexAdapter.js +2 -0
  125. package/dist/agentSearch/SearchIndexAdapter.js.map +1 -0
  126. package/dist/agentSearch/SearchSourceWatcher.d.ts +29 -0
  127. package/dist/agentSearch/SearchSourceWatcher.d.ts.map +1 -0
  128. package/dist/agentSearch/SearchSourceWatcher.js +150 -0
  129. package/dist/agentSearch/SearchSourceWatcher.js.map +1 -0
  130. package/dist/agentSearch/SqliteFtsIndexAdapter.d.ts +58 -0
  131. package/dist/agentSearch/SqliteFtsIndexAdapter.d.ts.map +1 -0
  132. package/dist/agentSearch/SqliteFtsIndexAdapter.js +420 -0
  133. package/dist/agentSearch/SqliteFtsIndexAdapter.js.map +1 -0
  134. package/dist/agentSearch/conversationIndexer.d.ts +69 -0
  135. package/dist/agentSearch/conversationIndexer.d.ts.map +1 -0
  136. package/dist/agentSearch/conversationIndexer.js +313 -0
  137. package/dist/agentSearch/conversationIndexer.js.map +1 -0
  138. package/dist/agentSearch/searchTypes.d.ts +264 -0
  139. package/dist/agentSearch/searchTypes.d.ts.map +1 -0
  140. package/dist/agentSearch/searchTypes.js +2 -0
  141. package/dist/agentSearch/searchTypes.js.map +1 -0
  142. package/dist/agentSearch/searchUtils.d.ts +12 -0
  143. package/dist/agentSearch/searchUtils.d.ts.map +1 -0
  144. package/dist/agentSearch/searchUtils.js +125 -0
  145. package/dist/agentSearch/searchUtils.js.map +1 -0
  146. package/dist/agentSearch/workspaceMetadataIndexer.d.ts +3 -0
  147. package/dist/agentSearch/workspaceMetadataIndexer.d.ts.map +1 -0
  148. package/dist/agentSearch/workspaceMetadataIndexer.js +125 -0
  149. package/dist/agentSearch/workspaceMetadataIndexer.js.map +1 -0
  150. package/dist/cli/CliControlPlaneService.d.ts +269 -0
  151. package/dist/cli/CliControlPlaneService.d.ts.map +1 -0
  152. package/dist/cli/CliControlPlaneService.js +1874 -0
  153. package/dist/cli/CliControlPlaneService.js.map +1 -0
  154. package/dist/cloud/XenoCloudAgentTurnExecutionAdapter.d.ts +91 -0
  155. package/dist/cloud/XenoCloudAgentTurnExecutionAdapter.d.ts.map +1 -0
  156. package/dist/cloud/XenoCloudAgentTurnExecutionAdapter.js +379 -0
  157. package/dist/cloud/XenoCloudAgentTurnExecutionAdapter.js.map +1 -0
  158. package/dist/codebase/CodebaseIntelligenceService.d.ts +68 -0
  159. package/dist/codebase/CodebaseIntelligenceService.d.ts.map +1 -0
  160. package/dist/codebase/CodebaseIntelligenceService.js +1717 -0
  161. package/dist/codebase/CodebaseIntelligenceService.js.map +1 -0
  162. package/dist/codebase/LanguageServerProcessManager.d.ts +85 -0
  163. package/dist/codebase/LanguageServerProcessManager.d.ts.map +1 -0
  164. package/dist/codebase/LanguageServerProcessManager.js +607 -0
  165. package/dist/codebase/LanguageServerProcessManager.js.map +1 -0
  166. package/dist/codebase/codeTypes.d.ts +485 -0
  167. package/dist/codebase/codeTypes.d.ts.map +1 -0
  168. package/dist/codebase/codeTypes.js +2 -0
  169. package/dist/codebase/codeTypes.js.map +1 -0
  170. package/dist/codebase/codeUtils.d.ts +24 -0
  171. package/dist/codebase/codeUtils.d.ts.map +1 -0
  172. package/dist/codebase/codeUtils.js +177 -0
  173. package/dist/codebase/codeUtils.js.map +1 -0
  174. package/dist/codebase/contextPacks.d.ts +18 -0
  175. package/dist/codebase/contextPacks.d.ts.map +1 -0
  176. package/dist/codebase/contextPacks.js +180 -0
  177. package/dist/codebase/contextPacks.js.map +1 -0
  178. package/dist/codebase/dependencyGraph.d.ts +3 -0
  179. package/dist/codebase/dependencyGraph.d.ts.map +1 -0
  180. package/dist/codebase/dependencyGraph.js +209 -0
  181. package/dist/codebase/dependencyGraph.js.map +1 -0
  182. package/dist/codebase/fileIndexer.d.ts +27 -0
  183. package/dist/codebase/fileIndexer.d.ts.map +1 -0
  184. package/dist/codebase/fileIndexer.js +167 -0
  185. package/dist/codebase/fileIndexer.js.map +1 -0
  186. package/dist/codebase/symbolIndexer.d.ts +3 -0
  187. package/dist/codebase/symbolIndexer.d.ts.map +1 -0
  188. package/dist/codebase/symbolIndexer.js +184 -0
  189. package/dist/codebase/symbolIndexer.js.map +1 -0
  190. package/dist/codebase/whatChanged.d.ts +4 -0
  191. package/dist/codebase/whatChanged.d.ts.map +1 -0
  192. package/dist/codebase/whatChanged.js +138 -0
  193. package/dist/codebase/whatChanged.js.map +1 -0
  194. package/dist/coordination/CoordinationService.d.ts +166 -0
  195. package/dist/coordination/CoordinationService.d.ts.map +1 -0
  196. package/dist/coordination/CoordinationService.js +247 -0
  197. package/dist/coordination/CoordinationService.js.map +1 -0
  198. package/dist/coordination/claims.d.ts +122 -0
  199. package/dist/coordination/claims.d.ts.map +1 -0
  200. package/dist/coordination/claims.js +196 -0
  201. package/dist/coordination/claims.js.map +1 -0
  202. package/dist/coordination/coordinationTools.d.ts +40 -0
  203. package/dist/coordination/coordinationTools.d.ts.map +1 -0
  204. package/dist/coordination/coordinationTools.js +92 -0
  205. package/dist/coordination/coordinationTools.js.map +1 -0
  206. package/dist/coordination/laneBridge.d.ts +84 -0
  207. package/dist/coordination/laneBridge.d.ts.map +1 -0
  208. package/dist/coordination/laneBridge.js +86 -0
  209. package/dist/coordination/laneBridge.js.map +1 -0
  210. package/dist/coordination/messages.d.ts +225 -0
  211. package/dist/coordination/messages.d.ts.map +1 -0
  212. package/dist/coordination/messages.js +335 -0
  213. package/dist/coordination/messages.js.map +1 -0
  214. package/dist/coordination/permissionWaitRegistry.d.ts +32 -0
  215. package/dist/coordination/permissionWaitRegistry.d.ts.map +1 -0
  216. package/dist/coordination/permissionWaitRegistry.js +59 -0
  217. package/dist/coordination/permissionWaitRegistry.js.map +1 -0
  218. package/dist/coordination/query.d.ts +187 -0
  219. package/dist/coordination/query.d.ts.map +1 -0
  220. package/dist/coordination/query.js +138 -0
  221. package/dist/coordination/query.js.map +1 -0
  222. package/dist/coordination/renderInbox.d.ts +15 -0
  223. package/dist/coordination/renderInbox.d.ts.map +1 -0
  224. package/dist/coordination/renderInbox.js +19 -0
  225. package/dist/coordination/renderInbox.js.map +1 -0
  226. package/dist/coordination/runtimeEvents.d.ts +53 -0
  227. package/dist/coordination/runtimeEvents.d.ts.map +1 -0
  228. package/dist/coordination/runtimeEvents.js +112 -0
  229. package/dist/coordination/runtimeEvents.js.map +1 -0
  230. package/dist/detachedHostService.d.ts +77 -0
  231. package/dist/detachedHostService.d.ts.map +1 -0
  232. package/dist/detachedHostService.js +66 -0
  233. package/dist/detachedHostService.js.map +1 -0
  234. package/dist/detachedHostSupervisor.d.ts +102 -0
  235. package/dist/detachedHostSupervisor.d.ts.map +1 -0
  236. package/dist/detachedHostSupervisor.js +168 -0
  237. package/dist/detachedHostSupervisor.js.map +1 -0
  238. package/dist/durableRuntimeEventStore.d.ts +49 -0
  239. package/dist/durableRuntimeEventStore.d.ts.map +1 -0
  240. package/dist/durableRuntimeEventStore.js +364 -0
  241. package/dist/durableRuntimeEventStore.js.map +1 -0
  242. package/dist/engineering/EngineeringWorkbenchService.d.ts +142 -0
  243. package/dist/engineering/EngineeringWorkbenchService.d.ts.map +1 -0
  244. package/dist/engineering/EngineeringWorkbenchService.js +2301 -0
  245. package/dist/engineering/EngineeringWorkbenchService.js.map +1 -0
  246. package/dist/engineering/LandingService.d.ts +112 -0
  247. package/dist/engineering/LandingService.d.ts.map +1 -0
  248. package/dist/engineering/LandingService.js +239 -0
  249. package/dist/engineering/LandingService.js.map +1 -0
  250. package/dist/engineering/engineeringTypes.d.ts +2 -0
  251. package/dist/engineering/engineeringTypes.d.ts.map +1 -0
  252. package/dist/engineering/engineeringTypes.js +2 -0
  253. package/dist/engineering/engineeringTypes.js.map +1 -0
  254. package/dist/engineering/patchReview.d.ts +11 -0
  255. package/dist/engineering/patchReview.d.ts.map +1 -0
  256. package/dist/engineering/patchReview.js +174 -0
  257. package/dist/engineering/patchReview.js.map +1 -0
  258. package/dist/index.d.ts +834 -0
  259. package/dist/index.d.ts.map +1 -0
  260. package/dist/index.js +3242 -0
  261. package/dist/index.js.map +1 -0
  262. package/dist/intake/IntakeService.d.ts +84 -0
  263. package/dist/intake/IntakeService.d.ts.map +1 -0
  264. package/dist/intake/IntakeService.js +117 -0
  265. package/dist/intake/IntakeService.js.map +1 -0
  266. package/dist/intake/RepositoryTodoIntakeSource.d.ts +72 -0
  267. package/dist/intake/RepositoryTodoIntakeSource.d.ts.map +1 -0
  268. package/dist/intake/RepositoryTodoIntakeSource.js +168 -0
  269. package/dist/intake/RepositoryTodoIntakeSource.js.map +1 -0
  270. package/dist/intake/WorkspaceTodoIntakeSource.d.ts +53 -0
  271. package/dist/intake/WorkspaceTodoIntakeSource.d.ts.map +1 -0
  272. package/dist/intake/WorkspaceTodoIntakeSource.js +81 -0
  273. package/dist/intake/WorkspaceTodoIntakeSource.js.map +1 -0
  274. package/dist/isolation/CommandExecution.d.ts +132 -0
  275. package/dist/isolation/CommandExecution.d.ts.map +1 -0
  276. package/dist/isolation/CommandExecution.js +48 -0
  277. package/dist/isolation/CommandExecution.js.map +1 -0
  278. package/dist/isolation/LocalCommandExecutor.d.ts +27 -0
  279. package/dist/isolation/LocalCommandExecutor.d.ts.map +1 -0
  280. package/dist/isolation/LocalCommandExecutor.js +97 -0
  281. package/dist/isolation/LocalCommandExecutor.js.map +1 -0
  282. package/dist/isolation/RunExecutionEnvironment.d.ts +135 -0
  283. package/dist/isolation/RunExecutionEnvironment.d.ts.map +1 -0
  284. package/dist/isolation/RunExecutionEnvironment.js +206 -0
  285. package/dist/isolation/RunExecutionEnvironment.js.map +1 -0
  286. package/dist/isolation/RunIsolationService.d.ts +90 -0
  287. package/dist/isolation/RunIsolationService.d.ts.map +1 -0
  288. package/dist/isolation/RunIsolationService.js +86 -0
  289. package/dist/isolation/RunIsolationService.js.map +1 -0
  290. package/dist/isolation/SandboxCommandExecutor.d.ts +93 -0
  291. package/dist/isolation/SandboxCommandExecutor.d.ts.map +1 -0
  292. package/dist/isolation/SandboxCommandExecutor.js +189 -0
  293. package/dist/isolation/SandboxCommandExecutor.js.map +1 -0
  294. package/dist/knowledge/WorkspaceKnowledgeService.d.ts +71 -0
  295. package/dist/knowledge/WorkspaceKnowledgeService.d.ts.map +1 -0
  296. package/dist/knowledge/WorkspaceKnowledgeService.js +103 -0
  297. package/dist/knowledge/WorkspaceKnowledgeService.js.map +1 -0
  298. package/dist/localHostAuthority.d.ts +24 -0
  299. package/dist/localHostAuthority.d.ts.map +1 -0
  300. package/dist/localHostAuthority.js +87 -0
  301. package/dist/localHostAuthority.js.map +1 -0
  302. package/dist/localHostLease.d.ts +51 -0
  303. package/dist/localHostLease.d.ts.map +1 -0
  304. package/dist/localHostLease.js +167 -0
  305. package/dist/localHostLease.js.map +1 -0
  306. package/dist/localHostPaths.d.ts +30 -0
  307. package/dist/localHostPaths.d.ts.map +1 -0
  308. package/dist/localHostPaths.js +60 -0
  309. package/dist/localHostPaths.js.map +1 -0
  310. package/dist/localRpcTransport.d.ts +21 -0
  311. package/dist/localRpcTransport.d.ts.map +1 -0
  312. package/dist/localRpcTransport.js +423 -0
  313. package/dist/localRpcTransport.js.map +1 -0
  314. package/dist/node.d.ts +104 -0
  315. package/dist/node.d.ts.map +1 -0
  316. package/dist/node.js +103 -0
  317. package/dist/node.js.map +1 -0
  318. package/dist/observation/DirectoryBaselineScanner.d.ts +44 -0
  319. package/dist/observation/DirectoryBaselineScanner.d.ts.map +1 -0
  320. package/dist/observation/DirectoryBaselineScanner.js +112 -0
  321. package/dist/observation/DirectoryBaselineScanner.js.map +1 -0
  322. package/dist/observation/MountContentReader.d.ts +63 -0
  323. package/dist/observation/MountContentReader.d.ts.map +1 -0
  324. package/dist/observation/MountContentReader.js +158 -0
  325. package/dist/observation/MountContentReader.js.map +1 -0
  326. package/dist/observation/RunObservationService.d.ts +229 -0
  327. package/dist/observation/RunObservationService.d.ts.map +1 -0
  328. package/dist/observation/RunObservationService.js +248 -0
  329. package/dist/observation/RunObservationService.js.map +1 -0
  330. package/dist/observation/XenoUseObservationSource.d.ts +42 -0
  331. package/dist/observation/XenoUseObservationSource.d.ts.map +1 -0
  332. package/dist/observation/XenoUseObservationSource.js +104 -0
  333. package/dist/observation/XenoUseObservationSource.js.map +1 -0
  334. package/dist/observation/XenoUseRunObserver.d.ts +140 -0
  335. package/dist/observation/XenoUseRunObserver.d.ts.map +1 -0
  336. package/dist/observation/XenoUseRunObserver.js +256 -0
  337. package/dist/observation/XenoUseRunObserver.js.map +1 -0
  338. package/dist/pluginMcp/PluginMcpManagerService.d.ts +141 -0
  339. package/dist/pluginMcp/PluginMcpManagerService.d.ts.map +1 -0
  340. package/dist/pluginMcp/PluginMcpManagerService.js +1821 -0
  341. package/dist/pluginMcp/PluginMcpManagerService.js.map +1 -0
  342. package/dist/pluginMcp/pluginMcpTypes.d.ts +349 -0
  343. package/dist/pluginMcp/pluginMcpTypes.d.ts.map +1 -0
  344. package/dist/pluginMcp/pluginMcpTypes.js +2 -0
  345. package/dist/pluginMcp/pluginMcpTypes.js.map +1 -0
  346. package/dist/policy/WorkspacePolicyService.d.ts +83 -0
  347. package/dist/policy/WorkspacePolicyService.d.ts.map +1 -0
  348. package/dist/policy/WorkspacePolicyService.js +809 -0
  349. package/dist/policy/WorkspacePolicyService.js.map +1 -0
  350. package/dist/policy/policyGuard.d.ts +27 -0
  351. package/dist/policy/policyGuard.d.ts.map +1 -0
  352. package/dist/policy/policyGuard.js +143 -0
  353. package/dist/policy/policyGuard.js.map +1 -0
  354. package/dist/policy/policyTypes.d.ts +190 -0
  355. package/dist/policy/policyTypes.d.ts.map +1 -0
  356. package/dist/policy/policyTypes.js +2 -0
  357. package/dist/policy/policyTypes.js.map +1 -0
  358. package/dist/runtime/RuntimeEventStore.d.ts +42 -0
  359. package/dist/runtime/RuntimeEventStore.d.ts.map +1 -0
  360. package/dist/runtime/RuntimeEventStore.js +412 -0
  361. package/dist/runtime/RuntimeEventStore.js.map +1 -0
  362. package/dist/runtime/RuntimeEventStoreRepositoryAdapter.d.ts +21 -0
  363. package/dist/runtime/RuntimeEventStoreRepositoryAdapter.d.ts.map +1 -0
  364. package/dist/runtime/RuntimeEventStoreRepositoryAdapter.js +41 -0
  365. package/dist/runtime/RuntimeEventStoreRepositoryAdapter.js.map +1 -0
  366. package/dist/runtime/RuntimeTimelineProjection.d.ts +5 -0
  367. package/dist/runtime/RuntimeTimelineProjection.d.ts.map +1 -0
  368. package/dist/runtime/RuntimeTimelineProjection.js +705 -0
  369. package/dist/runtime/RuntimeTimelineProjection.js.map +1 -0
  370. package/dist/runtime/runtimeEventTypes.d.ts +73 -0
  371. package/dist/runtime/runtimeEventTypes.d.ts.map +1 -0
  372. package/dist/runtime/runtimeEventTypes.js +2 -0
  373. package/dist/runtime/runtimeEventTypes.js.map +1 -0
  374. package/dist/sdk/SdkNativeAgentTurnExecutionAdapter.d.ts +117 -0
  375. package/dist/sdk/SdkNativeAgentTurnExecutionAdapter.d.ts.map +1 -0
  376. package/dist/sdk/SdkNativeAgentTurnExecutionAdapter.js +214 -0
  377. package/dist/sdk/SdkNativeAgentTurnExecutionAdapter.js.map +1 -0
  378. package/dist/session/AgentSessionService.d.ts +285 -0
  379. package/dist/session/AgentSessionService.d.ts.map +1 -0
  380. package/dist/session/AgentSessionService.js +444 -0
  381. package/dist/session/AgentSessionService.js.map +1 -0
  382. package/dist/session/bufferedSessionPty.d.ts +27 -0
  383. package/dist/session/bufferedSessionPty.d.ts.map +1 -0
  384. package/dist/session/bufferedSessionPty.js +49 -0
  385. package/dist/session/bufferedSessionPty.js.map +1 -0
  386. package/dist/session/renderSupport.d.ts +53 -0
  387. package/dist/session/renderSupport.d.ts.map +1 -0
  388. package/dist/session/renderSupport.js +41 -0
  389. package/dist/session/renderSupport.js.map +1 -0
  390. package/dist/session/runtimeEventChannel.d.ts +56 -0
  391. package/dist/session/runtimeEventChannel.d.ts.map +1 -0
  392. package/dist/session/runtimeEventChannel.js +53 -0
  393. package/dist/session/runtimeEventChannel.js.map +1 -0
  394. package/dist/state/JsonAgentStateRepository.d.ts +29 -0
  395. package/dist/state/JsonAgentStateRepository.d.ts.map +1 -0
  396. package/dist/state/JsonAgentStateRepository.js +165 -0
  397. package/dist/state/JsonAgentStateRepository.js.map +1 -0
  398. package/dist/state/SqliteAgentStateRepository.d.ts +58 -0
  399. package/dist/state/SqliteAgentStateRepository.d.ts.map +1 -0
  400. package/dist/state/SqliteAgentStateRepository.js +777 -0
  401. package/dist/state/SqliteAgentStateRepository.js.map +1 -0
  402. package/dist/state/createAgentStateRepository.d.ts +4 -0
  403. package/dist/state/createAgentStateRepository.d.ts.map +1 -0
  404. package/dist/state/createAgentStateRepository.js +12 -0
  405. package/dist/state/createAgentStateRepository.js.map +1 -0
  406. package/dist/state/stateSanitizers.d.ts +7 -0
  407. package/dist/state/stateSanitizers.d.ts.map +1 -0
  408. package/dist/state/stateSanitizers.js +87 -0
  409. package/dist/state/stateSanitizers.js.map +1 -0
  410. package/dist/subagents/AcpSubagentExecutionAdapter.d.ts +12 -0
  411. package/dist/subagents/AcpSubagentExecutionAdapter.d.ts.map +1 -0
  412. package/dist/subagents/AcpSubagentExecutionAdapter.js +119 -0
  413. package/dist/subagents/AcpSubagentExecutionAdapter.js.map +1 -0
  414. package/dist/subagents/CliSubagentExecutionAdapter.d.ts +13 -0
  415. package/dist/subagents/CliSubagentExecutionAdapter.d.ts.map +1 -0
  416. package/dist/subagents/CliSubagentExecutionAdapter.js +217 -0
  417. package/dist/subagents/CliSubagentExecutionAdapter.js.map +1 -0
  418. package/dist/subagents/HostTurnSubagentExecutionAdapter.d.ts +78 -0
  419. package/dist/subagents/HostTurnSubagentExecutionAdapter.d.ts.map +1 -0
  420. package/dist/subagents/HostTurnSubagentExecutionAdapter.js +160 -0
  421. package/dist/subagents/HostTurnSubagentExecutionAdapter.js.map +1 -0
  422. package/dist/subagents/SubagentRunService.d.ts +103 -0
  423. package/dist/subagents/SubagentRunService.d.ts.map +1 -0
  424. package/dist/subagents/SubagentRunService.js +1183 -0
  425. package/dist/subagents/SubagentRunService.js.map +1 -0
  426. package/dist/subagents/SubagentScheduler.d.ts +167 -0
  427. package/dist/subagents/SubagentScheduler.d.ts.map +1 -0
  428. package/dist/subagents/SubagentScheduler.js +530 -0
  429. package/dist/subagents/SubagentScheduler.js.map +1 -0
  430. package/dist/subagents/TeamAgentRouter.d.ts +104 -0
  431. package/dist/subagents/TeamAgentRouter.d.ts.map +1 -0
  432. package/dist/subagents/TeamAgentRouter.js +435 -0
  433. package/dist/subagents/TeamAgentRouter.js.map +1 -0
  434. package/dist/subagents/capabilityMatcher.d.ts +3 -0
  435. package/dist/subagents/capabilityMatcher.d.ts.map +1 -0
  436. package/dist/subagents/capabilityMatcher.js +127 -0
  437. package/dist/subagents/capabilityMatcher.js.map +1 -0
  438. package/dist/subagents/subagentRunPort.d.ts +43 -0
  439. package/dist/subagents/subagentRunPort.d.ts.map +1 -0
  440. package/dist/subagents/subagentRunPort.js +24 -0
  441. package/dist/subagents/subagentRunPort.js.map +1 -0
  442. package/dist/subagents/subagentTypes.d.ts +330 -0
  443. package/dist/subagents/subagentTypes.d.ts.map +1 -0
  444. package/dist/subagents/subagentTypes.js +2 -0
  445. package/dist/subagents/subagentTypes.js.map +1 -0
  446. package/dist/subagents/subagentWorkspaceAuthority.d.ts +29 -0
  447. package/dist/subagents/subagentWorkspaceAuthority.d.ts.map +1 -0
  448. package/dist/subagents/subagentWorkspaceAuthority.js +173 -0
  449. package/dist/subagents/subagentWorkspaceAuthority.js.map +1 -0
  450. package/dist/support/SupportDiagnosticsService.d.ts +87 -0
  451. package/dist/support/SupportDiagnosticsService.d.ts.map +1 -0
  452. package/dist/support/SupportDiagnosticsService.js +1199 -0
  453. package/dist/support/SupportDiagnosticsService.js.map +1 -0
  454. package/dist/turns/DurableInterruptedTurnStore.d.ts +14 -0
  455. package/dist/turns/DurableInterruptedTurnStore.d.ts.map +1 -0
  456. package/dist/turns/DurableInterruptedTurnStore.js +63 -0
  457. package/dist/turns/DurableInterruptedTurnStore.js.map +1 -0
  458. package/dist/turns/interruptedTurns.d.ts +50 -0
  459. package/dist/turns/interruptedTurns.d.ts.map +1 -0
  460. package/dist/turns/interruptedTurns.js +54 -0
  461. package/dist/turns/interruptedTurns.js.map +1 -0
  462. package/dist/turns/turnAdmission.d.ts +113 -0
  463. package/dist/turns/turnAdmission.d.ts.map +1 -0
  464. package/dist/turns/turnAdmission.js +136 -0
  465. package/dist/turns/turnAdmission.js.map +1 -0
  466. package/dist/workspace/WorkspaceHostService.d.ts +126 -0
  467. package/dist/workspace/WorkspaceHostService.d.ts.map +1 -0
  468. package/dist/workspace/WorkspaceHostService.js +841 -0
  469. package/dist/workspace/WorkspaceHostService.js.map +1 -0
  470. package/dist/workspace/WorkspaceShellService.d.ts +71 -0
  471. package/dist/workspace/WorkspaceShellService.d.ts.map +1 -0
  472. package/dist/workspace/WorkspaceShellService.js +273 -0
  473. package/dist/workspace/WorkspaceShellService.js.map +1 -0
  474. package/dist/workspace/fileAssociations.d.ts +12 -0
  475. package/dist/workspace/fileAssociations.d.ts.map +1 -0
  476. package/dist/workspace/fileAssociations.js +202 -0
  477. package/dist/workspace/fileAssociations.js.map +1 -0
  478. package/dist/workspace/scrollbackBuffer.d.ts +48 -0
  479. package/dist/workspace/scrollbackBuffer.d.ts.map +1 -0
  480. package/dist/workspace/scrollbackBuffer.js +94 -0
  481. package/dist/workspace/scrollbackBuffer.js.map +1 -0
  482. 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"}