@xenosystem/agent-interface-ui 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 (384) hide show
  1. package/LICENSE +67 -0
  2. package/dist/adapters/agentHostPlatformBridge.d.ts +24 -0
  3. package/dist/adapters/agentHostPlatformBridge.d.ts.map +1 -0
  4. package/dist/adapters/agentHostPlatformBridge.js +1244 -0
  5. package/dist/adapters/agentHostPlatformBridge.js.map +1 -0
  6. package/dist/adapters/hubAgentPlatformBridge.d.ts +17 -0
  7. package/dist/adapters/hubAgentPlatformBridge.d.ts.map +1 -0
  8. package/dist/adapters/hubAgentPlatformBridge.js +109 -0
  9. package/dist/adapters/hubAgentPlatformBridge.js.map +1 -0
  10. package/dist/adapters/xenoAgentCompatibilityBridge.d.ts +14 -0
  11. package/dist/adapters/xenoAgentCompatibilityBridge.d.ts.map +1 -0
  12. package/dist/adapters/xenoAgentCompatibilityBridge.js +237 -0
  13. package/dist/adapters/xenoAgentCompatibilityBridge.js.map +1 -0
  14. package/dist/adapters/xenoAgentHostCatalog.d.ts +40 -0
  15. package/dist/adapters/xenoAgentHostCatalog.d.ts.map +1 -0
  16. package/dist/adapters/xenoAgentHostCatalog.js +228 -0
  17. package/dist/adapters/xenoAgentHostCatalog.js.map +1 -0
  18. package/dist/components/agent/AIStatusIndicator.d.ts +25 -0
  19. package/dist/components/agent/AIStatusIndicator.d.ts.map +1 -0
  20. package/dist/components/agent/AIStatusIndicator.js +85 -0
  21. package/dist/components/agent/AIStatusIndicator.js.map +1 -0
  22. package/dist/components/agent/AgentInterface.d.ts +21 -0
  23. package/dist/components/agent/AgentInterface.d.ts.map +1 -0
  24. package/dist/components/agent/AgentInterface.js +7586 -0
  25. package/dist/components/agent/AgentInterface.js.map +1 -0
  26. package/dist/components/agent/AgentOnboarding.d.ts +16 -0
  27. package/dist/components/agent/AgentOnboarding.d.ts.map +1 -0
  28. package/dist/components/agent/AgentOnboarding.js +423 -0
  29. package/dist/components/agent/AgentOnboarding.js.map +1 -0
  30. package/dist/components/agent/AgentPtyTerminalPanel.d.ts +13 -0
  31. package/dist/components/agent/AgentPtyTerminalPanel.d.ts.map +1 -0
  32. package/dist/components/agent/AgentPtyTerminalPanel.js +129 -0
  33. package/dist/components/agent/AgentPtyTerminalPanel.js.map +1 -0
  34. package/dist/components/agent/AgentView.d.ts +143 -0
  35. package/dist/components/agent/AgentView.d.ts.map +1 -0
  36. package/dist/components/agent/AgentView.js +7250 -0
  37. package/dist/components/agent/AgentView.js.map +1 -0
  38. package/dist/components/agent/AgentWorkbenchCliPanel.d.ts +15 -0
  39. package/dist/components/agent/AgentWorkbenchCliPanel.d.ts.map +1 -0
  40. package/dist/components/agent/AgentWorkbenchCliPanel.js +275 -0
  41. package/dist/components/agent/AgentWorkbenchCliPanel.js.map +1 -0
  42. package/dist/components/agent/AgentWorkbenchPanel.d.ts +791 -0
  43. package/dist/components/agent/AgentWorkbenchPanel.d.ts.map +1 -0
  44. package/dist/components/agent/AgentWorkbenchPanel.js +584 -0
  45. package/dist/components/agent/AgentWorkbenchPanel.js.map +1 -0
  46. package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts +11 -0
  47. package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts.map +1 -0
  48. package/dist/components/agent/AgentWorkspaceBrowserPanel.js +198 -0
  49. package/dist/components/agent/AgentWorkspaceBrowserPanel.js.map +1 -0
  50. package/dist/components/agent/AssistantTurnStatusNotice.d.ts +16 -0
  51. package/dist/components/agent/AssistantTurnStatusNotice.d.ts.map +1 -0
  52. package/dist/components/agent/AssistantTurnStatusNotice.js +54 -0
  53. package/dist/components/agent/AssistantTurnStatusNotice.js.map +1 -0
  54. package/dist/components/agent/CommandToolCard.d.ts +11 -0
  55. package/dist/components/agent/CommandToolCard.d.ts.map +1 -0
  56. package/dist/components/agent/CommandToolCard.js +29 -0
  57. package/dist/components/agent/CommandToolCard.js.map +1 -0
  58. package/dist/components/agent/FleetPanel.d.ts +28 -0
  59. package/dist/components/agent/FleetPanel.d.ts.map +1 -0
  60. package/dist/components/agent/FleetPanel.js +175 -0
  61. package/dist/components/agent/FleetPanel.js.map +1 -0
  62. package/dist/components/agent/GhostTextArea.d.ts +13 -0
  63. package/dist/components/agent/GhostTextArea.d.ts.map +1 -0
  64. package/dist/components/agent/GhostTextArea.js +21 -0
  65. package/dist/components/agent/GhostTextArea.js.map +1 -0
  66. package/dist/components/agent/IntakePanel.d.ts +29 -0
  67. package/dist/components/agent/IntakePanel.d.ts.map +1 -0
  68. package/dist/components/agent/IntakePanel.js +81 -0
  69. package/dist/components/agent/IntakePanel.js.map +1 -0
  70. package/dist/components/agent/KnowledgePanel.d.ts +25 -0
  71. package/dist/components/agent/KnowledgePanel.d.ts.map +1 -0
  72. package/dist/components/agent/KnowledgePanel.js +99 -0
  73. package/dist/components/agent/KnowledgePanel.js.map +1 -0
  74. package/dist/components/agent/MonacoDiffWorkbenchEditor.d.ts +9 -0
  75. package/dist/components/agent/MonacoDiffWorkbenchEditor.d.ts.map +1 -0
  76. package/dist/components/agent/MonacoDiffWorkbenchEditor.js +204 -0
  77. package/dist/components/agent/MonacoDiffWorkbenchEditor.js.map +1 -0
  78. package/dist/components/agent/MonacoWorkbenchEditor.d.ts +15 -0
  79. package/dist/components/agent/MonacoWorkbenchEditor.d.ts.map +1 -0
  80. package/dist/components/agent/MonacoWorkbenchEditor.js +380 -0
  81. package/dist/components/agent/MonacoWorkbenchEditor.js.map +1 -0
  82. package/dist/components/agent/PermissionDialog.d.ts +34 -0
  83. package/dist/components/agent/PermissionDialog.d.ts.map +1 -0
  84. package/dist/components/agent/PermissionDialog.js +67 -0
  85. package/dist/components/agent/PermissionDialog.js.map +1 -0
  86. package/dist/components/agent/PluginManager.d.ts +20 -0
  87. package/dist/components/agent/PluginManager.d.ts.map +1 -0
  88. package/dist/components/agent/PluginManager.js +506 -0
  89. package/dist/components/agent/PluginManager.js.map +1 -0
  90. package/dist/components/agent/RunReviewPanel.d.ts +52 -0
  91. package/dist/components/agent/RunReviewPanel.d.ts.map +1 -0
  92. package/dist/components/agent/RunReviewPanel.js +236 -0
  93. package/dist/components/agent/RunReviewPanel.js.map +1 -0
  94. package/dist/components/agent/SessionsPanel.d.ts +30 -0
  95. package/dist/components/agent/SessionsPanel.d.ts.map +1 -0
  96. package/dist/components/agent/SessionsPanel.js +247 -0
  97. package/dist/components/agent/SessionsPanel.js.map +1 -0
  98. package/dist/components/agent/acp/AcpAgentConfigForm.d.ts +19 -0
  99. package/dist/components/agent/acp/AcpAgentConfigForm.d.ts.map +1 -0
  100. package/dist/components/agent/acp/AcpAgentConfigForm.js +85 -0
  101. package/dist/components/agent/acp/AcpAgentConfigForm.js.map +1 -0
  102. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.d.ts +10 -0
  103. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.d.ts.map +1 -0
  104. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js +80 -0
  105. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js.map +1 -0
  106. package/dist/components/agent/acp/AcpAgentManager.d.ts +3 -0
  107. package/dist/components/agent/acp/AcpAgentManager.d.ts.map +1 -0
  108. package/dist/components/agent/acp/AcpAgentManager.js +152 -0
  109. package/dist/components/agent/acp/AcpAgentManager.js.map +1 -0
  110. package/dist/components/agent/acp/AcpAgentTestResultPanel.d.ts +9 -0
  111. package/dist/components/agent/acp/AcpAgentTestResultPanel.d.ts.map +1 -0
  112. package/dist/components/agent/acp/AcpAgentTestResultPanel.js +24 -0
  113. package/dist/components/agent/acp/AcpAgentTestResultPanel.js.map +1 -0
  114. package/dist/components/agent/acp/AcpApprovalPanel.d.ts +29 -0
  115. package/dist/components/agent/acp/AcpApprovalPanel.d.ts.map +1 -0
  116. package/dist/components/agent/acp/AcpApprovalPanel.js +37 -0
  117. package/dist/components/agent/acp/AcpApprovalPanel.js.map +1 -0
  118. package/dist/components/agent/acp/AcpCertificationPanel.d.ts +10 -0
  119. package/dist/components/agent/acp/AcpCertificationPanel.d.ts.map +1 -0
  120. package/dist/components/agent/acp/AcpCertificationPanel.js +41 -0
  121. package/dist/components/agent/acp/AcpCertificationPanel.js.map +1 -0
  122. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.d.ts +11 -0
  123. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.d.ts.map +1 -0
  124. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js +32 -0
  125. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js.map +1 -0
  126. package/dist/components/agent/acp/AcpProviderManagerPanel.d.ts +7 -0
  127. package/dist/components/agent/acp/AcpProviderManagerPanel.d.ts.map +1 -0
  128. package/dist/components/agent/acp/AcpProviderManagerPanel.js +69 -0
  129. package/dist/components/agent/acp/AcpProviderManagerPanel.js.map +1 -0
  130. package/dist/components/agent/acp/AcpProviderModelsPanel.d.ts +7 -0
  131. package/dist/components/agent/acp/AcpProviderModelsPanel.d.ts.map +1 -0
  132. package/dist/components/agent/acp/AcpProviderModelsPanel.js +108 -0
  133. package/dist/components/agent/acp/AcpProviderModelsPanel.js.map +1 -0
  134. package/dist/components/agent/acp/AcpSupportBundlePanel.d.ts +8 -0
  135. package/dist/components/agent/acp/AcpSupportBundlePanel.d.ts.map +1 -0
  136. package/dist/components/agent/acp/AcpSupportBundlePanel.js +56 -0
  137. package/dist/components/agent/acp/AcpSupportBundlePanel.js.map +1 -0
  138. package/dist/components/agent/compactionSummary.d.ts +28 -0
  139. package/dist/components/agent/compactionSummary.d.ts.map +1 -0
  140. package/dist/components/agent/compactionSummary.js +41 -0
  141. package/dist/components/agent/compactionSummary.js.map +1 -0
  142. package/dist/components/agent/monacoWorkbenchShared.d.ts +13 -0
  143. package/dist/components/agent/monacoWorkbenchShared.d.ts.map +1 -0
  144. package/dist/components/agent/monacoWorkbenchShared.js +226 -0
  145. package/dist/components/agent/monacoWorkbenchShared.js.map +1 -0
  146. package/dist/components/agent/settings/EntitySettingsLayout.d.ts +61 -0
  147. package/dist/components/agent/settings/EntitySettingsLayout.d.ts.map +1 -0
  148. package/dist/components/agent/settings/EntitySettingsLayout.js +72 -0
  149. package/dist/components/agent/settings/EntitySettingsLayout.js.map +1 -0
  150. package/dist/components/agent/settings/SettingsNavigation.d.ts +8 -0
  151. package/dist/components/agent/settings/SettingsNavigation.d.ts.map +1 -0
  152. package/dist/components/agent/settings/SettingsNavigation.js +39 -0
  153. package/dist/components/agent/settings/SettingsNavigation.js.map +1 -0
  154. package/dist/components/agent/settings/sections/AccessMembersSection.d.ts +3 -0
  155. package/dist/components/agent/settings/sections/AccessMembersSection.d.ts.map +1 -0
  156. package/dist/components/agent/settings/sections/AccessMembersSection.js +31 -0
  157. package/dist/components/agent/settings/sections/AccessMembersSection.js.map +1 -0
  158. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.d.ts +25 -0
  159. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.d.ts.map +1 -0
  160. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js +56 -0
  161. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js.map +1 -0
  162. package/dist/components/agent/settings/sections/DangerZoneSection.d.ts +3 -0
  163. package/dist/components/agent/settings/sections/DangerZoneSection.d.ts.map +1 -0
  164. package/dist/components/agent/settings/sections/DangerZoneSection.js +19 -0
  165. package/dist/components/agent/settings/sections/DangerZoneSection.js.map +1 -0
  166. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.d.ts +3 -0
  167. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.d.ts.map +1 -0
  168. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js +66 -0
  169. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js.map +1 -0
  170. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.d.ts +3 -0
  171. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.d.ts.map +1 -0
  172. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js +87 -0
  173. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js.map +1 -0
  174. package/dist/components/agent/settings/sections/ExportBackupSection.d.ts +3 -0
  175. package/dist/components/agent/settings/sections/ExportBackupSection.d.ts.map +1 -0
  176. package/dist/components/agent/settings/sections/ExportBackupSection.js +23 -0
  177. package/dist/components/agent/settings/sections/ExportBackupSection.js.map +1 -0
  178. package/dist/components/agent/settings/sections/GeneralSection.d.ts +3 -0
  179. package/dist/components/agent/settings/sections/GeneralSection.d.ts.map +1 -0
  180. package/dist/components/agent/settings/sections/GeneralSection.js +15 -0
  181. package/dist/components/agent/settings/sections/GeneralSection.js.map +1 -0
  182. package/dist/components/agent/settings/sections/IntegrationsSection.d.ts +3 -0
  183. package/dist/components/agent/settings/sections/IntegrationsSection.d.ts.map +1 -0
  184. package/dist/components/agent/settings/sections/IntegrationsSection.js +40 -0
  185. package/dist/components/agent/settings/sections/IntegrationsSection.js.map +1 -0
  186. package/dist/components/agent/settings/sections/NotificationsSection.d.ts +3 -0
  187. package/dist/components/agent/settings/sections/NotificationsSection.d.ts.map +1 -0
  188. package/dist/components/agent/settings/sections/NotificationsSection.js +28 -0
  189. package/dist/components/agent/settings/sections/NotificationsSection.js.map +1 -0
  190. package/dist/components/agent/settings/sections/ResourceLimitsSection.d.ts +3 -0
  191. package/dist/components/agent/settings/sections/ResourceLimitsSection.d.ts.map +1 -0
  192. package/dist/components/agent/settings/sections/ResourceLimitsSection.js +17 -0
  193. package/dist/components/agent/settings/sections/ResourceLimitsSection.js.map +1 -0
  194. package/dist/components/agent/settings/sections/SecurityComplianceSection.d.ts +3 -0
  195. package/dist/components/agent/settings/sections/SecurityComplianceSection.d.ts.map +1 -0
  196. package/dist/components/agent/settings/sections/SecurityComplianceSection.js +28 -0
  197. package/dist/components/agent/settings/sections/SecurityComplianceSection.js.map +1 -0
  198. package/dist/components/agent/settings/sections/UsageAnalyticsSection.d.ts +3 -0
  199. package/dist/components/agent/settings/sections/UsageAnalyticsSection.d.ts.map +1 -0
  200. package/dist/components/agent/settings/sections/UsageAnalyticsSection.js +17 -0
  201. package/dist/components/agent/settings/sections/UsageAnalyticsSection.js.map +1 -0
  202. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.d.ts +54 -0
  203. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.d.ts.map +1 -0
  204. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js +333 -0
  205. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js.map +1 -0
  206. package/dist/components/agent/settings/shared/CheckboxField.d.ts +13 -0
  207. package/dist/components/agent/settings/shared/CheckboxField.d.ts.map +1 -0
  208. package/dist/components/agent/settings/shared/CheckboxField.js +8 -0
  209. package/dist/components/agent/settings/shared/CheckboxField.js.map +1 -0
  210. package/dist/components/agent/settings/shared/InputField.d.ts +15 -0
  211. package/dist/components/agent/settings/shared/InputField.d.ts.map +1 -0
  212. package/dist/components/agent/settings/shared/InputField.js +7 -0
  213. package/dist/components/agent/settings/shared/InputField.js.map +1 -0
  214. package/dist/components/agent/settings/shared/MembersTable.d.ts +11 -0
  215. package/dist/components/agent/settings/shared/MembersTable.d.ts.map +1 -0
  216. package/dist/components/agent/settings/shared/MembersTable.js +7 -0
  217. package/dist/components/agent/settings/shared/MembersTable.js.map +1 -0
  218. package/dist/components/agent/settings/shared/SettingRow.d.ts +11 -0
  219. package/dist/components/agent/settings/shared/SettingRow.d.ts.map +1 -0
  220. package/dist/components/agent/settings/shared/SettingRow.js +6 -0
  221. package/dist/components/agent/settings/shared/SettingRow.js.map +1 -0
  222. package/dist/components/agent/settings/shared/SettingsCard.d.ts +11 -0
  223. package/dist/components/agent/settings/shared/SettingsCard.d.ts.map +1 -0
  224. package/dist/components/agent/settings/shared/SettingsCard.js +8 -0
  225. package/dist/components/agent/settings/shared/SettingsCard.js.map +1 -0
  226. package/dist/components/agent/settings/shared/ToggleSwitch.d.ts +8 -0
  227. package/dist/components/agent/settings/shared/ToggleSwitch.d.ts.map +1 -0
  228. package/dist/components/agent/settings/shared/ToggleSwitch.js +6 -0
  229. package/dist/components/agent/settings/shared/ToggleSwitch.js.map +1 -0
  230. package/dist/components/agent/settings/shared/UsageChart.d.ts +12 -0
  231. package/dist/components/agent/settings/shared/UsageChart.d.ts.map +1 -0
  232. package/dist/components/agent/settings/shared/UsageChart.js +16 -0
  233. package/dist/components/agent/settings/shared/UsageChart.js.map +1 -0
  234. package/dist/components/agent/toolCardDisplay.d.ts +24 -0
  235. package/dist/components/agent/toolCardDisplay.d.ts.map +1 -0
  236. package/dist/components/agent/toolCardDisplay.js +85 -0
  237. package/dist/components/agent/toolCardDisplay.js.map +1 -0
  238. package/dist/components/product/XenoAgentProductHeader.d.ts +18 -0
  239. package/dist/components/product/XenoAgentProductHeader.d.ts.map +1 -0
  240. package/dist/components/product/XenoAgentProductHeader.js +25 -0
  241. package/dist/components/product/XenoAgentProductHeader.js.map +1 -0
  242. package/dist/components/product/XenoAgentSessionTabs.d.ts +18 -0
  243. package/dist/components/product/XenoAgentSessionTabs.d.ts.map +1 -0
  244. package/dist/components/product/XenoAgentSessionTabs.js +103 -0
  245. package/dist/components/product/XenoAgentSessionTabs.js.map +1 -0
  246. package/dist/components/ui/CodeBlock.d.ts +8 -0
  247. package/dist/components/ui/CodeBlock.d.ts.map +1 -0
  248. package/dist/components/ui/CodeBlock.js +89 -0
  249. package/dist/components/ui/CodeBlock.js.map +1 -0
  250. package/dist/components/ui/XenoLogo.d.ts +11 -0
  251. package/dist/components/ui/XenoLogo.d.ts.map +1 -0
  252. package/dist/components/ui/XenoLogo.js +9 -0
  253. package/dist/components/ui/XenoLogo.js.map +1 -0
  254. package/dist/index.d.ts +50 -0
  255. package/dist/index.d.ts.map +1 -0
  256. package/dist/index.js +127 -0
  257. package/dist/index.js.map +1 -0
  258. package/dist/platformApiTypes.d.ts +3992 -0
  259. package/dist/platformApiTypes.d.ts.map +1 -0
  260. package/dist/platformApiTypes.js +2 -0
  261. package/dist/platformApiTypes.js.map +1 -0
  262. package/dist/platformBridge.d.ts +9 -0
  263. package/dist/platformBridge.d.ts.map +1 -0
  264. package/dist/platformBridge.js +19 -0
  265. package/dist/platformBridge.js.map +1 -0
  266. package/dist/providerSelector.d.ts +28 -0
  267. package/dist/providerSelector.d.ts.map +1 -0
  268. package/dist/providerSelector.js +104 -0
  269. package/dist/providerSelector.js.map +1 -0
  270. package/dist/services/connectionMode.d.ts +13 -0
  271. package/dist/services/connectionMode.d.ts.map +1 -0
  272. package/dist/services/connectionMode.js +31 -0
  273. package/dist/services/connectionMode.js.map +1 -0
  274. package/dist/sessionTabs.d.ts +48 -0
  275. package/dist/sessionTabs.d.ts.map +1 -0
  276. package/dist/sessionTabs.js +106 -0
  277. package/dist/sessionTabs.js.map +1 -0
  278. package/dist/stores/acpAgentStore.d.ts +264 -0
  279. package/dist/stores/acpAgentStore.d.ts.map +1 -0
  280. package/dist/stores/acpAgentStore.js +825 -0
  281. package/dist/stores/acpAgentStore.js.map +1 -0
  282. package/dist/stores/agentChatStore.d.ts +529 -0
  283. package/dist/stores/agentChatStore.d.ts.map +1 -0
  284. package/dist/stores/agentChatStore.js +5309 -0
  285. package/dist/stores/agentChatStore.js.map +1 -0
  286. package/dist/stores/agentIdeStore.d.ts +9 -0
  287. package/dist/stores/agentIdeStore.d.ts.map +1 -0
  288. package/dist/stores/agentIdeStore.js +8 -0
  289. package/dist/stores/agentIdeStore.js.map +1 -0
  290. package/dist/stores/agentSearchStore.d.ts +174 -0
  291. package/dist/stores/agentSearchStore.d.ts.map +1 -0
  292. package/dist/stores/agentSearchStore.js +305 -0
  293. package/dist/stores/agentSearchStore.js.map +1 -0
  294. package/dist/stores/authStore.d.ts +26 -0
  295. package/dist/stores/authStore.d.ts.map +1 -0
  296. package/dist/stores/authStore.js +163 -0
  297. package/dist/stores/authStore.js.map +1 -0
  298. package/dist/stores/entitySettingsStore.d.ts +236 -0
  299. package/dist/stores/entitySettingsStore.d.ts.map +1 -0
  300. package/dist/stores/entitySettingsStore.js +916 -0
  301. package/dist/stores/entitySettingsStore.js.map +1 -0
  302. package/dist/stores/permissionStore.d.ts +25 -0
  303. package/dist/stores/permissionStore.d.ts.map +1 -0
  304. package/dist/stores/permissionStore.js +58 -0
  305. package/dist/stores/permissionStore.js.map +1 -0
  306. package/dist/stores/suggestionStore.d.ts +29 -0
  307. package/dist/stores/suggestionStore.d.ts.map +1 -0
  308. package/dist/stores/suggestionStore.js +160 -0
  309. package/dist/stores/suggestionStore.js.map +1 -0
  310. package/dist/stores/tabStore.d.ts +30 -0
  311. package/dist/stores/tabStore.d.ts.map +1 -0
  312. package/dist/stores/tabStore.js +252 -0
  313. package/dist/stores/tabStore.js.map +1 -0
  314. package/dist/stores/themeStore.d.ts +13 -0
  315. package/dist/stores/themeStore.d.ts.map +1 -0
  316. package/dist/stores/themeStore.js +77 -0
  317. package/dist/stores/themeStore.js.map +1 -0
  318. package/dist/stores/workspaceStore.d.ts +175 -0
  319. package/dist/stores/workspaceStore.d.ts.map +1 -0
  320. package/dist/stores/workspaceStore.js +694 -0
  321. package/dist/stores/workspaceStore.js.map +1 -0
  322. package/dist/stores/xenoChatStore.d.ts +88 -0
  323. package/dist/stores/xenoChatStore.d.ts.map +1 -0
  324. package/dist/stores/xenoChatStore.js +572 -0
  325. package/dist/stores/xenoChatStore.js.map +1 -0
  326. package/dist/toolCardProjection.d.ts +33 -0
  327. package/dist/toolCardProjection.d.ts.map +1 -0
  328. package/dist/toolCardProjection.js +62 -0
  329. package/dist/toolCardProjection.js.map +1 -0
  330. package/dist/types/agentEditor.d.ts +39 -0
  331. package/dist/types/agentEditor.d.ts.map +1 -0
  332. package/dist/types/agentEditor.js +2 -0
  333. package/dist/types/agentEditor.js.map +1 -0
  334. package/dist/types/agentRuntimeProvider.d.ts +2 -0
  335. package/dist/types/agentRuntimeProvider.d.ts.map +1 -0
  336. package/dist/types/agentRuntimeProvider.js +2 -0
  337. package/dist/types/agentRuntimeProvider.js.map +1 -0
  338. package/dist/utils/acpExecutionAuthority.d.ts +18 -0
  339. package/dist/utils/acpExecutionAuthority.d.ts.map +1 -0
  340. package/dist/utils/acpExecutionAuthority.js +22 -0
  341. package/dist/utils/acpExecutionAuthority.js.map +1 -0
  342. package/dist/utils/agentAttachedContextPrompt.d.ts +2 -0
  343. package/dist/utils/agentAttachedContextPrompt.d.ts.map +1 -0
  344. package/dist/utils/agentAttachedContextPrompt.js +2 -0
  345. package/dist/utils/agentAttachedContextPrompt.js.map +1 -0
  346. package/dist/utils/agentModelContext.d.ts +2 -0
  347. package/dist/utils/agentModelContext.d.ts.map +1 -0
  348. package/dist/utils/agentModelContext.js +2 -0
  349. package/dist/utils/agentModelContext.js.map +1 -0
  350. package/dist/utils/agentReasoningEffort.d.ts +3 -0
  351. package/dist/utils/agentReasoningEffort.d.ts.map +1 -0
  352. package/dist/utils/agentReasoningEffort.js +2 -0
  353. package/dist/utils/agentReasoningEffort.js.map +1 -0
  354. package/dist/utils/agentRuntimeProvider.d.ts +3 -0
  355. package/dist/utils/agentRuntimeProvider.d.ts.map +1 -0
  356. package/dist/utils/agentRuntimeProvider.js +2 -0
  357. package/dist/utils/agentRuntimeProvider.js.map +1 -0
  358. package/dist/utils/cloudModels.d.ts +3 -0
  359. package/dist/utils/cloudModels.d.ts.map +1 -0
  360. package/dist/utils/cloudModels.js +181 -0
  361. package/dist/utils/cloudModels.js.map +1 -0
  362. package/dist/utils/conversationRuntime.d.ts +3 -0
  363. package/dist/utils/conversationRuntime.d.ts.map +1 -0
  364. package/dist/utils/conversationRuntime.js +2 -0
  365. package/dist/utils/conversationRuntime.js.map +1 -0
  366. package/dist/utils/fileCreateIntent.d.ts +16 -0
  367. package/dist/utils/fileCreateIntent.d.ts.map +1 -0
  368. package/dist/utils/fileCreateIntent.js +123 -0
  369. package/dist/utils/fileCreateIntent.js.map +1 -0
  370. package/dist/utils/legacyAgentRuntimeEvents.d.ts +2 -0
  371. package/dist/utils/legacyAgentRuntimeEvents.d.ts.map +1 -0
  372. package/dist/utils/legacyAgentRuntimeEvents.js +2 -0
  373. package/dist/utils/legacyAgentRuntimeEvents.js.map +1 -0
  374. package/dist/utils/markdownWindowsPaths.d.ts +2 -0
  375. package/dist/utils/markdownWindowsPaths.d.ts.map +1 -0
  376. package/dist/utils/markdownWindowsPaths.js +2 -0
  377. package/dist/utils/markdownWindowsPaths.js.map +1 -0
  378. package/dist/utils/workspaceSelectionContinuation.d.ts +2 -0
  379. package/dist/utils/workspaceSelectionContinuation.d.ts.map +1 -0
  380. package/dist/utils/workspaceSelectionContinuation.js +2 -0
  381. package/dist/utils/workspaceSelectionContinuation.js.map +1 -0
  382. package/package.json +53 -0
  383. package/src/agent.css +1156 -0
  384. package/src/foundation.css +62 -0
@@ -0,0 +1,3992 @@
1
+ interface SpeechRecognitionEvent extends Event {
2
+ readonly resultIndex: number;
3
+ readonly results: SpeechRecognitionResultList;
4
+ }
5
+ interface SpeechRecognitionResultList {
6
+ readonly length: number;
7
+ item(index: number): SpeechRecognitionResult;
8
+ [index: number]: SpeechRecognitionResult;
9
+ }
10
+ interface SpeechRecognitionResult {
11
+ readonly isFinal: boolean;
12
+ readonly length: number;
13
+ item(index: number): SpeechRecognitionAlternative;
14
+ [index: number]: SpeechRecognitionAlternative;
15
+ }
16
+ interface SpeechRecognitionAlternative {
17
+ readonly transcript: string;
18
+ readonly confidence: number;
19
+ }
20
+ interface SpeechRecognitionErrorEvent extends Event {
21
+ readonly error: string;
22
+ readonly message: string;
23
+ }
24
+ interface SpeechRecognition extends EventTarget {
25
+ continuous: boolean;
26
+ interimResults: boolean;
27
+ lang: string;
28
+ maxAlternatives: number;
29
+ onresult: ((event: SpeechRecognitionEvent) => void) | null;
30
+ onerror: ((event: SpeechRecognitionErrorEvent) => void) | null;
31
+ onend: (() => void) | null;
32
+ onstart: (() => void) | null;
33
+ start(): void;
34
+ stop(): void;
35
+ abort(): void;
36
+ }
37
+ interface AgentContextCompactionMetrics {
38
+ strategyVersion: number;
39
+ contextDigest: string;
40
+ rawMessageCount: number;
41
+ sentMessageCount: number;
42
+ compactedMessageCount: number;
43
+ estimatedRawTokens: number;
44
+ estimatedSentTokens: number;
45
+ retainedAnchorCount: number;
46
+ retainedArtifactCount: number;
47
+ retainedGrantedDirectoryCount: number;
48
+ }
49
+ interface SpeechRecognitionConstructor {
50
+ new (): SpeechRecognition;
51
+ }
52
+ import type { ConversationEditorDiff } from './types/agentEditor.js';
53
+ type ScopedIpcParams = Record<string, unknown>;
54
+ type PathIpcInput = string | ScopedIpcParams;
55
+ type WebSearchIpcInput = string | ({
56
+ query: string;
57
+ count?: number;
58
+ } & ScopedIpcParams);
59
+ type ConvertOptions = {
60
+ quality?: number;
61
+ sampleRate?: number;
62
+ bitsPerSample?: number;
63
+ compressionLevel?: number;
64
+ };
65
+ export type MarketplaceListingKind = 'app-native' | 'app-sandboxed' | 'panel' | 'plugin' | 'mcp' | 'model' | 'mind' | 'swarm';
66
+ export type MarketplaceTrustTier = 'official' | 'verified' | 'community';
67
+ export type MarketplacePricingModel = 'free' | 'one_time' | 'subscription' | 'pay_per_use' | 'rental';
68
+ export type MarketplaceEntitlementKind = 'owned' | 'subscribed' | 'rental';
69
+ export type MarketplaceEntitlementStatus = 'active' | 'expired' | 'revoked';
70
+ export interface MarketplacePricing {
71
+ model: MarketplacePricingModel;
72
+ priceCredits: number | null;
73
+ priceUsd: number | null;
74
+ period: string | null;
75
+ meterUnit: string | null;
76
+ }
77
+ export interface MarketplaceListing {
78
+ id: string;
79
+ slug: string;
80
+ kind: MarketplaceListingKind;
81
+ title: string;
82
+ summary: string;
83
+ category: string | null;
84
+ trustTier: MarketplaceTrustTier;
85
+ iconUrl: string | null;
86
+ developerName: string | null;
87
+ currentVersion: string | null;
88
+ pricing: MarketplacePricing[];
89
+ rating: number | null;
90
+ reviewCount: number | null;
91
+ downloads: number | null;
92
+ nativeAppId?: string | null;
93
+ isDevFixture?: boolean;
94
+ }
95
+ export interface MarketplaceListingVersion {
96
+ version: string;
97
+ releaseNotes: string | null;
98
+ declaredCapabilities: string[];
99
+ publishedAt: string | null;
100
+ }
101
+ export interface MarketplaceListingDetail extends MarketplaceListing {
102
+ description: string;
103
+ screenshots: string[];
104
+ versions: MarketplaceListingVersion[];
105
+ reviews: Array<{
106
+ id: string;
107
+ userName: string;
108
+ rating: number;
109
+ text: string;
110
+ createdAt: string;
111
+ }>;
112
+ declaredCapabilities: string[];
113
+ }
114
+ export interface MarketplaceEntitlement {
115
+ listingId: string;
116
+ listingSlug: string | null;
117
+ kind: MarketplaceEntitlementKind;
118
+ status: MarketplaceEntitlementStatus;
119
+ grantedAt: string | null;
120
+ expiresAt: string | null;
121
+ }
122
+ /** One landing queue, as a surface reads it. Mirrors the host's response. */
123
+ export interface LandingQueueView {
124
+ success: boolean;
125
+ entries: Array<{
126
+ runId: string;
127
+ revision: string;
128
+ state: 'queued' | 'landing' | 'landed' | 'refused' | 'failed';
129
+ position?: number;
130
+ reason?: string;
131
+ enqueuedAt: number;
132
+ updatedAt: number;
133
+ }>;
134
+ landing?: string;
135
+ fingerprint: string;
136
+ error?: string;
137
+ }
138
+ export interface XenoAPI {
139
+ window: {
140
+ minimize: () => Promise<void>;
141
+ maximize: () => Promise<void>;
142
+ close: () => Promise<void>;
143
+ isMaximized: () => Promise<boolean>;
144
+ openExternal: (url: string) => Promise<void>;
145
+ onMaximizedChange: (callback: (isMaximized: boolean) => void) => void;
146
+ };
147
+ agentHost: {
148
+ request: (method: string, input: unknown) => Promise<unknown>;
149
+ subscribe: (callback: (event: unknown) => void) => string;
150
+ unsubscribe: (subscriptionId: string) => boolean;
151
+ };
152
+ debug: {
153
+ log: (scope: string, message: string, meta?: Record<string, unknown>) => void;
154
+ };
155
+ perf: {
156
+ rendererReady: () => Promise<{
157
+ success: boolean;
158
+ metrics: {
159
+ processStart: number;
160
+ appReady?: number;
161
+ windowCreated?: number;
162
+ windowShown?: number;
163
+ rendererReady?: number;
164
+ toAppReady?: number;
165
+ toWindowCreated?: number;
166
+ toWindowShown?: number;
167
+ toRendererReady?: number;
168
+ appVersion: string;
169
+ date: string;
170
+ };
171
+ }>;
172
+ getMetrics: () => Promise<{
173
+ success: boolean;
174
+ data: unknown;
175
+ }>;
176
+ };
177
+ auth: {
178
+ status: () => Promise<{
179
+ authenticated: boolean;
180
+ }>;
181
+ getWebToken: () => Promise<string | null>;
182
+ getApiKey: () => Promise<string | null>;
183
+ saveCredentials: (webToken: string) => Promise<{
184
+ success: boolean;
185
+ }>;
186
+ logout: () => Promise<{
187
+ success: boolean;
188
+ }>;
189
+ openOAuth: (provider: string) => Promise<{
190
+ success: boolean;
191
+ cancelled?: boolean;
192
+ user?: unknown;
193
+ apiKey?: string;
194
+ error?: string;
195
+ }>;
196
+ cancelOAuth: () => Promise<{
197
+ success: boolean;
198
+ }>;
199
+ loginWithEmail: (email: string, password: string) => Promise<{
200
+ success: boolean;
201
+ token?: string;
202
+ apiKey?: string;
203
+ user?: unknown;
204
+ error?: string;
205
+ }>;
206
+ registerWithEmail: (name: string, email: string, password: string) => Promise<{
207
+ success: boolean;
208
+ token?: string;
209
+ apiKey?: string;
210
+ user?: unknown;
211
+ error?: string;
212
+ }>;
213
+ validateToken: (token: string) => Promise<{
214
+ valid: boolean;
215
+ user?: unknown;
216
+ apiKey?: string;
217
+ error?: string;
218
+ }>;
219
+ };
220
+ content: {
221
+ fetchJson: (params: {
222
+ url: string;
223
+ auth?: boolean;
224
+ timeoutMs?: number;
225
+ } & ScopedIpcParams) => Promise<{
226
+ success: boolean;
227
+ status: number;
228
+ error: string | null;
229
+ data: unknown;
230
+ }>;
231
+ };
232
+ apps: {
233
+ list: () => Promise<Array<{
234
+ id: string;
235
+ name: string;
236
+ description: string;
237
+ icon: string;
238
+ executable: string;
239
+ status: string;
240
+ version?: string;
241
+ category: string;
242
+ }>>;
243
+ get: (appId: string) => Promise<{
244
+ id: string;
245
+ name: string;
246
+ description: string;
247
+ icon: string;
248
+ executable: string;
249
+ status: string;
250
+ version?: string;
251
+ category: string;
252
+ } | null>;
253
+ launch: (appId: string) => Promise<{
254
+ success: boolean;
255
+ error?: string;
256
+ }>;
257
+ isRunning: (appId: string) => Promise<boolean>;
258
+ stop: (appId: string) => Promise<{
259
+ success: boolean;
260
+ error?: string;
261
+ }>;
262
+ onLaunchRequest: (callback: (appId: string) => void) => void;
263
+ };
264
+ creativeApps: {
265
+ list: () => Promise<Array<{
266
+ id: string;
267
+ name: string;
268
+ description: string;
269
+ version: string;
270
+ installedVersion: string | null;
271
+ status: 'not_installed' | 'installed' | 'running' | 'update_available';
272
+ installPath: string | null;
273
+ downloadUrl: string;
274
+ notes: string | null;
275
+ category: 'studio' | 'office' | 'corpo' | 'automation';
276
+ }>>;
277
+ install: (appId: string) => Promise<{
278
+ success: boolean;
279
+ error?: string;
280
+ }>;
281
+ cancelInstall: (appId: string) => Promise<{
282
+ success: boolean;
283
+ error?: string;
284
+ }>;
285
+ launch: (appId: string) => Promise<{
286
+ success: boolean;
287
+ error?: string;
288
+ }>;
289
+ stop: (appId: string) => Promise<{
290
+ success: boolean;
291
+ error?: string;
292
+ }>;
293
+ checkUpdate: (appId: string) => Promise<{
294
+ available: boolean;
295
+ version: string;
296
+ installedVersion?: string;
297
+ notes?: string;
298
+ }>;
299
+ uninstall: (appId: string) => Promise<{
300
+ success: boolean;
301
+ error?: string;
302
+ }>;
303
+ openInstallLocation: (appId: string) => Promise<{
304
+ success: boolean;
305
+ error?: string;
306
+ }>;
307
+ onInstallProgress: (callback: (data: {
308
+ appId: string;
309
+ phase: 'downloading' | 'installing' | 'complete' | 'error';
310
+ percent: number;
311
+ bytesDownloaded: number;
312
+ totalBytes: number;
313
+ error?: string;
314
+ }) => void) => void;
315
+ offInstallProgress: () => void;
316
+ onStatusChanged: (callback: (data: {
317
+ reason: string;
318
+ running: Record<string, boolean>;
319
+ timestamp: number;
320
+ }) => void) => void;
321
+ offStatusChanged: () => void;
322
+ };
323
+ marketplace: {
324
+ catalog: (params?: {
325
+ kind?: string;
326
+ category?: string;
327
+ trustTier?: string;
328
+ q?: string;
329
+ page?: number;
330
+ pageSize?: number;
331
+ }) => Promise<{
332
+ success: boolean;
333
+ listings: MarketplaceListing[];
334
+ total: number;
335
+ page?: number;
336
+ pageSize?: number;
337
+ devFixture?: boolean;
338
+ error?: string;
339
+ }>;
340
+ listing: (slug: string) => Promise<{
341
+ success: boolean;
342
+ listing?: MarketplaceListingDetail;
343
+ devFixture?: boolean;
344
+ error?: string;
345
+ }>;
346
+ entitlements: () => Promise<{
347
+ success: boolean;
348
+ entitlements: MarketplaceEntitlement[];
349
+ authenticated: boolean;
350
+ error?: string;
351
+ }>;
352
+ purchase: (params: {
353
+ listingId: string;
354
+ versionId?: string;
355
+ }) => Promise<{
356
+ success: boolean;
357
+ entitlement?: MarketplaceEntitlement | null;
358
+ transaction?: unknown;
359
+ error?: string;
360
+ }>;
361
+ subscribe: (params: {
362
+ listingId: string;
363
+ period?: string;
364
+ }) => Promise<{
365
+ success: boolean;
366
+ entitlement?: MarketplaceEntitlement | null;
367
+ transaction?: unknown;
368
+ error?: string;
369
+ }>;
370
+ rent: (params: {
371
+ listingId: string;
372
+ period?: string;
373
+ }) => Promise<{
374
+ success: boolean;
375
+ entitlement?: MarketplaceEntitlement | null;
376
+ transaction?: unknown;
377
+ error?: string;
378
+ }>;
379
+ install: (params: {
380
+ listingId: string;
381
+ kind: string;
382
+ nativeAppId?: string | null;
383
+ versionId?: string;
384
+ }) => Promise<{
385
+ success: boolean;
386
+ error?: string;
387
+ notAvailableYet?: boolean;
388
+ }>;
389
+ launch: (params: {
390
+ nativeAppId: string;
391
+ }) => Promise<{
392
+ success: boolean;
393
+ error?: string;
394
+ }>;
395
+ nativeStatus: (params: {
396
+ nativeAppId: string;
397
+ }) => Promise<{
398
+ success: boolean;
399
+ status: 'not_installed' | 'installed' | 'running' | 'update_available';
400
+ installPath: string | null;
401
+ installedVersion: string | null;
402
+ error?: string;
403
+ }>;
404
+ invoke: (params: {
405
+ listingId: string;
406
+ input?: unknown;
407
+ }) => Promise<{
408
+ success: boolean;
409
+ output?: unknown;
410
+ usage?: unknown;
411
+ creditsCharged?: number | null;
412
+ error?: string;
413
+ }>;
414
+ openExternal: (url: string) => Promise<{
415
+ success: boolean;
416
+ error?: string;
417
+ }>;
418
+ onInstallProgress: (callback: (data: {
419
+ listingId: string | null;
420
+ appId: string;
421
+ kind: string;
422
+ phase: 'downloading' | 'installing' | 'complete' | 'error';
423
+ percent: number;
424
+ bytesDownloaded: number;
425
+ totalBytes: number;
426
+ error?: string;
427
+ }) => void) => void;
428
+ offInstallProgress: () => void;
429
+ };
430
+ pixelBridge: {
431
+ status: () => Promise<{
432
+ success: boolean;
433
+ status: {
434
+ running: boolean;
435
+ processDetected: boolean;
436
+ bridgeReady: boolean;
437
+ stale: boolean;
438
+ activeProjectPath: string | null;
439
+ activeProjectName: string | null;
440
+ activeDocumentId: string | null;
441
+ activeDocumentName: string | null;
442
+ hasOpenDocument: boolean;
443
+ updatedAt: number | null;
444
+ };
445
+ error?: string;
446
+ }>;
447
+ sendImage: (params: {
448
+ dataUrl: string;
449
+ sourceName?: string;
450
+ layerName?: string;
451
+ workspaceId?: string;
452
+ teamId?: string;
453
+ agentId?: string;
454
+ caller?: {
455
+ userId?: string;
456
+ workspaceId?: string;
457
+ teamId?: string;
458
+ agentId?: string;
459
+ allowedDirectories?: string[];
460
+ };
461
+ }) => Promise<{
462
+ success: boolean;
463
+ commandId?: string;
464
+ error?: string;
465
+ policyDecision?: {
466
+ allowed: boolean;
467
+ reason: string;
468
+ };
469
+ status?: {
470
+ running: boolean;
471
+ bridgeReady: boolean;
472
+ hasOpenDocument: boolean;
473
+ activeProjectName: string | null;
474
+ activeDocumentName: string | null;
475
+ };
476
+ }>;
477
+ };
478
+ motionBridge: {
479
+ status: () => Promise<{
480
+ success: boolean;
481
+ status: {
482
+ running: boolean;
483
+ processDetected: boolean;
484
+ bridgeReady: boolean;
485
+ stale: boolean;
486
+ activeProjectPath: string | null;
487
+ activeProjectName: string | null;
488
+ activeSequenceId: string | null;
489
+ activeSequenceName: string | null;
490
+ currentFrame: number | null;
491
+ hasOpenProject: boolean;
492
+ updatedAt: number | null;
493
+ };
494
+ error?: string;
495
+ }>;
496
+ sendImage: (params: {
497
+ dataUrl: string;
498
+ sourceName?: string;
499
+ mediaName?: string;
500
+ durationFrames?: number;
501
+ placeOnTimeline?: boolean;
502
+ workspaceId?: string;
503
+ teamId?: string;
504
+ agentId?: string;
505
+ caller?: {
506
+ userId?: string;
507
+ workspaceId?: string;
508
+ teamId?: string;
509
+ agentId?: string;
510
+ allowedDirectories?: string[];
511
+ };
512
+ }) => Promise<{
513
+ success: boolean;
514
+ commandId?: string;
515
+ error?: string;
516
+ policyDecision?: {
517
+ allowed: boolean;
518
+ reason: string;
519
+ };
520
+ status?: {
521
+ running: boolean;
522
+ bridgeReady: boolean;
523
+ hasOpenProject: boolean;
524
+ activeProjectName: string | null;
525
+ activeSequenceName: string | null;
526
+ };
527
+ }>;
528
+ };
529
+ credits: {
530
+ balance: () => Promise<{
531
+ balance: number;
532
+ currency: string;
533
+ lastUpdated: string;
534
+ }>;
535
+ transactions: (limit?: number) => Promise<Array<{
536
+ id: string;
537
+ operation: string;
538
+ credits: number;
539
+ timestamp: string;
540
+ description: string;
541
+ }>>;
542
+ refresh: () => Promise<{
543
+ success: boolean;
544
+ }>;
545
+ purchase: (amount: number) => Promise<{
546
+ success: boolean;
547
+ creditsAdded?: number;
548
+ newBalance?: number;
549
+ error?: string;
550
+ }>;
551
+ getPaymentMethod: () => Promise<{
552
+ hasMethod: boolean;
553
+ card?: {
554
+ brand: string;
555
+ last4: string;
556
+ expMonth: number;
557
+ expYear: number;
558
+ name: string;
559
+ };
560
+ }>;
561
+ savePaymentMethod: (data: Record<string, string>) => Promise<{
562
+ success: boolean;
563
+ card?: {
564
+ brand: string;
565
+ last4: string;
566
+ expMonth: number;
567
+ expYear: number;
568
+ name: string;
569
+ };
570
+ error?: string;
571
+ }>;
572
+ };
573
+ settings: {
574
+ get: () => Promise<{
575
+ theme: 'dark' | 'light' | 'system';
576
+ startOnBoot: boolean;
577
+ minimizeToTray: boolean;
578
+ checkUpdatesAutomatically: boolean;
579
+ showNotifications: boolean;
580
+ defaultApp: string | null;
581
+ language: string;
582
+ analytics: boolean;
583
+ }>;
584
+ getValue: (key: string) => Promise<unknown>;
585
+ set: (updates: Record<string, unknown>) => Promise<Record<string, unknown>>;
586
+ reset: () => Promise<Record<string, unknown>>;
587
+ };
588
+ bgRemoval: {
589
+ checkAvailable: () => Promise<{
590
+ available: boolean;
591
+ error: string | null;
592
+ }>;
593
+ checkModel: () => Promise<{
594
+ exists: boolean;
595
+ path: string | null;
596
+ error: string | null;
597
+ }>;
598
+ initModel: (useGpu?: boolean) => Promise<{
599
+ loaded: boolean;
600
+ modelPath: string | null;
601
+ usingGpu: boolean;
602
+ error: string | null;
603
+ }>;
604
+ getStatus: () => Promise<{
605
+ loaded: boolean;
606
+ modelPath: string | null;
607
+ usingGpu: boolean;
608
+ error: string | null;
609
+ }>;
610
+ processFile: (inputPath: string, outputPath?: string) => Promise<{
611
+ success: boolean;
612
+ outputPath: string | null;
613
+ error: string | null;
614
+ processingTimeMs: number | null;
615
+ }>;
616
+ processBuffer: (base64Data: string) => Promise<{
617
+ success: boolean;
618
+ data: string | null;
619
+ error: string | null;
620
+ }>;
621
+ downloadModel: () => Promise<{
622
+ success: boolean;
623
+ error?: string;
624
+ }>;
625
+ onDownloadProgress: (callback: (progress: {
626
+ downloaded: number;
627
+ total: number;
628
+ progress: number;
629
+ }) => void) => void;
630
+ offDownloadProgress: () => void;
631
+ };
632
+ llm: {
633
+ chat: (params: {
634
+ requestId: string;
635
+ model: string;
636
+ messages: Array<{
637
+ role: string;
638
+ content: string;
639
+ }>;
640
+ temperature?: number;
641
+ max_tokens?: number;
642
+ system?: string;
643
+ think?: boolean;
644
+ enableTools?: boolean;
645
+ }) => Promise<{
646
+ success: boolean;
647
+ requestId: string;
648
+ }>;
649
+ chatOnce: (params: {
650
+ model: string;
651
+ messages: Array<{
652
+ role: string;
653
+ content: string;
654
+ }>;
655
+ temperature?: number;
656
+ max_tokens?: number;
657
+ system?: string;
658
+ think?: boolean;
659
+ }) => Promise<{
660
+ success: boolean;
661
+ content: string;
662
+ thinking: string;
663
+ error: string | null;
664
+ }>;
665
+ localWarmup: (params: {
666
+ model: string;
667
+ timeoutMs?: number;
668
+ }) => Promise<{
669
+ success: boolean;
670
+ loadedModel: string | null;
671
+ error: string | null;
672
+ }>;
673
+ localRuntimeStart: () => Promise<{
674
+ success: boolean;
675
+ runtime: {
676
+ available: boolean;
677
+ managed: boolean;
678
+ loadedModelId: string | null;
679
+ loadedModelName: string | null;
680
+ error: string | null;
681
+ };
682
+ error: string | null;
683
+ }>;
684
+ localRuntimeStop: () => Promise<{
685
+ success: boolean;
686
+ runtime: {
687
+ available: boolean;
688
+ managed: boolean;
689
+ loadedModelId: string | null;
690
+ loadedModelName: string | null;
691
+ error: string | null;
692
+ };
693
+ error: string | null;
694
+ }>;
695
+ localModelInstall: (params: {
696
+ modelId: string;
697
+ repo?: string;
698
+ file?: string;
699
+ quantization?: string;
700
+ source?: 'r2' | 'huggingface';
701
+ downloadUrl?: string;
702
+ artifactKey?: string;
703
+ filename?: string;
704
+ sizeBytes?: number;
705
+ sha256?: string;
706
+ }) => Promise<{
707
+ success: boolean;
708
+ installedPath?: string;
709
+ error?: string;
710
+ }>;
711
+ localModelRemove: (params: {
712
+ modelId: string;
713
+ path: string;
714
+ }) => Promise<{
715
+ success: boolean;
716
+ error?: string;
717
+ }>;
718
+ abort: (requestId: string) => Promise<{
719
+ success: boolean;
720
+ error?: string;
721
+ }>;
722
+ models: () => Promise<{
723
+ success: boolean;
724
+ models: Array<{
725
+ id: string;
726
+ object: string;
727
+ availability?: 'available' | 'degraded' | 'unavailable';
728
+ availabilityReason?: string | null;
729
+ source?: 'api' | 'platform-auth' | 'public-fallback' | 'static-fallback';
730
+ }>;
731
+ error: string | null;
732
+ }>;
733
+ localModelCatalog: () => Promise<{
734
+ success: boolean;
735
+ source: 'platform' | 'fallback';
736
+ catalogVersion: string | null;
737
+ updatedAt: string | null;
738
+ models: Array<{
739
+ id: string;
740
+ name: string;
741
+ provider: string;
742
+ category: 'all' | 'llm' | 'image' | 'video' | 'audio' | 'upscale' | 'embedding';
743
+ description: string;
744
+ size: string;
745
+ sizeBytes?: number | null;
746
+ parameters?: string | null;
747
+ tags: string[];
748
+ license?: string | null;
749
+ runtime?: string | null;
750
+ installable: boolean;
751
+ installSpec?: {
752
+ source?: 'r2' | 'huggingface';
753
+ repo?: string;
754
+ file?: string;
755
+ quantization?: string;
756
+ downloadUrl?: string | null;
757
+ artifactKey?: string | null;
758
+ filename?: string | null;
759
+ sizeBytes?: number | null;
760
+ sha256?: string | null;
761
+ expectedLocalIds: string[];
762
+ } | null;
763
+ unavailableReason?: string | null;
764
+ }>;
765
+ error: string | null;
766
+ }>;
767
+ localModels: () => Promise<{
768
+ success: boolean;
769
+ models: Array<{
770
+ id: string;
771
+ name: string;
772
+ tag: string;
773
+ size: number;
774
+ parameterSize: string | null;
775
+ family: string | null;
776
+ path: string;
777
+ loaded: boolean;
778
+ }>;
779
+ runtime: {
780
+ available: boolean;
781
+ managed: boolean;
782
+ loadedModelId: string | null;
783
+ loadedModelName: string | null;
784
+ error: string | null;
785
+ };
786
+ error: string | null;
787
+ }>;
788
+ onLocalModelInstallProgress: (callback: (data: {
789
+ modelId: string;
790
+ phase: 'starting' | 'downloading' | 'complete' | 'error';
791
+ progress: number;
792
+ message: string;
793
+ installedPath?: string;
794
+ }) => void) => void;
795
+ offLocalModelInstallProgress: () => void;
796
+ onChatChunk: (callback: (data: {
797
+ requestId: string;
798
+ content: string;
799
+ thinking: string;
800
+ done: boolean;
801
+ }) => void) => void;
802
+ offChatChunk: () => void;
803
+ onChatError: (callback: (data: {
804
+ requestId: string;
805
+ error: string;
806
+ }) => void) => void;
807
+ offChatError: () => void;
808
+ onToolCall: (callback: (data: {
809
+ requestId: string;
810
+ status: 'start' | 'end';
811
+ toolName: string;
812
+ toolParams?: Record<string, unknown>;
813
+ result?: string;
814
+ success?: boolean;
815
+ }) => void) => void;
816
+ offToolCall: () => void;
817
+ };
818
+ agent: {
819
+ run: (params: {
820
+ requestId: string;
821
+ conversationId?: string;
822
+ sdkSessionId?: string;
823
+ previousRunId?: string;
824
+ subagentRunId?: string;
825
+ workspaceId?: string;
826
+ teamId?: string;
827
+ agentId?: string;
828
+ providerId?: string;
829
+ providerKind?: 'sdk-native' | 'xeno-cloud';
830
+ mode?: 'chat' | 'development';
831
+ model: string;
832
+ messages: Array<{
833
+ role: string;
834
+ content: string;
835
+ }>;
836
+ systemPrompt?: string;
837
+ maxIterations?: number;
838
+ enableThinking?: boolean;
839
+ capabilities?: {
840
+ terminal?: boolean;
841
+ browser?: boolean;
842
+ fileRead?: boolean;
843
+ fileWrite?: boolean;
844
+ appLaunch?: boolean;
845
+ webSearch?: boolean;
846
+ };
847
+ permissionProfile?: 'standard' | 'read-only' | 'edit-with-approval' | 'trusted-workspace' | 'plan';
848
+ allowedDirectories?: string[];
849
+ approvalRules?: Array<Record<string, unknown>>;
850
+ contextCompaction?: AgentContextCompactionMetrics;
851
+ }) => Promise<{
852
+ success: boolean;
853
+ requestId?: string;
854
+ error?: string;
855
+ }>;
856
+ cancel: (requestId: string) => Promise<{
857
+ success: boolean;
858
+ error?: string;
859
+ }>;
860
+ onTextChunk: (callback: (data: {
861
+ requestId: string;
862
+ text: string;
863
+ }) => void) => void;
864
+ offTextChunk: () => void;
865
+ onToolStart: (callback: (data: {
866
+ requestId: string;
867
+ toolCallId?: string;
868
+ name: string;
869
+ input: unknown;
870
+ startedAt?: number;
871
+ }) => void) => void;
872
+ offToolStart: () => void;
873
+ onToolEnd: (callback: (data: {
874
+ requestId: string;
875
+ toolCallId?: string;
876
+ name: string;
877
+ result: string;
878
+ success: boolean;
879
+ startedAt?: number;
880
+ endedAt?: number;
881
+ durationMs?: number;
882
+ diff?: ConversationEditorDiff;
883
+ }) => void) => void;
884
+ offToolEnd: () => void;
885
+ onRuntimeEvent: (callback: (data: {
886
+ requestId: string;
887
+ event: Record<string, unknown>;
888
+ }) => void) => void;
889
+ offRuntimeEvent: () => void;
890
+ onTaskEvent: (callback: (data: {
891
+ requestId: string;
892
+ action: 'create' | 'update' | 'clear';
893
+ task?: {
894
+ id: string;
895
+ text: string;
896
+ detail?: string;
897
+ status?: 'pending' | 'in_progress' | 'done' | 'blocked';
898
+ order?: number;
899
+ };
900
+ taskId?: string;
901
+ patch?: {
902
+ text?: string;
903
+ detail?: string;
904
+ status?: 'pending' | 'in_progress' | 'done' | 'blocked';
905
+ order?: number;
906
+ };
907
+ }) => void) => void;
908
+ offTaskEvent: () => void;
909
+ onDone: (callback: (data: {
910
+ requestId: string;
911
+ }) => void) => void;
912
+ offDone: () => void;
913
+ onError: (callback: (data: {
914
+ requestId: string;
915
+ error: string;
916
+ context?: string;
917
+ }) => void) => void;
918
+ offError: () => void;
919
+ onPermissionRequest: (callback: (data: {
920
+ requestId: string;
921
+ permissionId: string;
922
+ toolName: string;
923
+ path: string;
924
+ directory: string;
925
+ browserOrigin?: string;
926
+ allowAlwaysOptionId?: string;
927
+ rejectAlwaysOptionId?: string;
928
+ }) => void) => void;
929
+ offPermissionRequest: () => void;
930
+ onAskUserRequest: (callback: (data: {
931
+ requestId: string;
932
+ askUserId: string;
933
+ question: string;
934
+ options?: string[];
935
+ context?: string;
936
+ }) => void) => void;
937
+ offAskUserRequest: () => void;
938
+ onChooseDirectoryRequest: (callback: (data: {
939
+ requestId: string;
940
+ chooseDirectoryId: string;
941
+ title?: string;
942
+ }) => void) => void;
943
+ offChooseDirectoryRequest: () => void;
944
+ subscribeChooseDirectoryRequested: (callback: (data: unknown) => void) => string;
945
+ unsubscribeChooseDirectoryRequested: (subscriptionId: string) => boolean;
946
+ onWorkspacePlacementRequest: (callback: (data: {
947
+ requestId: string;
948
+ workspacePlacementId: string;
949
+ directory: string;
950
+ title?: string;
951
+ }) => void) => void;
952
+ offWorkspacePlacementRequest: () => void;
953
+ subscribeWorkspacePlacementRequested: (callback: (data: unknown) => void) => string;
954
+ unsubscribeWorkspacePlacementRequested: (subscriptionId: string) => boolean;
955
+ grantAccess: (params: {
956
+ permissionId: string;
957
+ directory: string;
958
+ selectedOptionId?: string;
959
+ }) => Promise<{
960
+ success: boolean;
961
+ error?: string;
962
+ }>;
963
+ denyAccess: (params: {
964
+ permissionId: string;
965
+ selectedOptionId?: string;
966
+ }) => Promise<{
967
+ success: boolean;
968
+ error?: string;
969
+ }>;
970
+ steerTurn: (params: {
971
+ conversationId: string;
972
+ requestId: string;
973
+ instruction: string;
974
+ }) => Promise<{
975
+ success: boolean;
976
+ error?: string;
977
+ }>;
978
+ resumeTurn: (params: {
979
+ conversationId: string;
980
+ requestId: string;
981
+ }) => Promise<{
982
+ success: boolean;
983
+ error?: string;
984
+ }>;
985
+ /**
986
+ * What is waiting to run for this conversation, and how to take it
987
+ * back out.
988
+ *
989
+ * 🔴 These exist because the host's queue had no surface at all.
990
+ * Typing during a turn the agent cannot take mid-flight becomes a
991
+ * queued instruction, and until now a person was told that had
992
+ * happened with no way to see it or undo it.
993
+ */
994
+ /**
995
+ * Messages withheld from a run pending a human (coordination §6).
996
+ *
997
+ * 🔴 `available: false` means this host does not coordinate at all,
998
+ * which is a different fact from a run with nothing held. A surface
999
+ * that showed an empty list for both would wait for approvals that
1000
+ * can never arrive.
1001
+ */
1002
+ listHeldMessages: (params: {
1003
+ runId: string;
1004
+ }) => Promise<{
1005
+ available: boolean;
1006
+ runId: string;
1007
+ held: Array<{
1008
+ id: string;
1009
+ fromRunId: string;
1010
+ text: string;
1011
+ sentAt: number;
1012
+ }>;
1013
+ reason?: string;
1014
+ }>;
1015
+ releaseHeldMessage: (params: {
1016
+ runId: string;
1017
+ messageId: string;
1018
+ }) => Promise<{
1019
+ status: 'delivered' | 'expired' | 'refused' | 'held';
1020
+ messageId: string;
1021
+ reason?: string;
1022
+ }>;
1023
+ /**
1024
+ * Pins or clears a run's inbound-message policy (§6).
1025
+ *
1026
+ * `policy: null` returns the run to the derived default and is NOT the
1027
+ * same as 'accept', which pins the permissive answer.
1028
+ */
1029
+ setInboundPolicy: (params: {
1030
+ runId: string;
1031
+ policy: 'accept' | 'hold' | 'refuse' | null;
1032
+ }) => Promise<{
1033
+ ok: boolean;
1034
+ explicit?: 'accept' | 'hold' | 'refuse';
1035
+ reason?: string;
1036
+ }>;
1037
+ listQueuedInstructions: (params: {
1038
+ conversationId: string;
1039
+ }) => Promise<{
1040
+ conversationId: string;
1041
+ queue: Array<{
1042
+ id: string;
1043
+ instruction: string;
1044
+ queuedAt: string;
1045
+ }>;
1046
+ turnActive: boolean;
1047
+ }>;
1048
+ dropQueuedInstruction: (params: {
1049
+ conversationId: string;
1050
+ instructionId?: string;
1051
+ }) => Promise<{
1052
+ success: boolean;
1053
+ safeError?: string;
1054
+ }>;
1055
+ listPermissionRules: () => Promise<{
1056
+ success: boolean;
1057
+ rules: Array<{
1058
+ id: string;
1059
+ decision: 'allow' | 'deny';
1060
+ toolKind?: string;
1061
+ pathPrefix?: string;
1062
+ createdAt?: number;
1063
+ }>;
1064
+ error?: string;
1065
+ }>;
1066
+ revokePermissionRule: (params: {
1067
+ ruleId: string;
1068
+ }) => Promise<{
1069
+ success: boolean;
1070
+ revoked: boolean;
1071
+ error?: string;
1072
+ }>;
1073
+ answerAskUser: (params: {
1074
+ askUserId: string;
1075
+ answer: string;
1076
+ selectedOption?: string;
1077
+ cancelled?: boolean;
1078
+ }) => Promise<{
1079
+ success: boolean;
1080
+ error?: string;
1081
+ }>;
1082
+ answerChooseDirectory: (params: {
1083
+ requestId?: string;
1084
+ chooseDirectoryId: string;
1085
+ path?: string;
1086
+ cancelled?: boolean;
1087
+ error?: string;
1088
+ }) => Promise<{
1089
+ success: boolean;
1090
+ error?: string;
1091
+ }>;
1092
+ answerWorkspacePlacement: (params: {
1093
+ requestId?: string;
1094
+ workspacePlacementId: string;
1095
+ directory?: string;
1096
+ choice?: 'inbox' | 'reuse' | 'create';
1097
+ workspaceName?: string;
1098
+ result?: string;
1099
+ cancelled?: boolean;
1100
+ error?: string;
1101
+ }) => Promise<{
1102
+ success: boolean;
1103
+ error?: string;
1104
+ }>;
1105
+ listSdkSessions: (params?: {
1106
+ role?: string;
1107
+ workingDirectory?: string;
1108
+ limit?: number;
1109
+ }) => Promise<{
1110
+ success: boolean;
1111
+ sessions?: unknown[];
1112
+ error?: string;
1113
+ }>;
1114
+ showSdkSession: (params: {
1115
+ sessionId: string;
1116
+ }) => Promise<{
1117
+ success: boolean;
1118
+ session?: unknown;
1119
+ sessionDir?: string;
1120
+ checkpoints?: unknown[];
1121
+ error?: string;
1122
+ }>;
1123
+ attachSdkSession: (params: {
1124
+ conversationId: string;
1125
+ sessionId: string;
1126
+ }) => Promise<{
1127
+ success: boolean;
1128
+ session?: unknown;
1129
+ sessionDir?: string;
1130
+ sessionHistoryPath?: string;
1131
+ checkpoints?: unknown[];
1132
+ error?: string;
1133
+ }>;
1134
+ detachSdkSession: (params: {
1135
+ conversationId: string;
1136
+ }) => Promise<{
1137
+ success: boolean;
1138
+ error?: string;
1139
+ }>;
1140
+ deleteSdkSession: (params: {
1141
+ sessionId: string;
1142
+ }) => Promise<{
1143
+ success: boolean;
1144
+ error?: string;
1145
+ }>;
1146
+ cleanSdkSessions: (params: {
1147
+ workingDirectory: string;
1148
+ excludeSessionIds?: string[];
1149
+ }) => Promise<{
1150
+ success: boolean;
1151
+ result?: unknown;
1152
+ error?: string;
1153
+ }>;
1154
+ listSdkCheckpoints: (params: {
1155
+ sessionId: string;
1156
+ }) => Promise<{
1157
+ success: boolean;
1158
+ checkpoints?: unknown[];
1159
+ error?: string;
1160
+ }>;
1161
+ restoreSdkCheckpoint: (params: {
1162
+ sessionId: string;
1163
+ checkpointId: string;
1164
+ conversationId?: string;
1165
+ }) => Promise<{
1166
+ success: boolean;
1167
+ restored?: unknown;
1168
+ pendingRuntimeRestore?: boolean;
1169
+ error?: string;
1170
+ }>;
1171
+ deleteSdkCheckpoint: (params: {
1172
+ sessionId: string;
1173
+ checkpointId: string;
1174
+ }) => Promise<{
1175
+ success: boolean;
1176
+ error?: string;
1177
+ }>;
1178
+ readSdkTaskOutput: (params: {
1179
+ taskId: string;
1180
+ offset?: number;
1181
+ }) => Promise<{
1182
+ success: boolean;
1183
+ output?: string;
1184
+ error?: string;
1185
+ command?: string;
1186
+ status?: 'running' | 'completed' | 'failed' | 'stopped' | 'unknown';
1187
+ exitCode?: number | null;
1188
+ totalSize?: number;
1189
+ }>;
1190
+ stopSdkTask: (params: {
1191
+ taskId: string;
1192
+ }) => Promise<{
1193
+ success: boolean;
1194
+ output?: string;
1195
+ error?: string;
1196
+ command?: string;
1197
+ status?: 'running' | 'completed' | 'failed' | 'stopped' | 'unknown';
1198
+ exitCode?: number | null;
1199
+ totalSize?: number;
1200
+ }>;
1201
+ };
1202
+ agentsCloud: {
1203
+ status: () => Promise<{
1204
+ success: boolean;
1205
+ authenticated: boolean;
1206
+ ok?: boolean;
1207
+ capabilities?: string[];
1208
+ version?: string;
1209
+ error?: string;
1210
+ code?: string;
1211
+ }>;
1212
+ createRun: (params: {
1213
+ prompt: string;
1214
+ model?: string;
1215
+ title?: string;
1216
+ previousRunId?: string;
1217
+ workspace?: string;
1218
+ budget?: {
1219
+ maxCredits?: number;
1220
+ };
1221
+ }) => Promise<{
1222
+ success: boolean;
1223
+ run?: import('@xenosystem/agent-interface-contract').AgentRunRecord;
1224
+ error?: string;
1225
+ code?: string;
1226
+ status?: number;
1227
+ }>;
1228
+ listRuns: (params?: {
1229
+ limit?: number;
1230
+ }) => Promise<{
1231
+ success: boolean;
1232
+ runs?: import('@xenosystem/agent-interface-contract').RunListItem[];
1233
+ error?: string;
1234
+ code?: string;
1235
+ }>;
1236
+ getRun: (params: {
1237
+ runId: string;
1238
+ }) => Promise<{
1239
+ success: boolean;
1240
+ run?: import('@xenosystem/agent-interface-contract').AgentRunRecord;
1241
+ error?: string;
1242
+ code?: string;
1243
+ }>;
1244
+ attach: (params: {
1245
+ requestId: string;
1246
+ runId: string;
1247
+ }) => Promise<{
1248
+ success: boolean;
1249
+ requestId?: string;
1250
+ runId?: string;
1251
+ error?: string;
1252
+ code?: string;
1253
+ }>;
1254
+ stop: (params: {
1255
+ requestId?: string;
1256
+ runId?: string;
1257
+ }) => Promise<{
1258
+ success: boolean;
1259
+ run?: import('@xenosystem/agent-interface-contract').AgentRunRecord;
1260
+ error?: string;
1261
+ code?: string;
1262
+ }>;
1263
+ onRunStatus: (callback: (data: {
1264
+ requestId: string;
1265
+ runId: string;
1266
+ status?: string;
1267
+ statusReason?: string | null;
1268
+ creditsHeld?: number | null;
1269
+ creditsSettled?: number | null;
1270
+ url?: string;
1271
+ }) => void) => void;
1272
+ offRunStatus: () => void;
1273
+ };
1274
+ workspace: {
1275
+ pickDirectory: () => Promise<{
1276
+ success: boolean;
1277
+ path: string | null;
1278
+ error: string | null;
1279
+ }>;
1280
+ pickExecutable: () => Promise<{
1281
+ success: boolean;
1282
+ path: string | null;
1283
+ error: string | null;
1284
+ }>;
1285
+ listDirectory: (params: {
1286
+ dirPath: string;
1287
+ allowedDirs: string[];
1288
+ }) => Promise<{
1289
+ success: boolean;
1290
+ entries: Array<{
1291
+ name: string;
1292
+ path: string;
1293
+ size: number;
1294
+ modified: string;
1295
+ type: 'file' | 'directory';
1296
+ extension: string;
1297
+ }>;
1298
+ error: string | null;
1299
+ }>;
1300
+ readFile: (params: {
1301
+ path: string;
1302
+ allowedDirs: string[];
1303
+ conversationId?: string;
1304
+ }) => Promise<{
1305
+ success: boolean;
1306
+ path: string | null;
1307
+ content: string;
1308
+ bytes: number;
1309
+ error: string | null;
1310
+ }>;
1311
+ getFileOpenOptions: (params: {
1312
+ path: string;
1313
+ allowedDirs: string[];
1314
+ conversationId?: string;
1315
+ }) => Promise<{
1316
+ success: boolean;
1317
+ path: string | null;
1318
+ defaultApp: {
1319
+ name: string;
1320
+ } | null;
1321
+ options: Array<{
1322
+ target: 'cursor' | 'antigravity' | 'default' | 'explorer' | 'terminal' | 'git-bash' | 'wsl';
1323
+ label: string;
1324
+ }>;
1325
+ revealLabel: string;
1326
+ error: string | null;
1327
+ }>;
1328
+ openFileWith: (params: {
1329
+ path: string;
1330
+ target: 'cursor' | 'antigravity' | 'default' | 'explorer' | 'terminal' | 'git-bash' | 'wsl';
1331
+ allowedDirs: string[];
1332
+ conversationId?: string;
1333
+ }) => Promise<{
1334
+ success: boolean;
1335
+ path: string | null;
1336
+ target: 'cursor' | 'antigravity' | 'default' | 'explorer' | 'terminal' | 'git-bash' | 'wsl' | null;
1337
+ error: string | null;
1338
+ }>;
1339
+ runCommand: (params: {
1340
+ command: string;
1341
+ cwd?: string;
1342
+ allowedDirs: string[];
1343
+ timeoutMs?: number;
1344
+ }) => Promise<{
1345
+ success: boolean;
1346
+ stdout: string;
1347
+ stderr: string;
1348
+ exitCode: number | null;
1349
+ cwd: string | null;
1350
+ error: string | null;
1351
+ /**
1352
+ * Output hit the ceiling and was trimmed.
1353
+ *
1354
+ * OPTIONAL here while REQUIRED on the contract, and the asymmetry is
1355
+ * deliberate: the contract describes what THIS host produces, and it
1356
+ * always knows. This describes what a preload happens to deliver,
1357
+ * which may be an older host that predates the field. Absent
1358
+ * therefore means "this host cannot say" — which is exactly why it
1359
+ * must not be defaulted to `false` on the way through, since that
1360
+ * would assert output was complete on no evidence.
1361
+ */
1362
+ truncated?: boolean;
1363
+ }>;
1364
+ terminalStart: (params: {
1365
+ command: string;
1366
+ cwd?: string;
1367
+ allowedDirs: string[];
1368
+ timeoutMs?: number;
1369
+ }) => Promise<{
1370
+ success: boolean;
1371
+ terminalId: string | null;
1372
+ cwd: string | null;
1373
+ error: string | null;
1374
+ }>;
1375
+ terminalStop: (params: {
1376
+ terminalId: string;
1377
+ }) => Promise<{
1378
+ success: boolean;
1379
+ error: string | null;
1380
+ }>;
1381
+ ptyStart: (params: {
1382
+ cwd?: string;
1383
+ allowedDirs: string[];
1384
+ cols?: number;
1385
+ rows?: number;
1386
+ }) => Promise<{
1387
+ success: boolean;
1388
+ terminalId: string | null;
1389
+ cwd: string | null;
1390
+ error: string | null;
1391
+ }>;
1392
+ ptySnapshot: (params: {
1393
+ terminalId: string;
1394
+ }) => Promise<{
1395
+ success: boolean;
1396
+ exists: boolean;
1397
+ terminalId: string;
1398
+ cwd: string | null;
1399
+ output: string;
1400
+ error: string | null;
1401
+ }>;
1402
+ ptyInput: (params: {
1403
+ terminalId: string;
1404
+ data: string;
1405
+ }) => Promise<{
1406
+ success: boolean;
1407
+ error: string | null;
1408
+ }>;
1409
+ ptyResize: (params: {
1410
+ terminalId: string;
1411
+ cols: number;
1412
+ rows: number;
1413
+ }) => Promise<{
1414
+ success: boolean;
1415
+ error: string | null;
1416
+ }>;
1417
+ ptyClear: (params: {
1418
+ terminalId: string;
1419
+ }) => Promise<{
1420
+ success: boolean;
1421
+ error: string | null;
1422
+ }>;
1423
+ ptyStop: (params: {
1424
+ terminalId: string;
1425
+ }) => Promise<{
1426
+ success: boolean;
1427
+ error: string | null;
1428
+ }>;
1429
+ browserRegister: (params: {
1430
+ browserTabId: string;
1431
+ label?: string;
1432
+ webContentsId: number;
1433
+ }) => Promise<{
1434
+ success: boolean;
1435
+ error: string | null;
1436
+ }>;
1437
+ browserUnregister: (params: {
1438
+ browserTabId: string;
1439
+ }) => Promise<{
1440
+ success: boolean;
1441
+ error: string | null;
1442
+ }>;
1443
+ browserList: () => Promise<{
1444
+ success: boolean;
1445
+ tabs: Array<{
1446
+ browserTabId: string;
1447
+ label: string;
1448
+ webContentsId: number;
1449
+ url: string;
1450
+ title: string;
1451
+ isLoading: boolean;
1452
+ canGoBack: boolean;
1453
+ canGoForward: boolean;
1454
+ }>;
1455
+ error: string | null;
1456
+ }>;
1457
+ browserSnapshot: (params: {
1458
+ browserTabId: string;
1459
+ maxTextChars?: number;
1460
+ maxElements?: number;
1461
+ }) => Promise<{
1462
+ success: boolean;
1463
+ snapshot: unknown | null;
1464
+ error: string | null;
1465
+ }>;
1466
+ browserGoto: (params: {
1467
+ browserTabId: string;
1468
+ url: string;
1469
+ }) => Promise<{
1470
+ success: boolean;
1471
+ error: string | null;
1472
+ }>;
1473
+ browserClick: (params: {
1474
+ browserTabId: string;
1475
+ selector: string;
1476
+ }) => Promise<{
1477
+ success: boolean;
1478
+ error: string | null;
1479
+ }>;
1480
+ browserType: (params: {
1481
+ browserTabId: string;
1482
+ selector: string;
1483
+ text: string;
1484
+ clear?: boolean;
1485
+ }) => Promise<{
1486
+ success: boolean;
1487
+ error: string | null;
1488
+ }>;
1489
+ browserKey: (params: {
1490
+ browserTabId: string;
1491
+ key: string;
1492
+ }) => Promise<{
1493
+ success: boolean;
1494
+ error: string | null;
1495
+ }>;
1496
+ onPtyData: (callback: (data: {
1497
+ terminalId: string;
1498
+ data: string;
1499
+ }) => void) => void;
1500
+ offPtyData: () => void;
1501
+ onPtyExit: (callback: (data: {
1502
+ terminalId: string;
1503
+ exitCode: number;
1504
+ signal?: number;
1505
+ }) => void) => void;
1506
+ offPtyExit: () => void;
1507
+ onTerminalData: (callback: (data: {
1508
+ terminalId: string;
1509
+ stream: 'stdout' | 'stderr';
1510
+ chunk: string;
1511
+ }) => void) => void;
1512
+ offTerminalData: () => void;
1513
+ onTerminalExit: (callback: (data: {
1514
+ terminalId: string;
1515
+ command: string;
1516
+ cwd: string;
1517
+ success: boolean;
1518
+ exitCode: number | null;
1519
+ error: string | null;
1520
+ }) => void) => void;
1521
+ offTerminalExit: () => void;
1522
+ writeFile: (params: {
1523
+ path: string;
1524
+ content: string;
1525
+ allowedDirs: string[];
1526
+ }) => Promise<{
1527
+ success: boolean;
1528
+ path: string | null;
1529
+ bytes: number;
1530
+ error: string | null;
1531
+ }>;
1532
+ openApp: (params: {
1533
+ appPath: string;
1534
+ args?: string[];
1535
+ allowedApps: string[];
1536
+ }) => Promise<{
1537
+ success: boolean;
1538
+ appPath: string | null;
1539
+ error: string | null;
1540
+ }>;
1541
+ };
1542
+ sandbox: {
1543
+ execute: (params: {
1544
+ conversationId: string;
1545
+ language: 'python' | 'javascript';
1546
+ code: string;
1547
+ timeoutMs?: number;
1548
+ }) => Promise<{
1549
+ success: boolean;
1550
+ stdout: string;
1551
+ stderr: string;
1552
+ exitCode: number | null;
1553
+ durationMs: number;
1554
+ files: string[];
1555
+ error: string | null;
1556
+ }>;
1557
+ abort: (params: {
1558
+ conversationId: string;
1559
+ }) => Promise<{
1560
+ success: boolean;
1561
+ }>;
1562
+ cleanup: (params: {
1563
+ conversationId: string;
1564
+ }) => Promise<{
1565
+ success: boolean;
1566
+ error: string | null;
1567
+ }>;
1568
+ detectRuntimes: () => Promise<{
1569
+ python: {
1570
+ available: boolean;
1571
+ version: string | null;
1572
+ command: string | null;
1573
+ };
1574
+ node: {
1575
+ available: boolean;
1576
+ version: string | null;
1577
+ };
1578
+ }>;
1579
+ };
1580
+ convert: {
1581
+ checkAvailable: (params?: ScopedIpcParams) => Promise<{
1582
+ available: boolean;
1583
+ error: string | null;
1584
+ }>;
1585
+ supportedFormats: (params?: ScopedIpcParams) => Promise<{
1586
+ success: boolean;
1587
+ error: string | null;
1588
+ formats: {
1589
+ imageInput: string[];
1590
+ imageOutput: string[];
1591
+ audioInput: string[];
1592
+ audioOutput: string[];
1593
+ } | null;
1594
+ }>;
1595
+ inspectFile: (filePath: PathIpcInput) => Promise<{
1596
+ success: boolean;
1597
+ error: string | null;
1598
+ info: {
1599
+ fileType: string;
1600
+ format: string;
1601
+ fileSize: number;
1602
+ fileName: string;
1603
+ width?: number;
1604
+ height?: number;
1605
+ sampleRate?: number;
1606
+ channels?: number;
1607
+ durationSecs?: number;
1608
+ bitrateKbps?: number;
1609
+ codec?: string;
1610
+ bitsPerSample?: number;
1611
+ title?: string;
1612
+ artist?: string;
1613
+ album?: string;
1614
+ } | null;
1615
+ }>;
1616
+ writeTempImage: (dataUrl: string | ({
1617
+ dataUrl: string;
1618
+ } & ScopedIpcParams)) => Promise<{
1619
+ success: boolean;
1620
+ path: string | null;
1621
+ error: string | null;
1622
+ }>;
1623
+ getPathForFile: (file: File) => string;
1624
+ convert: (inputPath: string | ({
1625
+ inputPath: string;
1626
+ outputPath: string;
1627
+ options?: ConvertOptions;
1628
+ } & ScopedIpcParams), outputPath?: string, options?: ConvertOptions) => Promise<{
1629
+ success: boolean;
1630
+ outputPath?: string;
1631
+ error?: string;
1632
+ processingTimeMs?: number;
1633
+ }>;
1634
+ createVideoPreview: (filePath: PathIpcInput) => Promise<{
1635
+ success: boolean;
1636
+ outputPath: string | null;
1637
+ error: string | null;
1638
+ reused?: boolean;
1639
+ processingTimeMs?: number;
1640
+ }>;
1641
+ pickFile: (params?: ScopedIpcParams) => Promise<{
1642
+ success: boolean;
1643
+ path: string | null;
1644
+ }>;
1645
+ saveFile: (format: string | ({
1646
+ format: string;
1647
+ defaultName?: string;
1648
+ } & ScopedIpcParams), defaultName?: string) => Promise<{
1649
+ success: boolean;
1650
+ path: string | null;
1651
+ error?: string;
1652
+ }>;
1653
+ readThumbnail: (filePath: PathIpcInput) => Promise<{
1654
+ success: boolean;
1655
+ dataUrl: string | null;
1656
+ error?: string;
1657
+ }>;
1658
+ };
1659
+ compressor: {
1660
+ pickFiles: () => Promise<{
1661
+ success: boolean;
1662
+ paths: string[];
1663
+ error: string | null;
1664
+ }>;
1665
+ pickOutputDirectory: (defaultPath?: string) => Promise<{
1666
+ success: boolean;
1667
+ path: string | null;
1668
+ error: string | null;
1669
+ }>;
1670
+ inspectFiles: (inputPaths: string[]) => Promise<{
1671
+ success: boolean;
1672
+ files: Array<{
1673
+ path: string;
1674
+ name: string;
1675
+ kind: 'image' | 'pdf' | 'unsupported';
1676
+ formatLabel: string;
1677
+ extension: string;
1678
+ bytes: number;
1679
+ supported: boolean;
1680
+ reason: string | null;
1681
+ width?: number;
1682
+ height?: number;
1683
+ pageCount?: number;
1684
+ }>;
1685
+ error: string | null;
1686
+ }>;
1687
+ compress: (params: {
1688
+ requestId: string;
1689
+ inputPaths: string[];
1690
+ outputDirectory: string;
1691
+ profile: 'light' | 'balanced' | 'strong';
1692
+ imageFormat: 'auto' | 'same' | 'webp' | 'jpeg' | 'png';
1693
+ skipIfLarger?: boolean;
1694
+ stripPdfMetadata?: boolean;
1695
+ }) => Promise<{
1696
+ success: boolean;
1697
+ results: Array<{
1698
+ path: string;
1699
+ name: string;
1700
+ kind: 'image' | 'pdf' | 'unsupported';
1701
+ status: 'compressed' | 'skipped' | 'failed';
1702
+ inputBytes: number;
1703
+ outputBytes?: number;
1704
+ bytesSaved: number;
1705
+ percentSaved: number;
1706
+ outputPath?: string;
1707
+ outputFormat?: string;
1708
+ message: string;
1709
+ processingTimeMs?: number;
1710
+ }>;
1711
+ summary: {
1712
+ processed: number;
1713
+ compressed: number;
1714
+ skipped: number;
1715
+ failed: number;
1716
+ totalOriginalBytes: number;
1717
+ totalEffectiveBytes: number;
1718
+ totalBytesSaved: number;
1719
+ percentSaved: number;
1720
+ outputDirectory: string;
1721
+ firstOutputPath?: string;
1722
+ } | null;
1723
+ error: string | null;
1724
+ }>;
1725
+ showInFolder: (targetPath: string) => Promise<{
1726
+ success: boolean;
1727
+ error: string | null;
1728
+ }>;
1729
+ onProgress: (callback: (data: {
1730
+ requestId: string;
1731
+ current: number;
1732
+ total: number;
1733
+ path: string;
1734
+ name: string;
1735
+ stage: 'start' | 'end';
1736
+ result?: {
1737
+ path: string;
1738
+ name: string;
1739
+ kind: 'image' | 'pdf' | 'unsupported';
1740
+ status: 'compressed' | 'skipped' | 'failed';
1741
+ inputBytes: number;
1742
+ outputBytes?: number;
1743
+ bytesSaved: number;
1744
+ percentSaved: number;
1745
+ outputPath?: string;
1746
+ outputFormat?: string;
1747
+ message: string;
1748
+ processingTimeMs?: number;
1749
+ };
1750
+ }) => void) => void;
1751
+ offProgress: () => void;
1752
+ };
1753
+ pdfMerge: {
1754
+ pickFiles: () => Promise<{
1755
+ success: boolean;
1756
+ paths: string[];
1757
+ error: string | null;
1758
+ }>;
1759
+ saveFile: (defaultName?: string) => Promise<{
1760
+ success: boolean;
1761
+ path: string | null;
1762
+ error: string | null;
1763
+ }>;
1764
+ readFile: (filePath: string) => Promise<{
1765
+ success: boolean;
1766
+ sourceType: 'pdf' | 'image' | null;
1767
+ pdfBase64: string | null;
1768
+ imageDataUrl: string | null;
1769
+ error: string | null;
1770
+ }>;
1771
+ preview: (inputPaths: string[]) => Promise<{
1772
+ success: boolean;
1773
+ pdfBase64: string | null;
1774
+ pageCount: number;
1775
+ error: string | null;
1776
+ }>;
1777
+ merge: (params: {
1778
+ inputPaths: string[];
1779
+ outputPath: string;
1780
+ }) => Promise<{
1781
+ success: boolean;
1782
+ outputPath?: string;
1783
+ mergedCount?: number;
1784
+ pageCount?: number;
1785
+ error?: string;
1786
+ }>;
1787
+ showInFolder: (filePath: string) => Promise<{
1788
+ success: boolean;
1789
+ error: string | null;
1790
+ }>;
1791
+ };
1792
+ latex: {
1793
+ checkInstalled: () => Promise<{
1794
+ installed: boolean;
1795
+ engine: string | null;
1796
+ version: string | null;
1797
+ installInstructions: string | null;
1798
+ }>;
1799
+ compile: (texContent: string, engine?: string) => Promise<{
1800
+ success: boolean;
1801
+ pdfPath: string | null;
1802
+ pdfBase64: string | null;
1803
+ log: string;
1804
+ }>;
1805
+ openFile: () => Promise<{
1806
+ success: boolean;
1807
+ content: string | null;
1808
+ filePath: string | null;
1809
+ error: string | null;
1810
+ }>;
1811
+ savePdf: (pdfPath: string) => Promise<{
1812
+ success: boolean;
1813
+ savedPath?: string;
1814
+ error: string | null;
1815
+ }>;
1816
+ saveTexFile: (content: string, currentPath?: string) => Promise<{
1817
+ success: boolean;
1818
+ filePath: string | null;
1819
+ error: string | null;
1820
+ }>;
1821
+ aifix: (texContent: string, compilationLog: string) => Promise<{
1822
+ success: boolean;
1823
+ fixedContent: string | null;
1824
+ error: string | null;
1825
+ }>;
1826
+ install: () => Promise<{
1827
+ success: boolean;
1828
+ error?: string;
1829
+ }>;
1830
+ onInstallProgress: (callback: (data: {
1831
+ phase: string;
1832
+ percent: number;
1833
+ }) => void) => void;
1834
+ offInstallProgress: () => void;
1835
+ };
1836
+ updater: {
1837
+ check: () => Promise<unknown>;
1838
+ download: () => Promise<void>;
1839
+ install: () => void;
1840
+ getVersion: () => Promise<string>;
1841
+ onUpdateAvailable: (cb: (info: {
1842
+ version: string;
1843
+ releaseNotes?: string;
1844
+ }) => void) => void;
1845
+ onUpToDate: (cb: () => void) => void;
1846
+ onDownloadProgress: (cb: (progress: {
1847
+ percent: number;
1848
+ bytesPerSecond: number;
1849
+ transferred: number;
1850
+ total: number;
1851
+ }) => void) => void;
1852
+ onDownloaded: (cb: () => void) => void;
1853
+ onError: (cb: (msg: string) => void) => void;
1854
+ offAll: () => void;
1855
+ };
1856
+ chatStorage: {
1857
+ saveConversation: (conversation: unknown) => Promise<{
1858
+ success: boolean;
1859
+ error?: string;
1860
+ }>;
1861
+ loadConversations: () => Promise<{
1862
+ success: boolean;
1863
+ conversations: unknown[];
1864
+ error?: string;
1865
+ }>;
1866
+ deleteConversation: (id: string) => Promise<{
1867
+ success: boolean;
1868
+ error?: string;
1869
+ }>;
1870
+ };
1871
+ workspaceStorage: {
1872
+ save: (workspaces: unknown) => Promise<{
1873
+ success: boolean;
1874
+ error?: string;
1875
+ }>;
1876
+ load: () => Promise<{
1877
+ success: boolean;
1878
+ workspaces: unknown[];
1879
+ error?: string;
1880
+ }>;
1881
+ onChanged: (callback: (data: {
1882
+ source?: string;
1883
+ action?: string;
1884
+ }) => void) => void;
1885
+ offChanged: () => void;
1886
+ };
1887
+ imageProjects: {
1888
+ listModels: () => Promise<{
1889
+ success: boolean;
1890
+ models: Array<{
1891
+ id: string;
1892
+ type: 'image' | 'video';
1893
+ available: boolean;
1894
+ reason?: string | null;
1895
+ capabilities?: {
1896
+ maxCount?: number;
1897
+ supportedAspectRatios?: string[];
1898
+ supportedResolutions?: string[];
1899
+ maxResolution?: string;
1900
+ minDuration?: number;
1901
+ maxDuration?: number;
1902
+ supportsAudio?: boolean;
1903
+ supportsLastFrame?: boolean;
1904
+ requiresReferenceImage?: boolean;
1905
+ supportsReferenceImages?: boolean;
1906
+ maxReferenceImages?: number;
1907
+ } | null;
1908
+ }>;
1909
+ error?: string | null;
1910
+ }>;
1911
+ list: () => Promise<any[]>;
1912
+ create: (params: {
1913
+ name: string;
1914
+ modelPreference?: string;
1915
+ }) => Promise<any>;
1916
+ update: (params: {
1917
+ id: string;
1918
+ name?: string;
1919
+ modelPreference?: string | null;
1920
+ thumbnailUrl?: string | null;
1921
+ }) => Promise<any>;
1922
+ delete: (id: string) => Promise<any>;
1923
+ getGenerations: (params: {
1924
+ projectId: string;
1925
+ limit?: number;
1926
+ offset?: number;
1927
+ favoritesOnly?: boolean;
1928
+ lite?: boolean;
1929
+ view?: 'gallery' | 'full' | 'lite';
1930
+ }) => Promise<any>;
1931
+ getGeneration: (params: {
1932
+ projectId: string;
1933
+ genId: string;
1934
+ }) => Promise<any>;
1935
+ saveGeneration: (params: {
1936
+ projectId: string;
1937
+ [key: string]: any;
1938
+ }) => Promise<any>;
1939
+ deleteGeneration: (params: {
1940
+ projectId: string;
1941
+ generationId: string;
1942
+ }) => Promise<any>;
1943
+ toggleFavorite: (params: {
1944
+ projectId: string;
1945
+ generationId: string;
1946
+ }) => Promise<any>;
1947
+ bulkDelete: (ids: string[]) => Promise<any>;
1948
+ duplicate: (id: string) => Promise<any>;
1949
+ generateImage: (params: Record<string, unknown>) => Promise<any>;
1950
+ upscaleImage: (params: Record<string, unknown>) => Promise<any>;
1951
+ generateVideo: (params: Record<string, unknown>) => Promise<any>;
1952
+ upscaleVideo: (params: Record<string, unknown>) => Promise<any>;
1953
+ readReferenceImage: (params: {
1954
+ path: string;
1955
+ } | string) => Promise<{
1956
+ success: boolean;
1957
+ path?: string;
1958
+ name?: string;
1959
+ mimeType?: string;
1960
+ size?: number;
1961
+ dataUrl?: string;
1962
+ error?: string;
1963
+ }>;
1964
+ selectFolder: () => Promise<string | null>;
1965
+ readFolderImages: (folderPath: string) => Promise<Array<{
1966
+ name: string;
1967
+ path: string;
1968
+ size: number;
1969
+ modified: number;
1970
+ }>>;
1971
+ };
1972
+ agentContext: {
1973
+ get: () => Promise<{
1974
+ success: boolean;
1975
+ context: {
1976
+ installedApps: string[];
1977
+ userName: string | null;
1978
+ provider: string;
1979
+ } | null;
1980
+ error?: string;
1981
+ }>;
1982
+ };
1983
+ agentStorage: {
1984
+ saveConversation: (conversation: unknown) => Promise<{
1985
+ success: boolean;
1986
+ error?: string;
1987
+ }>;
1988
+ loadConversations: () => Promise<{
1989
+ success: boolean;
1990
+ conversations: unknown[];
1991
+ recoveredConversationIds?: string[];
1992
+ corruptConversationFiles?: string[];
1993
+ error?: string;
1994
+ }>;
1995
+ deleteConversation: (id: string) => Promise<{
1996
+ success: boolean;
1997
+ error?: string;
1998
+ }>;
1999
+ };
2000
+ agentSearch: {
2001
+ query: (params: unknown) => Promise<{
2002
+ success: boolean;
2003
+ results: unknown[];
2004
+ total: number;
2005
+ stats?: unknown;
2006
+ error?: string;
2007
+ }>;
2008
+ hydrateResult: (params: {
2009
+ id: string;
2010
+ }) => Promise<{
2011
+ success: boolean;
2012
+ document?: unknown;
2013
+ error?: string;
2014
+ }>;
2015
+ attachConversation: (params: unknown) => Promise<{
2016
+ success: boolean;
2017
+ attachment?: unknown;
2018
+ error?: string;
2019
+ }>;
2020
+ detachConversation: (params: {
2021
+ attachmentId: string;
2022
+ }) => Promise<{
2023
+ success: boolean;
2024
+ error?: string;
2025
+ }>;
2026
+ listAttachments: (params: {
2027
+ conversationId: string;
2028
+ }) => Promise<{
2029
+ success: boolean;
2030
+ attachments: unknown[];
2031
+ error?: string;
2032
+ }>;
2033
+ reindex: (params?: {
2034
+ force?: boolean;
2035
+ reason?: string;
2036
+ cancelActive?: boolean;
2037
+ }) => Promise<{
2038
+ ready: boolean;
2039
+ building: boolean;
2040
+ error?: string;
2041
+ stats: unknown;
2042
+ health?: unknown;
2043
+ lifecycle?: unknown;
2044
+ }>;
2045
+ cancelIndexing: (params?: {
2046
+ jobId?: string;
2047
+ reason?: string;
2048
+ }) => Promise<{
2049
+ ready: boolean;
2050
+ building: boolean;
2051
+ error?: string;
2052
+ stats: unknown;
2053
+ health?: unknown;
2054
+ lifecycle?: unknown;
2055
+ }>;
2056
+ repair: (params?: {
2057
+ force?: boolean;
2058
+ cleanSnapshot?: boolean;
2059
+ }) => Promise<{
2060
+ success: boolean;
2061
+ status: unknown;
2062
+ repaired: unknown[];
2063
+ durationMs: number;
2064
+ error?: string;
2065
+ }>;
2066
+ health: (params?: unknown) => Promise<{
2067
+ checkedAt: number;
2068
+ healthy: boolean;
2069
+ stale: boolean;
2070
+ issues: unknown[];
2071
+ }>;
2072
+ profile: (params?: {
2073
+ limit?: number;
2074
+ slowOnly?: boolean;
2075
+ }) => Promise<{
2076
+ entries: unknown[];
2077
+ slowQueries: unknown[];
2078
+ averageQueryMs: number | null;
2079
+ p95QueryMs: number | null;
2080
+ failedQueryCount?: number;
2081
+ health?: string;
2082
+ }>;
2083
+ watcherStatus: (params?: unknown) => Promise<{
2084
+ success: boolean;
2085
+ status?: unknown;
2086
+ error?: string;
2087
+ }>;
2088
+ lifecycleStatus: (params?: unknown) => Promise<{
2089
+ success: boolean;
2090
+ status?: unknown;
2091
+ error?: string;
2092
+ }>;
2093
+ status: () => Promise<{
2094
+ ready: boolean;
2095
+ building: boolean;
2096
+ error?: string;
2097
+ stats: unknown;
2098
+ health?: unknown;
2099
+ lifecycle?: unknown;
2100
+ }>;
2101
+ };
2102
+ codeIndex: {
2103
+ indexWorkspace: (params: unknown) => Promise<{
2104
+ success: boolean;
2105
+ snapshot?: unknown;
2106
+ stats?: unknown;
2107
+ error?: string;
2108
+ }>;
2109
+ watch: (params: unknown) => Promise<{
2110
+ success: boolean;
2111
+ snapshot?: unknown;
2112
+ stats?: unknown;
2113
+ error?: string;
2114
+ }>;
2115
+ searchFiles: (params: unknown) => Promise<{
2116
+ success: boolean;
2117
+ files: unknown[];
2118
+ total: number;
2119
+ error?: string;
2120
+ }>;
2121
+ searchText: (params: unknown) => Promise<{
2122
+ success: boolean;
2123
+ results: unknown[];
2124
+ total: number;
2125
+ error?: string;
2126
+ }>;
2127
+ listSymbols: (params: unknown) => Promise<{
2128
+ success: boolean;
2129
+ symbols: unknown[];
2130
+ total: number;
2131
+ error?: string;
2132
+ }>;
2133
+ getSymbol: (params: unknown) => Promise<{
2134
+ success: boolean;
2135
+ symbol?: unknown;
2136
+ file?: unknown;
2137
+ references?: unknown[];
2138
+ error?: string;
2139
+ }>;
2140
+ references: (params: unknown) => Promise<{
2141
+ success: boolean;
2142
+ results: unknown[];
2143
+ total: number;
2144
+ error?: string;
2145
+ }>;
2146
+ codeActions: (params: unknown) => Promise<{
2147
+ success: boolean;
2148
+ rootDirectory: string;
2149
+ filePath?: string;
2150
+ actions: unknown[];
2151
+ diagnostics: unknown[];
2152
+ error?: string;
2153
+ }>;
2154
+ applyCodeAction: (params: unknown) => Promise<{
2155
+ success: boolean;
2156
+ rootDirectory: string;
2157
+ filePath?: string;
2158
+ applied: boolean;
2159
+ edits: unknown[];
2160
+ diagnostics?: unknown[];
2161
+ error?: string;
2162
+ }>;
2163
+ organizeImports: (params: unknown) => Promise<{
2164
+ success: boolean;
2165
+ rootDirectory: string;
2166
+ filePath?: string;
2167
+ applied: boolean;
2168
+ edits: unknown[];
2169
+ diagnostics?: unknown[];
2170
+ error?: string;
2171
+ }>;
2172
+ renameSymbol: (params: unknown) => Promise<{
2173
+ success: boolean;
2174
+ rootDirectory: string;
2175
+ filePath?: string;
2176
+ applied: boolean;
2177
+ edits: unknown[];
2178
+ diagnostics?: unknown[];
2179
+ error?: string;
2180
+ }>;
2181
+ languageServiceStatus: (params: unknown) => Promise<{
2182
+ success: boolean;
2183
+ rootDirectory: string;
2184
+ services: unknown[];
2185
+ error?: string;
2186
+ }>;
2187
+ controlLanguageService: (params: unknown) => Promise<{
2188
+ success: boolean;
2189
+ rootDirectory: string;
2190
+ service?: unknown;
2191
+ error?: string;
2192
+ }>;
2193
+ repairIndex: (params: unknown) => Promise<{
2194
+ success: boolean;
2195
+ rootDirectory: string;
2196
+ repaired: boolean;
2197
+ removedFiles: string[];
2198
+ rebuilt?: unknown;
2199
+ durationMs: number;
2200
+ error?: string;
2201
+ }>;
2202
+ dependencyGraph: (params: unknown) => Promise<{
2203
+ success: boolean;
2204
+ graph?: unknown;
2205
+ error?: string;
2206
+ }>;
2207
+ createContextPack: (params: unknown) => Promise<{
2208
+ success: boolean;
2209
+ pack?: unknown;
2210
+ error?: string;
2211
+ }>;
2212
+ updateContextPack: (params: unknown) => Promise<{
2213
+ success: boolean;
2214
+ pack?: unknown;
2215
+ error?: string;
2216
+ }>;
2217
+ listContextPacks: (params: unknown) => Promise<{
2218
+ success: boolean;
2219
+ packs: unknown[];
2220
+ error?: string;
2221
+ }>;
2222
+ materializeContextPack: (params: unknown) => Promise<{
2223
+ success: boolean;
2224
+ materialized?: unknown;
2225
+ error?: string;
2226
+ }>;
2227
+ whatChanged: (params: unknown) => Promise<{
2228
+ success: boolean;
2229
+ isGitRepo: boolean;
2230
+ rootDirectory: string;
2231
+ summary: string;
2232
+ changedFiles: unknown[];
2233
+ diffStat?: string;
2234
+ workPacket: string;
2235
+ error?: string;
2236
+ }>;
2237
+ };
2238
+ /**
2239
+ * §2.9 review and §5.7 landing, as the surface sees them.
2240
+ *
2241
+ * Every one of these can answer `available: false`. That is not an error
2242
+ * path to collapse into a catch: a host with no isolation substrate wired
2243
+ * observes nothing, and a surface must be able to tell "this run changed
2244
+ * nothing" from "nobody was watching".
2245
+ */
2246
+ /** ADE §9 step 6. `coordinationComplete` is false today in every case —
2247
+ * collisions are only what this host has seen since it started — so a
2248
+ * surface must render the notice rather than presenting the board as the
2249
+ * whole picture. */
2250
+ /** ADE §5.5. Every call can report unavailable — a host with no session
2251
+ * substrate mounted has no sessions, which is different from having none
2252
+ * open, and a surface must be able to tell them apart. */
2253
+ /** ADE §5.1. `complete: false` means a tracker could not be read, so the
2254
+ * inbox may be MISSING work — a short list is not the same as no work. */
2255
+ /** ADE §5.8. `durable: false` means these facts vanish when the app
2256
+ * closes — a surface must say so rather than rendering them identically. */
2257
+ knowledge: {
2258
+ list: (params: {
2259
+ workspaceId: string;
2260
+ }) => Promise<{
2261
+ available: boolean;
2262
+ entries: Array<{
2263
+ id: string;
2264
+ subject: string;
2265
+ fact: string;
2266
+ pinned?: boolean;
2267
+ runId: string;
2268
+ providerId?: string;
2269
+ at: number;
2270
+ }>;
2271
+ durable: boolean;
2272
+ reason?: string;
2273
+ }>;
2274
+ record: (params: {
2275
+ workspaceId: string;
2276
+ subject: string;
2277
+ fact: string;
2278
+ pinned?: boolean;
2279
+ runId: string;
2280
+ providerId?: string;
2281
+ }) => Promise<{
2282
+ ok: boolean;
2283
+ reason?: string;
2284
+ entry?: {
2285
+ id: string;
2286
+ };
2287
+ }>;
2288
+ forget: (params: {
2289
+ workspaceId: string;
2290
+ entryId: string;
2291
+ }) => Promise<{
2292
+ ok: boolean;
2293
+ reason?: string;
2294
+ }>;
2295
+ context: (params: {
2296
+ workspaceId: string;
2297
+ maxChars?: number;
2298
+ }) => Promise<{
2299
+ available: boolean;
2300
+ text: string;
2301
+ complete: boolean;
2302
+ omitted: Array<{
2303
+ subject: string;
2304
+ reason: string;
2305
+ }>;
2306
+ reason?: string;
2307
+ }>;
2308
+ };
2309
+ intake: {
2310
+ sources: (params: Record<string, never>) => Promise<{
2311
+ available: boolean;
2312
+ sources: Array<{
2313
+ sourceId: string;
2314
+ label: string;
2315
+ healthy: boolean;
2316
+ problem?: string;
2317
+ }>;
2318
+ reason?: string;
2319
+ }>;
2320
+ list: (params: {
2321
+ sourceId?: string;
2322
+ }) => Promise<{
2323
+ available: boolean;
2324
+ items: Array<{
2325
+ id: string;
2326
+ sourceId: string;
2327
+ externalId: string;
2328
+ title: string;
2329
+ detail?: string;
2330
+ createdAt?: number;
2331
+ url?: string;
2332
+ claimState: string;
2333
+ claimedBy?: string;
2334
+ runId?: string;
2335
+ }>;
2336
+ complete: boolean;
2337
+ failedSources: Array<{
2338
+ sourceId: string;
2339
+ problem: string;
2340
+ }>;
2341
+ reason?: string;
2342
+ }>;
2343
+ /** 🔴 A second claimant is REFUSED and told who won. Show `reason`
2344
+ * verbatim — the loser's next move depends on knowing it lost. */
2345
+ claim: (params: {
2346
+ itemId: string;
2347
+ clientId: string;
2348
+ }) => Promise<{
2349
+ ok: boolean;
2350
+ reason?: string;
2351
+ heldBy?: string;
2352
+ runId?: string;
2353
+ claimState?: string;
2354
+ }>;
2355
+ release: (params: {
2356
+ itemId: string;
2357
+ clientId: string;
2358
+ }) => Promise<{
2359
+ ok: boolean;
2360
+ reason?: string;
2361
+ heldBy?: string;
2362
+ claimState?: string;
2363
+ }>;
2364
+ dispatch: (params: {
2365
+ itemId: string;
2366
+ clientId: string;
2367
+ runId: string;
2368
+ }) => Promise<{
2369
+ ok: boolean;
2370
+ reason?: string;
2371
+ heldBy?: string;
2372
+ runId?: string;
2373
+ claimState?: string;
2374
+ }>;
2375
+ };
2376
+ session: {
2377
+ list: (params: {
2378
+ runId?: string;
2379
+ }) => Promise<{
2380
+ available: boolean;
2381
+ sessions: Array<{
2382
+ sessionId: string;
2383
+ runId: string;
2384
+ mode: string;
2385
+ switchable: boolean;
2386
+ hasProtocolChannel: boolean;
2387
+ openedAt: number;
2388
+ viewers: string[];
2389
+ lease: {
2390
+ holder: string | null;
2391
+ heldSince: number | null;
2392
+ interventions: number;
2393
+ };
2394
+ }>;
2395
+ reason?: string;
2396
+ }>;
2397
+ attach: (params: {
2398
+ sessionId: string;
2399
+ viewerId: string;
2400
+ }) => Promise<{
2401
+ ok: boolean;
2402
+ reason?: string;
2403
+ }>;
2404
+ detach: (params: {
2405
+ sessionId: string;
2406
+ viewerId: string;
2407
+ }) => Promise<{
2408
+ ok: boolean;
2409
+ reason?: string;
2410
+ }>;
2411
+ snapshot: (params: {
2412
+ sessionId: string;
2413
+ }) => Promise<{
2414
+ available: boolean;
2415
+ output: string;
2416
+ truncated: boolean;
2417
+ reason?: string;
2418
+ }>;
2419
+ /**
2420
+ * Ordinary typing — §2.8. Honours the write lease WITHOUT seizing it.
2421
+ *
2422
+ * The routing (steer now, or queue for the next turn) is decided by the
2423
+ * host from facts it owns; a surface supplies only what was typed.
2424
+ * `delivered` says whether the agent already has it — see `sink`.
2425
+ */
2426
+ input: (params: {
2427
+ sessionId: string;
2428
+ viewerId: string;
2429
+ data: string;
2430
+ }) => Promise<{
2431
+ ok: boolean;
2432
+ code?: 'no_such_session' | 'lease_held';
2433
+ disposition?: 'steer' | 'queue';
2434
+ delivered?: boolean;
2435
+ sink?: 'pty' | 'turn.steer' | 'turn.queue';
2436
+ /**
2437
+ * 🔴 The EFFECT of a `queue` disposition, with the address
2438
+ * needed to act on it. `disposition` is the intent and cannot say
2439
+ * whether it happened; a surface reading it as if it could is how
2440
+ * this panel came to report a queue entry that did not exist.
2441
+ */
2442
+ queued?: {
2443
+ instructionId: string;
2444
+ conversationId: string;
2445
+ };
2446
+ reason?: string;
2447
+ }>;
2448
+ /** 🔴 Refused when ANOTHER human holds the lease, and the keystrokes are
2449
+ * NOT written in that case. Show `reason` verbatim. */
2450
+ takeover: (params: {
2451
+ sessionId: string;
2452
+ viewerId: string;
2453
+ data: string;
2454
+ }) => Promise<{
2455
+ ok: boolean;
2456
+ lease?: {
2457
+ holder: string | null;
2458
+ heldSince: number | null;
2459
+ interventions: number;
2460
+ };
2461
+ reason?: string;
2462
+ }>;
2463
+ release: (params: {
2464
+ sessionId: string;
2465
+ viewerId: string;
2466
+ }) => Promise<{
2467
+ ok: boolean;
2468
+ reason?: string;
2469
+ }>;
2470
+ /**
2471
+ * A session opened, closed, or gained or lost a viewer — ADE §2.8.
2472
+ *
2473
+ * 🔴 IDS AND COUNTS ONLY. Terminal bytes are per-viewer and large, so
2474
+ * the substrate keeps them off the event feed on purpose; `snapshot` is
2475
+ * the read path for output and stays a poll. A surface that treated this
2476
+ * as an output stream would be waiting for bytes that never come.
2477
+ *
2478
+ * Optional because a host predating it has no such channel, and a panel
2479
+ * must degrade to its one-shot list rather than fail to mount.
2480
+ */
2481
+ subscribeChanged?: (listener: (payload: unknown) => void) => () => void;
2482
+ };
2483
+ fleet: {
2484
+ view: (params: {
2485
+ claimedPathsByRun?: Record<string, string[]>;
2486
+ }) => Promise<{
2487
+ runs: Array<{
2488
+ runId: string;
2489
+ conversationId?: string;
2490
+ workspaceId?: string;
2491
+ agentId?: string;
2492
+ working: boolean;
2493
+ claims: string[];
2494
+ changes?: {
2495
+ added: number;
2496
+ modified: number;
2497
+ deleted: number;
2498
+ };
2499
+ diffComplete?: boolean;
2500
+ contestedPaths: string[];
2501
+ }>;
2502
+ collisions: Array<{
2503
+ scope: string;
2504
+ wantedByRunId: string;
2505
+ heldByRunId: string;
2506
+ at: string;
2507
+ stillHeld: boolean;
2508
+ }>;
2509
+ coordinationComplete: boolean;
2510
+ observationComplete: boolean;
2511
+ problems: string[];
2512
+ }>;
2513
+ /**
2514
+ * Anything a board row is composed from moved — claims, collisions and
2515
+ * run state (`coordination.event`), or change counts and diff trust
2516
+ * (`run.observation`).
2517
+ *
2518
+ * Optional, so a host predating it leaves the panel on its manual
2519
+ * refresh rather than failing to mount.
2520
+ */
2521
+ subscribeChanged?: (listener: (payload: unknown) => void) => () => void;
2522
+ };
2523
+ review: {
2524
+ snapshot: (params: {
2525
+ runId: string;
2526
+ poll?: boolean;
2527
+ }) => Promise<{
2528
+ available: boolean;
2529
+ runId: string;
2530
+ changes: Array<{
2531
+ path: string;
2532
+ kind: 'added' | 'modified' | 'deleted';
2533
+ }>;
2534
+ complete: boolean;
2535
+ droppedEvents: number;
2536
+ problems: string[];
2537
+ reason?: string;
2538
+ }>;
2539
+ /**
2540
+ * A run's tier-1 change set moved — §2.9.
2541
+ *
2542
+ * Payload carries `runId`; a pane watching one run FILTERS for itself.
2543
+ * Optional, so a host predating it leaves the pane on manual refresh
2544
+ * rather than failing to mount.
2545
+ */
2546
+ subscribeChanged?: (listener: (payload: unknown) => void) => () => void;
2547
+ change: (params: {
2548
+ runId: string;
2549
+ path: string;
2550
+ }) => Promise<{
2551
+ available: boolean;
2552
+ path: string;
2553
+ before?: string;
2554
+ after?: string;
2555
+ binary: boolean;
2556
+ truncated: boolean;
2557
+ refusal?: string;
2558
+ }>;
2559
+ overlaps: (params: {
2560
+ claimedPathsByRun?: Record<string, string[]>;
2561
+ }) => Promise<{
2562
+ available: boolean;
2563
+ overlaps: Array<{
2564
+ path: string;
2565
+ runIds: string[];
2566
+ kind: string;
2567
+ unclaimed?: boolean;
2568
+ }>;
2569
+ incompleteRuns: string[];
2570
+ complete: boolean;
2571
+ reason?: string;
2572
+ }>;
2573
+ };
2574
+ engineering: {
2575
+ gitStatus: (params: unknown) => Promise<{
2576
+ success: boolean;
2577
+ isGitRepo: boolean;
2578
+ rootDirectory: string;
2579
+ branch?: string;
2580
+ upstream?: string;
2581
+ ahead?: number;
2582
+ behind?: number;
2583
+ clean: boolean;
2584
+ files: unknown[];
2585
+ raw?: string;
2586
+ error?: string;
2587
+ }>;
2588
+ gitDiff: (params: unknown) => Promise<{
2589
+ success: boolean;
2590
+ isGitRepo: boolean;
2591
+ rootDirectory: string;
2592
+ diff: string;
2593
+ truncated: boolean;
2594
+ error?: string;
2595
+ }>;
2596
+ gitStage: (params: unknown) => Promise<{
2597
+ success: boolean;
2598
+ isGitRepo: boolean;
2599
+ rootDirectory: string;
2600
+ branch?: string;
2601
+ upstream?: string;
2602
+ ahead?: number;
2603
+ behind?: number;
2604
+ clean: boolean;
2605
+ files: unknown[];
2606
+ raw?: string;
2607
+ error?: string;
2608
+ }>;
2609
+ gitUnstage: (params: unknown) => Promise<{
2610
+ success: boolean;
2611
+ isGitRepo: boolean;
2612
+ rootDirectory: string;
2613
+ branch?: string;
2614
+ upstream?: string;
2615
+ ahead?: number;
2616
+ behind?: number;
2617
+ clean: boolean;
2618
+ files: unknown[];
2619
+ raw?: string;
2620
+ error?: string;
2621
+ }>;
2622
+ gitCommit: (params: unknown) => Promise<{
2623
+ success: boolean;
2624
+ isGitRepo: boolean;
2625
+ rootDirectory: string;
2626
+ branch?: string;
2627
+ upstream?: string;
2628
+ ahead?: number;
2629
+ behind?: number;
2630
+ clean: boolean;
2631
+ files: unknown[];
2632
+ raw?: string;
2633
+ error?: string;
2634
+ }>;
2635
+ gitBranch: (params: unknown) => Promise<{
2636
+ success: boolean;
2637
+ isGitRepo: boolean;
2638
+ rootDirectory: string;
2639
+ branch?: string;
2640
+ clean: boolean;
2641
+ files: unknown[];
2642
+ error?: string;
2643
+ }>;
2644
+ /** 🔴 Outward-facing. Refuses unless `confirmed: true` comes from a real
2645
+ * human action — never set as a constant by a caller. */
2646
+ gitPush: (params: unknown) => Promise<{
2647
+ success: boolean;
2648
+ pushed: boolean;
2649
+ remote?: string;
2650
+ pushedBranch?: string;
2651
+ error?: string;
2652
+ }>;
2653
+ /** 🔴 Outward-facing. Same rule as `gitPush`. */
2654
+ gitCreatePullRequest: (params: unknown) => Promise<{
2655
+ success: boolean;
2656
+ created: boolean;
2657
+ url?: string;
2658
+ number?: number;
2659
+ error?: string;
2660
+ }>;
2661
+ landingEnqueue: (params: unknown) => Promise<LandingQueueView>;
2662
+ landingRemove: (params: unknown) => Promise<LandingQueueView>;
2663
+ landingStatus: (params: unknown) => Promise<LandingQueueView>;
2664
+ landingVerify: (params: unknown) => Promise<LandingQueueView & {
2665
+ verified: boolean;
2666
+ checks: string[];
2667
+ problem?: string;
2668
+ }>;
2669
+ /** 🔴 Outward-facing: this merges into trunk. Confirmation is required
2670
+ * AND is not the gate — the host still refuses an unverified, stale or
2671
+ * overlapping combination. */
2672
+ landingLand: (params: unknown) => Promise<LandingQueueView & {
2673
+ runId?: string;
2674
+ landed: boolean;
2675
+ verdict?: string;
2676
+ }>;
2677
+ discoverChecks: (params: unknown) => Promise<{
2678
+ success: boolean;
2679
+ rootDirectory: string;
2680
+ checks: unknown[];
2681
+ packageManager?: 'npm';
2682
+ error?: string;
2683
+ }>;
2684
+ runCheck: (params: unknown) => Promise<{
2685
+ success: boolean;
2686
+ run?: unknown;
2687
+ error?: string;
2688
+ }>;
2689
+ startBackgroundCheck: (params: unknown) => Promise<{
2690
+ success: boolean;
2691
+ rootDirectory?: string;
2692
+ run?: unknown;
2693
+ error?: string;
2694
+ }>;
2695
+ listBackgroundRuns: (params: unknown) => Promise<{
2696
+ success: boolean;
2697
+ rootDirectory: string;
2698
+ runs: unknown[];
2699
+ error?: string;
2700
+ }>;
2701
+ readBackgroundRunOutput: (params: unknown) => Promise<{
2702
+ success: boolean;
2703
+ rootDirectory?: string;
2704
+ run?: unknown;
2705
+ error?: string;
2706
+ }>;
2707
+ stopBackgroundRun: (params: unknown) => Promise<{
2708
+ success: boolean;
2709
+ rootDirectory?: string;
2710
+ run?: unknown;
2711
+ error?: string;
2712
+ }>;
2713
+ listRuns: (params: unknown) => Promise<{
2714
+ success: boolean;
2715
+ rootDirectory: string;
2716
+ runs: unknown[];
2717
+ error?: string;
2718
+ }>;
2719
+ diagnostics: (params: unknown) => Promise<{
2720
+ success: boolean;
2721
+ rootDirectory: string;
2722
+ summary: string;
2723
+ git?: unknown;
2724
+ checks: unknown[];
2725
+ recentRuns: unknown[];
2726
+ backgroundRuns?: unknown[];
2727
+ issues: unknown[];
2728
+ error?: string;
2729
+ }>;
2730
+ listPatchReviews: (params: unknown) => Promise<{
2731
+ success: boolean;
2732
+ rootDirectory: string;
2733
+ items: unknown[];
2734
+ error?: string;
2735
+ }>;
2736
+ enqueuePatchReview: (params: unknown) => Promise<{
2737
+ success: boolean;
2738
+ rootDirectory: string;
2739
+ item?: unknown;
2740
+ items?: unknown[];
2741
+ error?: string;
2742
+ }>;
2743
+ updatePatchReview: (params: unknown) => Promise<{
2744
+ success: boolean;
2745
+ rootDirectory: string;
2746
+ item?: unknown;
2747
+ items?: unknown[];
2748
+ error?: string;
2749
+ }>;
2750
+ reviewPatchSelection: (params: unknown) => Promise<{
2751
+ success: boolean;
2752
+ rootDirectory: string;
2753
+ item?: unknown;
2754
+ selectedHunkIds: string[];
2755
+ wouldChangeFiles: string[];
2756
+ previewToken?: string;
2757
+ conflicts?: Array<{
2758
+ relativePath: string;
2759
+ reason: string;
2760
+ detail?: string;
2761
+ }>;
2762
+ applied?: boolean;
2763
+ transactionId?: string;
2764
+ error?: string;
2765
+ }>;
2766
+ listCheckpoints: (params: unknown) => Promise<{
2767
+ success: boolean;
2768
+ rootDirectory: string;
2769
+ checkpoints: unknown[];
2770
+ error?: string;
2771
+ }>;
2772
+ compareCheckpoints: (params: unknown) => Promise<{
2773
+ success: boolean;
2774
+ rootDirectory: string;
2775
+ from?: unknown;
2776
+ to?: unknown;
2777
+ filesChanged: string[];
2778
+ diff: string;
2779
+ patches: unknown[];
2780
+ error?: string;
2781
+ }>;
2782
+ restoreCheckpoint: (params: unknown) => Promise<{
2783
+ success: boolean;
2784
+ rootDirectory: string;
2785
+ checkpoint?: unknown;
2786
+ previewDiff: string;
2787
+ wouldRestoreFiles: string[];
2788
+ previewToken?: string;
2789
+ conflicts?: Array<{
2790
+ relativePath: string;
2791
+ reason: string;
2792
+ detail?: string;
2793
+ }>;
2794
+ restored?: boolean;
2795
+ restoredFiles?: string[];
2796
+ transactionId?: string;
2797
+ runtimeEvent?: unknown;
2798
+ error?: string;
2799
+ }>;
2800
+ listSessions: (params: unknown) => Promise<{
2801
+ success: boolean;
2802
+ rootDirectory: string;
2803
+ sessions: unknown[];
2804
+ error?: string;
2805
+ }>;
2806
+ runtimeTimeline: (params: unknown) => Promise<import('@xenosystem/agent-interface-contract').EngineeringRuntimeTimelineResponse>;
2807
+ };
2808
+ runtimeEvents: {
2809
+ append: (params: unknown) => Promise<{
2810
+ success: boolean;
2811
+ event?: unknown;
2812
+ duplicate?: boolean;
2813
+ error?: string;
2814
+ }>;
2815
+ list: (params: unknown) => Promise<{
2816
+ success: boolean;
2817
+ events: unknown[];
2818
+ error?: string;
2819
+ }>;
2820
+ listSubagentTrace: (params: unknown) => Promise<{
2821
+ success: boolean;
2822
+ events: unknown[];
2823
+ error?: string;
2824
+ }>;
2825
+ project: (params: unknown) => Promise<{
2826
+ success: boolean;
2827
+ projection?: unknown;
2828
+ error?: string;
2829
+ }>;
2830
+ repair: (params: unknown) => Promise<{
2831
+ success: boolean;
2832
+ conversationId?: string;
2833
+ scannedLineCount?: number;
2834
+ validEventCount?: number;
2835
+ corruptLineCount?: number;
2836
+ duplicateEventCount?: number;
2837
+ reordered?: boolean;
2838
+ resequenced?: boolean;
2839
+ backupPath?: string;
2840
+ error?: string;
2841
+ }>;
2842
+ subscribeAppended: (callback: (payload: unknown) => void) => string;
2843
+ unsubscribeAppended: (subscriptionId: string) => boolean;
2844
+ };
2845
+ subagents: {
2846
+ createRun: (params: unknown) => Promise<{
2847
+ success: boolean;
2848
+ run?: unknown;
2849
+ error?: string;
2850
+ }>;
2851
+ createTeamAgentDelegation: (params: unknown) => Promise<{
2852
+ success: boolean;
2853
+ run?: unknown;
2854
+ route?: unknown;
2855
+ policy?: unknown;
2856
+ error?: string;
2857
+ }>;
2858
+ updateRun: (params: unknown) => Promise<{
2859
+ success: boolean;
2860
+ run?: unknown;
2861
+ error?: string;
2862
+ }>;
2863
+ getRun: (params: unknown) => Promise<{
2864
+ success: boolean;
2865
+ run?: unknown;
2866
+ error?: string;
2867
+ }>;
2868
+ listRuns: (params: unknown) => Promise<{
2869
+ success: boolean;
2870
+ runs: unknown[];
2871
+ error?: string;
2872
+ }>;
2873
+ getAgentStatus: (params: unknown) => Promise<{
2874
+ success: boolean;
2875
+ status?: unknown;
2876
+ error?: string;
2877
+ }>;
2878
+ matchCapabilities: (params: unknown) => Promise<{
2879
+ success: boolean;
2880
+ capabilityMatch?: unknown;
2881
+ error?: string;
2882
+ }>;
2883
+ claimNextRun: (params: unknown) => Promise<{
2884
+ success: boolean;
2885
+ run?: unknown;
2886
+ error?: string;
2887
+ }>;
2888
+ launchQueuedRun: (params: unknown) => Promise<{
2889
+ success: boolean;
2890
+ run?: unknown;
2891
+ launched?: boolean;
2892
+ adapterStatus?: unknown;
2893
+ error?: string;
2894
+ }>;
2895
+ markRunRunning: (params: unknown) => Promise<{
2896
+ success: boolean;
2897
+ run?: unknown;
2898
+ error?: string;
2899
+ }>;
2900
+ markRunTerminal: (params: unknown) => Promise<{
2901
+ success: boolean;
2902
+ run?: unknown;
2903
+ error?: string;
2904
+ }>;
2905
+ heartbeatRun: (params: unknown) => Promise<{
2906
+ success: boolean;
2907
+ run?: unknown;
2908
+ error?: string;
2909
+ }>;
2910
+ cancelRun: (params: unknown) => Promise<{
2911
+ success: boolean;
2912
+ run?: unknown;
2913
+ error?: string;
2914
+ }>;
2915
+ cancelExecution: (params: unknown) => Promise<{
2916
+ success: boolean;
2917
+ run?: unknown;
2918
+ error?: string;
2919
+ }>;
2920
+ recoverExpiredRuns: (params: unknown) => Promise<{
2921
+ success: boolean;
2922
+ recovered: number;
2923
+ failed: number;
2924
+ timedOut?: number;
2925
+ stale?: number;
2926
+ runs: unknown[];
2927
+ error?: string;
2928
+ }>;
2929
+ adapterStatus: (params?: unknown) => Promise<{
2930
+ success: boolean;
2931
+ statuses: unknown[];
2932
+ error?: string;
2933
+ }>;
2934
+ hydrateExecutionAttempt: (params: unknown) => Promise<{
2935
+ success: boolean;
2936
+ run?: unknown;
2937
+ attempts?: unknown[];
2938
+ attempt?: unknown;
2939
+ adapterStatus?: unknown;
2940
+ error?: string;
2941
+ }>;
2942
+ schedulerStatus: (params?: unknown) => Promise<{
2943
+ success: boolean;
2944
+ status?: unknown;
2945
+ error?: string;
2946
+ }>;
2947
+ };
2948
+ cliControlPlane: {
2949
+ inspectAppServer: (params: unknown) => Promise<{
2950
+ success: boolean;
2951
+ endpoint: string | null;
2952
+ checkedAt: number;
2953
+ status: string;
2954
+ manifest: unknown;
2955
+ openapi: unknown;
2956
+ workflows: unknown[];
2957
+ dashboards: unknown[];
2958
+ versionSkewWarning?: string;
2959
+ error?: string;
2960
+ }>;
2961
+ inspectWorkflowOperation: (params: unknown) => Promise<{
2962
+ success: boolean;
2963
+ endpoint: string | null;
2964
+ checkedAt: number;
2965
+ status: string;
2966
+ method: string;
2967
+ path: string | null;
2968
+ operationId?: string;
2969
+ response: unknown;
2970
+ error?: string;
2971
+ }>;
2972
+ runThread: (params: unknown) => Promise<{
2973
+ success: boolean;
2974
+ endpoint: string | null;
2975
+ checkedAt: number;
2976
+ status: string;
2977
+ method: 'thread.run';
2978
+ messageCount: number;
2979
+ text?: string;
2980
+ messages?: unknown[];
2981
+ cancelled?: boolean;
2982
+ error?: string;
2983
+ }>;
2984
+ cancelThread: (params: unknown) => Promise<{
2985
+ success: boolean;
2986
+ checkedAt: number;
2987
+ requestId: string | null;
2988
+ cancelled: boolean;
2989
+ error?: string;
2990
+ }>;
2991
+ runRemoteTurn: (params: unknown) => Promise<{
2992
+ success: boolean;
2993
+ checkedAt: number;
2994
+ status: string;
2995
+ method: 'xeno run --remote';
2996
+ requestId: string;
2997
+ runId?: string;
2998
+ text?: string;
2999
+ cancelled?: boolean;
3000
+ error?: string;
3001
+ }>;
3002
+ remoteRunOperation: (params: unknown) => Promise<{
3003
+ success: boolean;
3004
+ endpoint: string | null;
3005
+ checkedAt: number;
3006
+ status: string;
3007
+ action: string;
3008
+ method: string;
3009
+ path: string | null;
3010
+ runId?: string;
3011
+ response: unknown;
3012
+ error?: string;
3013
+ }>;
3014
+ shareReplayOperation: (params: unknown) => Promise<{
3015
+ success: boolean;
3016
+ checkedAt: number;
3017
+ status: string;
3018
+ action: string;
3019
+ method: string;
3020
+ sourceId?: string;
3021
+ pathLabel?: string;
3022
+ response: unknown;
3023
+ error?: string;
3024
+ }>;
3025
+ evalOperation: (params: unknown) => Promise<{
3026
+ success: boolean;
3027
+ checkedAt: number;
3028
+ status: string;
3029
+ action: string;
3030
+ method: string;
3031
+ suite?: string;
3032
+ pathLabel?: string;
3033
+ response: unknown;
3034
+ error?: string;
3035
+ }>;
3036
+ orgMetadataOperation: (params: unknown) => Promise<{
3037
+ success: boolean;
3038
+ checkedAt: number;
3039
+ status: string;
3040
+ action: string;
3041
+ method: string;
3042
+ workspaceLabel?: string;
3043
+ response: unknown;
3044
+ error?: string;
3045
+ }>;
3046
+ mcpAuthOperation: (params: unknown) => Promise<{
3047
+ success: boolean;
3048
+ checkedAt: number;
3049
+ status: string;
3050
+ action: string;
3051
+ method: string;
3052
+ server?: string;
3053
+ response: unknown;
3054
+ error?: string;
3055
+ }>;
3056
+ githubAppOperation: (params: unknown) => Promise<{
3057
+ success: boolean;
3058
+ checkedAt: number;
3059
+ status: string;
3060
+ action: string;
3061
+ method: string;
3062
+ fixtureLabel?: string;
3063
+ backendUrl?: string;
3064
+ response: unknown;
3065
+ error?: string;
3066
+ }>;
3067
+ cancelRemoteTurn: (params: unknown) => Promise<{
3068
+ success: boolean;
3069
+ checkedAt: number;
3070
+ requestId: string | null;
3071
+ cancelled: boolean;
3072
+ error?: string;
3073
+ }>;
3074
+ };
3075
+ workspacePolicy: {
3076
+ evaluate: (params: unknown) => Promise<{
3077
+ allowed: boolean;
3078
+ reason: string;
3079
+ matchedVisibility?: string;
3080
+ matchedScope?: unknown;
3081
+ }>;
3082
+ writeMemory: (params: unknown) => Promise<{
3083
+ success: boolean;
3084
+ entry?: unknown;
3085
+ error?: string;
3086
+ }>;
3087
+ listMemory: (params: unknown) => Promise<{
3088
+ success: boolean;
3089
+ entries: unknown[];
3090
+ error?: string;
3091
+ }>;
3092
+ registerArtifact: (params: unknown) => Promise<{
3093
+ success: boolean;
3094
+ artifact?: unknown;
3095
+ error?: string;
3096
+ }>;
3097
+ listArtifacts: (params: unknown) => Promise<{
3098
+ success: boolean;
3099
+ artifacts: unknown[];
3100
+ error?: string;
3101
+ }>;
3102
+ getArtifact: (params: unknown) => Promise<{
3103
+ success: boolean;
3104
+ result?: unknown;
3105
+ error?: string;
3106
+ }>;
3107
+ deleteArtifact: (params: unknown) => Promise<{
3108
+ success: boolean;
3109
+ error?: string;
3110
+ }>;
3111
+ getTaskBoard: (params: unknown) => Promise<{
3112
+ success: boolean;
3113
+ board?: unknown;
3114
+ error?: string;
3115
+ }>;
3116
+ upsertTask: (params: unknown) => Promise<{
3117
+ success: boolean;
3118
+ board?: unknown;
3119
+ task?: unknown;
3120
+ error?: string;
3121
+ }>;
3122
+ deleteTask: (params: unknown) => Promise<{
3123
+ success: boolean;
3124
+ board?: unknown;
3125
+ error?: string;
3126
+ }>;
3127
+ listTaskBoards: (params: unknown) => Promise<{
3128
+ success: boolean;
3129
+ boards: unknown[];
3130
+ error?: string;
3131
+ }>;
3132
+ snapshot: (params?: unknown) => Promise<{
3133
+ success: boolean;
3134
+ snapshot: unknown;
3135
+ }>;
3136
+ };
3137
+ pluginMcp: {
3138
+ snapshot: (params?: unknown) => Promise<{
3139
+ success: boolean;
3140
+ snapshot: unknown;
3141
+ }>;
3142
+ installPlugin: (params: unknown) => Promise<{
3143
+ success: boolean;
3144
+ plugin?: unknown;
3145
+ error?: string;
3146
+ }>;
3147
+ installLocalPlugin: (params: unknown) => Promise<{
3148
+ success: boolean;
3149
+ plugin?: unknown;
3150
+ error?: string;
3151
+ }>;
3152
+ activatePlugin: (params: unknown) => Promise<{
3153
+ success: boolean;
3154
+ plugin?: unknown;
3155
+ error?: string;
3156
+ }>;
3157
+ deactivatePlugin: (params: unknown) => Promise<{
3158
+ success: boolean;
3159
+ plugin?: unknown;
3160
+ error?: string;
3161
+ }>;
3162
+ uninstallPlugin: (params: unknown) => Promise<{
3163
+ success: boolean;
3164
+ error?: string;
3165
+ }>;
3166
+ updatePlugin: (params: unknown) => Promise<{
3167
+ success: boolean;
3168
+ plugin?: unknown;
3169
+ error?: string;
3170
+ }>;
3171
+ setPluginTrust: (params: unknown) => Promise<{
3172
+ success: boolean;
3173
+ plugin?: unknown;
3174
+ error?: string;
3175
+ }>;
3176
+ upsertMcpServer: (params: unknown) => Promise<{
3177
+ success: boolean;
3178
+ server?: unknown;
3179
+ error?: string;
3180
+ }>;
3181
+ removeMcpServer: (params: unknown) => Promise<{
3182
+ success: boolean;
3183
+ error?: string;
3184
+ }>;
3185
+ setMcpApproval: (params: unknown) => Promise<{
3186
+ success: boolean;
3187
+ server?: unknown;
3188
+ error?: string;
3189
+ }>;
3190
+ reloadMcp: (params: unknown) => Promise<{
3191
+ success: boolean;
3192
+ snapshot?: unknown;
3193
+ connected: string[];
3194
+ skipped: string[];
3195
+ errors: Array<{
3196
+ name: string;
3197
+ error: string;
3198
+ }>;
3199
+ error?: string;
3200
+ }>;
3201
+ setMcpRegistryPolicy: (params: unknown) => Promise<{
3202
+ success: boolean;
3203
+ snapshot?: unknown;
3204
+ error?: string;
3205
+ }>;
3206
+ setScopedPolicy: (params: unknown) => Promise<{
3207
+ success: boolean;
3208
+ policy?: unknown;
3209
+ snapshot?: unknown;
3210
+ error?: string;
3211
+ }>;
3212
+ deleteScopedPolicy: (params: unknown) => Promise<{
3213
+ success: boolean;
3214
+ snapshot?: unknown;
3215
+ error?: string;
3216
+ }>;
3217
+ searchMarketplace: (params: unknown) => Promise<{
3218
+ success: boolean;
3219
+ listings: unknown[];
3220
+ error?: string;
3221
+ }>;
3222
+ syncProjectMcp: (params: unknown) => Promise<{
3223
+ success: boolean;
3224
+ direction: 'import' | 'export';
3225
+ configPath?: string;
3226
+ synced: number;
3227
+ servers: unknown[];
3228
+ snapshot?: unknown;
3229
+ error?: string;
3230
+ }>;
3231
+ callMcpTool: (params: unknown) => Promise<{
3232
+ success: boolean;
3233
+ result?: unknown;
3234
+ preview?: unknown;
3235
+ auditId?: string;
3236
+ error?: string;
3237
+ denial?: unknown;
3238
+ }>;
3239
+ getMcpPrompt: (params: unknown) => Promise<{
3240
+ success: boolean;
3241
+ result?: unknown;
3242
+ preview?: unknown;
3243
+ auditId?: string;
3244
+ error?: string;
3245
+ denial?: unknown;
3246
+ }>;
3247
+ readMcpResource: (params: unknown) => Promise<{
3248
+ success: boolean;
3249
+ result?: unknown;
3250
+ preview?: unknown;
3251
+ auditId?: string;
3252
+ error?: string;
3253
+ denial?: unknown;
3254
+ }>;
3255
+ preflightTrust: (params: unknown) => Promise<{
3256
+ success: boolean;
3257
+ allowed: boolean;
3258
+ target?: unknown;
3259
+ checks: unknown[];
3260
+ plugin?: unknown;
3261
+ server?: unknown;
3262
+ reasons: string[];
3263
+ remediation: unknown[];
3264
+ denial?: unknown;
3265
+ error?: string;
3266
+ }>;
3267
+ };
3268
+ acp: {
3269
+ listAgents: () => Promise<{
3270
+ success: boolean;
3271
+ agents: unknown[];
3272
+ repaired?: boolean;
3273
+ error?: string;
3274
+ }>;
3275
+ /**
3276
+ * The provider catalog changed — by any surface, or by the host.
3277
+ *
3278
+ * Optional, so a host predating it leaves a surface on its own reloads
3279
+ * rather than failing to mount.
3280
+ */
3281
+ subscribeCatalogChanged?: (listener: (payload: unknown) => void) => () => void;
3282
+ listProviderCatalog: (refresh?: boolean) => Promise<{
3283
+ success: boolean;
3284
+ catalog?: unknown;
3285
+ error?: string;
3286
+ }>;
3287
+ syncProviderCatalog: (refresh?: boolean) => Promise<{
3288
+ success: boolean;
3289
+ catalog?: unknown;
3290
+ error?: string;
3291
+ }>;
3292
+ setProviderCatalogEnabled: (enabled: boolean) => Promise<{
3293
+ success: boolean;
3294
+ catalog?: unknown;
3295
+ error?: string;
3296
+ }>;
3297
+ setCatalogProviderEnabled: (providerId: string, enabled: boolean) => Promise<{
3298
+ success: boolean;
3299
+ catalog?: unknown;
3300
+ error?: string;
3301
+ }>;
3302
+ updateCatalogProvider: (providerId: string) => Promise<{
3303
+ success: boolean;
3304
+ catalog?: unknown;
3305
+ error?: string;
3306
+ }>;
3307
+ setPreferredCatalogProvider: (providerId: string) => Promise<{
3308
+ success: boolean;
3309
+ catalog?: unknown;
3310
+ error?: string;
3311
+ }>;
3312
+ getAgent: (id: string) => Promise<{
3313
+ success: boolean;
3314
+ agent?: unknown;
3315
+ error?: string;
3316
+ }>;
3317
+ saveAgent: (input: unknown) => Promise<{
3318
+ success: boolean;
3319
+ agent?: unknown;
3320
+ repaired?: boolean;
3321
+ error?: string;
3322
+ }>;
3323
+ createFixtureAgent: (input?: unknown) => Promise<{
3324
+ success: boolean;
3325
+ agent?: unknown;
3326
+ repaired?: boolean;
3327
+ error?: string;
3328
+ }>;
3329
+ createLocalProviderAgent: (providerId: 'codex-local' | 'claude-local' | 'kimi') => Promise<{
3330
+ success: boolean;
3331
+ agent?: unknown;
3332
+ repaired?: boolean;
3333
+ error?: string;
3334
+ }>;
3335
+ removeAgent: (id: string) => Promise<{
3336
+ success: boolean;
3337
+ removed: boolean;
3338
+ error?: string;
3339
+ }>;
3340
+ testAgent: (id: string) => Promise<{
3341
+ success: boolean;
3342
+ protocolVersion?: number;
3343
+ agentInfo?: unknown;
3344
+ updateCount: number;
3345
+ stopReason?: string;
3346
+ diagnostics: unknown;
3347
+ error?: string;
3348
+ }>;
3349
+ getProviderModels: (id: string, providerId?: string) => Promise<{
3350
+ success: boolean;
3351
+ result?: unknown;
3352
+ error?: string;
3353
+ }>;
3354
+ certifyAgent: (id: string) => Promise<{
3355
+ success: boolean;
3356
+ result?: unknown;
3357
+ agent?: unknown;
3358
+ error?: string;
3359
+ }>;
3360
+ approveProvider: (id: string, providerId?: string) => Promise<{
3361
+ success: boolean;
3362
+ result?: unknown;
3363
+ error?: string;
3364
+ }>;
3365
+ revokeProvider: (id: string, providerId?: string) => Promise<{
3366
+ success: boolean;
3367
+ result?: unknown;
3368
+ error?: string;
3369
+ }>;
3370
+ runAgentPrompt: (params: unknown) => Promise<{
3371
+ success: boolean;
3372
+ result?: unknown;
3373
+ status?: string;
3374
+ events?: unknown[];
3375
+ error?: string;
3376
+ }>;
3377
+ cancelAgentPrompt: (params: unknown) => Promise<{
3378
+ success: boolean;
3379
+ cancelled: boolean;
3380
+ error?: string;
3381
+ }>;
3382
+ closeConversation: (params: unknown) => Promise<{
3383
+ success: boolean;
3384
+ closedSessionCount: number;
3385
+ error?: string;
3386
+ }>;
3387
+ getDiagnostics: () => Promise<{
3388
+ success: boolean;
3389
+ diagnostics?: unknown;
3390
+ error?: string;
3391
+ }>;
3392
+ };
3393
+ webSearch: {
3394
+ search: (query: WebSearchIpcInput, count?: number) => Promise<{
3395
+ success: boolean;
3396
+ results: Array<{
3397
+ title: string;
3398
+ url: string;
3399
+ snippet: string;
3400
+ }>;
3401
+ error?: string;
3402
+ }>;
3403
+ };
3404
+ usage: {
3405
+ summary: (entityType: string, entityId: string, period: string) => Promise<unknown>;
3406
+ byModel: () => Promise<unknown>;
3407
+ topAgents: () => Promise<unknown>;
3408
+ };
3409
+ audit: {
3410
+ list: (limit?: number) => Promise<unknown>;
3411
+ log: (action: string, entity: string, entityId: string, details: string) => Promise<unknown>;
3412
+ };
3413
+ exportBackup: {
3414
+ exportJson: (params?: ScopedIpcParams) => Promise<{
3415
+ success: boolean;
3416
+ path?: string;
3417
+ error?: string;
3418
+ }>;
3419
+ exportCsv: (params?: ScopedIpcParams) => Promise<{
3420
+ success: boolean;
3421
+ path?: string;
3422
+ error?: string;
3423
+ }>;
3424
+ createBackup: (name?: string | ({
3425
+ name?: string;
3426
+ } & ScopedIpcParams)) => Promise<{
3427
+ success: boolean;
3428
+ backup?: unknown;
3429
+ error?: string;
3430
+ }>;
3431
+ listBackups: (params?: ScopedIpcParams) => Promise<{
3432
+ success: boolean;
3433
+ backups: Array<{
3434
+ id: string;
3435
+ name: string;
3436
+ createdAt: string;
3437
+ size: number;
3438
+ fileName: string;
3439
+ }>;
3440
+ }>;
3441
+ downloadBackup: (id: string | ({
3442
+ id?: string;
3443
+ backupId?: string;
3444
+ } & ScopedIpcParams)) => Promise<{
3445
+ success: boolean;
3446
+ path?: string;
3447
+ error?: string;
3448
+ }>;
3449
+ deleteBackup: (id: string | ({
3450
+ id?: string;
3451
+ backupId?: string;
3452
+ } & ScopedIpcParams)) => Promise<{
3453
+ success: boolean;
3454
+ error?: string;
3455
+ }>;
3456
+ importBackup: (params?: ScopedIpcParams) => Promise<{
3457
+ success: boolean;
3458
+ restored?: {
3459
+ workspaces: boolean;
3460
+ conversations: number;
3461
+ settings: boolean;
3462
+ };
3463
+ error?: string;
3464
+ }>;
3465
+ getSettings: (params?: ScopedIpcParams) => Promise<{
3466
+ success: boolean;
3467
+ settings: {
3468
+ autoBackupEnabled: boolean;
3469
+ frequency: string;
3470
+ retentionDays: number;
3471
+ };
3472
+ }>;
3473
+ updateSettings: (settings: Record<string, unknown>) => Promise<{
3474
+ success: boolean;
3475
+ error?: string;
3476
+ }>;
3477
+ };
3478
+ capture: {
3479
+ screenshot: (params?: ScopedIpcParams) => Promise<{
3480
+ success: boolean;
3481
+ localPath: string | null;
3482
+ clipboardCopied: boolean;
3483
+ width?: number;
3484
+ height?: number;
3485
+ dataUrl?: string;
3486
+ error: string | null;
3487
+ }>;
3488
+ getHistory: (params?: ScopedIpcParams) => Promise<{
3489
+ success: boolean;
3490
+ captures: Array<{
3491
+ name: string;
3492
+ path: string;
3493
+ size: number;
3494
+ date: string;
3495
+ type: 'image' | 'video' | 'gif';
3496
+ thumbnailDataUrl: string | null;
3497
+ }>;
3498
+ error: string | null;
3499
+ }>;
3500
+ deleteCapture: (filePath: PathIpcInput) => Promise<{
3501
+ success: boolean;
3502
+ error: string | null;
3503
+ }>;
3504
+ openFolder: (params?: ScopedIpcParams) => Promise<{
3505
+ success: boolean;
3506
+ error: string | null;
3507
+ }>;
3508
+ copyToClipboard: (filePath: PathIpcInput) => Promise<{
3509
+ success: boolean;
3510
+ error: string | null;
3511
+ }>;
3512
+ getImageDataUrl: (filePath: PathIpcInput) => Promise<{
3513
+ success: boolean;
3514
+ dataUrl: string | null;
3515
+ error: string | null;
3516
+ }>;
3517
+ saveAnnotated: (dataUrl: string | ({
3518
+ dataUrl: string;
3519
+ originalPath?: string;
3520
+ } & ScopedIpcParams), originalPath?: string) => Promise<{
3521
+ success: boolean;
3522
+ localPath: string | null;
3523
+ error: string | null;
3524
+ }>;
3525
+ copyAnnotatedToClipboard: (dataUrl: string | ({
3526
+ dataUrl: string;
3527
+ } & ScopedIpcParams)) => Promise<{
3528
+ success: boolean;
3529
+ error: string | null;
3530
+ }>;
3531
+ onHotkeyScreenshot: (callback: () => void) => void;
3532
+ offHotkeyScreenshot: () => void;
3533
+ };
3534
+ whisper: {
3535
+ copyToClipboard: (text: string) => Promise<{
3536
+ success: boolean;
3537
+ error: string | null;
3538
+ }>;
3539
+ saveEntry: (entry: {
3540
+ id: string;
3541
+ text: string;
3542
+ language: string;
3543
+ duration: number;
3544
+ timestamp: string;
3545
+ }) => Promise<{
3546
+ success: boolean;
3547
+ error: string | null;
3548
+ }>;
3549
+ getHistory: () => Promise<{
3550
+ success: boolean;
3551
+ entries: Array<{
3552
+ id: string;
3553
+ text: string;
3554
+ language: string;
3555
+ duration: number;
3556
+ timestamp: string;
3557
+ }>;
3558
+ error: string | null;
3559
+ }>;
3560
+ deleteEntry: (id: string) => Promise<{
3561
+ success: boolean;
3562
+ error: string | null;
3563
+ }>;
3564
+ clearHistory: () => Promise<{
3565
+ success: boolean;
3566
+ error: string | null;
3567
+ }>;
3568
+ getSettings: () => Promise<{
3569
+ success: boolean;
3570
+ settings: {
3571
+ language: string;
3572
+ autoCopy: boolean;
3573
+ quality: 'fast' | 'accurate';
3574
+ };
3575
+ error: string | null;
3576
+ }>;
3577
+ updateSettings: (updates: Record<string, unknown>) => Promise<{
3578
+ success: boolean;
3579
+ settings?: {
3580
+ language: string;
3581
+ autoCopy: boolean;
3582
+ quality: 'fast' | 'accurate';
3583
+ };
3584
+ error: string | null;
3585
+ }>;
3586
+ transcribe: (data: {
3587
+ audioBase64: string;
3588
+ language?: string;
3589
+ mimeType?: string;
3590
+ }) => Promise<{
3591
+ success: boolean;
3592
+ text: string;
3593
+ error: string | null;
3594
+ }>;
3595
+ onHotkeyToggle: (callback: () => void) => void;
3596
+ offHotkeyToggle: () => void;
3597
+ };
3598
+ files: {
3599
+ getRoots: (params?: ScopedIpcParams) => Promise<{
3600
+ success: boolean;
3601
+ roots: Array<{
3602
+ id: string;
3603
+ name: string;
3604
+ path: string;
3605
+ icon: string;
3606
+ fileCount: number;
3607
+ totalSize: number;
3608
+ }>;
3609
+ error: string | null;
3610
+ }>;
3611
+ list: (dirPath: PathIpcInput) => Promise<{
3612
+ success: boolean;
3613
+ files: Array<{
3614
+ name: string;
3615
+ path: string;
3616
+ size: number;
3617
+ modified: string;
3618
+ type: 'file' | 'directory';
3619
+ extension: string;
3620
+ }>;
3621
+ error: string | null;
3622
+ }>;
3623
+ listExternal: (dirPath: PathIpcInput) => Promise<{
3624
+ success: boolean;
3625
+ files: Array<{
3626
+ name: string;
3627
+ path: string;
3628
+ size: number;
3629
+ modified: string;
3630
+ type: 'file' | 'directory';
3631
+ extension: string;
3632
+ }>;
3633
+ error: string | null;
3634
+ }>;
3635
+ open: (filePath: PathIpcInput) => Promise<{
3636
+ success: boolean;
3637
+ error: string | null;
3638
+ }>;
3639
+ openExternal: (filePath: PathIpcInput) => Promise<{
3640
+ success: boolean;
3641
+ error: string | null;
3642
+ }>;
3643
+ showInExplorer: (filePath: PathIpcInput) => Promise<{
3644
+ success: boolean;
3645
+ error: string | null;
3646
+ }>;
3647
+ showInExplorerExternal: (filePath: PathIpcInput) => Promise<{
3648
+ success: boolean;
3649
+ error: string | null;
3650
+ }>;
3651
+ delete: (filePath: PathIpcInput) => Promise<{
3652
+ success: boolean;
3653
+ error: string | null;
3654
+ }>;
3655
+ getDiskUsage: (params?: ScopedIpcParams) => Promise<{
3656
+ success: boolean;
3657
+ usage: {
3658
+ total: number;
3659
+ byDirectory: Record<string, number>;
3660
+ };
3661
+ error: string | null;
3662
+ }>;
3663
+ rename: (oldPath: string | ({
3664
+ oldPath: string;
3665
+ newName: string;
3666
+ } & ScopedIpcParams), newName?: string) => Promise<{
3667
+ success: boolean;
3668
+ newPath?: string;
3669
+ error: string | null;
3670
+ }>;
3671
+ openRoot: (params?: ScopedIpcParams) => Promise<{
3672
+ success: boolean;
3673
+ error: string | null;
3674
+ }>;
3675
+ };
3676
+ uiAssetPipeline: {
3677
+ status: (pipelineRoot?: string) => Promise<{
3678
+ success: boolean;
3679
+ pipelineRoot: string;
3680
+ scriptPath: string;
3681
+ defaultOutputDirectory: string;
3682
+ python: string;
3683
+ error: string | null;
3684
+ }>;
3685
+ pickImage: () => Promise<{
3686
+ success: boolean;
3687
+ path: string | null;
3688
+ error: string | null;
3689
+ }>;
3690
+ pickOutputDirectory: (defaultPath?: string) => Promise<{
3691
+ success: boolean;
3692
+ path: string | null;
3693
+ error: string | null;
3694
+ }>;
3695
+ readProject: (projectPath: string) => Promise<{
3696
+ success: boolean;
3697
+ projectPath?: string;
3698
+ inputImage?: string;
3699
+ profile?: 'gamedev' | 'animation';
3700
+ extractionMode?: 'essential' | 'full' | 'both';
3701
+ agentMode?: 'cli' | 'api';
3702
+ paths?: {
3703
+ summaryPath?: string;
3704
+ combinedSummaryPath?: string;
3705
+ finalDir?: string;
3706
+ qualityReportMd?: string;
3707
+ mountingMd?: string;
3708
+ rawResultsPath?: string;
3709
+ };
3710
+ error: string | null;
3711
+ }>;
3712
+ deleteProject: (params: {
3713
+ projectPath: string;
3714
+ outputDirectory: string;
3715
+ }) => Promise<{
3716
+ success: boolean;
3717
+ error: string | null;
3718
+ }>;
3719
+ run: (params: {
3720
+ imagePath: string;
3721
+ outputDirectory: string;
3722
+ pipelineRoot?: string;
3723
+ profile: 'gamedev' | 'animation';
3724
+ extractionMode: 'essential' | 'full' | 'both';
3725
+ agentMode: 'cli' | 'api';
3726
+ chromaBgMode?: 'chroma-bg-dynamic-color' | 'chroma-bg-fixed-color';
3727
+ maxWorkers?: number;
3728
+ cleanOutput?: boolean;
3729
+ overwrite?: boolean;
3730
+ apiKey?: string;
3731
+ edgeCleanup?: boolean;
3732
+ alphaEdgeDefringe?: boolean;
3733
+ deriveStateVariants?: boolean;
3734
+ extractElements?: string[];
3735
+ skipInventory?: boolean;
3736
+ finalDir?: string;
3737
+ }) => Promise<{
3738
+ success: boolean;
3739
+ jobId: string | null;
3740
+ error: string | null;
3741
+ }>;
3742
+ cancel: (jobId: string) => Promise<{
3743
+ success: boolean;
3744
+ error: string | null;
3745
+ }>;
3746
+ openPath: (targetPath: string) => Promise<{
3747
+ success: boolean;
3748
+ error: string | null;
3749
+ }>;
3750
+ onEvent: (callback: (event: {
3751
+ jobId: string;
3752
+ type: string;
3753
+ stream?: 'stdout' | 'stderr';
3754
+ text?: string;
3755
+ success?: boolean;
3756
+ exitCode?: number;
3757
+ durationMs?: number;
3758
+ paths?: {
3759
+ summaryPath?: string;
3760
+ combinedSummaryPath?: string;
3761
+ finalDir?: string;
3762
+ qualityReportMd?: string;
3763
+ mountingMd?: string;
3764
+ rawResultsPath?: string;
3765
+ };
3766
+ finalAssetCount?: number;
3767
+ qualityStatus?: string | null;
3768
+ qualityErrorCount?: number;
3769
+ qualityWarningCount?: number;
3770
+ error?: string;
3771
+ stderr?: string;
3772
+ command?: string;
3773
+ pipelineRoot?: string;
3774
+ outputDirectory?: string;
3775
+ assets?: Array<{
3776
+ slug: string;
3777
+ name: string;
3778
+ stage?: 'queued' | 'chroma' | 'transparent' | 'final' | 'error';
3779
+ status?: string;
3780
+ path?: string;
3781
+ chromaPath?: string;
3782
+ transparentPath?: string;
3783
+ finalPath?: string;
3784
+ index?: number;
3785
+ total?: number;
3786
+ size?: number;
3787
+ }>;
3788
+ asset?: {
3789
+ slug: string;
3790
+ name: string;
3791
+ stage?: 'queued' | 'chroma' | 'transparent' | 'final' | 'error';
3792
+ status?: string;
3793
+ path?: string;
3794
+ chromaPath?: string;
3795
+ transparentPath?: string;
3796
+ finalPath?: string;
3797
+ index?: number;
3798
+ total?: number;
3799
+ size?: number;
3800
+ };
3801
+ }) => void) => void;
3802
+ offEvent: () => void;
3803
+ };
3804
+ materialGenerator: {
3805
+ pickImage: () => Promise<{
3806
+ success: boolean;
3807
+ path: string | null;
3808
+ error: string | null;
3809
+ }>;
3810
+ readImage: (filePath: string) => Promise<{
3811
+ success: boolean;
3812
+ dataUrl: string | null;
3813
+ error: string | null;
3814
+ }>;
3815
+ pickOutputDirectory: (defaultName?: string) => Promise<{
3816
+ success: boolean;
3817
+ path: string | null;
3818
+ error: string | null;
3819
+ }>;
3820
+ pickPackage: () => Promise<{
3821
+ success: boolean;
3822
+ path: string | null;
3823
+ error: string | null;
3824
+ }>;
3825
+ readPackage: (packagePath: string) => Promise<{
3826
+ success: boolean;
3827
+ manifestPath: string | null;
3828
+ directory: string | null;
3829
+ manifest: any;
3830
+ maps: Array<{
3831
+ key: string;
3832
+ fileName: string;
3833
+ dataUrl: string;
3834
+ }>;
3835
+ error: string | null;
3836
+ }>;
3837
+ findEngineProjects: (engine: 'unreal' | 'unity' | 'godot' | 'folder') => Promise<{
3838
+ success: boolean;
3839
+ projects: Array<{
3840
+ engine: 'unreal' | 'unity' | 'godot' | 'folder';
3841
+ name: string;
3842
+ path: string;
3843
+ importDirectory: string;
3844
+ source: 'open-process' | 'recent-scan' | 'manual';
3845
+ }>;
3846
+ error: string | null;
3847
+ }>;
3848
+ pickEngineProject: (engine: 'unreal' | 'unity' | 'godot' | 'folder') => Promise<{
3849
+ success: boolean;
3850
+ project: {
3851
+ engine: 'unreal' | 'unity' | 'godot' | 'folder';
3852
+ name: string;
3853
+ path: string;
3854
+ importDirectory: string;
3855
+ source: 'open-process' | 'recent-scan' | 'manual';
3856
+ } | null;
3857
+ error: string | null;
3858
+ }>;
3859
+ writeOutput: (params: {
3860
+ outputDirectory: string;
3861
+ files: Array<{
3862
+ relativePath: string;
3863
+ dataUrl?: string;
3864
+ content?: string;
3865
+ }>;
3866
+ }) => Promise<{
3867
+ success: boolean;
3868
+ outputDirectory?: string;
3869
+ files: string[];
3870
+ error: string | null;
3871
+ }>;
3872
+ runUnrealImportScript: (params: {
3873
+ packageDirectory: string;
3874
+ projectName?: string;
3875
+ projectPath?: string;
3876
+ }) => Promise<{
3877
+ success: boolean;
3878
+ remoteImported: boolean;
3879
+ error: string | null;
3880
+ details: string | null;
3881
+ setupRequired: boolean;
3882
+ }>;
3883
+ openPath: (targetPath: string) => Promise<{
3884
+ success: boolean;
3885
+ error: string | null;
3886
+ }>;
3887
+ };
3888
+ system: {
3889
+ health: () => Promise<{
3890
+ cpu: {
3891
+ model: string;
3892
+ cores: number;
3893
+ usage: number;
3894
+ };
3895
+ ram: {
3896
+ total: number;
3897
+ free: number;
3898
+ used: number;
3899
+ usagePercent: number;
3900
+ };
3901
+ gpu: {
3902
+ name: string;
3903
+ vendor: string;
3904
+ vramMb: number | null;
3905
+ driverVersion: string | null;
3906
+ } | null;
3907
+ disk: {
3908
+ total: number;
3909
+ free: number;
3910
+ used: number;
3911
+ xenoUsage: number;
3912
+ };
3913
+ network: {
3914
+ online: boolean;
3915
+ };
3916
+ os: {
3917
+ platform: string;
3918
+ arch: string;
3919
+ release: string;
3920
+ };
3921
+ xenoAppsSize: Record<string, number>;
3922
+ }>;
3923
+ cleanOldVersions: () => Promise<{
3924
+ success: boolean;
3925
+ cleaned: number;
3926
+ }>;
3927
+ };
3928
+ support: {
3929
+ createBundle: (params?: unknown) => Promise<{
3930
+ success: boolean;
3931
+ path?: string;
3932
+ summary?: Record<string, unknown>;
3933
+ error?: string;
3934
+ }>;
3935
+ repairAll: (params?: unknown) => Promise<{
3936
+ success: boolean;
3937
+ repaired: Array<{
3938
+ id: string;
3939
+ success: boolean;
3940
+ detail?: string;
3941
+ error?: string;
3942
+ }>;
3943
+ durationMs: number;
3944
+ error?: string;
3945
+ }>;
3946
+ runMigrations: () => Promise<{
3947
+ success: boolean;
3948
+ version: number;
3949
+ migrated: boolean;
3950
+ path: string;
3951
+ checks: Array<{
3952
+ id: string;
3953
+ status: string;
3954
+ detail?: string;
3955
+ error?: string;
3956
+ }>;
3957
+ durationMs: number;
3958
+ error?: string;
3959
+ }>;
3960
+ profile: () => Promise<unknown>;
3961
+ };
3962
+ errorReporting: {
3963
+ report: (data: {
3964
+ message: string;
3965
+ stack?: string;
3966
+ component?: string;
3967
+ userDescription?: string;
3968
+ }) => Promise<{
3969
+ success: boolean;
3970
+ }>;
3971
+ getCrashLog: () => Promise<{
3972
+ success: boolean;
3973
+ log: string;
3974
+ }>;
3975
+ clearCrashLog: () => Promise<{
3976
+ success: boolean;
3977
+ }>;
3978
+ };
3979
+ onDeepLink: (callback: (url: string) => void) => void;
3980
+ offDeepLink: () => void;
3981
+ }
3982
+ declare global {
3983
+ interface Window {
3984
+ xenoAPI: XenoAPI;
3985
+ XENO_API_KEY?: string;
3986
+ GEMINI_API_TOKEN?: string;
3987
+ SpeechRecognition?: SpeechRecognitionConstructor;
3988
+ webkitSpeechRecognition?: SpeechRecognitionConstructor;
3989
+ }
3990
+ }
3991
+ export {};
3992
+ //# sourceMappingURL=platformApiTypes.d.ts.map