actoviq-agent-sdk 0.4.21 → 0.4.22

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 (278) hide show
  1. package/README-zh.md +50 -113
  2. package/README.md +51 -164
  3. package/assets/hadamard-icon.ico +0 -0
  4. package/assets/hadamard-icon.png +0 -0
  5. package/bin/hadamard-gui.js +31 -12
  6. package/dist/src/codeIntel/codeIntelligenceService.d.ts +16 -0
  7. package/dist/src/codeIntel/codeIntelligenceService.d.ts.map +1 -1
  8. package/dist/src/codeIntel/codeIntelligenceService.js +87 -2
  9. package/dist/src/codeIntel/codeIntelligenceService.js.map +1 -1
  10. package/dist/src/codeIntel/codeIntelligenceTools.d.ts.map +1 -1
  11. package/dist/src/codeIntel/codeIntelligenceTools.js +6 -0
  12. package/dist/src/codeIntel/codeIntelligenceTools.js.map +1 -1
  13. package/dist/src/codeIntel/index.d.ts +1 -0
  14. package/dist/src/codeIntel/index.d.ts.map +1 -1
  15. package/dist/src/codeIntel/index.js +1 -0
  16. package/dist/src/codeIntel/index.js.map +1 -1
  17. package/dist/src/codeIntel/languageServerPresets.d.ts +13 -0
  18. package/dist/src/codeIntel/languageServerPresets.d.ts.map +1 -0
  19. package/dist/src/codeIntel/languageServerPresets.js +51 -0
  20. package/dist/src/codeIntel/languageServerPresets.js.map +1 -0
  21. package/dist/src/codeIntel/languageServerRegistry.d.ts +1 -0
  22. package/dist/src/codeIntel/languageServerRegistry.d.ts.map +1 -1
  23. package/dist/src/codeIntel/languageServerRegistry.js +2 -2
  24. package/dist/src/codeIntel/languageServerRegistry.js.map +1 -1
  25. package/dist/src/config/resolveRuntimeConfig.d.ts.map +1 -1
  26. package/dist/src/config/resolveRuntimeConfig.js +5 -0
  27. package/dist/src/config/resolveRuntimeConfig.js.map +1 -1
  28. package/dist/src/extensions/builtInExtensions.d.ts +61 -0
  29. package/dist/src/extensions/builtInExtensions.d.ts.map +1 -0
  30. package/dist/src/extensions/builtInExtensions.js +218 -0
  31. package/dist/src/extensions/builtInExtensions.js.map +1 -0
  32. package/dist/src/extensions/filterOutputPolicy.d.ts +21 -0
  33. package/dist/src/extensions/filterOutputPolicy.d.ts.map +1 -0
  34. package/dist/src/extensions/filterOutputPolicy.js +121 -0
  35. package/dist/src/extensions/filterOutputPolicy.js.map +1 -0
  36. package/dist/src/extensions/securityPolicy.d.ts +27 -0
  37. package/dist/src/extensions/securityPolicy.d.ts.map +1 -0
  38. package/dist/src/extensions/securityPolicy.js +238 -0
  39. package/dist/src/extensions/securityPolicy.js.map +1 -0
  40. package/dist/src/extensions/sessionCostTracker.d.ts +63 -0
  41. package/dist/src/extensions/sessionCostTracker.d.ts.map +1 -0
  42. package/dist/src/extensions/sessionCostTracker.js +213 -0
  43. package/dist/src/extensions/sessionCostTracker.js.map +1 -0
  44. package/dist/src/extensions/taskNotifications.d.ts +31 -0
  45. package/dist/src/extensions/taskNotifications.d.ts.map +1 -0
  46. package/dist/src/extensions/taskNotifications.js +50 -0
  47. package/dist/src/extensions/taskNotifications.js.map +1 -0
  48. package/dist/src/extensions/usageBar.d.ts +35 -0
  49. package/dist/src/extensions/usageBar.d.ts.map +1 -0
  50. package/dist/src/extensions/usageBar.js +67 -0
  51. package/dist/src/extensions/usageBar.js.map +1 -0
  52. package/dist/src/gui/contextRailStore.d.ts +13 -0
  53. package/dist/src/gui/contextRailStore.d.ts.map +1 -1
  54. package/dist/src/gui/contextRailStore.js +16 -0
  55. package/dist/src/gui/contextRailStore.js.map +1 -1
  56. package/dist/src/gui/electronMain.js +45 -5
  57. package/dist/src/gui/electronMain.js.map +1 -1
  58. package/dist/src/gui/guiDesignClientScript.d.ts.map +1 -1
  59. package/dist/src/gui/guiDesignClientScript.js +31 -0
  60. package/dist/src/gui/guiDesignClientScript.js.map +1 -1
  61. package/dist/src/gui/guiUsageRoutingAssets.d.ts +7 -0
  62. package/dist/src/gui/guiUsageRoutingAssets.d.ts.map +1 -0
  63. package/dist/src/gui/guiUsageRoutingAssets.js +509 -0
  64. package/dist/src/gui/guiUsageRoutingAssets.js.map +1 -0
  65. package/dist/src/gui/guiUsageRoutingHttpController.d.ts +11 -0
  66. package/dist/src/gui/guiUsageRoutingHttpController.d.ts.map +1 -0
  67. package/dist/src/gui/guiUsageRoutingHttpController.js +125 -0
  68. package/dist/src/gui/guiUsageRoutingHttpController.js.map +1 -0
  69. package/dist/src/gui/guiUsageRoutingRuntime.d.ts +36 -0
  70. package/dist/src/gui/guiUsageRoutingRuntime.d.ts.map +1 -0
  71. package/dist/src/gui/guiUsageRoutingRuntime.js +98 -0
  72. package/dist/src/gui/guiUsageRoutingRuntime.js.map +1 -0
  73. package/dist/src/gui/hadamardGui.d.ts +5 -0
  74. package/dist/src/gui/hadamardGui.d.ts.map +1 -1
  75. package/dist/src/gui/hadamardGui.js +159 -16
  76. package/dist/src/gui/hadamardGui.js.map +1 -1
  77. package/dist/src/gui/hadamardGuiAssets.d.ts.map +1 -1
  78. package/dist/src/gui/hadamardGuiAssets.js +297 -41
  79. package/dist/src/gui/hadamardGuiAssets.js.map +1 -1
  80. package/dist/src/index.d.ts +32 -2
  81. package/dist/src/index.d.ts.map +1 -1
  82. package/dist/src/index.js +16 -1
  83. package/dist/src/index.js.map +1 -1
  84. package/dist/src/keyway/electronSecretStore.d.ts +37 -0
  85. package/dist/src/keyway/electronSecretStore.d.ts.map +1 -0
  86. package/dist/src/keyway/electronSecretStore.js +105 -0
  87. package/dist/src/keyway/electronSecretStore.js.map +1 -0
  88. package/dist/src/keyway/embeddedKeyway.d.ts +34 -0
  89. package/dist/src/keyway/embeddedKeyway.d.ts.map +1 -0
  90. package/dist/src/keyway/embeddedKeyway.js +81 -0
  91. package/dist/src/keyway/embeddedKeyway.js.map +1 -0
  92. package/dist/src/keyway/keywayLoopbackGateway.d.ts +30 -0
  93. package/dist/src/keyway/keywayLoopbackGateway.d.ts.map +1 -0
  94. package/dist/src/keyway/keywayLoopbackGateway.js +71 -0
  95. package/dist/src/keyway/keywayLoopbackGateway.js.map +1 -0
  96. package/dist/src/keyway/keywayMigrationService.d.ts +44 -0
  97. package/dist/src/keyway/keywayMigrationService.d.ts.map +1 -0
  98. package/dist/src/keyway/keywayMigrationService.js +219 -0
  99. package/dist/src/keyway/keywayMigrationService.js.map +1 -0
  100. package/dist/src/keyway/keywayModelApi.d.ts +24 -0
  101. package/dist/src/keyway/keywayModelApi.d.ts.map +1 -0
  102. package/dist/src/keyway/keywayModelApi.js +106 -0
  103. package/dist/src/keyway/keywayModelApi.js.map +1 -0
  104. package/dist/src/keyway/keywayPorts.d.ts +189 -0
  105. package/dist/src/keyway/keywayPorts.d.ts.map +1 -0
  106. package/dist/src/keyway/keywayPorts.js +2 -0
  107. package/dist/src/keyway/keywayPorts.js.map +1 -0
  108. package/dist/src/keyway/keywayProviderExecutor.d.ts +30 -0
  109. package/dist/src/keyway/keywayProviderExecutor.d.ts.map +1 -0
  110. package/dist/src/keyway/keywayProviderExecutor.js +257 -0
  111. package/dist/src/keyway/keywayProviderExecutor.js.map +1 -0
  112. package/dist/src/keyway/routingComposition.d.ts +18 -0
  113. package/dist/src/keyway/routingComposition.d.ts.map +1 -0
  114. package/dist/src/keyway/routingComposition.js +19 -0
  115. package/dist/src/keyway/routingComposition.js.map +1 -0
  116. package/dist/src/keyway/usageRoutingAdminService.d.ts +86 -0
  117. package/dist/src/keyway/usageRoutingAdminService.d.ts.map +1 -0
  118. package/dist/src/keyway/usageRoutingAdminService.js +384 -0
  119. package/dist/src/keyway/usageRoutingAdminService.js.map +1 -0
  120. package/dist/src/nativeCli/crushManagedClient.d.ts +84 -0
  121. package/dist/src/nativeCli/crushManagedClient.d.ts.map +1 -0
  122. package/dist/src/nativeCli/crushManagedClient.js +978 -0
  123. package/dist/src/nativeCli/crushManagedClient.js.map +1 -0
  124. package/dist/src/nativeCli/crushNativeCliClient.d.ts +19 -0
  125. package/dist/src/nativeCli/crushNativeCliClient.d.ts.map +1 -0
  126. package/dist/src/nativeCli/crushNativeCliClient.js +243 -0
  127. package/dist/src/nativeCli/crushNativeCliClient.js.map +1 -0
  128. package/dist/src/nativeCli/keywayNativeCliAdapter.d.ts +31 -0
  129. package/dist/src/nativeCli/keywayNativeCliAdapter.d.ts.map +1 -0
  130. package/dist/src/nativeCli/keywayNativeCliAdapter.js +35 -0
  131. package/dist/src/nativeCli/keywayNativeCliAdapter.js.map +1 -0
  132. package/dist/src/nativeCli/nativeCliAuth.d.ts +24 -0
  133. package/dist/src/nativeCli/nativeCliAuth.d.ts.map +1 -0
  134. package/dist/src/nativeCli/nativeCliAuth.js +327 -0
  135. package/dist/src/nativeCli/nativeCliAuth.js.map +1 -0
  136. package/dist/src/nativeCli/nativeCliClient.d.ts +16 -0
  137. package/dist/src/nativeCli/nativeCliClient.d.ts.map +1 -0
  138. package/dist/src/nativeCli/nativeCliClient.js +575 -0
  139. package/dist/src/nativeCli/nativeCliClient.js.map +1 -0
  140. package/dist/src/nativeCli/nativeCliCodewhaleProtocol.d.ts +18 -0
  141. package/dist/src/nativeCli/nativeCliCodewhaleProtocol.d.ts.map +1 -0
  142. package/dist/src/nativeCli/nativeCliCodewhaleProtocol.js +376 -0
  143. package/dist/src/nativeCli/nativeCliCodewhaleProtocol.js.map +1 -0
  144. package/dist/src/nativeCli/nativeCliContracts.d.ts +22 -0
  145. package/dist/src/nativeCli/nativeCliContracts.d.ts.map +1 -0
  146. package/dist/src/nativeCli/nativeCliContracts.js +2 -0
  147. package/dist/src/nativeCli/nativeCliContracts.js.map +1 -0
  148. package/dist/src/nativeCli/nativeCliCursorProtocol.d.ts +7 -0
  149. package/dist/src/nativeCli/nativeCliCursorProtocol.d.ts.map +1 -0
  150. package/dist/src/nativeCli/nativeCliCursorProtocol.js +210 -0
  151. package/dist/src/nativeCli/nativeCliCursorProtocol.js.map +1 -0
  152. package/dist/src/nativeCli/nativeCliEnvironment.d.ts +3 -0
  153. package/dist/src/nativeCli/nativeCliEnvironment.d.ts.map +1 -0
  154. package/dist/src/nativeCli/nativeCliEnvironment.js +17 -0
  155. package/dist/src/nativeCli/nativeCliEnvironment.js.map +1 -0
  156. package/dist/src/nativeCli/nativeCliExecResolver.d.ts +26 -0
  157. package/dist/src/nativeCli/nativeCliExecResolver.d.ts.map +1 -0
  158. package/dist/src/nativeCli/nativeCliExecResolver.js +152 -0
  159. package/dist/src/nativeCli/nativeCliExecResolver.js.map +1 -0
  160. package/dist/src/nativeCli/nativeCliPiProtocol.d.ts +15 -0
  161. package/dist/src/nativeCli/nativeCliPiProtocol.d.ts.map +1 -0
  162. package/dist/src/nativeCli/nativeCliPiProtocol.js +329 -0
  163. package/dist/src/nativeCli/nativeCliPiProtocol.js.map +1 -0
  164. package/dist/src/nativeCli/nativeCliProcessTree.d.ts +3 -0
  165. package/dist/src/nativeCli/nativeCliProcessTree.d.ts.map +1 -0
  166. package/dist/src/nativeCli/nativeCliProcessTree.js +104 -0
  167. package/dist/src/nativeCli/nativeCliProcessTree.js.map +1 -0
  168. package/dist/src/nativeCli/reasonixAcpSession.d.ts +35 -0
  169. package/dist/src/nativeCli/reasonixAcpSession.d.ts.map +1 -0
  170. package/dist/src/nativeCli/reasonixAcpSession.js +472 -0
  171. package/dist/src/nativeCli/reasonixAcpSession.js.map +1 -0
  172. package/dist/src/nativeCli/reasonixManagedClient.d.ts +56 -0
  173. package/dist/src/nativeCli/reasonixManagedClient.d.ts.map +1 -0
  174. package/dist/src/nativeCli/reasonixManagedClient.js +293 -0
  175. package/dist/src/nativeCli/reasonixManagedClient.js.map +1 -0
  176. package/dist/src/nativeCli/reasonixNativeCliClient.d.ts +20 -0
  177. package/dist/src/nativeCli/reasonixNativeCliClient.d.ts.map +1 -0
  178. package/dist/src/nativeCli/reasonixNativeCliClient.js +317 -0
  179. package/dist/src/nativeCli/reasonixNativeCliClient.js.map +1 -0
  180. package/dist/src/parity/bridgeExecResolver.d.ts +2 -25
  181. package/dist/src/parity/bridgeExecResolver.d.ts.map +1 -1
  182. package/dist/src/parity/bridgeExecResolver.js +2 -151
  183. package/dist/src/parity/bridgeExecResolver.js.map +1 -1
  184. package/dist/src/parity/bridgeProcessTree.d.ts +2 -2
  185. package/dist/src/parity/bridgeProcessTree.d.ts.map +1 -1
  186. package/dist/src/parity/bridgeProcessTree.js +2 -82
  187. package/dist/src/parity/bridgeProcessTree.js.map +1 -1
  188. package/dist/src/parity/crushManagedClient.d.ts +2 -83
  189. package/dist/src/parity/crushManagedClient.d.ts.map +1 -1
  190. package/dist/src/parity/crushManagedClient.js +2 -977
  191. package/dist/src/parity/crushManagedClient.js.map +1 -1
  192. package/dist/src/parity/externalCliAuth.d.ts +2 -22
  193. package/dist/src/parity/externalCliAuth.d.ts.map +1 -1
  194. package/dist/src/parity/externalCliAuth.js +2 -295
  195. package/dist/src/parity/externalCliAuth.js.map +1 -1
  196. package/dist/src/parity/hadamardBridgeSdk.d.ts.map +1 -1
  197. package/dist/src/parity/hadamardBridgeSdk.js +14 -1
  198. package/dist/src/parity/hadamardBridgeSdk.js.map +1 -1
  199. package/dist/src/parity/nativeCliBridgeAdapter.d.ts +6 -0
  200. package/dist/src/parity/nativeCliBridgeAdapter.d.ts.map +1 -0
  201. package/dist/src/parity/nativeCliBridgeAdapter.js +38 -0
  202. package/dist/src/parity/nativeCliBridgeAdapter.js.map +1 -0
  203. package/dist/src/parity/reasonixAcpSession.d.ts +2 -34
  204. package/dist/src/parity/reasonixAcpSession.d.ts.map +1 -1
  205. package/dist/src/parity/reasonixAcpSession.js +2 -471
  206. package/dist/src/parity/reasonixAcpSession.js.map +1 -1
  207. package/dist/src/parity/reasonixManagedClient.d.ts +2 -55
  208. package/dist/src/parity/reasonixManagedClient.d.ts.map +1 -1
  209. package/dist/src/parity/reasonixManagedClient.js +2 -292
  210. package/dist/src/parity/reasonixManagedClient.js.map +1 -1
  211. package/dist/src/provider/openai-client.js +2 -2
  212. package/dist/src/provider/openai-client.js.map +1 -1
  213. package/dist/src/provider/openai-model-api.d.ts.map +1 -1
  214. package/dist/src/provider/openai-model-api.js +5 -1
  215. package/dist/src/provider/openai-model-api.js.map +1 -1
  216. package/dist/src/runtime/agentClient.d.ts +14 -1
  217. package/dist/src/runtime/agentClient.d.ts.map +1 -1
  218. package/dist/src/runtime/agentClient.js +60 -6
  219. package/dist/src/runtime/agentClient.js.map +1 -1
  220. package/dist/src/runtime/toolPolicyPipeline.d.ts +32 -1
  221. package/dist/src/runtime/toolPolicyPipeline.d.ts.map +1 -1
  222. package/dist/src/runtime/toolPolicyPipeline.js +43 -3
  223. package/dist/src/runtime/toolPolicyPipeline.js.map +1 -1
  224. package/dist/src/tui/hadamardTuiController.d.ts.map +1 -1
  225. package/dist/src/tui/hadamardTuiController.js +62 -8
  226. package/dist/src/tui/hadamardTuiController.js.map +1 -1
  227. package/dist/src/tui/tuiBasicCommandHandler.d.ts +4 -0
  228. package/dist/src/tui/tuiBasicCommandHandler.d.ts.map +1 -1
  229. package/dist/src/tui/tuiBasicCommandHandler.js +23 -2
  230. package/dist/src/tui/tuiBasicCommandHandler.js.map +1 -1
  231. package/dist/src/tui/tuiCatalogCommandHandler.d.ts +2 -0
  232. package/dist/src/tui/tuiCatalogCommandHandler.d.ts.map +1 -1
  233. package/dist/src/tui/tuiCatalogCommandHandler.js +10 -1
  234. package/dist/src/tui/tuiCatalogCommandHandler.js.map +1 -1
  235. package/dist/src/tui/tuiUsageRoutingRuntime.d.ts +22 -0
  236. package/dist/src/tui/tuiUsageRoutingRuntime.d.ts.map +1 -0
  237. package/dist/src/tui/tuiUsageRoutingRuntime.js +81 -0
  238. package/dist/src/tui/tuiUsageRoutingRuntime.js.map +1 -0
  239. package/dist/src/types.d.ts +16 -0
  240. package/dist/src/types.d.ts.map +1 -1
  241. package/dist/src/types.js.map +1 -1
  242. package/dist/src/ui/commandSurface.d.ts.map +1 -1
  243. package/dist/src/ui/commandSurface.js +45 -1
  244. package/dist/src/ui/commandSurface.js.map +1 -1
  245. package/dist/src/ui/extensionsCommandView.d.ts +18 -0
  246. package/dist/src/ui/extensionsCommandView.d.ts.map +1 -0
  247. package/dist/src/ui/extensionsCommandView.js +82 -0
  248. package/dist/src/ui/extensionsCommandView.js.map +1 -0
  249. package/dist/src/ui/lspCommandView.d.ts +17 -0
  250. package/dist/src/ui/lspCommandView.d.ts.map +1 -0
  251. package/dist/src/ui/lspCommandView.js +25 -0
  252. package/dist/src/ui/lspCommandView.js.map +1 -0
  253. package/dist/src/ui/usageRoutingCommand.d.ts +13 -0
  254. package/dist/src/ui/usageRoutingCommand.d.ts.map +1 -0
  255. package/dist/src/ui/usageRoutingCommand.js +224 -0
  256. package/dist/src/ui/usageRoutingCommand.js.map +1 -0
  257. package/dist/src/usage/budgetService.d.ts +28 -0
  258. package/dist/src/usage/budgetService.d.ts.map +1 -0
  259. package/dist/src/usage/budgetService.js +50 -0
  260. package/dist/src/usage/budgetService.js.map +1 -0
  261. package/dist/src/usage/contracts.d.ts +149 -0
  262. package/dist/src/usage/contracts.d.ts.map +1 -0
  263. package/dist/src/usage/contracts.js +2 -0
  264. package/dist/src/usage/contracts.js.map +1 -0
  265. package/dist/src/usage/index.d.ts +7 -0
  266. package/dist/src/usage/index.d.ts.map +1 -0
  267. package/dist/src/usage/index.js +4 -0
  268. package/dist/src/usage/index.js.map +1 -0
  269. package/dist/src/usage/usageLedger.d.ts +19 -0
  270. package/dist/src/usage/usageLedger.d.ts.map +1 -0
  271. package/dist/src/usage/usageLedger.js +389 -0
  272. package/dist/src/usage/usageLedger.js.map +1 -0
  273. package/dist/src/usage/usageQueryService.d.ts +12 -0
  274. package/dist/src/usage/usageQueryService.d.ts.map +1 -0
  275. package/dist/src/usage/usageQueryService.js +29 -0
  276. package/dist/src/usage/usageQueryService.js.map +1 -0
  277. package/package.json +14 -2
  278. package/scripts/prepare-gui-launcher.mjs +62 -0
@@ -12,7 +12,10 @@ import { createExaSearchContribution, createRequestRetryPolicyContribution, crea
12
12
  import { HadamardContributionHost } from '../contrib/contributionHost.js';
13
13
  import { InMemoryContributionToolRegistry, contributionRetryPolicyKey, contributionToolRegistryKey, } from '../contrib/contributionServices.js';
14
14
  import { conversationExtensionsFactoryKey, createBuiltInConversationExtensionsContribution, } from './conversationExtensions.js';
15
- import { createBuiltInToolPolicyContribution, toolPolicyFactoryKey } from './toolPolicyPipeline.js';
15
+ import { createBuiltInToolPolicyContribution, InMemoryToolPolicyListenerRegistry, toolPolicyFactoryKey, toolPolicyListenerRegistryKey, } from './toolPolicyPipeline.js';
16
+ import { BuiltInExtensionToggles, createBuiltInExtensionsApi, resolveBuiltInExtensionStates, } from '../extensions/builtInExtensions.js';
17
+ import { createSecurityPolicyContribution } from '../extensions/securityPolicy.js';
18
+ import { createFilterOutputPolicyContribution } from '../extensions/filterOutputPolicy.js';
16
19
  import { codeDispatchFormatterKey, createCodeDispatchTranscriptContribution, defaultCodeDispatchTranscriptFormatter } from './codeDispatchTranscript.js';
17
20
  import { resolveHadamardSettingsStore } from '../config/hadamardSettingsStore.js';
18
21
  import { resolveRuntimeConfig } from '../config/resolveRuntimeConfig.js';
@@ -64,7 +67,7 @@ import { TeammateStore } from '../storage/teammateStore.js';
64
67
  import { createCheckpointTools, FileChangeJournal, FileCheckpointService, } from '../checkpoint/index.js';
65
68
  import { SandboxExecutor } from '../sandbox/sandboxExecutor.js';
66
69
  import { resolveSandboxPolicy } from '../sandbox/policyResolver.js';
67
- import { CodeIntelligenceService, createCodeIntelligenceTools, LanguageServerRegistry, } from '../codeIntel/index.js';
70
+ import { CodeIntelligenceService, createCodeIntelligenceTools, LanguageServerRegistry, resolveLanguageServerDefinitions, } from '../codeIntel/index.js';
68
71
  import { HookRunner } from '../hooks/hookRunner.js';
69
72
  import { createPromptHookHandler } from '../hooks/handlers/promptHook.js';
70
73
  import { HadamardSwarmApi } from '../swarm/hadamardSwarm.js';
@@ -430,6 +433,8 @@ export class HadamardAgentClient {
430
433
  codeIntelligence;
431
434
  /** Persistent, project-scoped root/child Agent execution graph. */
432
435
  executions;
436
+ /** Built-in extension states (security guard, output filter, UI stubs) with persisted toggling. */
437
+ builtInExtensions;
433
438
  sessionManager;
434
439
  sessionTurnCoordinator = new SessionTurnCoordinator();
435
440
  agentDefinitions;
@@ -449,6 +454,8 @@ export class HadamardAgentClient {
449
454
  codeActServices = new Map();
450
455
  sessionRuntimeOverrides = new Map();
451
456
  backgroundTaskManager;
457
+ /** User-facing listeners fired when any background task settles (best-effort). */
458
+ backgroundTaskSettledListeners = new Set();
452
459
  defaultPermissionMode;
453
460
  defaultPermissions;
454
461
  defaultClassifier;
@@ -468,7 +475,7 @@ export class HadamardAgentClient {
468
475
  managedSkills: [],
469
476
  disableDefaultSkills: false,
470
477
  loadDefaultSkillDirectories: true,
471
- }, defaultPermissionMode, defaultPermissions, defaultClassifier, defaultApprover, sessionManagerConfig, maxSubagentDepth = 1, maxSubagentFanout = 8, taskWorktreeCoordinator, externalAgentRunner, runtimeClosers = [], contributionHost) {
478
+ }, defaultPermissionMode, defaultPermissions, defaultClassifier, defaultApprover, sessionManagerConfig, maxSubagentDepth = 1, maxSubagentFanout = 8, taskWorktreeCoordinator, externalAgentRunner, runtimeClosers = [], contributionHost, extensionToggles) {
472
479
  this.config = config;
473
480
  this.store = store;
474
481
  this.backgroundTaskStore = backgroundTaskStore;
@@ -492,6 +499,7 @@ export class HadamardAgentClient {
492
499
  this.approvalPolicy = new ApprovalPolicy(path.join(this.config.homeDir, 'policy', 'approvals.json'));
493
500
  this.auditLog = new AuditLog(path.join(this.config.homeDir, 'policy', 'audit.ndjson'));
494
501
  this.executions = new HadamardAgentExecutionsApi(executionStore);
502
+ this.builtInExtensions = createBuiltInExtensionsApi(extensionToggles ?? new BuiltInExtensionToggles(resolveBuiltInExtensionStates(undefined)), this.config.homeDir);
495
503
  this.checkpoints = new FileCheckpointService({
496
504
  storageRoot: path.join(this.config.sessionDirectory, 'file-checkpoints'),
497
505
  workspaceRoot: this.config.workDir,
@@ -702,7 +710,10 @@ export class HadamardAgentClient {
702
710
  if (this.defaultTools.some(tool => tool.name === BASH_TOOL_NAME)) {
703
711
  this.replaceDefaultTool(createBashTool({
704
712
  backgroundTaskManager: this.backgroundTaskManager,
705
- onBackgroundTaskSettled: task => this.enqueueTaskNotification(task),
713
+ onBackgroundTaskSettled: task => {
714
+ this.enqueueTaskNotification(task);
715
+ this.notifyBackgroundTaskSettled(task);
716
+ },
706
717
  }));
707
718
  }
708
719
  this.replaceDefaultTool(this.createSendMessageTool());
@@ -764,16 +775,29 @@ export class HadamardAgentClient {
764
775
  const contributionHost = new HadamardContributionHost();
765
776
  const contributionTools = new InMemoryContributionToolRegistry();
766
777
  contributionHost.registerService(contributionToolRegistryKey, contributionTools);
778
+ // Registered before any contribution apply runs so the tool-policy factory
779
+ // and the extension contributions can both resolve it.
780
+ contributionHost.registerService(toolPolicyListenerRegistryKey, new InMemoryToolPolicyListenerRegistry());
767
781
  let managedSettings = {};
768
782
  if (options.managedPlugins !== false) {
769
783
  managedSettings = isRecord(options.managedPlugins)
770
784
  ? options.managedPlugins
771
785
  : (await resolveHadamardSettingsStore({ homeDir: config.homeDir })).raw;
772
786
  }
787
+ // Built-in extension states read from the same settings payload; with
788
+ // managedPlugins disabled the settings store is read once for extensions.
789
+ const extensionSettingsRaw = isRecord(options.managedPlugins)
790
+ ? options.managedPlugins
791
+ : options.managedPlugins !== false
792
+ ? managedSettings
793
+ : (await resolveHadamardSettingsStore({ homeDir: config.homeDir })).raw;
794
+ const extensionToggles = new BuiltInExtensionToggles(resolveBuiltInExtensionStates(extensionSettingsRaw, options.extensions));
773
795
  await contributionHost.loadMany([
774
796
  createRequestRetryPolicyContribution(config.retryPolicy),
775
797
  createBuiltInConversationExtensionsContribution(),
776
798
  createBuiltInToolPolicyContribution(),
799
+ createSecurityPolicyContribution(extensionToggles),
800
+ createFilterOutputPolicyContribution(extensionToggles),
777
801
  createCodeDispatchTranscriptContribution(),
778
802
  createTavilySearchContribution(managedSettings),
779
803
  createExaSearchContribution(managedSettings),
@@ -951,10 +975,16 @@ export class HadamardAgentClient {
951
975
  definition.name,
952
976
  definition,
953
977
  ])).values()];
954
- client = new HadamardAgentClient(config, store, executionStore, backgroundTaskStore, mailboxStore, teammateStore, modelApi, mcpManager, deduplicatedTools, defaultMcpServers, options.hooks, agentDefinitions, deduplicatedSkills, skillComposition, policyPermissionMode(config.effectivePolicy) ?? options.permissionMode, [
978
+ // Code intelligence: merge explicit language servers with auto-detected
979
+ // presets (PATH probe), so LSP tools work out of the box. Async, so it
980
+ // happens here in create() rather than in the synchronous constructor.
981
+ const languageServers = await resolveLanguageServerDefinitions(config.languageServers, {
982
+ autoDetect: config.autoDetectLanguageServers,
983
+ });
984
+ client = new HadamardAgentClient({ ...config, languageServers }, store, executionStore, backgroundTaskStore, mailboxStore, teammateStore, modelApi, mcpManager, deduplicatedTools, defaultMcpServers, options.hooks, agentDefinitions, deduplicatedSkills, skillComposition, policyPermissionMode(config.effectivePolicy) ?? options.permissionMode, [
955
985
  ...policyPermissionRules(config.effectivePolicy),
956
986
  ...(options.permissions ?? []),
957
- ], options.classifier, options.approver, options.sessionManager, options.maxSubagentDepth, options.maxSubagentFanout, taskWorktreeCoordinator, options.externalAgentRunner, runtimeClosers, contributionHost);
987
+ ], options.classifier, options.approver, options.sessionManager, options.maxSubagentDepth, options.maxSubagentFanout, taskWorktreeCoordinator, options.externalAgentRunner, runtimeClosers, contributionHost, extensionToggles);
958
988
  const interruptedTasks = await client.backgroundTaskManager.reconcileInterruptedTasks();
959
989
  await client.reconcileInterruptedAgentExecutions(interruptedTasks);
960
990
  return client;
@@ -3447,6 +3477,28 @@ export class HadamardAgentClient {
3447
3477
  this.pendingRuntimeNotifications.set(notificationKey, queue);
3448
3478
  }
3449
3479
  }
3480
+ /**
3481
+ * Subscribe to background task settlement (completed/failed/cancelled) for
3482
+ * user-facing surfaces. Fires for every settled task — including ad-hoc
3483
+ * tasks without a parent session — independently of the agent-facing
3484
+ * `<task_notification>` enqueue path. Returns an unsubscribe function.
3485
+ */
3486
+ onBackgroundTaskSettled(listener) {
3487
+ this.backgroundTaskSettledListeners.add(listener);
3488
+ return () => {
3489
+ this.backgroundTaskSettledListeners.delete(listener);
3490
+ };
3491
+ }
3492
+ notifyBackgroundTaskSettled(task) {
3493
+ for (const listener of this.backgroundTaskSettledListeners) {
3494
+ try {
3495
+ listener(task);
3496
+ }
3497
+ catch {
3498
+ // Listener errors must never break the settle path.
3499
+ }
3500
+ }
3501
+ }
3450
3502
  drainRuntimeNotifications(sessionId) {
3451
3503
  const queued = this.pendingRuntimeNotifications.get(sessionId) ?? [];
3452
3504
  this.pendingRuntimeNotifications.delete(sessionId);
@@ -3534,6 +3586,7 @@ export class HadamardAgentClient {
3534
3586
  onSettled: async (task) => {
3535
3587
  this.updatePendingDelegation(options.parentSessionId ?? options.parentRunId, task);
3536
3588
  this.enqueueTaskNotification(task);
3589
+ this.notifyBackgroundTaskSettled(task);
3537
3590
  if (task.status === 'completed') {
3538
3591
  await this.tryCompleteExecutionEdge(execution.edge, task.text);
3539
3592
  }
@@ -3607,6 +3660,7 @@ export class HadamardAgentClient {
3607
3660
  onSettled: async (task) => {
3608
3661
  this.updatePendingDelegation(notificationParent, task);
3609
3662
  this.enqueueTaskNotification(task);
3663
+ this.notifyBackgroundTaskSettled(task);
3610
3664
  if (task.status === 'completed' && hasCollaborationEdge) {
3611
3665
  await this.tryCompleteExecutionEdge(execution.edge, task.text);
3612
3666
  }